Oracle® Solaris 11.2의 네트워크 파일 시스템 관리

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

nfsmapid 데몬

NFS 프로토콜 버전 4(RFC3530)에서는 클라이언트와 서버 간에 사용자 또는 그룹 식별자(UID 또는 GID)를 교환하는 방식이 변경되었습니다. 이 프로토콜에서는 파일 소유자 및 그룹 속성을 NFS 버전 4 클라이언트와 NFS 버전 4 서버 간에 각각 user@nfsv4-domain 또는 group@nfsv4-domain 형식의 문자열로 교환해야 합니다.

예를 들어 정규화된 호스트 이름이 system.example.com인 NFS 버전 4 클라이언트에서 known_user 사용자의 UID가 123456이라고 가정해 보겠습니다. 이 클라이언트가 NFS 버전 4 서버에 요청을 하려면 UID 123456을 known_user@example.com에 매핑한 다음 해당 속성을 NFS 버전 4 서버로 보내야 합니다. 서버에서는 클라이언트로부터 known_user@example.com을 받은 후 해당 문자열을 로컬 UID 123456에 매핑하며, 그러면 기본 파일 시스템에서 이를 인식할 수 있습니다. 이 기능은 네트워크의 모든 UID 및 GID가 고유하며 클라이언트의 NFS 버전 4 도메인이 서버의 NFS 버전 4 도메인과 일치한다고 가정합니다.

NFS 버전 4 클라이언트와 서버는 모두 정수에서 문자열 및 문자열에서 정수로의 변환을 수행할 수 있습니다. 예를 들어 GETATTR 작업에 대한 응답으로 NFS 서버 4 서버는 기본 파일 시스템에서 가져온 UID 및 GID를 해당하는 문자열 표현에 매핑하고 이 정보를 클라이언트로 보냅니다. 클라이언트 역시 UID와 GID를 문자열 표현으로 매핑해야 합니다. 예를 들어 chown 명령에 대한 응답으로 클라이언트는 새 UID :또는 GID를 문자열 표현에 매핑한 후에 SETATTR 작업을 서버로 보냅니다.

    그러나 클라이언트와 서버는 인식되지 않은 문자열에 대해서는 다른 방식으로 응답합니다.

  • 사용자가 서버에 없으면 NFS 버전 4 도메인 구성이 같아도 서버에서 RPC(원격 프로시저 호출)를 거부하고 클라이언트에 오류 메시지를 반환합니다. 이러한 상황에서는 원격 사용자가 수행할 수 있는 작업이 제한됩니다.

  • 클라이언트와 서버에 모두 사용자가 있지만 사용자의 도메인이 불일치하는 경우에는 서버가 기본 파일 시스템에서 인식할 수 있는 정수 값에 인바운드 사용자 문자열을 매핑해야 하는 SETATTR 등의 속성 수정 작업을 거부합니다. NFS 버전 4 클라이언트와 서버가 정상적으로 작동하려면 해당 NFS 버전 4 도메인(문자열에서 @ 기호 뒷부분)이 일치해야 합니다.

  • NFS 버전 4 클라이언트는 서버의 사용자 또는 그룹 이름을 인식하지 못하는 경우 문자열을 고유 ID(정수 값)에 매핑할 수 없습니다. 이러한 경우 클라이언트는 인바운드 사용자 또는 그룹 문자열을 nobody 사용자에게 매핑합니다. 이와 같은 nobody에 대한 매핑에서 각 응용 프로그램별로 여러 가지 문제가 발생합니다. NFS 버전 4의 경우 파일 속성을 수정하는 작업이 실패합니다.

  • 서버에서 지정된 사용자 또는 그룹 이름을 인식하지 못하면 NFS 버전 4 도메인이 일치해도 서버가 해당 사용자 또는 그룹 이름을 고유 ID(정수 값)에 매핑할 수 없습니다. 이러한 경우 서버는 인바운드 사용자 또는 그룹 이름을 nobody 사용자에게 매핑합니다. 이러한 상황을 방지하려면 관리자가 NFS 버전 4 클라이언트에만 있는 특수 계정을 만들지 않아야 합니다.

