ls -l f.txt
-rwxrwxr-x 1 abc abc 1161 Sep 1 02:02 f.txt
stat f.txt
File: `f.txt'
Size: 1161 Blocks: 34 IO Block: 524288 regular file
Device: 38h/56d Inode: 6448956669 Links: 1
Access: (0775/-rwxrwxr-x) Uid: ( 1024/ carle) Gid: ( 100/ users)
Access: 2017-09-09 02:02:36.000000000 -0700
Modify: 2017-09-09 02:02:36.000000000 -0700
Change: 2017-09-11 20:42:00.709807459 -0700
du -h f.txt
17K wiki.txt
Что тут происходит ?
- Почему файл f.txt занимает на диске 17 КБ (17408 байт)?
Я предполагаю, что вы имеете в виду разницу в размере, о которой сообщает ls -l f.txt
и блоки заняты. Обычно эти числа довольно близки друг к другу. Как уже упоминал Сорча, файл занимает 34 блока, и каждый указанный здесь блок обычно имеет 512 байт. Вы можете проверить это с помощью stat -c "%B" f.txt
. Если вы сделаете математику, вы получите 17408 байт.
Обычно файловая система Linux имеет размер блока 4096 байт, поэтому для всего, что меньше 512 байт, тем не менее будет выделено 4096 байт или 8 * 512 байт на диске, что является наименьшим размером, доступным для распределения в файловой системе.
В вашем случае кажется, что размер блока файловой системы составляет 17 Кбайт. Для дальнейшего разъяснения вам необходимо проверить файловую систему на сервере NFS, где хранятся файлы.
- Что такое размер блока ввода-вывода? Почему его длина составляет 524288 байт и он не равен размеру блока файловой системы (при условии, что размер блока файловой системы составляет 17 КБ)?
То, что вы видите здесь, взято из man stat
, то Подсказка по оптимальному размеру передачи ввода / вывода а в случае NFS это относится к rsize / wsize параметр монтирования NFS вместо размера блока файловой системы, который обычно составляет 4096 байт. Бегать stat f.txt
на сервере NFS, который содержит файловую систему на диске, чтобы увидеть разницу.
Почему файл f.txt занимает на диске 17 КБ (17408 байт)? Что такое размер блока ввода-вывода?
Потому что размер блока раздела 17408 байт. Таким образом, ваши файлы будут разделены на части этого размера, а файл размером менее 17 КБ будет занимать 1 блок, то есть 17 КБ.
Почему его длина составляет 524288 байт и он не равен размеру блока файловой системы (при условии, что размер блока файловой системы составляет 17 КБ)?
Потому что размер блока вашего жесткого диска составляет 512 байт. А если вы сделаете 34x512, у вас будет 17408 байт в вашей файловой системе.
И блок ввода-вывода - это индекс вашего блока, а не его размер