Установка Linux на SSD нетбука з компресією файлів

  1. Основні особливості файлової системи Btrfs
  2. Установка Linux на те Btrfs з включеною компресією
  3. Додавання другого диска в файлову систему Btrfs
  4. Додаткова оптимізація операційної системи Linux для роботи на SSD
  5. Опції монтування файлової системи Btrfs для традиційних механічних жорстких дисків
  6. висновок

На відміну від Microsoft Windows, в якій протягом багатьох років чільним і практично єдиним типом файлової системи є NTFS (про FAT і про про анонсовану у 2012 році ReFS говорити не будемо), в Linux вибір є. Тут навскидку можна налічити більше десятка різновидів файлових систем. Найбільш відомими і найчастіше використовуваними є EXT2, EXT3 і, звичайно, EXT4. До них можна додати btrfs, jfs, reiserfs і ряд інших.

Ідеальних файлових систем не існує. Кожна з них має свої сильні і слабкі сторони. Сьогодні ми поекспериментуємо з Btrfs, яка вважається однією з найшвидших і перспективних.

Основні особливості файлової системи Btrfs

Файлова система Btrfs (Better FS), заснована на структурах довічних дерев ( B-Tree ), Була представлена ​​компанією Oracle в 2007 році.

Перелік достоїнств і можливостей btrfs досить великий. Перерахую ті з них, які здалися мені найбільш цікавими для застосування на домашньому комп'ютері і спонукали в кінцевому рахунку на експерименти з цієї ФС:

  • Висока швидкість;
  • Підтримка багатодискових конфігурацій пристроїв зберігання - можна нальоту підключати / відключати диски до файлової системи, а також створювати RAID конфігурації різних рівнів. Можна створювати конфігурацію з чергуванням або дзеркалюванням і для окремих каталогів.
  • Можна включити прозоре стиснення даних (Zlib - більш високий ступінь стиснення, LZO - швидке стиснення, в розробці - snappy, LZ4);
  • Online дефрагментація файлової системи;
  • Вбудована підтримка твердотільних накопичувачів SSD;
  • Контроль цілісності блоків даних і метаданих за допомогою контрольних сум;
  • Можливість створення подтомов (subvolumes);
  • Можливість перетворення існуючих ext3 / ext4 файлових систем в btrsf;
  • Просторово-ефективна (Space-efficient) упаковка дрібних файлів;
  • Ефективне індексування каталогів;
  • У числі запланованих можливостей - переміщення найбільш часто використовувані дані на найшвидше пристрій.

Найбільш повні та актуальні відомості можна подивитися на домашній сторінці проекту.

Найголовнішим недоліком Btrfs на сьогоднішній момент часу є її статус. З одного боку, актуальна на момент написання даної статті версія v3.12 вважається стабільною, з іншого боку, розробники відверто заявляють, що вона все ще перебуває в стадії тестування і її не рекомендується використовувати в промислових цілях.

Виходить, що при використанні ранніх версій Btrsf дані пропадали нестабільно, тепер будуть пропадати стабільно (жарт).

Що стосується швидкості, то ресурсом Phoronix ще в 2011 році були опубліковані дані продуктивності файлової системи Btrfs при роботі без стиснення даних, із стисненням методом ZLib і зі стисненням методом LZO.

У двох з трьох проведених тестів (Compile Bench і Dbench Btrfs) варіант з LZO-стисненням впевнено обігнав як варіант без стиснення, так і варіант з ZLib-стисненням. Причому в деяких випадках різниця в швидкості відрізнялася майже на порядок (!).

У тесті Threaded IO Tester LZO програв і варіанту без стиснення і ZLib від 10% до 33%.

Взагалі вимір реальних швидкісних характеристик пристрою зберігання є завданням непростий. Деякий час назад я пробував оцінити вплив ntfs-стиснення на швидкість читання даних в Windows 7. Результат виявився неоднозначним, як це не дивно, що залежать від типу накопичувача. Це не дозволило зробити однозначних висновків.

Значний виграш в швидкості ФС за результатами двох тестів і незначний провал в одному з них схиляють до вирішення виконати установку операційної системи Linux на те Btrfs з включеним стисненням.