sharectl 명령을 nfsmapid_domain 옵션과 함께 사용하여 클라이언트 및 서버의 도메인 이름을 변경할 수 있습니다. 이 옵션은 클라이언트 및 서버에 대해 공통 도메인을 설정합니다. 로컬 DNS 도메인 이름을 사용하는 기본 동작을 대체합니다. 작업 정보는 NFS 서비스 설정을 참조하십시오.

구성 파일 및 nfsmapid 데몬

    nfsmapid 데몬은 다음과 같이 svc:system/name-service/switchsvc:/network/dns/client에 있는 SMF 구성 정보를 사용합니다.

  • nfsmapid는 표준 C 라이브러리 함수를 사용하여 백엔드 이름 서비스에서 암호 및 그룹 정보를 요청합니다. 이러한 이름 서비스는 svc:system/name-service/switch SMF 서비스의 설정을 통해 제어됩니다. 서비스 등록 정보의 변경 내용은 nfsmapid 작업에 영향을 줍니다. svc:system/name-service/switch SMF 서비스에 대한 자세한 내용은 nsswitch.conf(4) 매뉴얼 페이지를 참조하십시오.

  • NFS 버전 4 클라이언트가 다른 도메인에서 파일 시스템을 마운트할 수 있도록 하기 위해 nfsmapid는 DNS TXT RR(리소스 레코드)인 _nfsv4idmapdomain의 구성을 사용합니다. _nfsv4idmapdomain 리소스 레코드 구성에 대한 자세한 내용은 nfsmapid 및 DNS TXT 레코드를 참조하십시오. 또한 다음 사항을 확인하십시오.

    • 원하는 도메인 정보를 사용하여 DNS 서버에서 DNS TXT RR을 명시적으로 구성해야 합니다.

    • svc:system/name-service/switch SMF 서비스를 구성해야 resolver가 클라이언트 및 서버 NFS 버전 4 도메인에 대해 DNS 서버를 찾고 TXT 레코드를 검색할 수 있습니다.

우선 순위 규칙

    nfsmapid가 정상적으로 작동하려면 NFS 버전 4 클라이언트 및 서버의 도메인이 같아야 합니다. NFS 버전 4 도메인이 일치하도록 하기 위해 nfsmapid는 다음과 같은 엄격한 우선 순위 규칙을 따릅니다.

  1. 데몬이 먼저 SMF 저장소에서 nfsmapid_domain 매개변수에 지정된 값을 확인합니다. 값을 찾으면 지정된 값이 다른 설정보다 우선합니다. 지정된 값은 송신 속성 문자열에 추가되며 수신 속성 문자열과 비교됩니다. 절차 정보는 NFS 서비스 설정을 참조하십시오.


    주 -  NFSMAPID_DOMAIN 설정 사용 시에는 확장이 불가능하므로 대규모 배치에서는 사용하지 않는 것이 좋습니다.
  2. nfsmapid_domain에 값이 지정되지 않은 경우 데몬은 DNS TXT RR에서 도메인 이름을 확인합니다. nfsmapidresolver의 루틴 세트에 사용되는 /etc/resolv.conf 파일의 지시어를 사용합니다. resolver는 구성된 DNS 서버에서 _nfsv4idmapdomain TXT RR을 검색합니다. DNS TXT 레코드를 사용하는 경우 보다 확장이 용이합니다. 따라서 SMF 저장소에서 매개변수를 설정하는 것보다는 TXT 레코드를 계속 사용하는 경우가 많습니다.

  3. 도메인 이름을 제공하는 DNS TXT 레코드가 구성되어 있지 않으면 nfsmapid 데몬은 /etc/resolv.conf 파일의 domain 또는 search 지시어를 사용하며, 이때 마지막으로 지정된 지시어가 우선적으로 사용됩니다.

    다음 예에서는 domainsearch 지시어가 둘 다 사용됩니다. nfsmapid 데몬은 search 지시어 뒤에 나열된 첫번째 도메인(example.com)을 사용합니다.

    domain company.example.com
    search example.com abc.def.com
  4. /etc/resolv.conf 파일이 없으면 nfsmapiddomainname 명령의 동작에 따라 NFS 버전 4 도메인 이름을 가져옵니다. 구체적으로, /etc/defaultdomain 파일이 있으면 nfsmapid는 NFS 버전 4 도메인에 대해 해당 파일의 컨텐츠를 사용합니다. /etc/defaultdomain 파일이 없으면 nfsmapid는 네트워크의 구성된 이름 지정 서비스에서 제공하는 도메인 이름을 사용합니다. 자세한 내용은 domainname(1M) 매뉴얼 페이지를 참조하십시오.

