NFS Azure 파일 공유 문제 해결

참고

이 문서에서 참조하는 CentOS는 Linux 배포판이며 EOL(수명 종료)에 도달합니다. 사용을 고려하고 그에 따라 계획하십시오. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.

이 문서에서는 NFS Azure 파일 공유와 관련된 일반적인 문제를 나열하고 잠재적인 원인 및 해결 방법을 제공합니다.

중요

이 문서의 내용은 NFS 공유에만 적용됩니다. Linux에서 SMB 문제를 해결하려면 Linux에서 Azure Files 문제 해결(SMB)을 참조하세요. NFS Azure 파일 공유는 Windows에서 지원되지 않습니다.

적용 대상

파일 공유 형식 SMB Nfs
표준 파일 공유(GPv2), LRS/ZRS
표준 파일 공유(GPv2), GRS/GZRS
프리미엄 파일 공유(FileStorage), LRS/ZRS

chgrp "filename" 실패: 잘못된 인수(22)

원인 1: idmapping을 사용하지 않도록 설정하지 않음

Azure Files 영숫자 UID/GID를 허용하지 않으므로 idmapping을 사용하지 않도록 설정해야 합니다.

원인 2: idmapping을 사용하지 않도록 설정했지만 잘못된 파일/dir 이름이 발생한 후 다시 사용하도록 설정되었습니다.

idmapping을 올바르게 사용하지 않도록 설정하더라도 경우에 따라 자동으로 다시 사용하도록 설정할 수 있습니다. 예를 들어 Azure Files 잘못된 파일 이름이 발견되면 오류를 다시 보냅니다. 이 오류 코드가 표시되면 NFS 4.1 Linux 클라이언트가 idmapping을 다시 사용하도록 설정하고 영숫자 UID/GID를 사용하여 향후 요청을 보냅니다. Azure Files 지원되지 않는 문자 목록은 이 문서를 참조하세요. 콜론은 지원되지 않는 문자 중 하나입니다.

해결 방법

idmapping을 사용하지 않도록 설정했고 다시 사용하도록 설정하는 항목이 없는지 확인합니다. 그런 다음, 다음 단계를 수행합니다.

  1. 공유를 분리합니다.

  2. 다음을 사용하여 idmapping을 사용하지 않도록 설정합니다.

    sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
  3. 공유를 다시 탑재합니다.

  4. rsync를 실행하는 경우 잘못된 디렉터리 또는 파일 이름이 없는 디렉터리의 인수를 사용하여 rsync —numeric-ids 를 실행합니다.

NFS 공유를 만들 수 없음

원인: 지원되지 않는 스토리지 계정 설정

NFS는 다음 구성을 사용하는 스토리지 계정에서만 사용할 수 있습니다.

해결 방법

NFS 공유를 만드는 방법의 지침을 따릅니다.

NFS Azure 파일 공유에 연결하거나 탑재할 수 없음

원인 1: 요청은 신뢰할 수 없는 네트워크/신뢰할 수 없는 IP의 클라이언트에서 시작됩니다.

SMB와 달리 NFS에는 사용자 기반 인증이 없습니다. 공유에 대한 인증은 네트워크 보안 규칙 구성을 기반으로 합니다. 클라이언트가 NFS 공유에 대한 보안 연결만 설정하도록 하려면 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용해야 합니다. 프라이빗 엔드포인트 외에도 온-프레미스에서 공유에 액세스하려면 VPN 또는 ExpressRoute 연결을 설정해야 합니다. 방화벽에 대한 스토리지 계정의 허용 목록에 추가된 IP는 무시됩니다. NFS 공유에 대한 액세스를 설정하려면 다음 방법 중 하나를 사용해야 합니다.

  • 서비스 엔드포인트

    • 퍼블릭 엔드포인트에서 액세스합니다.

    • 동일한 지역에서만 사용할 수 있습니다.

    • 공유 액세스에 VNet 피어링을 사용할 수 없습니다.

    • 각 가상 네트워크 또는 서브넷을 허용 목록에 개별적으로 추가해야 합니다.

    • 온-프레미스 액세스의 경우 ExpressRoute, 지점 및 사이트 간 VPN에서 서비스 엔드포인트를 사용할 수 있습니다. 프라이빗 엔드포인트는 더 안전하기 때문에 사용하는 것이 좋습니다.

      다음 다이어그램은 퍼블릭 엔드포인트를 사용한 연결을 보여 줍니다.

      퍼블릭 엔드포인트 연결 다이어그램

  • 프라이빗 엔드포인트

    • 액세스는 서비스 엔드포인트보다 더 안전합니다.

    • 프라이빗 링크를 통해 NFS 공유에 대한 액세스는 스토리지 계정의 Azure 지역(지역 간, 온-프레미스) 내부 및 외부에서 사용할 수 있습니다.

    • 프라이빗 엔드포인트에서 호스트되는 가상 네트워크와 가상 네트워크 피어링을 통해 피어링된 가상 네트워크의 클라이언트에 대한 NFS 공유 액세스 권한을 부여합니다.

    • ExpressRoute, 지점 및 사이트 간 VPN 및 사이트 간 VPN에서 프라이빗 엔드포인트를 사용할 수 있습니다.

      프라이빗 엔드포인트 연결 다이어그램

