У меня диск Seagate 750 ГБ.
Parted
показывает диск как 750 ГБ
parted /dev/sdc print
Model: ST375064 0AS (scsi)
Disk /dev/sdc: 750GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 750GB 750GB ext3 primary
Однако запись размера в /proc/partitions
предположительно в блоках:
cat /proc/partitions
major minor #blocks name
8 32 732574584 sdc
Parted говорит, что размер блока составляет 512 Б, blockdev --getbsz /dev/sdc
говорит, что размер блока 4096.
Но ... ясно, что /proc/partition
ошибочно сообщает размер устройства в КиБ, а не в блоках.
Может ли это поведение зависеть от версий Linux и / или ядра? (Мне нужен согласованный способ определения размера блочного устройства с поддержкой сценариев)
Centos 6.6 с ядром 3.10.
ИЗМЕНИТЬ I
lsblk -o kname,phy-sec,log-sec,min-io
KNAME PHY-SEC LOG-SEC MIN-IO
sda 512 512 512
sda1 512 512 512
sda2 512 512 512
parted
и lsblk
правильно сообщает размер логического / физического блока (или сектора). Вы можете дважды проверить это, используя smartctl -i /dev/sda
.
blockdev --getpbsz --getss /dev/sda
также сообщает правильную информацию.
/proc/partitions
сообщает о размерах в KiB, но это совершенно не связано с размером физического блока устройства, вместо этого это размер блока буферного кеша.
blockdev --getbsz /dev/sda
вероятно, сообщает фактический размер ввода-вывода (4 КиБ соответствует размеру страницы ядра).
Используйте / proc / partitions или (c) fdisk. Что-то, что не дает хороших результатов печати, чтобы быть лучше читаемым человеком.
Блоки в / proc / partitions всегда состоят из блоков по 512 Б ... новые диски будут использовать блоки 4 Кб внутри, но обычно имитируют блоки по 512 Б снаружи. Некоторые диски будут говорить только блоки 4k, также снаружи, но / proc / partitions все равно будет печатать результаты в блоках 512B.