nfsmapid 및 DNS TXT 레코드

DNS는 다양한 용도로 사용되므로 NFS 버전 4 도메인 이름에 효율적인 저장소 및 배포 방식을 제공합니다. 또한, DNS는 기본적으로 확장이 가능하므로 대규모 배치에서는 NFS 버전 4 도메인 이름을 구성할 때 DNS TXT 리소스 레코드가 기본적으로 사용됩니다. 엔터프라이즈 레벨 DNS 서버에서 _nfsv4idmapdomain TXT 레코드를 구성해야 합니다. 이와 같이 구성하면 모든 NFS 버전 4 클라이언트 또는 서버가 DNS 트리를 순화하면서 NFS 버전 4 도메인을 찾을 수 있습니다.

다음 예에서는 DNS 서버가 NFS 버전 4 도메인 이름을 제공할 수 있도록 설정하는 데 기본적으로 사용되는 항목을 보여줍니다.

_nfsv4idmapdomain		IN		TXT			"abc.def"

이 예에서 구성할 도메인 이름은 큰따옴표로 묶인 값입니다. ttl 필드는 지정되어 있지 않으며 _nfsv4idmapdomain(owner 필드의 값)에는 도메인이 추가되지 않습니다. 이와 같이 구성하면 TXT 레코드가 Start-Of-Authority(SOA) 레코드에서 영역의 ${ORIGIN} 항목을 사용할 수 있습니다. 예를 들어 서로 다른 도메인 이름 공간 레벨에서 레코드를 다음과 같이 읽을 수 있습니다.

_nfsv4idmapdomain.subnet.example.com.    IN    TXT    "abc.def"
_nfsv4idmapdomain.example.com.           IN    TXT    "abc.def"

이 구성에서는 DNS 클라이언트가 보다 유동적으로 resolv.conf 파일을 사용하여 DNS 트리 계층을 검색할 수 있습니다. resolv.conf(4) 매뉴얼 페이지를 참조하십시오. 이 기능을 사용하면 TXT 레코드를 찾을 확률이 더 높아집니다. 유동성을 높이기 위해 더 낮은 레벨의 DNS 하위 도메인에서는 자체 DNS TXT RR(리소스 레코드)을 정의할 수 있습니다. 이 기능을 통해 더 낮은 레벨의 DNS 하위 도메인이 최상위 레벨 DNS 도메인에서 정의한 TXT 레코드를 대체할 수 있습니다.


주 -  TXT 레코드를 통해 지정되는 도메인은 NFS 버전 4를 사용하는 클라이언트와 서버의 DNS 도메인과 일치하지 않는 임의의 문자열일 수 있습니다. NFS 버전 4 데이터를 다른 DNS 도메인과 공유하지 않을 수 있습니다.

NFS 버전 4 도메인 확인

