Как определить размер блока для файловых систем ext4 и btrfs?

Если вы пытаетесь удалить только первые два байта, вы можете сделать это с помощью tail -c +3. Например:

$ printf 'hello\n' >> file1
$ tail -c +3 file1
llo
$ _
2
11.04.2020, 23:51
2 ответа

Вам нужно посмотреть на размер выделяемого блока данных, который является минимальным блоком, который может выделить любой файл. Большие файлы состоят из нескольких блоков. Кроме того, в конце больших файлов (или всех маленьких файлов )всегда есть «отходы», где последний блок не заполнен полностью и, следовательно, не используется.

Насколько мне известно, каждая популярная файловая система Linux по умолчанию использует блоки размером 4 КБ, потому что это размер страницы по умолчанию для современных процессоров, а это означает, что существует простое сопоставление между отображаемыми файлами памяти -и блоками диска. Я точно знаю, что BTRFS и Ext4 по умолчанию имеют размер страницы (, который в большинстве систем составляет 4 КБ ).

В ext4 просто используйте tune2fs, чтобы проверить размер блока, следующим образом: (измените /dev/sda1на свой путь к устройству):

[root@centos8 ~]# tune2fs -l /dev/sda1 |grep "^Block size:"
Block size:               4096
[root@centos8 ~]#

В btrfs используйте следующую команду, чтобы проверить размер блока (измените /dev/mapper/cr_rootна свой собственный путь к устройству, в этом примере просто используется типичная зашифрованная BTRFS -на пути -LUKS):

sudo btrfs inspect-internal dump-super -f /dev/mapper/cr_root | grep "^sectorsize"
4
19.03.2021, 02:29

Вы можете использовать stat -f, чтобы получить ответ любой файловой системы, например.:

% stat -f /home
  File: "/home"
    ID: 5013a37be3cd6a47 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 113391734  Free: 472450     Available: 468304
Inodes: Total: 28868608   Free: 27969906
3
29.10.2021, 16:29

Теги

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