Установка Linux на те Btrfs з включеною компресією

В якості піддослідного кролика тестового стенда знову буде виступати старенький ASUS Eee PC 900. Чого він тільки не побачив за минулі роки. Цікаво, чи багато у кого сьогодні зберігся цей перший представник остаточно вимерлого сьогодні сімейства нетбуків?

Для запланованого експерименту з Btrfs це просто ідеальний зразок.

По-перше, два крихітних (4 Гб і 8 Гб) SSD накопичувача, б про льшие з яких до того ж ще і в два рази повільніше маленького. Насправді обидва флеш-диска дуже повільні і не мають нічого спільного, принаймні за швидкістю, з сучасними твердотільними накопичувачами.

По-друге, сам пристрій на процесорі Intel Celeron M 900 МГц ну дуже нешвидка, що відразу ж дозволить навіть без жодних тестів просто візуально оцінити успіх чи невдачу цього експерименту.

Спочатку я планував встановити на Eee PC 900 Linux Mint-17.1 xfce. Однак дуже скоро з цією ідеєю довелося попрощатися. Інсталятор Linux Mint вимагав мінімум 8.2 Гб вільного місця на диску і в упор не хотів бачити ні другий диск, ні заздалегідь зібраний з двох накопичувачів тому Btrfs обсягом майже 12 Гб. Про те, щоб пояснити інсталятору, що установка буде виконуватися на стиснений тому і насправді одного диска об'ємом 4 Гб буде достатньо, мова взагалі не йшла.

Подальша перевірка в віртуальній машині VirtualBox показала, що для установки 32-розрядної збірки Linux Mint-17.1 xfce на стиснений за допомогою LZO тому, потрібно всього 2,6 Гб

Завдання можна було б легко вирішити за допомогою LVM, як це було описано тут , Але дуже вже не хотілося додавати абсолютно непотрібну в даному випадку прошарок між дисками і файлової системою Btrfs - вона сама відмінно справляється з багатодисковими конфігураціями.

Це виключно проблема даного нетбука, обумовлена ​​маленьким розміром дисків. Навряд чи вона повториться на будь-якому іншому комп'ютері. Хоча в дистрибутиві Linux Mint хотілося б бачити інсталятор розумніше.

Якщо зберетеся встановлювати Linux Mint на файлову систему Btrfs, майте на увазі, що в дистрибутив, по крайней мере в той, про який тут йде мова, підтримка цієї файлової системи не включена. Для того, щоб мати можливість відформатувати розділи з Btrfs, необхідно встановити btrfs-tools:

sudo apt-get install btrfs-tools

Так як підтримка Btrfs включена в ядро, Mint після установки завантажиться, але для того, щоб можна було робити якісь маніпуляції з томами, установку btrfs-tools доведеться повторити.

В якості альтернативи я вибрав легку хмарно-орієнтовану Peppermint OS з оточенням робочого столу LXDE (Lightweight X11 Desktop Environment). Раніше вона вже згадувалася в огляді дистрибутивів Linux.

Подальші події показали, що вибір виявився вельми вдалим. Полегшений набір додатків і спритне оточення - це якраз те, що потрібно для неквапливого нетбука.

Остання на момент написання даної статті 5-я версія цієї ОС базується на Ubuntu 14.04 LTS з п'ятирічним терміном підтримки. Можливість роботи з файловою системою Btrfs присутній відразу.

Проблема установки полягала в тому, що компресія включається в Btrfs на стадії монтування файлової системи (-o compress = lzo / zlib), а стандартний інсталятор Linux, принаймні в Ubuntu і заснованих на ній системах, не дає вибирати розширені опції.

Дуже елегантне і просте рішення цієї задачі вдалося знайти в цьому керівництві.

  • створюємо завантажувальний флешку за допомогою Universal USB Installer. Завантажуємо комп'ютер з неї і заходимо в термінал:

sudo -i

  • Перейменовуємо виконуваний файл mount в mount.bin

mv / bin / mount /bin/mount.bin

  • Створюємо файл скрипта mount

gedit / bin / mount

Замість gedit ви можете використовувати будь-який текстовий редактор, що входить до складу Live CD.

