mount -a를 실행하려면 /etc/exports의 변경 사항을 "퍼지"해야 합니다. 무엇이 문제입니까?

mount -a를 실행하려면 /etc/exports의 변경 사항을 "퍼지"해야 합니다. 무엇이 문제입니까?

server1을 재부팅해야 할 때마다 server2에서 NFS 마운트를 백업할 수 있는 유일한 방법은/etc/exportsserver1의 파일입니다. 그렇지 않으면,마운트 -a명령이 server2에서 중단됩니다.

일반적인 시나리오:

Server1이 재부팅됩니다. server1에는 두 줄의 코드가 있습니다./etc/exports:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=1,rw,no_root_squash,no_subtree_check,async)

나는 다음 명령을 내린다:

"exportfs -r".

server2에는 이것이 있습니다./etc/fstab:

xxx.xxx.x.x:/server1_dir1/ /dir1_server2 nfs async,noatime 0 0
xxx.xxx.x.x:/server2_dir2  /dir2_server2 nfs async,noatime 0 0

먼저 오래된 NFS 핸들이 있는 이전 디렉토리를 "마운트 해제"합니다. 그 다음에,

"mount -a"

명령이 정지됩니다. 죽인 뒤,dfdir1은 마운트되었지만 dir2는 마운트되지 않은 것으로 표시됩니다.

두 디렉토리를 모두 마운트하는 유일한 방법은 fsid 정수를 다른 것으로 변경하는 것입니다. 예를 들어, server1에는 이제 다음이 있습니다.

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=2,rw,no_root_squash,no_subtree_check,async)

나는 변했다fsid=1 ~ =2. 나는 다시 발행한다내보내기fs -r명령을 내리면, 짜잔,마운트 -a명령은 server2에서 작동합니다.

아마도 나는 무엇을 이해하지 못할 것입니다fsid실제로 그렇습니다. 하지만 매번 fsid 번호를 무작위로 편집하는 것보다 NFS를 "다시 마운트"하는 더 좋은 방법이 분명히 있을 것입니다.

편집하다: 내가 없으면fsidserver1의 내 내보내기 파일에 포함되어 있습니다.

"Warning: /mnt/ramdisk/dir1 requires fsid= for NFS export" 

그리고 두 줄(dir1 및 dir2)에 대해 fsid=0을 설정하면 마운트 지점은 모든 파일이 dir1 위치에 복사되는 것과 동일하게 됩니다! 따라서 이것이 작동하는 유일한 방법은 다소 무작위로 fsid 정수를 지속적으로 전환하는 것입니다.

편집2: 나는 지웠다fsid=0"특별"이기 때문에 다음과 같이 변경했습니다.fsid=1그리고fsid=2~에/etc/exportsserver1에서. 물론 이것은 작동했습니다 (파일이 변경되었으므로). 하지만 오늘은 강제로 재부팅해야 했고, server2에서 오래된 드라이브를 (천천히) 마운트 해제한 후,마운트 -a이전과 마찬가지로 실패했습니다. 그래서 (이전과 마찬가지로) 이번에는 server1에서 내보내기 파일을 편집했습니다.fsid=2그리고fsid=3,내보내기fs -r, 그리고 짜잔,마운트 -aserver2에서 다시 작동합니다. 1번 광장으로 돌아갑니다.

편집3중요 정보: 통제된 방식으로 모든 것을 종료하고(예: server1이 "충돌"하지 않음) 먼저 server2에서 디렉토리를 마운트 해제한 다음 server1을 재부팅하고 그런 다음 server2에 -a를 마운트하면 훌륭하게 작동합니다. 이 문제는 server2의 마운트가 갑자기 끊어지는 경우에만 발생합니다. 그렇다면 server2에서 무언가를 재설정해야 할 것 같은데요? server1이 충돌한 후 server2에서 오래된 핸들을 마운트 해제하는 데 오랜 시간이 걸린다는 것을 알고 있습니다.

답변1

fsid=0내 생각에는 수출 중 하나 를 사용하여 문제가 발생한 것 같습니다 .

fsid기본 파일 시스템 드라이버가 고유한 ID를 제공하지 않는 경우 장치를 고유하게 식별하기 위한 것임을 기억하세요 . fsid=0그리고 특히,특별한 의미:

NFSv4의 경우 내보낸 모든 파일 시스템의 루트인 고유 파일 시스템이 있습니다. 이는 fsid=root또는 둘 다로 지정되며 fsid=0이는 정확히 동일한 것을 의미합니다.

이는 분명히 원하는 것이 아니므로 항상 0이 아닌 fsid를 사용하십시오.

관련 정보