воскресенье, 27 мая 2012 г.

Ubuntu и поддержка ReiserFS на AWS Amazon EC2

На днях провел серию тестов по эксплуатации файловой БД в составе нагруженного web-приложения. Предстояло сделать выбор между Ext4, XFS и ReiserFS(v.3) С большим отрывом победила ReiserFS. Особенно порадовали два таких момента:
  • При создании большого количества папок на относительно небольшом разделе, ReiserFS продолжает работать даже когда у ее конкурентов заканчивается физическое пространство подконтрольного раздела. При выделении новой папки на Ext4 и XFS резервируется 4 Кб дискового пространства, ReiserFS по всей видимости обходится с выделяемым пространством более оптимально;
  • При интенсивных потоках чтения и записи на раздел с множеством мелких файлов наблюдаемая нагрузка IO для ReiserFS имеет более низкие показатели несмотря на применение специальных опций монтирования.

Впрочем, как оказалось эти факты давно всем известны, а я тут просто Америку открыл в отдельно взятом офисе :)

Итак. Создаю новый EBS и подключаю его к рабочему Instance с Ubuntu 12.04 LTS (ami-ac9943c5). Выделяю на нем один первичный раздел. Устанавливаю пакет reiserfsprogs. Форматирую вновь созданный раздел соответственно...

И вдруг обнаруживаю невероятное, отсутствие поддержки ReiserFS:

$ sudo mount -t reiserfs /dev/xvdf1 /mnt/datafs
mount: unknown filesystem type 'reiserfs'
Смотрю что там за ядро:
$ grep REISER /boot/config-3.2.0-23-virtual 
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
Был значит скомпилирован модуль ядра. Но сам файл reiserfs.ko отсутствует в положенном месте:
$ ls -l /lib/modules/$(uname -r)/kernel/fs/ | grep reiserfs
<пусто>
Смотрим в матчасть нашего дистрибутива, и видим, что ядро устанавливается (мета)пакетом linux-image-virtual. Это стандартная комплектация без установки скомпилированных модулей. Для расширенного варианта устанавливаем дополнительный пакет:
$ sudo apt-get install linux-image-extra-virtual
и видим требуемый модуль:
$ ls -l /lib/modules/$(uname -r)/kernel/fs/reiserfs
-rw-r--r-- 1 root root 288104 Apr 11 02:42 reiserfs.ko

Для стартовой автоматической загрузки пишем наименование модуля в файл: /etc/modules. Или для загрузки прямо сейчас используем команду:

$ modprobe reiserfs
$ lsmod | grep reiserfs
reiserfs              230896  1

Вуаля!


P.S.: Не забываем про установку reiserfsprogs перед указанием точки монтирования в файле /etc/fstab. Отсутствие пакета может привести к невозможности загрузки облачной системы, когда она попытается произвести штатную регулярную проверку файловой системы.

Комментариев нет:

Отправить комментарий