네트워크의 NFS 버전 4 도메인에 대해 값을 지정하기 전에 NFS 버전 4 도메인이 네트워크에 대해 이미 구성되었는지 확인하십시오. 다음 예에서는 네트워크의 NFS 버전 4 도메인을 식별하는 방법을 제공합니다.

  • DNS TXT RR에서 NFS 버전 4 도메인을 식별하려면 nslookup 또는 dig 명령을 사용합니다.

    다음 예에서는 nslookup 명령의 샘플 출력을 보여줍니다.

    # nslookup -q=txt _nfsv4idmapdomain
    Server:         10.255.255.255
    Address:        10.255.255.255#53
    
    _nfsv4idmapdomain.company.example.com text = "example.com"

    다음 예에서는 dig 명령의 샘플 출력을 보여줍니다.

    # dig +domain=company.example.com -t TXT _nfsv4idmapdomain
    ...
    ;; QUESTION SECTION:
    ;_nfsv4idmapdomain.company.example.com. IN    TXT
    
    ;; ANSWER SECTION:
    _nfsv4idmapdomain.company.example.com. 21600 IN TXT   "example.com"
    
    ;; AUTHORITY SECTION:
    ...

    DNS TXT RR을 설정하는 방법에 대한 자세한 내용은 nfsmapid 및 DNS TXT 레코드를 참조하십시오.

  • 네트워크가 NFS 버전 4 DNS TXT RR로 설정되어 있지 않은 경우 다음 명령을 실행하여 DNS 도메인 이름에서 NFS 버전 4 도메인을 식별합니다.

    # egrep domain /etc/resolv.conf
    domain company.example.com
  • 클라이언트에 대해 DNS 도메인 이름을 제공하기 위해 /etc/resolv.conf 파일이 구성되어 있지 않은 경우 다음 명령을 사용하여 네트워크의 NFS 버전 4 도메인 구성에서 도메인을 식별합니다.

    # cat /system/volatile/nfs4_domain
    example.com
  • NIS 등의 다른 이름 지정 서비스를 사용하는 경우 다음 명령을 사용하여 네트워크에 대해 구성된 이름 지정 서비스의 도메인을 식별합니다.

    # domainname
    it.company.example.com

NFS 버전 4 기본 도메인 구성

Oracle Solaris 11 릴리스에서 NFS 버전 4 기본 도메인 구성

Oracle Solaris 11 릴리스에서는 다음 명령을 입력하여 기본 NFS 도메인 버전을 설정합니다.

# sharectl set -p nfsmapid_domain=example.com nfs 

주 -  DNS는 기본적으로 다양한 용도로 사용되며 확장이 가능하므로, 대규모 NFS 버전 4 배치의 도메인을 구성할 때는 DNS TXT 레코드가 계속 사용되고 있으며 사용하는 것이 좋습니다. nfsmapid 및 DNS TXT 레코드를 참조하십시오.
Solaris 10 릴리스에서 NFS 버전 4 기본 도메인 구성

NFS 버전 4의 초기 Solaris 10 릴리스에서는 네트워크에 여러 DNS 도메인이 포함되어 있는데 UID 및 GID 이름 공간은 하나뿐이면 모든 클라이언트는 nfsmapid_domain에 대해 하나의 값을 사용해야 했습니다. DNS를 사용하는 사이트의 경우 nfsmapid_nfsv4idmapdomain에 지정된 값에서 도메인 이름을 가져옴으로써 이 문제를 해결합니다. 자세한 내용은 nfsmapid 및 DNS TXT 레코드를 참조하십시오. 네트워크가 DNS를 사용하도록 구성되어 있지 않은 경우 첫번째 시스템 부트 중에 운영 체제에서 sysidconfig 유틸리티를 사용하여 NFS 버전 4 도메인 이름에 대해 다음 프롬프트를 제공합니다.

This system is configured with NFS Version 4, which uses a 
domain name that is automatically derived from the system's 
name services. The derived domain name is sufficient for most 
configurations. In a few cases, mounts that cross different 
domains might cause files to be owned by nobody due to the 
lack of a common domain name.

Do you need to override the system's default NFS version 4 domain 
name (yes/no)? [no]

기본 응답은 [no]입니다. [no]를 선택하면 다음 메시지가 표시됩니다.

For more information about how the NFS Version 4 default domain name is 
derived and its impact, refer to the man pages for nfsmapid(1M) and 
nfs(4), and the System Administration Guide: Network Services.

[yes]를 선택하면 다음 프롬프트가 표시됩니다.

Enter the domain to be used as the NFS Version 4 domain name.
NFS Version 4 domain name []:

주 -  nfsmapid_domain의 값이 SMF 저장소에 있는 경우 사용자가 제공하는 도메인 이름이 해당 값을 대체합니다.

nfsmapid 관련 추가 정보