FreeBSD. Вільні записки про вільну системі. Налаштовуємо файлові системи

Олексій Федорчук, СофтТерра

Після установки FreeBSD і перед тим, як почати роботу, слід затратити деякі (забігаючи вперед, скажу – не дуже великі) зусилля щодо створення робочої атмосфери. І одна з найперших завдань при цьому – налаштування файлових систем.

Чим обумовлена необхідність цього заняття? Вперше зіткнувшись з FreeBSD після спілкування, наприклад, з Linux, звертаєш увагу на відносно низька швидкодія операцій з файлами. Особливо якщо доводиться копіювати / видаляти / переміщати велику кількість файлів, невеликих за обсягом. Кажуть, це вроджена особливість файлової системи UFS. Яка, проте, піддається терапії, на що звернув мою увагу Павло Кайгородов (користуючись нагоди, висловлюю йому свою вдячність).

Так ось, з метою оптимізації дій над файлами під FreeBSD передбачена опція під назвою soft updates. Це модифікація коду UFS, прискорює її роботу і одночасно робить файлову систему більш стійкої до збоїв (при пропажі харчування, наприклад). Вона вимагає, щоб ядро системи було зібрано з її підтримкою. Втім, опція ця за замовчуванням включена в ядро GENERIC, створюване при інсталяції системи у вигляді рядка

options SOFTUPDATES

у файлі конфігурації ядра / usr/src/sys/i386/conf/GENERIC (окрема розмова про який – попереду). Однак, оскільки вважається, що soft updates вимагає підвищеної витрати пам'яті, за замовчуванням у встановленій вперше системі опція ця не активізована. Що і належить виправити якимись діями.

Якими? Насамперед, активізувати soft updates можна тільки для розмонтувати файлових систем. Корисно подивитися, які з них змонтовані в даний момент і які пристрої в каталозі / dev їм відповідають. Це робиться, наприклад, командою mount. Запущена без параметрів, вона дасть картину начебто

/home/alv=>>mount
/dev/ad0s1a on / (ufs, local)
/dev/ad0s1g on /home (ufs, local)
/dev/ad0s1f on /usr (ufs, local)
/dev/ad0s1e on /var (ufs, local)
procfs on /proc (procfs, local)

І тут саме час згадати, що в замітці про інсталяцію FreeBSD я попереджав про доцільність створення окремого кореневого розділу (/) і самостійних розділів / usr та / home. Адже навіть якщо і вдасться розмонтувати кореневий розділ (я, чесно кажучи, не знаю, як), система, очевидно, повністю втратить працездатність, і ніякі подальші маніпуляції з нею будуть неможливі.

А так – ми спокійно даємо команду

umount -Af

де параметр A наказує Демонтується всіх файлових систем, крім кореневої, а параметр f – визначає примусовість цього процесу: без нього, швидше за все, піде повідомлення про неможливість файлових, так як будь-яка з наявних пристроїв напевно використовується.

Потім починаємо активізувати опцію soft updates. Для цього дається команда

tunefs -n enable /dev/ad0s1e

де / dev/ad0s1e – ім'я пристрою, для якого потрібно включити soft updates, наприклад, / var. Далі команда ця повторюється для систем / usr та / home. Після чого виконуємо зворотне монтування всіх файлових систем, визначених у файлі / etc / fstab

mount -a

Нарешті, знову запускаємо команду mount без параметрів і маємо задоволення спостерігати, що на всіх системах, крім кореневої, опція soft updates благополучно ввімкнена:

/home/alv=>>mount
/dev/ad0s1a on / (ufs, local)
/dev/ad0s1g on /home (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1e on /var (ufs, local, soft-updates)
procfs on /proc (procfs, local)

Звертаю увагу на те, що для вступу змін в силу не потрібно перезавантаження системи. І, що характерно, після виконання такої зміни зберігаються. Так що в одному сеансі роботи можна скільки завгодно вмикати і вимикати soft updates для будь-якої файлової системи, крім кореневої.

Зрозуміло, soft updates можна активізувати і для кореневої (/) файлової системи, або для єдиного розділу (partition) в межах слайс, буде таким ми обмежилися при інсталяції системи. Однак для цього потрібно завантажитися з інсталяційного CD і в меню програми sysinstall вибрати опцію fixit (перед чим не зле потурбуватися про створення відповідної дискети). Оскільки при цьому всі наявні на вінчестері розділи виявляються розмонтувати, команду

tunefs -n enable /dev/ad0s1*

можна застосувати до будь-якого з них. У тому числі і до єдиного розділу. Так що, здавалося б, дроблення диска не обов'язково. Але все не так просто.

Звичайно, сама по собі процедура перезавантаження не складна. Однак при цьому слід потурбуватися про створення спеціальної дискети fixit (або відповідного CD): стандартний варіант її програми tunefs не містить, і розмістити її там простим способом не вдається. А головне, в цьому випадку зникає можливість вмикати / вимикати soft updates за бажанням протягом одного сеансу роботи. Що може знадобитися, наприклад, для звільнення ресурсів системи або, навпаки, для збільшення швидкодії файлових операцій, в залежності від сьогочасної завдання.

Що реально дає активізація soft updates? Це легко проілюструвати на прикладі копіювання каталогу, що включає вкладені підкаталоги з великою кількістю різних за розміром (від пари Кбайт до 50-100 Мбайт), і подальшого знищення копії. Результати такого експерименту для каталогу з вмістом, сумарний обсяг якого перевищує 4 Гбайт, наведені в таблиці 1.

Таблиця 1. Швидкодія операцій над дуже великою кількістю різних за розміром файлів






Операція

soft upadtes disable, хв

soft upadtes enable, хв

Копіювання

15

9

Знищення

3

1

Можна бачити, що в результаті нехитрого дійства продуктивність FreeBSD при виконанні типових файлових операцій зростає в півтора-три рази.

Ще більш вражаюча картина вимальовується при діях з великою кількістю дрібних (від перших кілобайт до 100-120 Кбайт сумарним обсягом близько 15 Мбайт. У цьому випадку (табл. 2) перевага у швидкодії при включенні soft updates – більш ніж чотирикратне при копіюванні і більш ніж на порядок – при видаленні.

Таблиця 2. Порівняльне швидкодія файлових операцій під FreeBSD і Linux






Система

FreeBSD з SU

FreeBSD без SU

Linux

Копіювання, з

8,5

30

5,7

Видалення, з

менше 1

11

менше 1

Легко бачити, що при включенні soft updates швидкодія файлових операцій під FreeBSD стає порівнянним з таким в Linux. Для повноти картини слід зазначити, що результати табл. 2 були отримані на машинах, ідентичних за всіма компонентами, за винятком материнської плати. При вимірах для Linux в якості такої виступала Abit SE6 (чіпсет i815e з підтримкою ATA/100). У системі на FreeBSD використовувалася MSI 6326 (чіпсет 815, що підтримує тільки ATA/66). А з огляду на традиційну орієнтованість плат Abit на оптимізацію за швидкодією, відмінність у швидкості копіювання менш ніж в 3 секунди не можна вважати значущим.

І так, настройка належним чином файлових систем дає суттєвий виграш у швидкодії при операціях з даними. За ефективності я порівняв би цю процедуру з використанням апаратного кешування дисків – пам'ятаєте, були колись такі кеш-контролери, що давали на деяких завданнях просто фантастичну швидкість при зверненнях до даних? Різниця лише в тому, що тут такий виграш досягається а) абсолютно безкоштовно і б) не вимагає ніяких надприродних дій (навіть, швидше за все, регенерації ядра). Тож нехтувати soft updates ні в якому разі не слід …

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*