den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Автор: Алексей Федорчук
Citkit, 17 сентября 2008 г
Много лет (в масштабах времени IT-сферы) я слежу за развитием файловых систем свободных Unix’ов вообще и файловых систем FreeBSD — в частности. Потому что при всех многочисленных достоинствах этой операционки быстродействие файловых манипуляций традиционно было узким её местом — по крайней мере, при настольном применении и в сравнении с файловыми системами соплеменного Linux’а. И мне хотелось верить, что эта “файловая пробка” рано или поздно будет ликвидирована. Результаты проверки моих ожиданий периодически размещались на моих старых сайтах, на этих страницах, а полную подборку всех старых материалов я недавно собрал в своём блоге (со временем она перекочует сюда).
Первый раз за сравнение файловых систем FreeBSD и Linux я принялся в 2001 году. Напомню, что в первой ОС (первых версий 4-й ветки) в то время применялась еще UFS (позднее её назовут UFS1), и механизм SoftUpdates при инсталляции не включался по умолчанию, его следовало задействовать ручными, хотя и не сложными, манипуляциями. А в Linux’е тогда безраздельно господствовала ext2: поддержка ReiserFS была только-только штатно включена в ядро, и эта файловая система считалась не вполне опробованной, до официального утверждения ext3 оставалось еще полгода, XFS примерно в это время была только-только портирована на Linux, но официального признания ещё не получила, а JFS, насколько мне известно, использовалась не очень широко.
Так вот, тогда UFS без механизма SoftUpdates сильно отставала по быстродействию от ext2 и reiser, с подключением же оного положение выравнивалось. К сожалению, результаты тогдашних измерений я найти так и не смог, но UFS+SU, несколько проигрывая ext2, шла практически вровень с тогдашней реализацией reiser (справедливости ради замечу — ещё довольно сырой).
Резкое изменение ситуации произошло с появлением UFS2 в 5-й ветке FreeBSD. Несмотря на многочисленные достоинства (64-разрядность, позволяющая работать с большими разделами, возможность фоновой проверки после сбоев и так далее), быстродействие её оставляло желать лучшего. В частности, в общем соревновании файловых систем, устроенном мной в 2004-м году, UFS2+SU во всех режимах монтирования вчистую проиграла всем файловым системам для Linux’а практически по всем показателям, разве что JFS местами продемонстрировала несколько худшие результаты.
Ситуацию с быстродействием UFS2 можно несколько подкорректировать — во-первых, монтируя её в асинхронном режиме, во-вторых, размещая её на программном RAID-массиве. Оба способа дают некоторый прирост производительности файловых операций (см. статьи по ссылкам), однако первый способ чреват снижением надёжности, второй же реализуем только при наличии более чем одного винчестера. И в любом случае скоростные характеристики UFS2 всё равно не дотягивают до ext2 или reiser.
Подмога для UFS2 пришла с неожиданной стороны — не по линии совершенствования файловой системы, а от производителей “железа”. А именно — от появившихся винчестеров с интерфейсом SATA. Измерения, выполненные на первых их моделях (2005 год, результаты приведены здесь), показали для UFS2 рост быстродействия некоторых файловых операций чуть не в два раза — уж в полтора практически для всех. Конечно, и быстродействие файловых систем для Linux’а с переходом на SATA-интерфейс также увеличилось, но органолептически — не в такой мере, хотя сравнительных измерений я тогда не проводил. В настоящей статье это упущение будет исправлено — уже по результатам для современного “железа” и, в частности, винчестеров SATA-II. Благо, для файловых систем Linux такая работа уже была проделана на той же самой аппаратуре.
Однако перед этим обратимся к другому событию — портированию на FreeBSD системы ZFS, являющей собой сочетание менеджера томов и собственно файловой системы. На её достоинствах здесь останавливаться не буду, замечу только, что они многочисленны и разнообразны; с некоторыми из них можно ознакомиться на в подборке переводных и оригинальных (искать по слову ZFS) материалов. А вот с рассмотрения быстродействия UFS2 и ZFS мы и начнём.
Конфигурация машины, на которой осуществлялось тестирование, описана здесь. Единственное изменение — в неё был добавлен третий винчестер, который на этот раз и выступал в качестве игровой площадки. Ну и схема размещения дисков несколько изменилась.
Первым диском теперь выступает 500-гигабайтник, несущий Linux’ы и его файловые системы и потому интереса для нас не представляющий — как я уже говорил, сравнительные материалы для файловых систем Linux берутся из предыдущей заметки.
Номер второй — SATA-II на 160 Гбайт от Samsung с 8 Мбайт встроенного кэша. Он был разбит на два слайса. На первом созданы корневой раздел (/dev/ad6s1a) размером 512 Мбайт и раздел подкачки (/dev/ad6s1b) на 12 Гбайт. И то, и другое было использовано для установки FreeBSD 7.1 PreRelease.
Второй слайс (всё, что осталось от первого) был отдан на растерзание ZFS как пул tank, в котором выделялись файловые системы под каталоги /tmp, /var, /usr, /usr/local и так далее (детали разбивки нам сейчас не важны), а также под каталог /usr/home в качестве рабочего хранилища данных.
И, наконец, номер третий — опять же SATA-II от Samsung, хотя и всего на 120 Гбайт, но с тем же восьмимегабайтным кэшем. На нём тоже было создано два слайса. Первый, размером в 20 Гбайт, зарезервирован под иные, пока тайные, цели, второй же, около 100 Гбайт, предназначался собственно для предстоящего тестирования, методика которого — то есть его объекты и совершаемые над ними действия, — была описана в предыдущей заметке о файловых системах Linux (с соответствующими поправками на ОС, разумеется).
То есть: сначала весь слайс размечался как раздел /dev/ad8s2d, и на нём была создана файловая система UFS2+SU. На него, после монтирования (в режиме по умолчанию, то есть noasync) и установления прав доступа для обычного пользователя, из файловой системы ZFS, смонтированной в каталоге /usr/home, копировался массив данных для тестирования. Каковой, напомню, включал в себя каталог с музыкальными файлами формата FLAC (357 Мбайт), дерево портежей Gentoo (суммарно 229 Мбайт), avi-файл размером 3,4 Гбайт и iso-образ компакта (586 Мбайт). Далее, внутри тестового раздела, над объектами тестирования проводились операции копирования и удаления (с замерами времени).
После всего этого раздел размонтировался, удалялся, а освободившееся пространство было переопределено как пул ZFS tank2, на котором размещена единственная файловая система ZFS же, монтировавшаяся в каталог /usr/home/mnt. В нём, после установления прав доступа обычного пользователя, были повторены все предшествующие процедуры.
Результаты этих процедур приведены в таблице 1. В ней же даны заимствованные из предыдущей заметки сравнительные данные для файловых систем Linux — ext2 и ext3 (ordered) с параметрами монтирования по умолчанию, reiser с опциями монтирования notai,noatime, размещённых на дисковых разделах.
Рис. 1. Копирование музыкальных файлов
Рис. 2. Копирование дерева портежей
Рис. 3. Копирование avi-файла
Рис. 4. Копирование iso-файла
Рис. 5. Удаление дерева портежей
Так что очень большого значения абсолютным цифрам при сравнении UFS с файловыми системами Linux я придавать не буду. Ограничившись констатацией того факта, что их быстродействие стало сопоставимым. Правда, похоже, что заслуга в этом не файловой системы FreeBSD: просто современные “винты” с их быстро считываемыми пластинами и огромными встроенными кэшами, подобно револьверу Кольта, уравняли шансы.
Читать дальше:
http://alv.me/?p=66 |
|