пятница, 18 октября 2013 г.

Настройка кластерного файлового хранилища на базе GlusterFS и Samba

Создадим зеркалируемое между двумя машинами хранилище файлов на базе GlusterFS (www.glusterfs.com). В качестве операционной системы возьмём, к примеру, Ubuntu Server. Сервера используют адреса 192.168.1.2 и 192.168.1.3 соответственно.

1. Установим из репозитария серверную часть GlusterFS:

apt-get install glusterfs-server

Для организации хранилища будем использовать каталог /glusterfs/export. Теперь приведём файл конфигурации (/etc/glusterfs/glusterd.vol) к следующему виду:


volume posix
  type storage/posix
  option directory /glusterfs/export
end-volume

volume locks
  type features/locks
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow 192.168.1.2,192.168.1.3
  subvolumes brick
end-volume


В качестве IP-адресов хостов клиентов не обязательно указывать точные адреса, можно использовать маски вида 192.168.1.* и перечислять сети и хосты через запятую.

Запускаем сервер GlusterFS:

/etc/init.d/glusterfs-server start

2. Установим из репозитария клиентскую часть GlusterFS:

aptitude install glusterfs-client

Файловое хранилище будем монтировать в каталог /glusterfs/samba& Теперь приведём файл конфигурации (/etc/glusterfs/glusterfs.vol) к следующему виду:


volume remote1
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.1.2 # ubuntu-samba1
  option remote-subvolume brick
end-volume

volume remote2
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.1.3 # ubuntu-samba2
  option remote-subvolume brick
end-volume

volume replicate
  type cluster/replicate
  subvolumes remote1 remote2
end-volume

volume writebehind
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate
end-volume

volume cache
  type performance/io-cache
  option cache-size 512MB
  subvolumes writebehind
end-volume

3. Монтируем файловую систему GlusterFS в каталог /glusterfs/samba:

glusterfs -f /etc/glusterfs/glusterfs.vol /glusterfs/samba
или
mount -t glusterfs /etc/glusterfs/glusterfs.vol /glusterfs/samba

Чтобы автоматизировать процесс монтирования при загрузке добавим в /etc/fstab следующую строчку:

/etc/glusterfs/glusterfs.vol /glusterfs/samba glusterfs defaults 0 0

4. Установим из репозитария Samba:


apt-get install samba


Приведем файл конфигурации /etc/samba/smb.conf к следующему виду:


[global]
   workgroup = samba-cluster
   server string = Ubuntu-Samba1 (на втором сервере Samba2)
   security = user
   map to guest = bad user
   hosts allow = 192.168.1. 127.
   load printers = no
   log file = /var/log/samba/log.%m
   max log size = 50
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
   interfaces = eth0 lo0
   dns proxy = no

[netlogon]
   comment = Network Logon Service
   path = /etc/samba/netlogon
   guest ok = yes
   writable = no
   browseable = no
   posix locking = no
   oplocks = no
   level2 oplocks = no

[IPC$]
   path = /etc/samba/tmp
   writable = no
   browseable = no
   hosts allow = 192.168.1.0/24
   hosts deny = 0.0.0.0/0
   posix locking = no
   oplocks = no

   level2 oplocks = no

[Public]
   path = /glusterfs/samba/Public
   comment = Общее хранилище
   public = yes
   writeable = yes
   read list = guest
   write list = guest
   posix locking = no
   oplocks = no
   level2 oplocks = no
   guest ok = yes
   read only = no
   hosts allow = 192.168.1.0/24
   hosts deny = 0.0.0.0/0

[Home]
   path = /glusterfs/samba/Home
   comment = Домашние каталоги
   public = yes
   writeable = yes
   read list = guest
   write list = guest
   posix locking = no
   oplocks = no
   level2 oplocks = no
   guest ok = yes
   read only = no
   hosts allow = 192.168.1.0/24
   hosts deny = 0.0.0.0/0

Настройки доступа к Samba можно конфигурировать в соответствии со своими предпочтениями, но блокировки требуются именно такие, иначе некоторые приложения могут работать с хранилищем некорректно.