웹사이트 검색

표준 Linux 파일 시스템 설정 및 NFSv4 서버 구성 - 2부


Linux Foundation Certified Engineer(LFCE)는 Linux 시스템에서 네트워크 서비스를 설정, 구성, 관리 및 문제 해결하도록 교육을 받았으며 시스템 아키텍처의 설계 및 구현과 일상적인 관련 문제 해결을 담당합니다. 문제.

LFCE(Linux Foundation 인증 프로그램)를 소개합니다.

이 시리즈의 1부에서는 NFS(네트워크 파일 시스템) 서버를 설치하고 부팅 시 서비스가 자동으로 시작되도록 설정하는 방법을 설명했습니다. 아직 수행하지 않은 경우 계속하기 전에 해당 문서를 참조하고 설명된 단계를 따르십시오.

  1. 네트워크 서비스 설치 및 부팅 시 자동 시작 구성 – 1부

이제 파일 시스템이 로컬에 설치된 것처럼 Linux 클라이언트에서 사용할 네트워크 공유를 설정할 수 있도록 NFSv4 서버(인증 보안 없이)를 올바르게 구성하는 방법을 보여 드리겠습니다. 인증 목적으로 LDAP 또는 NIS를 사용할 수 있지만 두 옵션 모두 LFCE 인증 범위를 벗어납니다.

NFSv4 서버 구성

NFS 서버가 실행되면 다음 사항에 집중하겠습니다.

  1. 네트워크를 통해 공유하려는 로컬 디렉터리를 지정하고 구성합니다.
  2. /etc/fstab 파일이나 자동 마운트 커널 기반 유틸리티(autofs)를 통해 클라이언트에 해당 네트워크 공유를 자동으로 마운트합니다.

언제 한 가지 방법을 선택해야 하는지 나중에 설명하겠습니다.

시작하기 전에 idmapd 데몬이 실행 중이고 구성되어 있는지 확인해야 합니다. 이 서비스는 NFSv4 이름(user@mydomain)을 사용자 및 그룹 ID에 매핑하며 NFSv4 서버를 구현하는 데 필요합니다.

idmapd를 활성화하려면 /etc/default/nfs-common을 편집하세요.

NEED_IDMAPD=YES

그리고 로컬 도메인 이름(기본값은 호스트의 FQDN)으로 /etc/idmapd.conf를 편집하세요.

Domain = yourdomain.com

그런 다음 idmapd를 시작하십시오.

service nfs-common start 	[sysvinit / upstart based systems]
systemctl start nfs-common 	[systemd based systems]

네트워크 공유 내보내기

/etc/exports 파일에는 NFS 서버에 대한 기본 구성 지시문이 포함되어 있으며, 원격 호스트로 내보낼 파일 시스템을 정의하고 사용 가능한 옵션을 지정합니다. 이 파일에서 각 네트워크 공유는 기본적으로 다음과 같은 구조를 갖는 별도의 줄을 사용하여 표시됩니다.

/filesystem/to/export client1([options]) clientN([options])

여기서 /filesystem/to/export는 내보낸 파일 시스템의 절대 경로인 반면, client1(최대 clientN)은 특정 클라이언트(호스트 이름 또는 IP 주소) 또는 네트워크를 나타냅니다. (와일드카드 허용) 공유가 내보내지는 대상입니다. 마지막으로 옵션은 공유를 내보내는 동안 각각 고려되는 쉼표로 구분된 값(옵션) 목록입니다. 각 호스트 이름과 그 앞에 나오는 괄호 사이에는 공백이 있어서는 안 됩니다.

다음은 가장 자주 사용되는 옵션 목록과 해당 설명입니다.

  1. ro(읽기 전용의 약어): 원격 클라이언트는 읽기 권한만 사용하여 내보낸 파일 시스템을 마운트할 수 있습니다.
  2. rw(읽기-쓰기의 약자): 원격 호스트가 내보낸 파일 시스템에서 쓰기 변경을 수행할 수 있도록 허용합니다.
  3. wdelay(쓰기 지연의 약어): NFS 서버는 다른 관련 쓰기 요청이 임박했다고 의심되는 경우 디스크에 대한 변경 사항 커밋을 지연합니다. 그러나 NFS 서버가 관련되지 않은 작은 요청을 여러 개 수신하는 경우 이 옵션은 성능을 저하시키므로 no_wdelay 옵션을 사용하여 이를 끌 수 있습니다.
  4. 동기화: NFS 서버는 변경 사항이 영구 저장소(예: 하드 디스크)에 커밋된 후에만 요청에 응답합니다. 그 반대인 async 옵션은 성능을 향상시킬 수 있지만 서버를 비정상적으로 다시 시작한 후 데이터가 손실되거나 손상될 수 있습니다.
  5. root_squash: 원격 루트 사용자가 서버에서 수퍼유저 권한을 갖는 것을 방지하고 이들에게 사용자 none의 사용자 ID를 할당합니다. 루트뿐만 아니라 모든 사용자를 "squash"하려면 all_squash 옵션을 사용할 수 있습니다.
  6. anonuid/anongid: 익명 계정(nobody)의 UID 및 GID를 명시적으로 설정합니다.
  7. subtree_check: 파일 시스템의 하위 디렉터리만 내보내는 경우 이 옵션은 요청된 파일이 내보낸 하위 디렉터리에 있는지 확인합니다. 반면, 전체 파일 시스템을 내보내는 경우 no_subtree_check를 사용하여 이 옵션을 비활성화하면 전송 속도가 빨라집니다. man 5 내보내기에 따르면 현재 기본 옵션은 no_subtree_check입니다. 하위 트리 검사는 가치 있는 것보다 더 많은 문제를 일으키는 경향이 있기 때문입니다.
  8. fsid=0 | 루트(0 또는 루트): 지정된 파일 시스템이 내보낸 여러 디렉터리의 루트임을 지정합니다(NFSv4에만 적용됨).

