
Я использую Ubuntu 11.04 и мне интересно, как узнать размер единицы распределения? Есть ли в Ubuntu команда, чтобы узнать это? Также в зависимости от размера единицы распределения меняется ли общий объем места на жестком диске, используемого файлом? Я проверил размеры файлов с помощью ls
и du -b
и в обоих случаях я получаю одинаковые значения.
Включая данные:
sudo tune2fs -l <file system>
Block count: 8052736
Reserved block count: 402636
Free blocks: 2797402
First block: 0
Block size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Inode blocks per group: 512
Flex block group size: 16
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Journal backup: inode blocks
Итак, если размер блока составляет 4096 байт, файлы, которые меньше 4096, занимают 4096 байт на жестком диске, что насчет файлов, которые больше 4096 байт, сколько места они занимают? Есть ли команда, чтобы найти то же самое?
решение1
Редактирование верхнего поста:
Заранее найдите размер:
temp = int(размер/блок) если mod(размер/блок) != 0: темп += 1 темп = темп*блок температура печати
чтобы узнать, сколько блоков у файла на диске:
ls -с
где размер-блока — это размер блока раздела
, а размер на диске — это размер-блока * количество блоков
Объяснение различий в терминологии размера блока,
sudo fdisk -l /dev/sda
когда /dev/sda — это рассматриваемый жесткий диск
Диск /dev/sda: 500,1 ГБ, 500107862016 байт 255 головок, 63 сектора/дорожка, 60801 цилиндров, всего 976773168 секторов Единицы = сектора 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер ввода-вывода (минимальный/оптимальный): 512 байт/512 байт Идентификатор диска: 0x000c1f6b Устройство Загрузка Начало Конец Блоки Идентификатор Система /dev/sda1 * 63 498014 248976 83 Линукс /dev/sda2 498015 976768064 488135025 5 Расширенный /dev/sda5 498078 976768064 488134993+ 83 ЛинуксЭто говорит вам о нескольких вещах. Кто-то уже сказал это лучше, поэтому цитата:
Проблема в том, что есть четыре различных единицы, которые вы должны иметь в виду. Чтобы сделать ситуацию еще хуже, две из этих единиц носят одинаковое название. Вот эти разные единицы:
- Размер аппаратного блока, «размер сектора»
- Размер блока файловой системы, «размер блока»
- Размер блока кэша буфера ядра, «размер блока»
- Размер блока таблицы разделов, «размер цилиндра»
Чтобы различать размер блока файловой системы и размер блока буферного кэша, я буду следовать терминологии FAT и использовать термин «размер кластера» для размера блока файловой системы.
Размер сектора — это единицы, с которыми работает оборудование. Он варьируется в зависимости от типа оборудования, но большинство оборудования в стиле ПК (дискеты, диски IDE и т. д.) используют сектора по 512 байт.
Размер кластера — это единица распределения, используемая файловой системой, и именно она вызывает фрагментацию — я уверен, вы знаете об этом. На файловой системе ext3 среднего размера это обычно 4096 байт, но вы можете проверить это с помощью dumpe2fs. Помните, что их также обычно называют «блоками», только здесь я называю их кластерами.
Размер кластера — это то, что возвращается в st_blksize в буфере статистики, чтобы программы могли рассчитать фактическое использование диска файлом.
Размер блока — это размер буферов, которые ядро использует внутренне, когда кэширует сектора, считанные с устройств хранения (отсюда и название «блочное устройство»). Поскольку это самая примитивная форма хранения в ядре, все размеры кластеров файловой системы должны быть кратны этому. Этот размер блока также является тем, на что почти всегда ссылаются программы пользовательского пространства. Например, когда вы запускаете «du» без опций -h или -H, он вернет, сколько из этих блоков занимает файл. df также сообщит размеры в этих блоках, столбец «Блоки» в выводе fdisk -l имеет этот тип и т. д. Это то, что чаще всего называют «блоком». В каждый блок помещается два сектора диска.
Размер цилиндра используется только в таблице разделов и BIOS (а BIOS не используется Linux).
«df» работает только с файловыми системами, поэтому нет, его нельзя использовать без файловой системы — без файловой системы данные, которые он будет возвращать, не существуют. «du» работает с отдельными файлами.
отздесь.
решение2
stat
команда, выполненная с точкой монтирования в качестве параметра, показывает размер кластера файловой системы в IO Block
свойстве
stat /dev/shm/minifs-mounted
покажет
File: /dev/shm/minifs-mounted
Size: 1024 Blocks: 2 IO Block: 1024 directory
Device: 709h/1801d Inode: 2 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-12-27 14:03:15.000000000 -0300
Modify: 2022-12-27 14:01:50.000000000 -0300
Change: 2022-12-27 14:01:50.000000000 -0300
Birth: -
Приведенная выше информация относится к файловой системе, созданной с помощью
cd /dev/shm
dd if=/dev/zero bs=1M count=100 of=minifs.img
mkfs.ext4 -b 1024 ./minifs.img
mount -o loop minifs.img minifs-mounted
принудительное создание кластера длиной 1024 байта