Skip to main content
ONTAP Technical Reports
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Maxdir-size 및 대용량 ONTAP 디렉터리

기여자 whyistheinternetbroken

maxdir-size`ONTAP 볼륨의 각 디렉터리 파일 크기를 제한하기 위해 해당 디렉터리의 이름에 할당할 수 있는 용량을 제한합니다. 이는 볼륨의 `maxfiles inode 제한과는 무관하며, 단일 디렉터리의 이름 수에 대한 정적으로 정의 가능한 제한은 없습니다. 이름 길이, 문자 유형 등 여러 요인에 따라 해당 값이 가변적이기 때문입니다. 자세한 내용은 "디렉터리 파일당 이름 수 추정"을 참조하십시오.

ONTAP에서 디렉토리란 무엇입니까?

WAFL 디렉터리는 이름을 inode 번호에 매핑하는 메타데이터 파일입니다. 디렉터리 크기는 해당 디렉터리 아래에 저장된 파일의 데이터 합계가 아니라, 디렉터리에 저장된 이름의 개수와 각 이름에 필요한 디렉터리 공간의 크기에 따라 결정됩니다. 새로 생성된 디렉터리는 4KiB에서 시작하여 항목이 추가될 때마다 4KiB 디렉터리 블록 단위로 크기가 증가합니다.

디렉터리는 하나의 inode를 사용하며, 해당 inode 레코드는 볼륨 수준의 inode 파일(개념 및 기능상 별개임)에 저장됩니다. 디렉터리 이름은 해당 디렉터리 자체의 데이터 블록에 저장됩니다. 이름을 추가하면 개별 디렉터리 파일의 크기가 증가하여 `maxdir-size`제한에 근접할 수 있으며, 파일, 디렉터리, ACL, 명명된 스트림 등 파일 시스템 오브젝트를 더 많이 생성하면 더 많은 inode 레코드가 할당되어 볼륨 수준의 inode 파일이 `maxfiles`제한에 가까워질 수 있습니다. 4KiB 크기의 디렉터리 블록 하나에 저장되는 이름 항목의 수는 각 이름의 저장 방식에 따라 결정되며, 이는 이름의 길이와 문자 인코딩에 따라 달라집니다.

디렉토리 블록 레이아웃

ONTAP 디렉터리 파일은 4KiB 블록 단위로 크기가 증가하며, 각 블록은 크기에 따라 가변적인 수의 엔트리 레코드와 네임 청크로 구성됩니다. ONTAP의 네임 청크는 파일 이름의 일부를 저장하는 16바이트 슬롯입니다. 각 이름은 하나의 엔트리 레코드와 인코딩된 길이에 필요한 만큼의 16바이트 청크를 차지합니다.

48바이트 이름에서 이름 덩어리가 어떻게 할당되는지 보여주는 예시:

48바이트 파일 이름이 16바이트 이름 청크 3개와 16바이트 유니코드 축약형 오버헤드 청크 1개로 저장되는 방식을 나타낸 다이어그램

디렉터리 블록의 최대 개수 및 이름의 최대 개수

허용되는 최대 디렉터리 블록 수는 해당 maxdir-size 값에 따라 결정됩니다.

320MB 디렉터리 크기의 경우 최대 81,920개의 디렉터리 블록을 할당할 수 있습니다(320MB / 4KiB, ONTAP이 이 값을 이진 단위로 보고하므로 320MB는 335,544,320바이트입니다). 따라서 디렉터리 파일에 허용되는 총 이름 수는 디렉터리 블록당 허용되는 항목 수에 따라 달라집니다.

디렉토리 블록은 어떻게 구성되는가

모든 4KiB 디렉토리 블록은 동일한 방식으로 분할됩니다.

  • 각각 12바이트씩 최대 128개의 항목 레코드(1536바이트)

  • 각각 16바이트 크기의 이름 덩어리 160개(총 2560바이트)로 구성된 공유 풀

이 모든 데이터는 4KiB 블록 하나를 차지합니다. 저장되는 각 이름에는 엔트리 레코드와 하나 이상의 이름 청크가 필요하며, 128개의 엔트리 레코드 풀과 160개의 이름 청크 풀 중 먼저 소진되는 풀에 따라 해당 블록에 저장할 수 있는 이름의 개수가 결정됩니다. ASCII 이름의 경우 이름 청크가 먼저 소진됩니다. 따라서 `maxdir-size / filename-length`도 메가바이트당 파일 수 비율도 정확하지 않습니다.

아래 그림에서 이전 예시의 48바이트 이름을 볼 수 있습니다. 이 이름 하나는 12바이트 항목 레코드 하나와 앞서 설명한 16바이트 이름 덩어리 4개(총 64바이트)를 사용합니다.

