Размер блока файловой системы - PullRequest
18 голосов
/ 16 декабря 2011

Какое значение имеет размер блока файловой системы?Если размер блока моей файловой системы установлен, скажем, 8 КБ, значит ли это, что все операции ввода-вывода при чтении / записи будут иметь размер 8 КБ?Так что, если мое приложение хочет прочитать, скажем, 16 байтов со смещением 4097, тогда будет считан блок 4K, начиная со смещения 4096?

Как работает запись в этом случае?Предположим, я хочу написать, скажем, 64 байта.

Ответы [ 2 ]

19 голосов
/ 16 декабря 2011

Вы правы.Размер блока равен единице работы для файловой системы.Каждое чтение и запись выполняется в полных кратных размеру блока.

Размер блока также является наименьшим размером на диске, который может иметь файл.Если у вас размер блока 16 байт, то файл с размером 16 байт занимает полный блок на диске.

Книга "Практическое проектирование файловой системы" гласит:

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

0 голосов
/ 16 декабря 2011

Обычно, когда вам приходится иметь дело с файлами в программировании, вы должны использовать потоковую абстракцию.Операции ввода / вывода через код часто считываются и записываются в потоки;чтение и запись из и в потоки, могут быть буферизованы, так что фрагменты файла могут быть прочитаны или записаны.

Размер блока в fs относится к отображению поверхности диска;второстепенный размер отдельного блока старшее число блоков (и, следовательно, элементов в таблице, в которой хранится информация о распределении файлов).

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

...