Ключевые слова:ex3fs, linux, faq, (найти похожие документы)
From: Дмитрий Шурупов <root nixp ru>
Newsgroups: nixp.ru
Date: Mon, 22 Oct 2005 14:31:37 +0000 (UTC)
Subject: Linux ext3 FAQ (русская версия)
Оригинал: http://www.nixp.ru/articles/linux_ext3_faq_russian
Автор оригинала: Juri Haberland.
Версия оригинала: 2004-10-14.
> 1. Где я могу найти этот FAQ?
Оригинальную английскую версию на
http://batleth.sapienti-sat.org/projects/FAQs/ext3-faq.html , а
перевод на русский язык -- на
http://www.nixp.ru/articles/linux_ext3_faq_russian
Комментарии и предложения присылайте автору оригинала, коим
является Юрий Хаберланд (Juri Haberland, juri-at-koschikode.com). Не
стоит задавать ему технические вопросы по ext3 -- для этого есть
почтовая рассылка ext3-users.
> 2. Что такое ext3?
Ext3 -- журналируемая файловая система, разработанная Стивеном
Твиди (Stephen Tweedie). Она совместима с ext2; фактически ее можно
рассматривать как файловую систему ext2 с журналированием. Возможность
журналирования лишает вас необходимости дожидаться работы fsck и
беспокоиться о повреждении метаданных. Отдельно стоит отметить, что вы
можете беспроблемно переключаться с ext2 на ext3 и обратно на
выбранном разделе жесткого диска (partition) -- достаточно лишь задать
правильный тип файловой системы для команды монтирования (mount).
> 3. Есть ли у ext3 почтовая рассылка или ее архив?
Почтовая рассылка для пользователей ext3 доступна на
https://listman.redhat.com/mailman/listinfo/ext3-users/
Ее архив опубликован по адресу
https://listman.redhat.com/pipermail/ext3-users/ , а также может
быть найден на http://marc.theaimsgroup.com/?l=ext3-users
> 4. Где найти ext3 для Linux?
Начиная с Linux-ядра версии 2.4.15 (не используйте этот релиз!)
ext3 включена в стандартное ядро, так что вам не нужны дополнительные
патчи.
Патчи для более старых релизов Linux-ядра 2.4, а также
промежуточные заплатки доступны на http://www.zip.com.au/~akpm/linux/ext3/
Старые ext3-патчи для Linux 2.2 можно найти на
ftp://ftp.*.kernel.org/pub/linux/kernel/people/sct/ext3/ или на
ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/
На момент написания этого 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:
# cd /usr/src
# wget ftp://ftp.*.kernel.org/pub/linux/kernel/v2.2/linux-2.2.20.tar.bz2
# wget ftp://ftp.*.kernel.org/pub/linux/kernel/people/sct/ext3/ext3-0.0.7a.tar.bz2
# rm -rf linux
# tar -xjvf linux-2.2.20.tar.bz2
# tar -xjvf ext3-0.0.7a.tar.bz2
# cd linux
# cat ../ext3-0.0.7a/linux-2.2.19.kdb.diff | patch -sp1
# cat ../ext3-0.0.7a/linux-2.2.19.ext3.diff | patch -sp1
При установке патча возникнет ошибка в обновлении Makefile из-за
несоответствия подверсии ядра. Можете это спокойно проигнорировать.
После этого нужно настроить ядро (с помощью make config или make
menuconfig) и установить включенными параметры CONFIG_EXPERIMENTAL и
CONFIG_EXT3_FS (CONFIG_EXPERIMENTAL=y, CONFIG_EXT3_FS=y), после чего
собрать ядро.
Кроме того, понадобится пакет e2fsprogs (по меньшей мере, версия
1.25) с поддержкой ext3, который можно найти на сайте проекта
(http://e2fsprogs.sourceforge.net).
> 6. Как конвертировать раздел ext2 в ext3? (Как мне использовать ext3?)
Перед тем, как вы сможете примонтировать раздел жесткого диска как
ext3, необходимо создать журнал на нем. Самый простой способ сделать
это -- выполнить следующую команду:
# tune2fs -j /dev/hdaX
(Вместо hdaX необходимо подставить соответствующее устройство.)
Команду можно выполнять на примонтированном и на размонтированном
разделах жесткого диска. При создании журнала на примонтированной
файловой системе появится файл .journal. не пытайтесь удалить его, не
создавайте его резервных копий и не пытайтесь восстановить из
backup'а! При запуске tune2fs -j на размонтированном разделе будет
создан невидимый файл журнала.
Теперь можно монтировать файлую систему как ext3 с помощью mount:
# mount -t ext3 /dev/hdaX /mnt/somewhere
Отформатировать раздел жесткого диска как ext3 можно с помощью
следующей команды:
mke2fs -j /dev/hdaX
(В таком случае /dev/hdaX можно будет использовать и в качестве
раздела ext2).
> 7. Как мне восстановить удаленные файлы с раздела жесткого диска с
> файловой системой ext3?
Фактически никак. Вот что по этому поводу сказал Andreas Dilger,
один из разработчиков:
Для проверки возможности безопасного продолжения разлинковки
(unlink) после падения файловая система ext3 обнуляет указатели на
блоки в inode'ах, а ext2 просто помечает эти блоки как неиспользуемые,
inode'ы -- как удаленные, оставляя указатели нетронутыми.
Единственное, что вам остается делать, -- вызывать grep для
нахождения частей удаленных файлов и надеяться на лучшее.
> 8. Почему команда df сообщает, что раздел заполнен, а du указывает
> на свободное пространство?
Комментирует Theodore Ts'o, один из разработчиков ext2:
Обычной причиной для этого служит какой-нибудь пользовательский
процесс, сохраняющий открытым удаленный файл. Когда подобное
происходит, 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 и более поздних) необходимо выполнить
следующую команду:
mkinitrd -o boot/initrd.img-2.4.18-386 /lib/modules/2.4.18-386
Где 2.4.18-386 нужно заменить на версию используемого в
системе Linux-ядра из Debian-пакета. Обратите внимание на то, что
эта операция требует наличия установленного пакета initrd-tools, и
если вы не используете настройки initrd, необходимо настроить
конфигурационные файлы загрузчика (LILO или GRUB) таким образом,
чтобы они загружали ядро с образом initrd.
> 10. Как конвертировать мой раздел с файловой системой ext3 обратно в ext2?
В действительности, потребность в этом минимальна, потому что в
большинстве случаем вполне достаточным будет принудительно
примонтировать раздел жесткого диска как ext2. Если же вы все-таки
хотите вернуть разделу ext2 вместо ext3, то нужно выполнить следующую
команду на размонтированном устройстве:
# tune2fs -O ^has_journal /dev/hdaX
На всякий случай после этой операции полезно запустить проверку с fsck:
# fsck.ext2 -f /dev/hdaX
Теперь можно спокойно удалять файл .journal, если таковой имеется.
> 11. Если завершение работы системы прошло аварийно, надо ли даже
> при включенном журналировании запускать e2fsck?
Комментирует Theodore Ts'o:
Лучше всегда запускать 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 или более ранние релизы)
файловой системы в новый формат журнала воспользуйтесь следующей
командой:
# mount /dev/hdaX /mnt -o journal=update
> 14. Как конвертировать мою корневую файловую систему первой (V1)
> версии во вторую (V2)?
Введите:
# lilo -R linux rw rootflags=journal=update
И перезагрузите систему.
> 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 сообщается следующее:
Новые опции монтирования:
"mount -o journal=update"
Монтирует файловую систему с журналом первой версии, динамически
обновляя журнал до версии 2.
"mount -o data=journal"
Журналирует все данные и метаданные, так что данные записываются
дважды. Это режим, который использовали все предыдущие версии ext3.
"mount -o data=ordered"
Журналирует только изменения метаданных, но обновления данных
сбрасываются на жесткий диск до совершения транзакции. Данные
записываются не атомарно, но этот режим гарантирует, что после
падения файлы не будут содержать блоки данных из устаревших файлов.
"mount -o data=writeback"
Журналирует только изменениях метаданных, а обновления данных
полностью остаются для нормального процесса синхронизации ("sync")
После падения файлы могут содержать блоки данных из устаревших
файлов: этот режим абсолютно эквивалентен запуску ext2 с очень
быстрым fsck при перезагрузках компьютера.
Режимы Ordered и Writeback требуют наличия журнала второй версии. Если
вы не хотите обновлять формат журнала, то будет доступно только
журналирование в режиме Journaled.
Для журнала первой версии (journal V1) по умолчанию работает режим
Journaled, а для V2 -- Ordered.
Подробности доступны в "Release Notes" к Red Hat Linux 7.2.
ftp://ftp.redhat.com/pub/redhat/redhat-7.2-en/os/i386/RELEASE-NOTES
> 16. Насколько стабильна файловая система ext3?
На моем опыте ext3 стабильна так же, как и ext2.
> 17. На ext3 работает квотирование?
Квоты должны работать с Linux-ядрами 2.4 (и 2.6 -- прим. перев.).
У меня были проблемы с 2.2, но у других их не наблюдалось.
> 18. LILO работает с ext3?
Да.