Linux ext3 faq (російська версія)

Російська версія Linux ext3 FAQ: «Відповіді на типові запитання про файлову систему Linux ext3».

Російська версія Linux ext3 FAQ. «Відповіді на типові запитання про файлову систему Linux ext3».

1. Де я можу знайти цей FAQ?

Ext3 - журнальована файлова система, розроблена Стівеном Твіді (Stephen Tweedie). Вона сумісна з ext2; фактично її можна розглядати як файлову систему ext2 з журналированием. Можливість журналирования позбавляє вас необхідності чекати роботи fsck і турбуватися про пошкодження метаданих. Окремо варто відзначити, що ви можете безпроблемно перемикатися з ext2 на ext3 і назад на обраному розділі жорсткого диска (partition) - досить лише поставити правильний тип файлової системи для команди монтування (mount).

4. Де знайти ext3 для Linux?

Починаючи з Linux-ядра версії 2.4.15 (не використовуйте цей реліз!) Ext3 включена в стандартне ядро, так що вам не потрібні додаткові патчі.

На момент написання цього FAQ останньою версією ext3-патча для Linux-ядер 2.2 була досить застаріла 0.0.7a. Зараз роботи над ext3 для Linux 2.2 не ведуться.

5. Що мені потрібно для збірки Linux-ядра з ext3?

Для Linux починаючи з версії 2.4.16 вам потрібен тільки архів з ядром.

Інструкція нижче призначена для ядер 2.2, однак повинна працювати і для старих Linux-релізів з гілки 2.4, у яких немає підтримки ext3. Вам знадобиться архів з ядром і патчі ext3:

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

Після цього потрібно налаштувати ядро ​​(за допомогою make config або make menuconfig) і встановити включеними параметри CONFIG_EXPERIMENTAL і CONFIG_EXT3_FS (CONFIG_EXPERIMENTAL = y, CONFIG_EXT3_FS = y), після чого зібрати ядро.

Крім того, знадобиться пакет e2fsprogs (щонайменше, версія 1.25) з підтримкою ext3, який можна знайти на сайті проекту (e2fsprogs.sourceforge.net).

6. Як конвертувати розділ ext2 в ext3? (Як мені використовувати ext3?)

Перед тим, як ви зможете примонтировать розділ жорсткого диска як ext3, необхідно створити журнал на ньому. Найпростіший спосіб зробити це - виконати наступну команду:

(Замість hdaX необхідно підставити відповідний пристрій.)

Команду можна виконувати на примонтировать і на демонтувати розділах жорсткого диска. При створенні журналу на примонтировать файлової системи з'явиться файл .journal. не намагайтеся видалити його, не створюйте його резервних копій і не намагайтеся відновити з backup'а! При запуску tune2fs -j на демонтувати розділі буде створений невидимий файл журналу.

Тепер можна монтувати файли систему як ext3 за допомогою mount:

Відформатувати розділ жорсткого диска як ext3 можна за допомогою наступної команди:

(В такому випадку / dev / hdaX можна буде використовувати і в якості розділу ext2).

7. Як мені відновити вилучені файли з розділу жорсткого диска з файлової системою ext3?

Фактично ніяк. Ось що з цього приводу сказав Andreas Dilger, один з розробників:

  • Для перевірки можливості безпечного продовження разлінковкі (unlink) після падіння файлова система ext3 обнуляє покажчики на блоки в inode'ах, а ext2 просто позначає ці блоки як невикористовувані, inode'и - як віддалені, залишаючи покажчики недоторканими.

Єдине, що вам залишається робити, - викликати grep для знаходження частин видалених файлів і сподіватися на краще.

8. Чому команда df повідомляє, що розділ заповнений, а du вказує на вільний простір?

  • Звичайною причиною для цього є який-небудь призначений для користувача процес, який зберігає відкритим віддалений файл. Коли подібне відбувається, du не бачить займане цим файлом місце, т. К. Його вже більше немає в дереві каталогів. Однак дисковий простір, займане файлів, все ще не звільнено. Такі випадки можливі лише тоді, коли останній процес з відкритим файлом закриває дескриптор або ж цей процес завершується.

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