4KiB 디렉터리 블록의 다이어그램으로

 

160개의 청크로 구성된 풀은 항목 레코드가 모두 소진되기 전에 블록 공간이 부족해집니다. 총 160개의 청크를 4개의 청크로 나누면 블록당 40개의 이름만 저장할 수 있습니다. 즉, 128개의 항목 레코드 중 88개가 사용되지 않게 됩니다. 더 짧은 일반적인 이름은 3개의 청크만 필요하므로 동일한 4KiB 디렉토리 블록에 약 53개의 이름을 저장할 수 있습니다. 이는 이름의 크기가 단일 디렉토리에 허용되는 이름 수에 직접적인 영향을 미칠 수 있음을 보여줍니다.

디렉터리 파일당 이름 수 추정

하나의 디렉토리에 얼마나 많은 이름이 들어갈 수 있는지 대략적으로 추정하려면 먼저 단일 4KiB 블록에 몇 개의 이름이 들어갈 수 있는지 계산한 다음, 허용된 블록 수를 곱하면 됩니다. (320MB 제한의 경우 81,920개 블록입니다.)

한 블록에 몇 개의 이름을 넣을 수 있는지는 각 이름이 블록에서 차지하는 공간에 따라 달라집니다. 짧고 간단한 이름은 공간을 적게 차지하므로 더 많은 이름을 넣을 수 있고, 긴 이름이나 ONTAP이 더 넓은 형식으로 저장해야 하는 이름은 더 많은 공간을 차지하므로 더 적은 이름을 넣을 수 있습니다.

  • 최대 약 32자까지의 일상적인 이름(예: report-2026.csv)은 모두 동일하게 압축되며, 대략 53개가 한 블록에 들어갑니다.

  • 이름이 길수록 더 적게 들어갑니다. 예를 들어 48자 이름은 블록당 약 40개 들어갑니다.

  • 더 긴 형식으로 저장해야 하는 이름은 대략 두 배의 공간을 차지하므로, 저장할 수 있는 이름이 줄어듭니다. 이는 비ASCII 문자(악센트가 있는 문자 또는 동아시아 문자 등)를 포함하는 이름, NFS 대체 이름을 함께 사용하는 이름, 그리고 FlexGroup 원격 항목에 적용됩니다. 이러한 유형의 32자 이름은 특수 문자에 필요한 크기 때문에 블록당 약 26자만 저장할 수 있습니다. SMB가 긴 이름과 함께 짧은 "8.3" 별칭을 생성하는 경우, 해당 별칭도 추가 공간을 차지합니다.

기존 DOS 스타일의 "8.3" 이름을 저장하는 구형 볼륨은 이름 크기가 작아(바이트 수가 적어) 블록당 최대 128개의 항목을 저장할 수 있습니다. 그러나 일반 이름을 사용하는 최신 볼륨에서는 이러한 동작을 볼 수 없습니다. 현재 ONTAP 볼륨은 NFS 및 SMB에서 긴 파일 이름과 국제 문자를 지원하기 위해 유니코드 형식(기본적으로 C.UTF-8)으로 이름을 저장하기 때문입니다. 이는 훨씬 이전 시스템에서 사용했던 8자 DOS 스타일 이름과는 다른 방식입니다. 볼륨 언어에 대한 자세한 내용은 <insert link here>을 참조하십시오.

파일 이름은 매우 다양할 수 있으므로 디렉터리에 허용되는 파일 수를 단일하게 정해 놓을 수는 없습니다. 유용한 계획 수치는 FlexVol 볼륨의 320MB 설정에서 최대 약 430만 개의 일반 파일 이름을 사용할 수 있다는 것입니다. 여기서 일반 파일 이름은 최대 약 32개의 ASCII 문자를 의미합니다. 이는 대략적인 예시일 뿐이며, 파일 이름이 특정 길이여야 한다는 보장이 아닙니다. 아래 표는 몇 가지 일반적인 경우와 320MB 설정에서 각 경우에 단일 디렉터리에 허용되는 대략적인 파일 이름 수를 보여줍니다.

이름 프로필 샘플 파일 이름 4KiB 블록당 이름 수 하나의 디렉토리에 있는 이름 320MB

짧고 일상적인 이름 (8자)

f0001.db

53

4,341,758

일상 이름 (32자)

project-alpha-run0142-input1.dat

53

4,341,758

긴 이름 (48자)

run-2026-09-21-node07-sensor-array-01423.parquet

40

3,276,798

ASCII 문자가 아닌 문자가 포함된 이름 또는 FlexGroup 항목(32자)

résumé-final-2026-09-21-v03.docx

26

2,129,918

NFS 대체 이름(32자)도 포함하는 이름

Marketing-Overview-2026Q3v2.pptx 대체품과 함께 MARKET~1.PPT

22

1,802,238

참고: 이 수치는 . 및 .. 항목이 존재한다는 가정하에 계산되었으므로, 각 값은 실제 계산값보다 약간 적습니다.

요약하자면, 동일한 320MB 용량 제한으로 최대 약 430만 개의 짧고 일상적인 이름을 저장할 수 있지만, 이름을 더 긴 형식으로 저장할 경우 그 절반에도 못 미칩니다. 모든 이름이 프로토콜 최대 길이인 255자를 사용하는 경우, 약 73만 7천 개의 이름만 허용됩니다.

파일 이름 길이와 경로 길이 비교

`maxdir-size`은(는) 특정 상위 디렉토리에 저장된 기본 이름을 설명합니다. 모든 항목에 전체 절대 경로를 저장하지는 않습니다. 각 경로명 구성 요소는 자체 상위 디렉토리의 항목입니다. 따라서 더 깊은 디렉토리 구조를 사용하더라도  `maxdir-size` 사용량이 증가하지는 않습니다.

계층 구조가 깊어지면 볼륨에 디렉터리와 공용 inode가 추가되지만, 각 디렉터리에 저장되는 이름 수는 줄어듭니다. 이러한 절충안은 일반적으로 확장성과 전반적인 성능을 향상시킵니다.

참고: 프로토콜 및 클라이언트 경로 길이 제한은 각각 별도로 적용됩니다.

maxdir-size 제한의 작동 방식

이 용량 제한은 볼륨 내의 모든 디렉터리에 개별적으로 적용되며, 예약이 아닌 제한 사항입니다. 320MB로 설정한다고 해서 볼륨 용량의 320MB가 즉시 확보되는 것은 아니며, 단순히 특정 디렉터리가 해당 크기까지 확장될 수 있도록 허용하는 것입니다.

다음은 몇 가지 고려 사항입니다.

  • 디렉터리 파일의 블록 크기가 320MB에 도달하면 해당 블록은 실제 볼륨 용량 320MB를 사용합니다.

  • 디렉토리 파일의 크기가 커지면, 나중에 항목이 삭제되더라도 그 크기는 최고치로 유지됩니다.

  • 파일이나 디렉터리를 삭제하면 해당 항목 슬롯을 재사용할 수 있지만 디렉터리 파일 자체는 압축되지 않습니다.

  • 인덱스 디렉터리는 완전히 비어 있는 4KiB 블록(ONTAP 9.5 이상에서 사용 가능)에 구멍을 뚫고 디스크에서 해당 물리적 블록을 회수할 수 있지만, 일반적으로 보고되는 디렉터리 파일 크기는 줄어들지 않습니다.

참고: ONTAP이 대용량 디렉터리에 대해 생성하는 보조 디렉터리 인덱스는 자체 메타데이터 용량과 inode를 사용하지만 디렉터리 파일의 일부가 아니며 전체 용량에 포함되지 않습니다 maxdir-size. 인덱스가 SnapMirror 복제 목적으로 공용 inode 공간을 사용하도록 구성된 경우, 해당 인덱스는 전체 용량 maxfiles(공용 inode 제한)에 포함됩니다.

자세한 내용은 "ONTAP의 디렉토리 인덱싱"을 참조하십시오.

maxdir-size 값 높이기

  • 해당 볼륨의 모든 디렉토리에 적용됩니다.

  • 디렉터리 파일 크기가 기존 제한을 초과하여 커질 수 있도록 허용합니다.

  • 새로운 최대치를 미리 할당하거나 예약하지 않습니다.

  • 공용 inode를 추가하거나 변경하지 않습니다. maxfiles

  • 기존 디렉토리가 즉시 공간을 차지하도록 만들지 않습니다.

설정된 용량 제한과 디렉토리의 현재 크기를 확인하는 방법은 "maxdir-size 및 현재 디렉토리 크기 보기"을 참조하십시오.

FlexGroup 볼륨은 maxdir-size 제한을 우회합니까?

아니요. FlexGroup는 디렉터리의 `maxdir-size`크기를 구성 요소 수만큼 곱하지 않습니다. 디렉터리 파일은 여전히 단일 구성 요소에 존재하며, 원격 항목으로 인해 FlexVol의 동일한 이름보다 해당 파일이 더 빠르게 커질 수 있습니다. 배치, 원격 항목 증가 및 계획 수치에 대한 자세한 내용은 "FlexGroup 볼륨"을 참조하십시오.

"← 이전: NetApp ONTAP NAS 볼륨용 고용량 파일 워크로드"

"다음: maxdir-size 및 현재 디렉토리 크기 보기 →"