• Без рубрики

    Встановлення Ubuntu на USB флешку

    28.08.2015

    Як підлити життя флешці?

    • Флеш-пам’ять відрізняється від жорстких дисків тим, що кількість циклів запису обмежений типово числами 10 і 100 тисяч записів (для різних типів флеш-пам’яті).
    • Для жорстких дисків такий параметр (число циклів запису) взагалі майже ніколи не вказується — там швидше відбувається механічне зношування елементів диска. А магнітний шар на поверхні диска може перезаписуватися майже нескінченно.
    • Схеми пам’яті з витримують до 10 тисяч записів коштують набагато дешевше схем витримують 100 тисяч… як ви думаєте — якими схемами комплектуються недорогі флешки, що знайшли широке поширення? Але і висока ціна флешки теж не говорить про підвищеної живучості — тут ключове слово — тип пам’яті — MLC (Multi-level cell, багаторівневі комірки пам’яті) витримує близько 10 тисяч записів; SLC (Single-level cell, однорівневі комірки пам’яті) — понад 100 тисяч. Більш дорогі флешки дійсно живуть довше, але це досягається іншими засобами (про них — трохи пізніше)

    Здається це багато, але розберемося як ці цикли запису «з’їдаються» при роботі ОС.

    1. Запис на флеш-носій відбувається по-блочно (як правило — десятки кілобайт), і запис послідовно двох байт в файл з інтервалом між записами в кілька хвилин викличе дві запису одного і того ж блоку пам’яті (тобто оновляться два рази кілька тисяч осередків).
    2. При роботі файлової системи (ФС) деякі службові структури ФС постійно оновлюються:
    • журнал (для журналируемых ФС) — чим частіше він пишеться, тим вище ймовірність збереження цілісності ФС при збоях системи або харчування. Частота запису в журнал, як правило змінювана, але значення за замовчуванням не зовсім підходять для роботи з флеш-пам’яттю, а збільшення періодів між записом — призводить до збільшення ймовірності втрати цілісності ФС при збої.
    • i-node (спеціальна структура, в якій зберігається заголовок файлу або каталогу) — при кожному зверненні (навіть читання) до файлу або каталогу в i-node прописується дата/час останнього звернення. Здавалося б — всього декілька байт, але згадаємо про блокову запис, і те, що запис їх йде при кожному зверненні до файлу (прочитали байт — змінилися, ще байт — знову змінилося).
    1. Тимчасові файли, логи — так само часто оновлюються.
    2. SWAP-розділ — якщо він використовується в роботі системи, то запис у нього теж дуже інтенсивна.

    Крім того, треба не забувати, що ліміт циклів запису діє на кожну комірку пам’яті. І якщо на флешці в один і той же блок зробити 10 тисяч записів, а в інші зробити за 100 записів, то блок, куди було записано 10 тисяч разів, на запису (10-тисяч + скільки-то) «помре», а контролер флешки, виявивши 1 битий блок, може заявити, що померла вся флешка. А навіть якщо він цього не зробить, то цей блок буде містити важливу для роботи системи або ФС інформацію, і результат буде практично тим же — раптова зупинка системи і неможливість прочитати дані з флешки.

    Як боротися з усім цим? Для початку зрозуміємо і приймемо як даність:

    • Флешки не вічні і вмирають не попереджаючи !

    Усвідомивши це зрозуміємо, що та система на флешці — не може бути довговічною і надійною

    • А зрозумівши і прийнявши це замислимося — а потрібна для такої системи надійність журналируемой ФС (такою дорогою ціною, як сокращениевремени життя флешки і системи на ній)? Однозначно — немає. Нам потрібно EXT4 з відключеним журналом. Якщо розбиратися з відключенням журнал в EXT3/4 не хочете -, просто скористайтеся EXT2.
    • Є й інші ФС, і параметри, які можуть продовжити життя флешці. Ці рішення можуть дати великі переваги. Якщо є бажання — то пошукайте інші варіанти. Особливо звертає на себе увагу опція ssd файлової системи btrfs…
    • Позбавиться від запису дати/часу останнього доступу до файлів і директорій в i-node допомагають опції монтування файлових систем noatime і nodiratime. Їх, після установки системи, потрібно буде прописати у файлі /etc/fstab для всіх розділів системи, які розташовані на флешці.

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

    • Тимчасові файли і swap. Сучасні комп’ютери рідко страждають недоліком оперативної пам’яті (перелом в цьому отношениислучился в комп’ютерній індустрії після значного здешевлення схем пам’яті). І вже при 1ГБ оперативної пам’яті Linux досить рідко звертається до swap, якщо не запускати ресурсномісткі завдання (наприклад кодування високоякісного відео або редагування величезних зображень). Якщо пам’яті 2ГБ або більше, то змусити використовувати Linux swap взагалі досить складно.
    • Повна відсутність swap загрожує неадекватною поведінкою системи при вичерпанні ресурсів оперативної пам’яті, але згадаємо, що ми з вами усвідомили — система на USB-флешці не може бути надійною за визначенням. Висновок напрошується сам собою — swap для системи на флешці — не потрібен. А на комп’ютерах з малим об’ємом пам’яті потрібно бути обережним і намагатися не запускати багато додатків одночасно. Можна налаштувати ramzswap (він же — compcache): своп в оперативну пам’ять з упаковкою свопируемых станиць.

    Ресурси оперативної пам’яті допоможуть і з тимчасовими файлами — досить змонтувати тимчасовий каталог системи /tmp в диск організований в пам’яті. Для цього нам знадобиться чудова файлова система tmpfs (навіть назва говорить, що вона добре підходить для /tmp).

    В /etc/fstab потрібно прописати рядок:

    tmpfs /tmp tmpfs rw,size=32m 0 0

    У прикладі максимальний розмір /tmp встановлено 32 Мегабайта. Розмір можна встановити інший, але якщо обмеження не поставити, то «сдуревшее» додаток, яке буде писати нескінченно в тимчасовий файл, може підвісити вашу систему. Розмір /tmp важливо вибрати правильно т. к. в ньому будуть зберігатися різні речі. Наприклад, відео з Youtube, ви не зможете подивитися до кінця якщо файл з відео не влізе повністю в ваш /tmp.

    так само варто вчинити і з /run (раніше відомий як /var/run) і /var/lock (в цих каталогах зберігається службова інформація актуальна тільки на час поточної сесії, об’єм — малесенький, а от оновлення досить регулярні). На них ліміт розміру можна не ставити. Можна піти далі і розмістити в пам’яті і логи (/var/log), однак без логів на пристрої постійного зберігання даних (у нашому випадку — на флешці) буде вкрай важко розібратися зі збоєм системи, що викликає перезавантаження (після перезавантаження — все, що було в пам’яті — загубиться і логи будуть «порожні» — тільки те, що туди запишеться з моменту завантаження системи). Ліміт size для /var/log варто ставити близько 6-10Мб (для типового десктоп варіанти). Загальний вигляд файлу /etc/fstab буде приблизно:

    # /etc/fstab: static file system information.

    # # Use 'blkid' to print the universally unique identifier for a

    # device; this may be used with UUID= as a more robust way to name devices

    # that works even if disks and are added removed. See fstab(5).

    # # proc /proc proc nodev,noexec,nosuid 0 0

    # / was on /dev/sda2 during installation UUID=57f10d10-de95-4d09-8e18-aaf1c42c3f36 / ext4 errors=remount-ro,noatime,nodiratime 0 1

    # /home was on /dev/sda3 during installation UUID=7ecf4c7b-3474-4850-9da5-6e519e415937 /home ext4 noatime,nodiratime 0 2 tmpfs /tmp tmpfs rw,size=100m 0 0 tmpfs /run tmpfs rw 0 0 tmpfs /var/lock tmpfs rw 0 0 tmpfs /var/log tmpfs rw,size=10m 0 0

    • У прикладі на флешці створений корінь і окремий /home. Якщо є ще якісь розділи з флешки — то їм теж прописуємо noatime,nodiratime.
    • Швидкість запису на флешку — також «хворе місце» нашої системи, і скорочуючи число циклів запису на флеш ми не тільки продовжимо час її життя, але і швидкість роботи ОС покращимо.

    Як правильно ставити GRUB

    А тут все просто — завантажувач ( GRUB ) треба ставити на флешку. Якщо ви залишите запропоновану установником установку (на перший жорсткий диск в системі), то в MBR жорсткого диска пропишеться частина коду GRUB, який стане шукати іншу частину свого коду на розділі, куди буде записан /boot при установці системи (тобто на флешці). Витягнувши флешку з комп’ютера ви не дасте кодом GRUB-а на жорсткому диску знайти своє продовження.

    І комп’ютер не зможе завантажити ОС. Відновити роботу GRUB — просто. Якщо ж треба відновлювати завантажувач Windows, то варто пошукати інформацію щодо відновлення завантажувача на будь-якому профільному формі. Але краще бути уважним при установці, і не створювати собі зайву роботу.

    Підведемо підсумки

    Якщо ми хочемо користуватися системою на флешці довго, і не отримати розчарування від втрати даних, то потрібно робити так:

    • тип ФС для розділів системи вибираємо EXT4 з відключеним журналом (або на худий кінець — EXT2).
    • swap не створюємо (а якщо на комп’ютері є розділ swap — то говоримо інсталятори — не використовувати його).
    • GRUB встановлюємо обов’язково на флешку, де і створюємо розділи для встановлення системи.
    • прописуємо в /etc/fstab опції noatim,nodiratime для всіх розділів розміщених на флешці.
    • прописуємо в /etc/fstab монтування /tmp /run, /var/lock (і, можливо, /var/log) в tmpfs (не забуваємо про обмеження розміру).
    • При використанні системи потрібно регулярно робити резервну копію важливих даних на інший носій (не забуваємо про невисоку надійність ОС на флешці і можливу раптову кончину флеш-пам’яті).
    • А при використанні на комп’ютері з невеликим об’ємом оперативної пам’яті (1Гб і менше) намагаємося не запускати багато ресурсомістких завдань одночасно або вивчаємо і налаштовуємо ramzswap .
    • Крім зазначеного, можна застосувати інші прийоми оптимізації продуктивності системи (ці прийоми виходять за рамки даної статті, але їх легко знайти в Internet-е).
    • А головне — ніколи не забуваємо про висновок, до якого ми прийшли на початку цієї статті. Повторю: ОС, встановлена на флешку не може бути такою ж надійною і довговічною як встановлена на жорсткий диск.

    «Підводні камені»

    Є одна прикра помилка інсталятора (можна сказати особливість ), яка не дозволяє встановити Ubuntu на той же фізичний диск з якого завантажився Live образ. Тобто якщо ви захочете завантажившись з флешки на неї ж і поставити Ubunut (в інший розділ) — то вам це не вдасться. Обійти цю «особливість» можна видаливши «руками» запис про примонтированном розділі з флешки з /etc/mtab.

    Альтернативи

    • Зовнішній жорсткий диск не страждає малим числом циклів запису, однак, операційна система, працюючи з диском по досить повільного інтерфейсу (зазвичай USB2. USB3 і e-SATA інтерфейси — значно швидше, але на момент написання статті — ще не сильно поширені), також потребує оптимізації. Тут знадобляться і noatime,nodiratime, теж варто подумати — а потрібен swap, так і /tmp корисно також розмістити в пам’яті. А ось логи розміщувати в пам’яті — не варто. Ну, а крім того, зовнішній диск — це зовсім інший розмір і вагу. так і падіння для цих пристроїв — небезпечні.
    • Зовнішній SSD диск — досить дороге рішення. Теж не маленький, хоч і легше зовнішнього жорсткого диска і падінь — майже не боїться (як і флешка). І там теж є обмеження по кількості циклів запису, але контролери твердотільних дисків використовують спеціальні алгоритми перерозміщення записуваних блоків з урахуванням знань про те, скільки записів було зроблено в кожен блок пам’яті. Ці алгоритми значно продовжують термін життя такого носія інформації.

    Спрощені алгоритми перерозміщення блоків використовуються і в деяких (як правило — не найдешевших) флешках. Для їх роботи потрібна як надлишкова кількість комірок пам’яті, так і більш швидкий і «розумний» контролер. Власне «особливий» контролер і дод. (не доступна користувачу) пам’ять і підвищують вартість флешки… хоча, звичайно основне підвищення ціни роблять маркетологи, як зазвичай.

    • Можна піти й іншим шляхом — змінити дистрибутив. Є дистрибутиви спеціально «заточені» на роботу з флешки (неберусь тут перераховувати їх всі — їх легко знайти). Яскравим представником таких дистрибутивів є Puppy Linux (русифіковані збірки — PuppyRus Linux ). Дистрибутив цей зібраний мінімалістично і з використанням самих скромних (за розмірами) програм. Це дозволяє в процесі завантаження розмістити всю файлову систему Linux в оперативній пам’яті. А в процесі вимикання системи всі зміни у ФС (вироблені за час роботи) записуються одноразово назад на флешку. Зміни можна скинути і в процесі роботи, якщо є побоювання наприклад у можливому раптовому відключенні живлення, ну або просто — що б бути спокійним, що не загубиться нічого. А найпривабливіше для любителів Ubuntu в тому, що є складання Puppy засновані на Ubuntu. Сайт проекту PuppyRus містить багато корисної інформації та інструкцій.

    А в чому відмінність від LiveUSB

    • Власне LiveUSB, створена з файлом збереження, по своїй суті мало відрізняється від Ubuntu встановленої на флешці. Разом з тим, є і ряд принципових відмінностей.
    • Коротенько, як влаштована і працює LiveUSB: При створенні LiveUSB у файлову систему флешки (FAT) копіюється вміст CD або DVD), на флешку встановлюється простенький завантажувача syslinux, і в корені флешки створюється спеціальний файл збереження (усередині якого створюється файлова система EXT2) — casper.rw
    • Коли така флешка завантажується, то корінь файлової системи монтується «хитрим» способом: спочатку як корінь монтується спеціальний файл з упакованої, доступною тільки для читання файловою системою (SquashFS), а потім «поверх» нього монтується casper.rw в режимі запис/читання. Виходить, що всі необхідні для роботи системи файли лежать в SquashFS, а нові і оновлені файли — в casper.rw. При запиті до файлу спочатку перевіряється, чи немає його в casper.rw, а потім він шукається в SquashFS, таким чином навіть системні файл можна відновити і працювати з новими версіями.

    Каталоги /tmp /run, /var/lock на LiveUSB теж монтуються в пам’ять (tmpfs)

    Що ж ми отримуємо стосовно до цікавлять нас аспектам: Запис на флешку йде приблизно в такому ж обсязі і його не вдасться скоротити (додавши noatime,nodiratime в опції монтування в /etc/fstab) т. к. монтування кореня відбувається на етапі ініціалізації ядра системи і в /etc/fstab Live системи просто немає монтування кореня. Продуктивність по запису (власне це хворе місце ми особливо і не розглядали при розмові про Ubuntu встановленої на флешку) тут буде ще гірше, запис йде в ФС EXT2, а вона лежить у фалі на ФС FAT.

    Додатково, флешка завжди зберігає один і той же набір системних файлів в SquashFS і будь-які оновлення системи будуть займати місце в casper.rw, але не будуть звільняти місце в SquashFS і це може стати проблемою при невеликому обсязі флешки. У «сухому залишку»- у LiveUSB немає особливих переваг перед правильно встановленої на флешку системою, а недоліки — присутні.

    Короткий опис статті: установка ubuntu з флешки Досить часто виникає бажання або необхідність поставити Ubuntu на USB флешку і отримати можливість користуватися своєю улюбленою ОС на будь-якому комп’ютері (лише б була можливість завантажитися з USB). Робиться це просто — вантажимося з Дистрибутивів Ubuntu (іл…

    Джерело: Установка Ubuntu на USB флешку

    Також ви можете прочитати