2009-05-23 3 views
0

Комментарий Джонатана Леффлера в вопросе "How can I find the Size of some specified files?" заставляет задуматься. Я разберу его на части для анализа.Историческая справка к файловым системам Linux

  1. - файлы хранятся на страницах;

  2. обычно в конечном итоге больше места быть используется, чем этот расчет дает , так как 1 байт файла (часто) занимает одна страница (из, может быть, 512 байт).

  3. В точных значений меняются - это было проще в дни 7-й системы Издание Unix файл (хотя и не тривиальный даже тогда

4-5, если вы хотите принять во внимание непрямых. блоки, на которые ссылается индекс , а также необработанные блоки данных).

Вопросы частей

  1. Что такое определение "страницы"?
  2. Почему слово «может быть» в последующей «одной странице (возможно, 512 байт)»?
  3. Почему было проще измерить точные размеры в «7-й версии Unix-файловой системы»?
  4. Какое определение «косвенный блок»?
  5. Как вы можете иметь ссылки на две вещи: «inode» и «необработанные блоки данных»?

Исторические Вопросы Возникший

I. Что такое исторический контекст Леффлера речь?

II. Изменились ли с течением времени определения ?

ответ

2

Как обычно для страниц Википедии, Block (data storage) информативен несмотря на слишком буйный о связывании всех ключевых слов.

В computing (в частности, передачи данных и data storage), блок представляет собой последовательность bytes или bits, имеющий номинальную длину (установленный размер блока ). Сообщается, что структурированные данные блокируются. Процесс помещения данных в блоки называется блокировкой. Блокировка используется для облегчения обработки потока данных компьютерной программой, получающей данные. Заблокированные данные обычно читаются целым блоком за раз. Блокировка практически универсальна при хранении данных до 9-дорожечного magnetic tape, к вращающимся средам, таким как floppy disks, hard disks, optical discs и NAND flash memory.

Большинство file systems основаны на block device, который представляет собой уровень abstraction для hardware, ответственного за хранение и извлечение указанных блоков данных, хотя размер блока в файловых системах может быть кратным размеру физического блока. В классических файловых системах один блок может содержать только часть одного file. Это приводит к неэффективности пространства из-за internal fragmentation, так как длины файлов часто не являются кратными размеру блока, и, таким образом, последний блок файлов останется частично пустым. Это создаст slack space, что составляет в среднем половину блока за файл. Некоторые новые файловые системы пытаются решить эту проблему с помощью методов, называемых block suballocation и tail merging.

Существует также разумный обзор классического Unix File System.

Традиционно геометрия жесткого диска (расположение блоков на самом диске) было CHS.

  • Глава: магнитное устройство считывания/записи на каждой стороне (а) тарелочке; может входить и выходить, чтобы получить доступ к различным цилиндрам
  • цилиндров: след, который проходит под головкой, как опорный диск вращается
  • сектор: постоянное количество размера данных, хранящихся смежно на части цилиндра; наименьшая единица данных, привод может иметь дело с

CHS не используется много в эти дни, так как

  • Жесткие диски больше не использовать постоянное число секторов на цилиндр. Больше данных сжимается на блюде, используя постоянную длину арктекса на сектор, а не постоянный угол поворота, поэтому на внешних цилиндрах больше секторов, чем на внутренних цилиндрах.
  • По спецификации ATA, привод может иметь не более 2 баллонов в голове, 2 головы и 2 секторов на цилиндр; с секторами 512B, это ограничение в 128 ГБ. Через BIOS INT13 невозможно получить доступ к чему-либо, кроме 7,88 ГБ, через CHS в любом случае.
  • Для обратной совместимости большие диски по-прежнему утверждают, что имеют геометрию CHS (иначе DOS не сможет загружаться), но для получения более высокой информации требуется использование адресации LBA.
  • CHS даже не имеет смысла на RAID или невращающихся носителях.

, но по историческим причинам это повлияло на размеры блоков: поскольку размеры сектора были почти всегда 512B, размеры блоков файловой системы всегда были кратными 512B. (Существует movement afoot, чтобы представить диски с размерами сектора 1kB и 4kB, но совместимость выглядит довольно болезненной.)

Вообще говоря, меньшие размеры блоков файловой системы приводят к уменьшению потерь в пространстве при хранении большого количества небольших файлов (если только передовые методы, такие как tail слияние), в то время как большие размеры блоков уменьшают внешнюю фрагментацию и имеют меньшие накладные расходы на больших дисках. Размер блока файловой системы обычно равен 2, ограничен ниже по размеру сектора блочного устройства и часто ограничивается размером страницы ОС.

page size зависит от ОС и платформы (и, в случае с Linux, может отличаться и по конфигурации). Подобно размеру блока, меньшие размеры блоков уменьшают внутреннюю фрагментацию, но требуют дополнительных административных издержек. Размеры страниц 4kB на 32-разрядных платформах являются общими.

Теперь, чтобы описать косвенные блоки. В проекте UFS,

  • inode описывает файл.
  • В дизайне UFS количество указателей на блоки данных, которые может храниться inode, очень ограничено (менее 16). Определенное число, как представляется, изменяется в производных реализациях.
  • Для небольших файлов указатели могут непосредственно указывать на блоки данных, которые составляют файл.
  • Для больших файлов должны быть косвенные указатели, которые указывают на блок, который содержит больше указателей на блоки. Это могут быть прямые указатели на блоки данных, принадлежащие файлу, или если файл очень велик, они могут быть еще более косвенными указателями.

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

Не все файловые системы используют этот метод для отслеживания блоков данных, принадлежащих файлу. FAT просто использует единую таблицу размещения файлов, которая фактически представляет собой гигантскую серию связанных списков, а многие современные файловые системы используют extents.

+0

Это выглядит многообещающим, мне нужно время, чтобы вникать в него. –

3
  1. Я думаю, что он означает блок вместо страницы, причем блок является минимальным адресуемым устройством в файловой системе. размеры

  2. блок может варьироваться

  3. Не знаю почему, но, возможно, это интерфейс файловой системы подвергается API, что позволяет более точное измерение.

  4. Косвенным блок представляет собой блок на который ссылается указатель

  5. индексный дескриптор занимает пространство (блоки) так же, как делает исходные данные. Это то, что имел в виду автор.

Смежные вопросы