Вписуємо в mount наступний код:

#! / Bin / sh
if echo [Email protected] | grep "btrfs"> / dev / null; then
/bin/mount.bin [Email protected] -o compress-force = lzo
else
/bin/mount.bin [Email protected]
fi

Щоб уникнути помилок ви можете заздалегідь створити текстовий файл із зазначеним змістом і записати його на Live флешку, або відкрити цю сторінку безпосередньо в Live сеансі і скопіювати його з неї.

  • Зберігаємо файл і робимо його виконуваним:

chmod 755 / bin / mount

  • Приступаємо до установки.

Вона нічим не відрізняється від описаної, наприклад тут .

Розбиття диска потрібно виконати самостійно. Для цього на етапі "Тип установки" вибираємо "Інший варіант".

Під / boot необхідно обов'язково створити на початку диска розділ розміром приблизно 200 Мб. В іншому випадку система з стиснутого диска не завантажили.

В даному випадку під / home окремий розділ виділяти не потрібно - в процесі установки для цього каталогу буде автоматично створений підтем (subvolum - / @ / home).

Якщо система встановлюється на звичайний (НЕ SSD) диск, потрібно зробити розділ підкачки об'ємом 2 х RAM.

Про призначення каталогів операційної системи Linux можна прочитати тут .

  • Продовжуємо стандартну процедуру установки і чекаємо її завершення.

До першого перезавантаження можна відразу ж відредагувати fstab (file systems table). Для цього доведеться змонтувати виділений при установці під корінь файлової системи розділ.

Якщо це був, наприклад, sda2, то:

mount / dev / sda2 / mnt
gedit / mnt / @ / etc / fstab

Зверніть увагу, що кореневий розділ також потрапив на підтем і шлях до нього включає в себе "@".

Знаходимо в fstab рядки, що стосуються монтування Btrfs томів і замінюємо defaults на compress = lzo (конкретний приклад fstab див. Нижче).

  • Перезавантажуємо комп'ютер, тепер уже з жорсткого диска

Додавання другого диска в файлову систему Btrfs

Як уже було відзначено вище, Btrfs надає широкі можливості для роботи з багатодисковими конфігураціями пристроїв зберігання. Можна як створювати RAID масиви різного рівня, так і просто збільшувати обсяг пам'яті, доступний існуючого розділу за рахунок підключення до нього нових дисків або дискових розділів.

Додаткові диски можна підключити або відключити на працюючій системі в будь-який момент.

За замовчуванням при розміщенні радела на кількох дисках дані розподіляються без резервування і розмір ФС виходить рівним їх сумарного обсягу. При цьому виконується віддзеркалення метаданих на двох пристроях. Якщо диск один, то копія метаданих розміщуються на ньому.

Додамо в уже створений розділ / dev / sda2 додатковий диск / dev / sdc

sudo btrfs device add / dev / sdb /

де "/" - точка монтування (path). Так як домашній каталог також змонтований на те Btrfs, можна використовувати "/ home".

Якщо sdc раніше вже був відформатований в Btrfs, то, можливо, команда потребує ключа -f.

Безпосередньо після додавання нового диска збережені на першому диску файли залишаються на місці. Приєднаний диск буде заповнюватися в процесі роботи. Якщо потрібно відразу перерозподілити файли, виконуємо балансування:
sudo btrfs balance start /
Залежно від обсягу даних і швидкісних характеристик дисків цей процес може бути тривалим.
Якщо використовувати диски (або розділи) однакового розміру, то можна на ходу конвертувати single device в RAID масив.
btrfs balance start -dconvert = raid1 -mconvert = raid1 /
В результаті вийде RAID з дзеркалюванням даних і метаданих. Аналогічним чином можна побудувати RAID будь-якого рівня, не забуваючи при цьому про кількість необхідних для цього дисків.

Оцінити отриманий результат можна виконавши команду:

sudo btrfs filesystem show /

sudo btrfs filesystem show /

Отримати інформацію про обсяг, зайнятому метаданими:
btrfs filesystem df /
Отримати інформацію про обсяг, зайнятому метаданими:   btrfs filesystem df /

