4

Вот что я получаю, когда запускаю команду stat для файла в моем linux:

yasar@yasar-laptop ~/myscripts/sysprog $ LC_ALL=C stat error.c
  File: 'error.c'
  Size: 184         Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d  Inode: 103650221   Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   yasar)   Gid: (  100/   users)
Access: 2012-04-23 17:10:28.117455882 +0300
Modify: 2012-04-21 22:18:59.967686183 +0300
Change: 2012-04-21 22:19:00.001019336 +0300
 Birth: -

Как видите, размер блока для файловой системы составляет 4 КБ, а для файла выделено 8 блоков, но его размер составляет всего 184 байта. Почему файл стоит 8 блоков, когда достаточно одного блока?

3 ответа3

4
$ echo a > a

Файл "а" теперь содержит два байта, "а" и символ новой строки.

$ stat -c "%b %B %s" a
16 512 2

Выделено 16 блоков, каждый блок имеет размер 512 байт. Это минимальное количество места, которое отслеживает файловая система.

1

Файловая система ext4 выделяет как минимум 4 КБ на файл. Это 8 блоков на диске (512 байт). Вот действительно хорошее объяснение https://stackoverflow.com/questions/1346807/how-does-stat-command-calculate-the-blocks-of-a-file

0

как вы видите блок ввода-вывода или блок файловой системы 4 КБ

это означает, что файл выделяет восемь блоков по 512 байт

(и заставляет меня задуматься, что произойдет, если у нас будет современный диск с размером физического блока 4 КБ)

и вы видите причину, по которой утилиты fdisk и Windows для разделов недавно смещают разделы на круглые мегабайты с начала диска .... на всякий случай, если он неправильно определяет размер медиа-блока (размер записи NAND и т. д.), он по крайней мере несколько оптимален, то есть не записывает 4 КБ блок между 2x 128 КБ чипов NAND или около того.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .