2007/10/10

GFS - Global File System

Данный лог действий описывает процесс установки и начальной конфигурации кластерной файловой системы GFS в CentOS5.

Перед началом установки необходимо убедиться, что отключен firewall и не действует SE Linux.

# chkconfig iptables off
# selinux disable

Установка включает в себя инсталяцию группы 'Cluster storage' и сервиса ntp для синхронизации времени на всех нодах кластера.

# yum groupinstall 'Cluster Storage'
# yum install ntp
# yum install kmod-gfs-xen (если используется Xen)
# chkconfig ntpd on
# service ntpd start
# Starting ntpd: [ OK ]
# reboot

Проверить перед запуском, что на всех нодах файлы /etc/hosts и /etc/cluster/cluster.conf одного содержания

# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
10.10.2.91 vm01.organization.local vm01
10.10.2.92 vm02.organization.local vm02
# vi /etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster name="gfsc" config_version="1">
<cman two_node="1" expected_votes="1">
</cman>
<clusternodes>
<clusternode name="vm01" nodeid="1">
<fence>
<method name="human">
<device name="last_resort" ipaddr="vm01">
</device>
</method>
</fence>
<clusternode name="vm02" nodeid="2">
<fence>
<method name="human">
<device name="last_resort" ipaddr="vm02">
</device>
</method>
</fence>
</clusternode>
<fencedevices>
<fencedevice name="last_resort" agent="fence_manual">
</fencedevice>
</fencedevices>
</clusternode></clusternodes>
</cluster>

Для того, чтобы впоследствии копировать измененный файл конфигурации /etc/cluster/cluster.conf на все ноды можно воспользоваться утилитой ccs_tool:

# scp /etc/cluster/cluster.conf root@vm02:/etc/cluster/
# ccs_tool update /etc/cluster/cluster.conf

После того как все готово, можно запускать службу cman (поочередно на всех нодах)

# /etc/init.d/cman start
# cman_tool status

Подготовка диска (я использую lvm)

# vi /etc/lvm/lvm.conf
locking_type = 3
# pvcreate /dev/sdc
# vgcreate gfsc /dev/sdc
# lvcreate -l 100%FREE gfsc
# gfs_mkfs -p lock_dlm -t gfsc:gfs1 -j 2 /dev/gfsc/lvol0

Теперь можно примонтировать том с кластерной файловой системой и работать с ним как с обычным диском

# mount -t gfs /dev/gfsc/lvol0 /mnt

Ссылки:
  1. Cluster Project FAQ
  2. How to install and run clvm and gfs
  3. Enterprise data sharing with Red Hat Global File System

17 comments:

virens said...

А можно подробнее про её отличия от NFS например? А то вдруг пригодится...

Roman Sozinov said...

to virens:
Если Вас интересуют отличия по показателям производительности и скорости доступа, то тут я ничего сказать не могу - не сравнивал.
А если вопрос касается функциональности, то пожалуйста :)
для работы с nfs Вам нужен дополнительный уровень - сервис nfs, при работы с кластерной fs у Вас отсутствует такой уровень - в работаете на уровне ядра, как с обычной fs, соответственно должна быть выше производительность.
cluster suite, который поставляется, как составная часть rhel, включает в себя поддержку gfs.
Gfs, как кластерная fs, предназначена для одновременной работы нескольких нодов с одними и теми же данными, поэтому имеются инструменты для грамотной блокировки и fencing'а. К сожалению не знаю как обстоят с этим дела в nfs.
Впрочем, я очень мало работал с nfs, но много слышал о ее "примочках", поэтому наверняка в каких-то ситуациях она будет предпочтительней чем gfs.

Anonymous said...

Год поправьте на 2007

Roman Sozinov said...

to anonymous:
сделано :)

Anonymous said...

Сама файловая система в продашене оказалась Г...фс...
короче отказать.

Roman Sozinov said...

to anonymous:
А можно поконкретнее? Потому как я сам в production'е её не использую, так попробовал потестировать только.

Anonymous said...

Прошу прощения, а что выступало в роли shared storage в вашем примере?

Roman Sozinov said...

to anonymous:
В качестве shared storage выступал EMC storage с Fiber Channel доступом к нему.

T Dmitry said...

Смотрели ли вы в сторону CodaFS?
Если да то какие есть нюансы?
Чем мне интересна Кода, тем что нет привязки к одной железке в качестве file storage.

Roman Sozinov said...

to T Dmitry:
К сожалению в сторону CodaFS не смотрел, поэтому не могу никак данный вопрос прокомментировать.
Поясните пожалуйста, что значит "Кода не имеет привязки к одной железке в качестве file storage."

T Dmitry said...

распределенная ФС, она лежит на нескольких нодах. Mirror RAID на несколько серверов.

Вадек said...

cluster.conf в данной статье оказался нерабочим

Roman Sozinov said...

to Вадек:
Возможно, допущена где-то синтаксическая ошибка. Если видите её, подскажите.

Вадек said...

Я провел вчера целый день за поиском правильного cluster.conf и нашел, что вручную его не сделать. Есть веб-система Congo, которая создает, а затем обновляет этот файл. В RHEL5 нужно запустить на всех нодах демон ricci, а luci (это он - Congo) запускается на сторонней рабочей станции и с его помощью конфигурируем кластер.

Roman Sozinov said...

to Вадек:
Ну насчёт того, что "вручную его не сделать" Вы, конечно же, погорячились, так как я всё делал именно вручную, начиная с минимальной установки, отыскивая в интернете какие еще могут быть параметры и что они значат.

Вадек said...

У меня нет никакого желания вручную делать то, для чего существует программа. Это все равно, что копать руками, в то время как рядом стоит лопата. К тому же, результат очевиден - ваш конфиг нерабочий.

Anonymous said...

Поставил тут OCFS2.
Сначало вроде все работало нормально.
Потом стал колпировать в раздел 10гб файлов. В итоге одна нода стала подвисать и перегружаться. И часть файлов записались, но содержимое файла было подвреждено.