Балансування я виконав не відразу, а через кілька днів після початку активної експлуатації нетбука. Здивувало, що Btrfs несподівано перемістила ~ 85% даних на більш повільний диск. Хотілося б думати, що це правильне рішення. У будь-якому випадку це дуже цікавий результат.

Додаткова оптимізація операційної системи Linux для роботи на SSD

Для того, щоб продовжити життя твердотельному накопичувача, як SSD, так і звичайному флеш-накопичувача, потрібно по-можливості скоротити для них кількість операцій запису в одиницю часу. У тому числі зробити це можна шляхом оптимізації опцій монтування в файлі fstab.

В якості файлової системи для каталогу / boot була не випадково обрана нежурналіруемая файлова система ext2. Журнальованою ФС, з одного боку, є стійкими до аварійних ситуацій, але з іншого боку, збільшують кількість записів на жорсткий диск.

Для розділів Btrfs, розміщених на SSD, додаємо опцію ssd. Як зміниться після цього алгоритм роботи з диском досконально невідомо. Можна припустити, що при старті або в процесі роботи на накопичувачі будуть відшукувати незайняті блоки і регулярно звільнятися. Одним словом, гірше не буде.

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

Операції читання файлів також можуть створювати велике навантаження на твердотільний накопичувач, так як при кожному зверненні записується час доступу до файлу або директорії (atime). Запис на диск відбувається навіть при читанні з кеша.

Уникнути цього можна додавши опції noatime, nodiratime, які відключають запис міток часу відповідно для файлів і для директорій (за деякими джерелами noatime включає в себе nodiratime).

Відключення atime не тільки подовжує життя жорсткого диска, але і як зазначається в цієї статті, на 30% збільшує швидкість системи. Однак не всі додатки зможуть правильно працювати з відключеними тимчасовими мітками.

Альтернативою їм може бути більш демократична опція relatime. При її використанні мітки часу оновлюються, але не при кожному зверненні до файлу, а тільки в тому випадку, якщо файл був змінений з моменту останнього запису atime.

Прописуємо relatime для всіх розділів, розташованих на SSD.

Для того, щоб ще більше полегшити життя SSD, а заодно знову ж поліпшити швидкодію комп'ютера, переносимо в оперативну пам'ять за допомогою файлової системи tmpfs тимчасові, службові та лог-файли. Для цього додаємо в кінець fstab директиви монтування відповідних каталогів в tmpfs відповідно до рекомендацій представленими тут .

Остаточно у мене вийшло так:


# / Etc / fstab: static file system information.
#
# <File system> <mount point> <type> <options> <dump> <pass>
# / Was on / dev / sda2 during installation
UUID = 6bdc62a7-9964-4558-8594-8137271e4591 / btrfs compress = lzo, ssd_spread, relatime, [Email protected] 0 1
# / Boot was on / dev / sda1 during installation
UUID = 256ce960-d9fd-4b9f-b336-cdac0915a33d / boot ext2 relatime 0 2
# / Home was on / dev / sda2 during installation
UUID = 6bdc62a7-9964-4558-8594-8137271e4591 / home btrfs compress = lzo, ssd_spread, relatime, [Email protected] 0 2
#
tmpfs / tmp tmpfs rw, size = 250m 0 0
tmpfs / run tmpfs rw 0 0
tmpfs / var / lock tmpfs rw 0 0
tmpfs / var / log tmpfs rw, size = 10m 0 0

Зберігаємо fstab і переходимо до sysctl.conf

sudo gedit /etc/sysctl.conf

Додаємо в кінець файлу:

vm.dirty_writeback_centisecs = 15000

Параметр в сотих частках секунди визначає як часто буде здійснюватися запис даних на диск з кеша. В даному випадку вийде кожні 15 секунд. Таким чином ми знову ж зменшуємо кількість операцій запису на SSD в одиницю часу.

При цьому, природно, підвищується ймовірність втрати даних у разі непередбаченого відключення живлення. Для ноутбука або нетбука з справним акумулятором ймовірність такої неприємності вкрай невелика.

Це далеко не всі. Оптимізаційні заходи можна продовжити і, наприклад, перенести на RamDisk браузерні кеш.

