Проблема в следующем: у меня есть 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 нет координации, поэтому может возникнуть ситуация, когда один клиент отправляет обновление в существующий файл и в то же время другой клиент делает то же самое - обычно данные второго клиента немедленно перезаписывают обновление первого клиента, с возможной задержкой, так как файл будет временно открыт, пока первый клиент делает его запись, но вы, по крайней мере, не должны видеть никаких фактических повреждений.