Нахождение размера сектора раздела

Ярлык -

Попробовать cd -

Если Вы хотите использовать это в своей подсказке, необходимо обратиться к ней с ~-.

Посмотрите пример:

[echox@kaffeesatz ~]$ cd /tmp
[echox@kaffeesatz tmp]$ ls
cron.iddS32  serverauth.CfIgeXuvka
[echox@kaffeesatz tmp]$ cd -
/home/echox
[echox@kaffeesatz ~]$ ls ~-
cron.iddS32  serverauth.CfIgeXuvka
24
13.04.2017, 15:36
5 ответов

fdisk -l (это - более низкий L в параметре), покажет Вам, среди другой информации, размер сектора также.

$ sudo fdisk -l

Disk /dev/sda: 150.3 GB, 150323855360 bytes
255 heads, 63 sectors/track, 18275 cylinders, total 293601280 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1   *          63      208844      104391   83  Linux
   /dev/sda2          208845   209712509   104751832+  83  Linux

Это показывает, что размер сектора составляет 512 байтов.

Править: Более новые версии fdisk например, fdisk (от пакета util-linux 2.20.1), также покажет Вам логические и физические размеры сектора. Например, соответствующий вывод от "диска WDC WD10EFRX 1 ТБ":

Disk /dev/sdn: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
26
27.01.2020, 19:40
  • 1
    Таким образом, это были 4 096 байтов, не 512 байтов. –  Hibou57 23.08.2017, 00:23

Согласно документации для очереди sysfs файлы:

# cat /sys/block/sda/queue/hw_sector_size
512
26
27.01.2020, 19:40
  • 1
    Это не будет работать на произвольные файлы изображений. Как ядро должно знать о них? –  Christian Pietsch 22.07.2014, 14:26

спасибо за ответы выше, о fdisk, показывающем размер физического сектора, и о пути /sys... но одно замечание... Лукас в книге Absolute FreeBSD.... почти каждый жесткий диск будет лгать о размере сектора, так что в случае Linux

/sys/block/sda/queue/hw_sector_size

всегда будет, насколько я понимаю, показывать 512 для лучшей производительности хорошо учитывать реальный размер физического сектора, который действительно используется в аппаратной логике. Это показал fdisk, и он присутствует в

cat /sys/block/sdc/queue/physical_block_size 
4096
3
27.01.2020, 19:40

Можно просто использовать команду file(1)и самостоятельно произвести расчеты. Это работает, даже если у вас есть только образ системы FAT.

Например:

$ sudo file -s /dev/sda5 | tr, '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 sectors/cluster 64
 reserved sectors 64
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 536870912 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 65536
 serial number 0x9f981691
 unlabeled

Этот раздел имеет 64 сектора на кластер. Количество байтов в каждом секторе равно 512, так как это значение по умолчанию, поэтому размер кластера составляет 32 КБ.

Обратите внимание, что размер сектора может быть больше 512 (Спецификация FAT ограничивает его до 4096, но вы можете увеличить ). Когда это произойдет, вы увидите в выводе дополнительное поле «Байт/сектор».

$ sudo mkfs.fat -S 4096 -s 16 /dev/sda5
mkfs.fat 4.1 (2017-01-24)

$ sudo file -s /dev/sda5 | tr, '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 Bytes/sector 4096
 sectors/cluster 16
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 67108864 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 4096
 serial number 0xb059d826
 label: unlabeled

Снова посчитаем: 4096 байт × 16 секторов = 64 КиБ на кластер.

5
27.01.2020, 19:40

попробуй это

disk_sector_num=$(cat /sys/block/sdc/size)
disk_size_gb=$(expr $disk_sector_num / 2097152)
echo "sdc = ${disk_size_gb} GB"

SDC = 28 ГБ

0
17.09.2021, 16:12

Теги

Похожие вопросы