원인 2: 보안 전송이 사용하도록 설정됨

NFS Azure 파일 공유는 현재 이중 암호화를 지원하지 않습니다. Azure는 MACSec을 사용하여 Azure 데이터 센터 간에 전송 중인 모든 데이터에 대한 암호화 계층을 제공합니다. 신뢰할 수 있는 가상 네트워크 및 VPN 터널을 통해서만 NFS 공유에 액세스할 수 있습니다. NFS 공유에서 추가 전송 계층 암호화를 사용할 수 없습니다.

해결 방법

스토리지 계정의 구성 블레이드에서 보안 전송 필요 를 사용하지 않도록 설정합니다.

필요한 보안 전송을 사용하지 않도록 설정하는 스토리지 계정 구성 블레이드를 보여 주는 스크린샷

원인 3: nfs-utils, nfs-client 또는 nfs-common 패키지가 설치되지 않음

명령을 실행 mount 하기 전에 nfs-utils, nfs-client 또는 nfs-common 패키지를 설치합니다.

NFS 패키지가 설치된 경우 검사 다음을 실행합니다.

이 섹션의 동일한 명령은 CentOS 및 Oracle Linux에 적용됩니다.

sudo rpm -qa | grep nfs-utils

해결 방법

패키지가 설치되지 않은 경우 배포판 관련 명령을 사용하여 패키지를 설치합니다.

이 섹션의 동일한 명령은 CentOS 및 Oracle Linux에 적용됩니다.

OS 버전 7.X

sudo yum install nfs-utils

OS 버전 8.X 또는 9.X

sudo dnf install nfs-utils

원인 4: 방화벽 차단 포트 2049

NFS 프로토콜은 포트 2049를 통해 서버와 통신합니다. 이 포트가 스토리지 계정(NFS 서버)에 열려 있는지 확인합니다.

해결 방법

다음 명령을 실행하여 클라이언트에서 포트 2049가 열려 있는지 확인합니다. 포트가 열려 있지 않으면 엽니다.

sudo nc -zv <storageaccountnamehere>.file.core.windows.net 2049

원인 5: 스토리지 계정이 삭제됨

오류로 인해 파일 공유를 탑재할 수 없는 경우 연결 시간이 초과되었습니다. 파일 공유가 포함된 스토리지 계정이 실수로 삭제될 수 있습니다.

해결 방법

스토리지 계정을 복구합니다. 그런 다음 새 스토리지 계정 리소스 ID와 연결되도록 프라이빗 엔드포인트를 삭제하고 다시 만듭니다.

일부 커널에서 큰 디렉터리 열거형에 대해 ls가 중단됩니다.

원인: Linux 커널 v5.11에서 버그가 도입되었으며 v5.12.5에서 수정되었습니다.

일부 커널 버전에는 디렉터리 목록을 끝없이 읽기DIR 시퀀스로 만드는 버그가 있습니다. 한 번의 호출로 모든 항목을 배송할 수 있는 작은 디렉터리에는 이 문제가 없습니다. 이 버그는 Linux 커널 v5.11에서 도입되었으며 v5.12.5에서 수정되었습니다. 따라서 그 사이에 있는 모든 항목에는 버그가 있습니다. RHEL 8.4에는 이 커널 버전이 있습니다.

해결 방법: 커널 다운그레이드 또는 업그레이드

영향을 받는 커널 외부의 커널을 다운그레이드하거나 업그레이드하면 문제가 resolve.

"파일을 찾을 수 없음" 오류로 시스템 명령이 실패합니다.

원인

NFS 서비스에서 생성된 64비트 inode 숫자의 서식으로 인해 Azure Files inode 번호를 사용하는 Linux 32비트 애플리케이션이 예상대로 작동하지 않을 수 있습니다.

해결 방법

이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.

  • 커널 부팅 옵션을 사용하여 nfs.enable_ino64=0 64비트 inode 숫자를 32비트로 압축합니다.

  • /etc/modprobe.d/nfs.conf 파일에 추가하고 options nfs enable_ino64=0 VM을 다시 부팅하여 모듈 매개 변수를 설정합니다.

grub.conf 파일에 이 커널 부팅 옵션을 유지할 수도 있습니다. 자세한 내용은 Linux 배포 설명서를 참조하세요.

도움이 필요하신가요?

그래도 도움이 필요한 경우 지원에 문의 하여 문제를 신속하게 해결하세요.

참고 항목

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.