Жесткие диски на крутых виражах Крис Касперски ака мыщъх Хакер, номер #078, стр. 078-092-6 В процессе работы с диском его фрагментация неизбежно увеличивается. Больше всего от этого страдают ext2fs/ext3fs и ReiserFS. На UFS и XFS за счет поддержки блоков большого размера падение производительности уже не так заметно. Утверждение, что файловые системы Linux якобы не подвержены фрагментации, — нелепый миф, который может быть легко опровергнут любым опытным пользователем. При последовательной записи на диск нескольких файлов система размещает их один за другим, так что первый файл упирается во второй. Свободного места для карьерного роста уже нет (короткий хвост в конце блока не считается), и система вынуждена выделять блоки где-то за концом следующего файла. Если же их там нет, свободные блоки ищутся в начале диска, в результате чего файл как бы размазывается по поверхности. Или вот другой случай. Мы записали пять файлов по 100 блоков каждый и затем удалили первый, третий и пятый файлы, освободив 300 блоков в трех фрагментах. При записи 300-блочного файла система сначала попытается отыскать непрерывный регион свободного пространства, но если его не окажется, она будет вынуждена рассредотачивать файл по поверхности. Чтобы исправить ситуацию, необходимо собрать все свободные блоки, объединив их в один непрерывный фрагмент, то есть дефрагментировать раздел. Из бесплатных дефрагментаторов лучшим, на мой взгляд, является стандартный defrag, входящий в штатный комплект поставки большинства Linux'ов. Если же в твоем дистрибутиве его нет, исходные тексты дефрагментатора можно утянуть отсюда: Фирма OO-Software, известная своим одноименным дефрагментатором для NT, выпустила замечательный консольный дефрагментатор для Linux, в настоящее время находящийся в стадии бета-тестирования и распространяющийся на бесплатной основе. Скачать его можно отсюда: www.oo-software.com/cgi-bin/download/download-e.pl?product=OODLXBIN. Регулярная дефрагментация — это хороший способ противостоять растущему падению производительности файловой системы. [обновлять или не обновлять?] Некоторые приложения, в частности уже упомянутый Squid, требуют особой настройки файловой системы. Для увеличения быстродействия рекомендуется отключить операцию обновления времени последнего доступа к файлу (mount -o noatime). Наибольший прирост производительности наблюдается на UFS, которая, в отличие от подавляющего большинства остальных файловых систем, не откладывает обновление inode в долгий ящик (lazy write), а делает это сразу же после его изменения (write through). На ext3fs в силу ее журналирующей природы обновление atime вносит столь незначительный вклад в общее быстродействие, что никакой разницы просто нет. [покажи мне свой хвост, и я скажу, кто ты] По умолчанию ReiserFS сохраняет короткие файлы и файловые хвосты на листьях двоичных деревьев. В большинстве случаев это многократно увеличивает производительность, особенно если свободное дисковое пространство далеко от исчерпания. Тем не менее, при работе с некоторыми приложениями хвосты лучше отключить. При работе с огромным количеством мелких файлов, которые постепенно растут, системе приходится перестраивать большое количество структур данных, гоняя растущие хвосты между блоками и деревьями, в результате чего производительность держится на уровне плинтуса. Команда mount -o notail отключает упаковку хвостов и коротких файлов, а повторное монтирование с настройками по умолчанию включает ее обратно, однако следует помнить, что уже упакованные/распакованные хвосты останутся на месте вплоть до модификации своего файла. DANGER Помни, что hdparm работает только с IDE-дисками, а mke2fs — это деструктивная команда, разрушающая всю файловую систему целиком! |