![](https://habrastorage.org/getpro/habr/post_images/62d/6e4/a50/62d6e4a504477888fd7c34adad1e0329.gif)
В анонсе 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