9. Я скомпілював ext3 модульно, а мій кореневий розділ (/) монтується як ext2. (Це питання спочатку запропонував Boris Wesslowski; пізніше його значно переробив Theodore Ts'o.)

Якщо у вас ext2 зібрана в ядрі монолітно, а ext3 - модульно, і файлової системою є ext2 / 3, ядро ​​завжди буде монтувати кореневий розділ як ext2, а не ext3, т. К. Під час монтування ядром кореневого розділу файлової системи у нього ще немає доступу до модулів в зв'язку з тим, що вони розташовані на цьому самому кореневому розділі. (Традиційна проблема курки і яйця.)

Якщо у вас є вибір, варто подумати про доцільність складання ext3 модульно. Якщо хочете використовувати ext3 на кореневої файлової системи, модуль ext3 завжди буде завантажений, і ви не зможете вивантажити його назад, так що, ймовірно, варто його скомпілювати монолітно. Більш того, на модулі витрачається трохи більше пам'яті (в середньому, 2k на модуль), і для нього потрібна додаткова запис в кеші TLB - ледь вловимий, а можливо, і зовсім непомітний недолік, однак якщо у модульної збірки ext3 немає ніяких переваг , чи варто так робити?

Якщо ви все ж хочете скомпілювати ext3 модульно і використовувати його для своєї кореневої файлової системи, необхідно завантажитися на образ initial ramdisk (initrd) як на кореневої образ (root image). Образ initrd буде містити необхідні модулі (scsi, ext3 і т.п.), так що можете примонтировать свою «справжню» кореневу файлову систему і потім скористатися pivot_root для заміни кореневої файлової системи initrd на «справжню».

Більшість дистрибутивів виконують дію pivot_root автоматично, але існують відмінності в тому, як повинна бути викликана утиліта, яка створює образ initrd.

  • В системі SUSE вам необхідно додати jbd ext3 (в цьому порядку!) В настройку YaST під назвою INITRD_MODULES, а потім викликати mk_initrd.
  • У системах Red Hat досить просто виконати mkinitrd.
  • В системі Debian (woody і пізніших) необхідно виконати наступну команду:

Де 2.4.18-386 потрібно замінити на версію використовуваного в системі Linux-ядра з Debian-пакета. Зверніть увагу на те, що ця операція вимагає наявності встановленого пакета initrd-tools, і якщо ви не використовуєте налаштування initrd, необхідно налаштувати конфігураційні файли завантажувача (LILO або GRUB) таким чином, щоб вони завантажували ядро ​​з образом initrd.

10. Як конвертувати мій розділ з файловою системою ext3 назад в ext2?

Насправді, потреба в цьому мінімальна, тому що в більшості випадком цілком достатнім буде примусово примонтировать розділ жорсткого диска як ext2. Якщо ж ви все-таки хочете повернути розділу ext2 замість ext3, то потрібно виконати наступну команду на демонтувати пристрої:

Про всяк випадок після цієї операції корисно запустити перевірку з fsck:

Тепер можна спокійно видаляти файл .journal, якщо такий є.

11. Якщо завершення роботи системи пройшло аварійно, чи треба навіть при включеному журнал запускати e2fsck?

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

Якщо ж в файлової системі виявлені якісь проблеми (бо під час попереднього запуску ядро ​​помітило деякі протиріччя), e2fsck автоматично проведе повну перевірку, якщо це необхідно.

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

12. Які максимальні обсяги файлової системи ext3 і файлів на ext3? (Надихнув на публікацію відповіді на це питання Andreas Dilger, а запропонував його - Christian Kujau.)

Файлова система ext3 може підтримувати файли розміром до 1 ТБ. З Linux-ядром 2.4 обсяг файлової системи обмежений максимальним розмір блочного пристрою, що становить 2 терабайта. В Linux 2.6 (для 32-розрядних процесорів) максимальний розмір блокових пристроїв становить 16 ТБ, однак ext3 підтримує тільки до 4 ТБ.

13. Як конвертувати файл журналу першої (V1) версії в другу (V2)?

Для конвертації старої (ext3 v0.0.3 або більш ранні релізи) файлової системи в новий формат журналу скористайтеся командою

14. Як конвертувати мою кореневу файлову систему першої (V1) версії в другу (V2)?

І перезавантажте систему.

15. Я оновив ext3. Переконвертувати всі розділи жорсткого диска. Тепер при завантаженні я бачу повідомлення «EXT3-fs: mounted filesystem with ordered data mode». Це нормально?

Nigel Metheringham відповів на це питання в поштовій розсилці ext3-users:

  • Все в порядку. Повідомлення EXT3-fs просто повідомляє вас про те, що монтування файлової системи пройшло успішно. Крім того, каже, який вид журналирования ви використовуєте.

У ext3 є журнали двох форматів:

  • перша версія (version 1) - використовується за умовчанням тільки в релізах ext3 0.0.3 і більш ранніх;
  • друга версія (version 2) - використовується за умовчанням в файлових системах ext3 останніх версій (починаючи з 0.0.4).

Журнали другої версії підтримують додаткову семантику, необхідну для журналирования метаданих, і надають дві форми журналирования: впорядковану (ordered) і зі зворотним записом (writeback). Журнали обох версій підтримують журнал даних (коли всі дані, що надходять на диск, журналіруются).

У дистрибутивному файлі CHANGES повідомляється наступне:

Подробиці доступні в «Release Notes» до Red Hat Linux 7.2.

16. Наскільки стабільна файлова система ext3?

На моєму досвіді ext3 стабільна так само, як і ext2.

17. На ext3 працює квотування?

Квоти повинні працювати з Linux-ядрами 2.4 (і 2.6 - прим. Перекл.). У мене були проблеми з 2.2, але у інших їх не спостерігалося.

18. LILO працює з ext3?

Схожі статті