이 문서에서는 192.168.0.10(NFS 서버)의 /NFS-SHARE/NFS-SHARE/mydir 디렉토리를 사용합니다. 테스트 파일 시스템.

다음 명령을 사용하면 언제든지 NFS 서버에서 사용 가능한 네트워크 공유를 나열할 수 있습니다.

showmount -e [IP or hostname]

위 출력에서 192.168.0.10/NFS-SHARE/NFS-SHARE/mydir 공유가 내보내졌음을 확인할 수 있습니다. IP 주소가 192.168.0.17인 클라이언트에.

내보낸 디렉토리에 대한 초기 구성(NFS 서버의 /etc/exports 디렉토리 참조)은 다음과 같습니다.

/NFS-SHARE  	192.168.0.17(fsid=0,no_subtree_check,rw,root_squash,sync,anonuid=1000,anongid=1000)
/NFS-SHARE/mydir    	192.168.0.17(ro,sync,no_subtree_check)

구성 파일을 편집한 후 NFS 서비스를 다시 시작해야 합니다.

service nfs-kernel-server restart 		[sysvinit / upstart based system]
systemctl restart nfs-server			[systemd based systems]
autofs를 사용하여 내보낸 네트워크 공유 마운트

다음을 사용하여 필요에 따라 원격 NFS 공유를 마운트하는 방법에 대한 자세한 내용은 LFCS 시리즈의 5부("Linux에서 로컬 및 네트워크(Samba 및 NFS) 파일 시스템을 마운트/마운트 해제하는 방법")를 참조할 수 있습니다. mount 명령을 사용하거나 /etc/fstab 파일을 통해 영구적으로 사용할 수 있습니다.

이러한 방법을 사용하여 네트워크 파일 시스템을 마운트할 때의 단점은 시스템이 공유를 항상 마운트된 상태로 유지하기 위해, 또는 적어도 수동으로 마운트 해제하기로 결정할 때까지 필요한 리소스를 할당해야 한다는 것입니다. 대안은 autofs를 통해 요청 시 자동으로(mount 명령을 사용하지 않고) 원하는 파일 시스템을 마운트하는 것입니다. 이는 파일 시스템이 사용될 때 마운트하고 나중에 마운트 해제할 수 있습니다. 비활성 기간.

Autofs는 다음 형식의 /etc/auto.master를 읽습니다.

[mount point]	[map file]

여기서 [맵 파일][마운트 지점] 내의 여러 마운트 지점을 나타내는 데 사용됩니다.

그런 다음 이 마스터 맵 파일(/etc/auto.master)을 사용하여 정의된 마운트 지점을 결정한 다음 각 마운트 지점에 대해 지정된 매개변수를 사용하여 자동 마운트 프로세스를 시작합니다.

autofs를 사용하여 내보낸 NFS 공유 마운트

/etc/auto.master를 다음과 같이 편집하세요.

/media/nfs	/etc/auto.nfs-share	--timeout=60

다음 내용으로 /etc/auto.nfs-share라는 맵 파일을 만듭니다.

writeable_share  -fstype=nfs4 192.168.0.10:/
non_writeable_share  -fstype=nfs4 192.168.0.10:/mydir

/etc/auto.nfs-share의 첫 번째 필드는 /media/nfs 내부의 하위 디렉터리 이름입니다. 각 하위 디렉토리는 autofs에 의해 동적으로 생성됩니다.

이제 autofs 서비스를 다시 시작합니다.

service autofs restart 			[sysvinit / upstart based systems]
systemctl restart autofs 			[systemd based systems]

마지막으로 autofs가 부팅 시 시작되도록 활성화하려면 다음 명령을 실행하세요.

chkconfig --level 345 autofs on
systemctl enable autofs 			[systemd based systems]
autofs 데몬을 시작한 후 마운트된 파일 시스템 검사

autofs를 다시 시작하면 mount 명령은 맵 파일(/etc/auto.nfs-share)이 지정된 위치에 마운트되었음을 보여줍니다. /etc/auto.master의 디렉토리:

실제로 마운트된 디렉터리는 없지만 /etc/auto.nfs-share에 지정된 공유에 액세스하려고 하면 자동으로 마운트됩니다.

보시다시피, autofs 서비스는 말하자면 맵 파일을 "마운트"하지만 파일 시스템에 실제로 마운트하라는 요청이 있을 때까지 기다립니다.

내보낸 파일 시스템에서 쓰기 테스트 수행

첫 번째 공유에 설정된 root_squash와 함께 anonuidanongid 옵션을 사용하면 루트 사용자가 수행한 요청을 매핑할 수 있습니다. 클라이언트를 서버의 로컬 계정에 연결합니다.

즉, 클라이언트의 루트가 내보낸 디렉터리에 파일을 생성하면 해당 계정이 서버에 존재하는 경우 소유권이 UID 및 GID=1000인 사용자 계정에 자동으로 매핑됩니다.

결론

이 문서를 지침으로 사용하여 귀하의 환경에 맞는 NFS 서버를 성공적으로 설정하고 구성할 수 있었기를 바랍니다. 추가 도움이 필요하면 관련 매뉴얼 페이지(예: man 내보내기man idmapd.conf)를 참조할 수도 있습니다.

앞에서 설명한 대로 다른 옵션과 테스트 사례를 자유롭게 실험해 보고 주저하지 말고 아래 양식을 사용하여 의견, 제안 또는 질문을 보내주세요. 우리는 귀하의 의견을 기쁘게 생각합니다.