Опції монтування файлової системи Btrfs для традиційних механічних жорстких дисків

Твердотільний накопичувач SSD в нетбуці швидше все ж виняток, ніж правило. Тому для тих, хто слідом за мною захоче поекспериментувати з установкою Linux на Btrfs, наведу деякі корисні опції монтування дискових томів звичайних HDD, розмічених за допомогою цієї файлової системи.

compress - залишаємо. Згідно з тестами, представленим на сайті Phoronix ще в кінці 2010 року, компресія дає головний виграш в швидкості дискових операцій.

space_cache - включає кешування даних про вільні блоках в пам'яті. Без цієї опції в процесі пошуку вільного простору перед записом Btrfs буде щоразу сканувати всі дерево. За результатами більшості тестів Phoronix включення опції space_cache дає виграш в швидкості роботи з диском, хоча і не настільки істотний, як опція compress.

autodefrag - дефрагментація файлів на льоту.

В кінцевому рахунку для HDD повинно вийти приблизно так:

# / Etc / fstab: static file system information.
#
# <File system> <mount point> <type> <options> <dump> <pass>
# / Was on / dev / sda2 during installation
UUID = 6bdc62a7-9964-4558-8594-8137271e4591 / btrfs compress = lzo, space_cache, autodefrag, relatime, [Email protected] 0 1
# / Boot was on / dev / sda1 during installation
UUID = 256ce960-d9fd-4b9f-b336-cdac0915a33d / boot ext2 relatime 0 2
# / Home was on / dev / sda2 during installation
UUID = 6bdc62a7-9964-4558-8594-8137271e4591 / home btrfs compress = lzo, space_cache, autodefrag, relatime, [Email protected] 0 2
#

висновок

Робити якісь висновки з приводу доцільності використання файлової системи Btrfs я не візьмуся. Тривалість експлуатації комп'ютера з нової файлової системи поки ще невелика, хоча я і намагаюся використовувати його активно. Щось мені підказує, що все буде добре.

Загальне враження від швидкості і стабільності роботи Peppermint OS 5 зі стислою за допомогою LZO компресії файлової системою на Eee PC 900 найпозитивніші.

Якщо я скажу, що система літає, ви мені не повірите. І правильно зробите. Це старе пристрій на 915-му чіпсеті з Celeron-M 900 літати не вміє по визначенню. Але в порівнянні з самим собою під іншими ОС працює дійсно на диво швидко. Як то кажуть, результат перевершив очікування. Мабуть що ця остання інсталяція виявилася поки найвдалішою.

Знову ж таки не візьмуся стверджувати, що головна заслуга в цьому належить btrfs compress = lzo. Більшою чи меншою мірою вплив зробили все оптимізаційні настройки. Але те, що файлова система зіграла свою позитивну і не останню роль, безумовно.

Для того, щоб ви мали уявлення про що йде мова, наведу кілька тимчасових характеристик.

Завантаження комп'ютера з вимкненого стану до повного завантаження робочого столу займає приблизно 60 секунд. З них приблизно 15 секунд займає POST, і також ~ 15 секунд - сканування файлової системи Btrfs. Різницю в швидкості між опціями монтування ssd і ssd_spread помітити не вдалося.

Перший після включення комп'ютера запуск браузера Google Chroome - 12 секунд до появи вікна, 20 секунд завантаження початкової сторінки Google з підключенням до облікового запису і отрисовкой всіх зображень.

Повторний запуск браузера Chroome з початковою сторінкою Google - 10 секунд. Завантаження головної сторінки Yandex - 7 секунд.

Відкриття електронної книги в FBReader - 2 секунди, запуск текстового редактора AbyWord - 4 секунди, електронної таблиці Gnumeric - 2 секунди, відкриття папок з файлами в файловому менеджері PCManFM - миттєво.

Думаю цього достатньо для того, щоб скласти загальне уявлення. Як бачите, за Гаяне зусилля не були марними і дозволили помітно оживити старенький комп'ютер.

Цікаво, чи багато у кого сьогодні зберігся цей перший представник остаточно вимерлого сьогодні сімейства нетбуків?