Если вам нужен NFS (или Gluster Native FS) в OpenVZ-контейнере, GlusterFS — отличное решение.
Ниже будут встречаться следующие обозначения:
- HN1 — первая физическая нода
- HN2 — вторая физическая нода
- VPS1 — первый OpenVZ-контейнер
- VPS2 — второй OpenVZ-контейнер
1. Создаем на HN1 и HN2 файл «/etc/sysconfig/modules/fuse.modules» со следующим содержанием:
/sbin/modprobe fuse
И делаем его исполняемым:
chmod +x /etc/sysconfig/modules/fuse.modules
2. Добавляем на HN1 и HN2 в файл «/etc/vz/conf/$VEID.conf» следующие строки:
CAPABILITY="NET_ADMIN:on SYS_ADMIN:on" DEVICES="c:10:229:rw"
3. На контейнерах VPS1 и VPS2 создаем файл «/etc/init.d/fusedev» со следующим содержимым:
#!/bin/bash # # chkconfig: 05 05 05 # description: /dev/fuse file creation # # Get function from functions library . /etc/rc.d/init.d/functions /bin/mknod /dev/fuse c 10 229
И делаем его исполняемым, а так же добавляем в автозагрузку fusedev и автоматическое монтирование сетевых файловых систем из /etc/fstab:
chmod +x /etc/init.d/fusedev chkconfig fusedev on chkconfig netfs on
4. В контейнерах VPS1 и VPS2 в файле «/etc/glusterfs/glusterd.vol» удаляем из строки «rdma»:
option transport-type socket
5. Загружаем по ссылке «» RPM-пакеты «glusterfs-core» и «glusterfs-fuse», а так по ссылке «» — fuse.
Устанавливаем на VPS1 и VPS2 пакеты «fuse, fuse-libs, glusterfs-core, glusterfs-fuse».
6. Прописываем на VPS1 и VPS2 в файле «/etc/hosts»:
10.0.0.11 lapi1.domain.ru lapi1 10.0.0.12 lapi2.domain.ru lapi2
7. На VPS1 и VPS2 создаем папки для хранилища:
mkdir -p /storage/api
8. Перезагружаем HN1 и HN2.
9. Составляем кластер. Запускаем на VPS1 команду (lapi2 — хост из /etc/hosts):
gluster peer probe lapi2
10. Создаем и запускаем для примера реплицируемый volume с названием «api» ():
gluster volume create api replica 2 transport tcp lapi1:/storage/api lapi2:/storage/api gluster volume start api
lapi1 и lapi2 — хосты из /etc/hosts.
11. И некоторые оптимизации — добавляем кэш. Выполняем команды на VPS1:
gluster volume set api performance.cache-size 500MB gluster volume set api performance.write-behind-window-size 500MB
12. Добавляем в автозагрузку VPS1 и VPS2 монтирование файловой системы. В файл «/etc/fstab» добавляем:
localhost:/api /mnt/api glusterfs defaults,_netdev,noatime 0 0
Монтируем GlusterFS:
mount -a
Готово!
df -H
Похожие записи:
Для нормальной производительности необходимо обязательно собрать и установить патченный модуль ядра fuse и весь fuse. Исходник находится тут
Инструкция для Amazon AWS тут
В противном случае производительность ФС будет далека от идеала.
Anton Ak.
19.05.2011 в 18:14