Приемы профессиональной работы в UNIX

         

РАЗМЕРЫ БЛОКОВ


System V является последним достижением ветви фирмы AT&T в фамильном дереве UNIX. Это означает, что System V содержит последние правки, внесенные в исходную систему UNIX. Эти правки предназначены для того, чтобы сделать UNIX жизнеспособным и стойким коммерческим продуктом. Для повышения устойчивости были внесены изменения, касающиеся работы с файлами и размеров их блоков. Обычно обмен данными с дисками осуществляется блоками по 512 байтов. Дисковая аппаратура имеет дело именно с таким размером. Для учета этого факта UNIX первоначально использовал 512-байтные блоки внутри файловой системы, что, возможно, облегчало написание программ и создавало впечатление, что так и нужно. Однако нельзя отрицать, что при этом UNIX может работать медленно! Для ускорения работы внутренние программы в настоящее время используют блоки размером 1024 байта. Сам диск должен выполнить два обращения к 512-байтным блокам, но в системе две эти операции чтения рассматриваются как одна операция чтения блока размером 1024 байта. Единственная проблема заключается в том, что одни утилиты выдают результаты в 512-байтных блоках, а другие - в 1024-байтных, в зависимости от того, когда они были написаны. Когда сильно приближаются пределы свободного пространства на диске, вам действительно нужно знать, с каким размером вы имеете дело. Для лучшего понимания проблемы размеров блоков, в табл. 7-3 показано, какие утилиты какой размер блока используют. Эта информация получена в основном из System V на машине VAX, из другого варианта System V и из XENIX. Эти значения могут отличаться на разных машинах, но идея сохраняется. Вы видите, что большинство утилит выдают результат в блоках размером 512 байтов, но утилиты, относящиеся к файловой системе, выдают результат в 1024-байтных блоках. Поскольку UNIX обращается к дисковому пространству поблочно, важно уметь точно вычислять, сколько свободного пространства в файловой системе. Весьма плоха ситуация, когда имеется какой-то большой файл в редакторе vi (который использует файл /tmp для промежуточного редактирования), а на диске недостаточно места для записи временного файла редактора vi в реальный файл на диске. На самом деле это может случиться на персональных машинах с ограниченным (скажем, 20 Мбайт) объемом жесткого диска.

Таблица 7-3
Размеры блоков для различных команд системы UNIX

512 байтов/блок 1024 байта/блок
ls -s fdisk (размеры разделов)
sum mkfs

cpio, df, du

fsck



Содержание раздела