ext4: Еще тестируется или уже работает?

apelsyn 8 июня 2008 в 02:02 2,6k

В анонсе Fedora 9 в одной из первых строчек упоминается о экспериментальной поддержке файловой системы ext4.

В этой статье я расскажу о том какая же польза может быть от замены файловой ext3 на ext4 и какие дополнительные риски появятся у вас, если вы решитесь на этот шаг.



Чем лучше ext4


  • ext4 быстрее, особенно при работе с большими файлами (очень заметно при удалении).
  • размер файла — до 16Т, файловой системы — до 1024Р
  • появились «расширенные атрибуты в inode» для SElinux, beagle, samba. В определённых ситуациях могут ускориться mkfs и fsck.
  • Можно просто монтировать имеющиеся разделы ext3 как ext4
  • Разрабатывается дефрагментатор наподобие имеющегося в XFS. Он будет уметь: собирать файл в непрерывную область, собирать файлы из одной директории вместе, собирать пустое пространство в непрерывную область. Производительность при этом должна возрастать

Технические детали читайте здесь: ext4 на русском,
New ext4 features.

Как перейти с ext3 на ext4


В production-варианте ext3 можно будет смонтировать как ext4. Сейчас процедура немного сложнее.
Пускай на диск /dev/sdc1 у нас установлена ext3. С помощью blkid видим как идентифицирует файловую систему ядро.
[root@ad mnt]# blkid /dev/sdc1
/dev/sdc1: LABEL="/var/www/img" UUID="77d69541-cd2e-47d5-91fc-bdb5606aa8fb" SEC_TYPE="ext2" TYPE="ext3"


Пока у нас будет TYPE=«ext3», мы не сможем подмонтировать диск под ext4. Фиксим эту проблему
[root@ad mnt]# debugfs -w /dev/sdc1
debugfs 1.40.8 (13-Mar-2008)
debugfs:  set_super_value s_flags 4
debugfs:  quit


проверяем:
[root@ad mnt]# blkid /dev/sdc1
/dev/sdc1: LABEL="/var/www/img" UUID="77d69541-cd2e-47d5-91fc-bdb5606aa8fb" SEC_TYPE="ext2" TYPE="ext4dev"


Тут нет ошибки, сейчас файловая система называется ext4dev.

Можно монтировать:
[root@ad mnt]# mount -t ext4dev -o extents /dev/sdc1 ./test


Как форматнуть раздел под ext4


# mke2fs -E test_fs /dev/sdc1
# tune2fs -j /dev/sdc1


Где уже сейчас разумно использовать ext4


Могу сказать точно, что не в директории /var/lib/mysql.
Я уже сейчас использую ext4dev, в разделе где складывается кеш nginx, а также весь фото-контент (при отдаче статики для nginx важна скорость работы с файловой системой).

Чтоб не рисковать, я менял файловую систему путем форматирования и заливки контента на чистый диск. Во время этой процедуры случился небольшой курьёз. В ext3 все файлы занимали 97G, после перезаливки на новый отформатированый раздел ext4dev получилось 90G. Врубил сравнение папок в mc, сравнивало полдня — все Ok :). Почему произошла экономия я сейчас сказать не могу, возможно, данные на ext3 были сильно фрагментированы (там было очень много директорий с мелкии файлами).

Какие риски?


Риски очевидны, это экспериментальная поддержка — возможно все!
При переходе с ext2 на ext3 в любой момент можно было отказаться от ext3 и подмонтировать ext3 как ext2, если вы уже перешли на ext4 — назад дороги нет!
Можно монтироваться с опцией -o noextents и тогда будет возможность откатить все в ext3, но эта опция отрубает практически все прелести ext4.

В случае «слета» файловой системы нужно быть готовым к применению tune2fs.

Может быть вы уже решились перевести директорию /tmp на ext4 :)?

UPD1: Чтоб работал fsck нужно скопировать fsck.ext3 в fsck.ext4. Теперь пожем запускать
# fsck.ext4 /dev/sdc1

Проголосовать:
+90
Сохранить: