다음을 통해 공유


Azure NetApp Files의 디렉터리 크기 이해

디렉터리에 파일을 만들면 항목이 Azure NetApp Files 볼륨 내의 숨겨진 인덱스 파일에 추가됩니다. 이 인덱스 파일은 디렉터리의 기존 inode를 추적하는 데 도움이 되며 파일 수가 많은 디렉터리에 대한 조회 요청을 신속하게 처리하는 데 도움이 됩니다. 항목이 이 파일에 추가되면 파일 이름 길이에 따라 항목당 약 512바이트의 속도로 파일 크기가 증가하지만 감소하지는 않습니다. 파일 이름이 길어질수록 파일 크기가 더 늘어나게됩니다. 또한 바로 가기 링크는 이 파일에 항목을 추가합니다. 이 개념을 모든 Linux 기반 파일 시스템의 공통 요소인 디렉터리 크기라고 합니다. 디렉터리 크기는 단일 Azure NetApp Files 볼륨의 최대 총 파일 수가 아닙니다. 값에 따라 maxfiles 결정됩니다.

기본적으로 새 디렉터리가 만들어지면 4KiB(4,096바이트) 또는 8개의 512바이트 블록을 사용합니다. 통계 명령을 사용하여 Linux 클라이언트에서 새로 만든 디렉터리의 크기를 볼 수 있습니다.

# mkdir dirsize 
# stat dirsize 
File: ‘dirsize’ 
Size: 4096            Blocks: 8          IO Block: 32768  directory 

디렉터리 크기는 단일 디렉터리와 관련이 있으며 크기로 결합되지 않습니다. 예를 들어 볼륨에 10개의 디렉터리가 있는 경우 각 디렉터리가 단일 볼륨에서 320MiB 디렉터리 크기 제한에 근접할 수 있습니다.

디렉터리가 제한 크기 에 도달하고 있는지 확인

320MiB 디렉터리의 경우 블록 수는 655360이고 각 블록 크기는 512바이트입니다. 즉, 320x1024x1024/512입니다. 이 숫자는 320MiB 디렉터리에 대해 최대 약 4-5개의 백만 파일로 변환됩니다. 그러나 디렉터리에서 비 ASCII 문자가 있는 파일 수와 같은 요인에 따라 실제 최대 파일 수는 더 적을 수 있습니다.

클라이언트에서 stat 명령을 사용하여 디렉터리가 디렉터리 메타데이터의 최대 크기 제한(320MB)에 도달하는지 여부를 확인할 수 있습니다. Azure NetApp Files의 단일 디렉터리에 대한 최대 크기 제한에 도달하면 No space left on device 오류가 발생합니다.

320MB 디렉터리의 경우 블록 수는 655,360개이고, 각 블록 크기는 512바이트입니다. (즉, 320x1024x1024/512입니다.) 이 숫자는 320MB 디렉터리에 대해 최대 약 400만 개의 파일로 변환됩니다. 그러나 디렉터리에서 비 ASCII 문자가 있는 파일 수와 같은 요인에 따라 실제 최대 파일 수는 더 적을 수 있습니다. 최대 크기를 모니터링하는 방법에 대한 자세한 내용은 모니터링을 참조 하세요 maxdirsize.

디렉터리 크기 고려 사항

높은 파일 수 환경을 처리할 때는 다음 권장 사항을 고려하세요.

  • Azure NetApp Files 볼륨은 디렉터리 크기에 대해 최대 320MiB를 지원합니다. 이 값은 늘릴 수 없습니다.
  • 볼륨의 디렉터리 크기를 초과하면 볼륨에 사용 가능한 공간이 있더라도 클라이언트는 공간 부족 오류를 표시합니다.
  • 일반 볼륨의 경우 320MiB 디렉터리 크기는 단일 디렉터리의 약 4-5 백만 파일과 동일합니다. 이 값은 파일 이름 길이에 따라 달라집니다.
  • 대용량의 아키텍처는 일반 볼륨과 다릅니다.
  • 단일 디렉터리의 파일 수가 많으면 검색할 때 성능 문제가 발생할 수 있습니다. 가능한 경우 자주 검색해야 하는 경우 단일 디렉터리의 총 크기를 2MiB(약 27,000개의 파일)로 제한합니다.
    • 단일 디렉터리에 더 많은 파일이 필요한 경우 그에 따라 검색 성능 기대치를 조정합니다. Azure NetApp Files는 성능을 위해 디렉터리 파일 목록을 인덱싱하지만 파일 수가 많으면 검색에 다소 시간이 걸릴 수 있습니다.
  • 파일 시스템을 디자인할 때는 플랫 디렉터리 레이아웃을 사용하지 마세요. 디렉터리 레이아웃에 대한 다양한 방법에 대한 자세한 내용은 디렉터리 레이아웃 정보를 참조 하세요.
  • 디렉터리 크기를 초과하고 새 파일을 만들 수 없는 문제를 해결하려면 관련 디렉터리에서 파일을 삭제하거나 이동합니다.

