
Практические следствия
Обычно создание файловых систем - компетенция инсталлятора, который осуществляет ее с некоторыми опциями по умолчанию, изменить которые впоследствии невозможно без переформатирования. Однако все SB-дистрибутивы допускают ручное вмешательство в этот процесс.
Если нет желания заниматься сравнительным анализом разных файловых систем нормальным выбором для всех разделов остается ext2fs. Она может быть создана любой из следующих команд - /sbin/mke2fs, /sbin/mkfs, /sbin/mkfs.ext2 с указанием файла устройства в качестве аргумента, например:
$ /sbin/mke2fs /dev/hd?#
Для создания файловой системы ext3fs можно применить ту же команду mke2fs с опцией -j, при этом она получит некоторые характеристики по умолчанию, определить которые вручную позволяет следующая форма этой команды:
$ /sbin/mke2fs -J опции_журналирования /dev/hd?#
Возможные значения опций журналирования - size=размер, задающее объем журнального файла в мегабайтах, и device=внешний_журнал подключения новой файловой системы к журналу, ранее созданному на другом дисковом разделе. Можно использовать и специальную команду /sbin/mkfs.ext3 - возможности ее идентичны /sbin/mke2fs. Но самое интересное - преобразование существующей ext2fs в ext3fs простым добавлением журнала, не только без потери данных, но и без перезапуска системы (и даже без размонтирования). Делается это командой "$ tune2fs -j /dev/hd?#", которая просто добавляет файл журнала /.journal в корневом каталоге модифицируемой файловой системы (если последняя не была размонтирована), или задействует для журнала скрытый inode (если перед модификацией файловая система была размонтирована). Обратное преобразование еще проще и осуществляется командой монтирования.
Файловая система ReiserFS создается командой /sbin/mkreiserfs из пакета reiserfsprogs. Для нее доступны многочисленные опции (-s для задания размера журнала, -f для принудительного переформатирования ранее существовавшей файловой системы иного типа, и т.д.). Во избежание неожиданностей напомню: если корневой раздел форматируется как ReiserFS, не лишним будет предусмотреть небольшой раздел под каталог /boot для размещения на нем файловой системы ext2fs.
Для создания XFS также существует собственная команда mkfs.xfs (из пакета xfsprogs). Важнейшие опции: b - задание размера блока данных; d - определение параметров области данных файловой системы; l - описание параметров журнального файла. При использовании mkfs.xfs для достижения максимальной производительности рекомендуется в явном виде задать количество allocation groups иначе оно будет определяться автоматически, что приведет к непроизводительным расходам ресурсов (лучше определить его из расчета одна allocation group на 4 Гбайт дискового пространства). Далее, по тем же причинам можно установить размер файла журнала (здесь рекомендованное значение составляет 32 Мбайт). Для дискового раздела объемом в 20 Гбайт команда приобретет вид
$ mkfs.xfs -d agcount=5 -l
size=32m /dev/hda1
Команда mkfs.xfs имеет опцию -f - принудительное создание файловой системы XFS поверх любой существующей. Ее достаточно, если последняя была ext2fs. Если же XFS создается поверх ReiserFS то возможны ошибки при монтировании новой файловой системы. Впрочем, то же относится и к обратной процедуре (замене XFS на ReiserFS), а также, если любая из этих "продвинутых" файловых систем заменяется на разделе системой ext2fs. Они связаны с тем, что команда монтирования может распознать вновь созданную XFS как дефектную ReiserFS, и наоборот. Во избежание этого перед таким замещением приходится прибегать к шаманскому приему - обнулению начальных областей раздела (хранящего метаданные файловой системы) командой
$ dd if=/dev/zero of=/dev/hd?#
Ждать заполнения нулями всего устройства не обязательно - достаточно дать этой команде поработать секунд 10-20, после чего прервать ее комбинацией клавиш Control+D и перейти к созданию новых файловых систем.
И последнее, о чем следует сказать об области подкачки, созданной на этапе разбиения диска. Хотя файловой системы как таковой он не несет, но нуждается в определении, что достигается командой "$ mkswap имя_устройства", к которой следует подходить со вниманием - ее применение к обычному разделу уничтожит на нем все данные.