Жесткие диски на крутых виражах Крис Касперски ака мыщъх Хакер, номер #078, стр. 078-092-4 Журналирование можно значительно ускорить, если разместить журнал на отдельном носителе. Такой журнал называется внешним (external). Подключить его можно командой tune2fs -J device=external_journal (где external_journal — имя раздела соответствующего устройства), причем внешний журнал должен быть предварительно создан командой mke2fs -O journal_dev external_journal. Команда tune2fs -J size=journal_size управляет размером журнала. Чем меньше размер журнала, тем ниже производительность. Предельно допустимый размер составляет 102 400 блоков, или ~25 Мб (точное значение зависит от размера блока, о котором мы еще поговорим). По умолчанию ext3fs журналирует только метаданные (то есть служебные данные файла, такие, например, как inode), записывая их на диск только после того, как будет обновлен журнал. Для увеличения быстродействия можно задействовать разупорядоченный режим, в котором метаданные записываются одновременно с обновлением журнала, что соответствует команде mount /dev/hdx /data -o data=writeback. Естественно, надежность файловой системы при этом снижается. При желании можно журналировать все данные (команда mount /dev/hdx /data -o data=journal), после чего никакие зависания или отказы питания нам будут не страшны, правда, о производительности придется забыть. При создании новой файловой системы важно выбрать правильный размер блока (в терминологии MS-DOS/Windows — кластера). На ext2fs, ext3fs это осуществляется командой mke2fs -b block-size, на XFS — mkfs.xfs -b size=block-size и newfs -b block-size на UFS. Чем больше блок, тем ниже фрагментация, но и выше дисковые потери за счет грануляции дискового пространства. Некоторые файловые системы (например UFS) поддерживают фрагменты (fragments) — порции данных внутри блоков, позволяющие задействовать свободное пространство в хвостах блоков, благодаря чему использование блоков большого размера уже не приводит ни к каким потерям. Файловая система ReiserFS, в отличие от остальных, не нарезает диск на ломтики фиксированного размера, а динамически выделяет требуемый блок данных, забивая диск файлами под завязку. В среднем это на 6% увеличивает доступный объем, однако приводит к чрезмерной фрагментации, съедающей всю производительность. Рекомендуется использовать максимально доступный размер блока (4 Кб для ext2fs и ext3fs, 16 Кб для UFS и 64 Кб для XFS, файловые системы ReiserFS и JFS не поддерживают этой опции) и задействовать максимальное количество фрагментов на блок (в UFS — 8). |