디렉터리 레이아웃 정보

이 값은 maxdirsize 단일 폴더에 단일 수준에서 수백만 개의 파일이 포함된 플랫 디렉터리 구조를 사용할 때 문제를 일으킬 수 있습니다. 파일, 폴더 및 하위 폴더가 흩어져 있는 폴더 구조는 에 미치는 영향이 낮습니다 maxdirsize. 여러 디렉터리 구조 방법론이 있습니다.

플랫 디렉터리 구조는 동일한 디렉터리 아래에 많은 파일이 있는 단일 디렉터리입니다.

플랫 디렉터리 구조의 다이어그램.

넓은 디렉터리 구조에는 모든 디렉터리에 파일이 분산된 많은 최상위 디렉터리가 포함되어 있습니다.

넓은 디렉터리 구조의 다이어그램입니다.

심층 디렉터리 구조에는 하위 디렉터리가 많은 최상위 디렉터리가 더 적습니다. 이 구조는 폴더당 파일 수를 줄이지만 디렉터리 레이아웃이 너무 깊고 파일 경로가 너무 길어지면 파일 경로 길이가 문제가 될 수 있습니다. 파일 경로 길이에 대한 자세한 내용은 Azure NetApp Files의 파일 경로 길이 이해(Understand file path length)를 참조하세요.

심층 디렉터리 구조의 다이어그램입니다.

Azure NetApp Files의 플랫 디렉터리 구조에 미치는 영향

플랫 디렉터리 구조(단일 또는 몇 개의 디렉터리에 있는 많은 파일)는 다양한 파일 시스템, Azure NetApp 파일 볼륨 등에 부정적인 영향을 미칩니다. 잠재적인 문제는 다음과 같습니다.

  • 메모리 압력
  • CPU 사용률
  • 네트워크 성능/대기 시간(특히 파일, 작업, GETATTR READDIR 작업의 대량 쿼리 중)

Azure NetApp Files 대용량의 디자인으로 인해 그 영향은 maxdirsize 고유합니다. Azure NetApp Files 대용량 maxdirsize 은 디자인으로 인해 고유하게 영향을 받았습니다. 일반 볼륨과 달리 대용량은 Azure NetApp Files 내의 원격 하드 링크를 사용하여 다양한 스토리지 디바이스에서 트래픽을 리디렉션하여 더 많은 규모와 성능을 제공합니다. 플랫 디렉터리를 사용하는 경우 로컬 파일에 대한 내부 원격 하드 링크의 비율이 높습니다. 이러한 원격 하드 링크는 총 maxdirsize 값에 대해 계산되므로 대용량은 일반 볼륨보다 더 빠르게 제한에 근접할 maxdirsize 수 있습니다.

예를 들어 단일 디렉터리에 수백만 개의 파일이 있고 파일 시스템에 대해 약 85%의 원격 하드 링크를 생성하는 경우 일반 볼륨의 거의 두 배에 달하는 양으로 소진될 것으로 예상 maxdirsize 할 수 있습니다.

Azure NetApp Files의 디렉터리 크기로 최상의 결과를 보려면 다음을 수행합니다.

  • Azure NetApp Files에서 플랫 디렉터리 구조를 사용하지 마세요. 파일 또는 폴더의 경로 길이가 NAS 프로토콜 표준을 초과하지 않는 경우 와이드 또는 심층 디렉터리 구조가 가장 적합합니다.
  • 플랫 디렉터리 구조가 불가피한 경우 디렉터리를 모니터링 maxdirsize 합니다.

모니터 maxdirsize

단일 디렉터리의 경우 명령을 사용하여 stat 디렉터리 크기를 찾습니다.

# stat /mnt/dir_11/c5 

stat 명령을 사용하여 특정 디렉터리의 디렉터리 크기를 확인할 수 있지만 단일 디렉터리에 대해 개별적으로 실행하는 것은 효율적이지 않을 수 있습니다. 가장 큰 디렉터리에서 가장 작은 크기로 정렬된 가장 큰 디렉터리 크기의 목록을 보려면 다음 명령은 쿼리에서 스냅샷 디렉터리를 생략하는 동안 이를 제공합니다.

# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn 

참고 항목

통계 명령에서 보고하는 디렉터리 크기는 바이트 단위입니다. 찾기 명령에 보고된 크기는 KiB입니다.

예제

# stat /mnt/dir_11/c5 

  File: ‘/mnt/dir_11/c5’ 

  Size: 322396160       Blocks: 632168     IO Block: 32768  directory 
 
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn 
316084 /mnt/dir_11/c5 

3792 /mnt/dir_19 

3792 /mnt/dir_16 

이전의 /mnt/dir_11/c5 디렉터리 크기는 316,084KiB(308.6MiB)로 320MiB 제한에 접근합니다. 이는 약 4.1 백만 파일과 동일합니다.

# ls /mnt/dir_11/c5 | wc -l
4171624

이 경우 파일 이동 또는 삭제와 같은 수정 작업을 고려합니다.

자세한 정보