Назад | Перейти на главную страницу

Единицы размера в / proc / partitions не имеют смысла

У меня диск 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.