Назад | Перейти на главную страницу

Могут ли 2 сервера использовать одну и ту же файловую систему ocfs2 через NFS?

Проблема в следующем: у меня есть 2 сервера, на которых FS установлена ​​как ocfs2:

root [server01]% mount | grep ocfs2
ocfs2_dlmfs on /dlm type ocfs2_dlmfs (rw)
/dev/sddlmam1 on /share type ocfs2 (rw,_netdev,datavolume,heartbeat=local)

и

root [server02]% mount | grep ocfs2
ocfs2_dlmfs on /dlm type ocfs2_dlmfs (rw)
/dev/sddlmam1 on /share type ocfs2 (rw,_netdev,datavolume,heartbeat=local)

И оба используют эту ФС по протоколу NFS:

root [server01]% cat /etc/exports 
/share *(rw,sync,no_root_squash)

и

root [server02]% cat /etc/exports 
/share *(rw,sync,no_root_squash)

Конфигурация OCFS2 выглядит нормально:

root [server01]% cat  /etc/ocfs2/cluster.conf
cluster:
    node_count = 2
    name = ocfs2

node:
    number = 0
    cluster = ocfs2
    ip_port = 7778
    ip_address = 10.1.1.2
    name = server01

node:
    number = 1
    cluster = ocfs2
    ip_port = 7778
    ip_address = 10.1.1.3
    name = server02


root [server02]% cat  /etc/ocfs2/cluster.conf 

cluster:
    node_count = 2
    name = ocfs2

node:
    number = 0
    cluster = ocfs2
    ip_port = 7778
    ip_address = 10.1.1.2
    name = server01

node:
    number = 1
    cluster = ocfs2
    ip_port = 7778
    ip_address = 10.1.1.3
    name = server02

Эти серверы сгруппированы и сбалансированы:

root [client01]% nslookup servercluster
Server:     10.108.1.1
Address:    10.108.1.1#53

servercluster.domain.com    canonical name = servercluster.domain.com.
Name:   servercluster.domain.com
Address: 10.1.1.2
Name:   servercluster.domain.com
Address: 10.1.1.3
Name:   servercluster.domain.com
Address: 10.1.1.4

root [client01]% mount | grep servercluster
servercluster:/share on /share type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.1.1.5,local_lock=none,addr=10.1.1.2)

И

root [client02]% nslookup servercluster
Server:     10.108.1.1
Address:    10.108.1.1#53

servercluster.domain.com    canonical name = servercluster.domain.com.
Name:   servercluster.domain.com
Address: 10.1.1.2
Name:   servercluster.domain.com
Address: 10.1.1.3
Name:   servercluster.domain.com
Address: 10.1.1.4

root [client02]% mount | grep servercluster
servercluster:/share on /share type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.1.1.6,local_lock=none,addr=10.1.1.3)

server01 испытывает некоторый сбой и сообщил об ошибках NFS:

dracut.log

Info: Not stripping '/tmp/initramfs.6SdU0W/lib/modules/3.8.13-118.16.4.el6uek.x86_64/kernel/fs/nfsd/nfsd.ko', because module signature appended.

Сообщения:

Dec  8 02:18:19 server01 kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
Dec  8 02:18:19 server01 kernel: NFSD: starting 90-second grace period (net ffffffff81983940)

Мой вопрос: возможно ли, что ошибки происходят из-за того, что одна и та же FS используется двумя разными серверами через NFS?

В базовой файловой системе OCFS2 не должно быть никаких повреждений, поскольку она сама блокирует себя.

Очевидно, что между двумя серверами NFS нет координации, поэтому может возникнуть ситуация, когда один клиент отправляет обновление в существующий файл и в то же время другой клиент делает то же самое - обычно данные второго клиента немедленно перезаписывают обновление первого клиента, с возможной задержкой, так как файл будет временно открыт, пока первый клиент делает его запись, но вы, по крайней мере, не должны видеть никаких фактических повреждений.