У меня диск 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 говорит, что размер блока равен 512B, blockdev --getbsz / dev / sdc
говорит, что размер блока равен 4096.
Но ... ясно, что / proc / partition
неверно сообщает размер устройства в KiB, а не в блоках.
Может ли это поведение зависеть от 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
Используйте / proc / partitions или (c) fdisk. Что-то, что не дает хороших результатов печати, чтобы их лучше читал человек.
Блоки в / proc / partitions всегда находятся в блоках по 512 Б ... новые диски будут использовать блоки 4 КБ внутри, но обычно имитируют блоки по 512 Б снаружи . Некоторые диски будут говорить только блоками 4k, также снаружи, но / proc / partitions по-прежнему будет печатать результаты в блоках 512B.
parted
и lsblk
правильно сообщает размер логического / физического блока (или сектора). Вы можете дважды проверить это, используя smartctl -i /dev/sda[1142517 visible.
blockdev --getpbsz --getss / dev / sda
также сообщает правильную информацию.
/ proc / partitions
сообщает о размерах в КиБ, но это совершенно не связано с размером физического блока устройства, вместо этого это размер блока буферного кеша.
blockdev --getbsz / dev / sda
, вероятно, сообщает фактический размер ввода-вывода (4 КиБ соответствует размеру страницы ядра).