본문으로 이동

WAFL

위키백과, 우리 모두의 백과사전.
WAFL
개발사넷앱
정식 명칭Write Anywhere File Layout
제약사항
최대 볼륨 크기up to 100 TB (limited by containing aggregate size; variable maximum depending on platform; limited to 16TB when using Deduplication{ONTAP 8.2 now supports dedup to max volume size supported on platform})
최대 파일 크기up to 16 TB[1]
기능
날짜 사용 권한atime, ctime, mtime
파일 시스템 권한유닉스 권한 및 ACL
투명한 압축Yes (Ontap 8.0 onwards)
투명한 암호화Yes (since Ontap 9.1;[2] possible with 3rd party appliances like 데크루 DataFort for older versions)
데이터 중복 제거Yes (FAS Dedup: periodic online scans, block based;)
카피 온 라이트Yes
기타
지원 운영 체제ONTAP

Write Anywhere File Layout(WAFL)은 대규모 고성능 RAID 어레이를 지원하고, 충돌이나 전원 장애 시 긴 시간의 일관성 검사 없이 빠르게 재시작할 수 있으며, 파일 시스템 크기를 빠르게 확장할 수 있는 독점적 파일 시스템이다. 이 파일 시스템은 넷앱이 자사의 스토리지 어플라이언스인 넷앱 FAS, AFF, Cloud Volumes ONTAP, ONTAP Select 등에서 사용하기 위해 설계했다.

개발자는 WAFL이 파일 시스템을 포함하고는 있지만 그 자체로 파일 시스템은 아니라고 주장한다.[3] WAFL은 NVRAM 또는 NVMEM이라 불리는 전용 메모리 스토리지 장치인 비휘발성 랜덤 액세스 메모리에 NVLOG라는 로그 형태로 기록하여 저널링 파일 시스템과 유사하게 변경 사항을 추적한다. WAFL은 디스크 블록에 접근하려는 다양한 파일 시스템 및 기술을 활성화하는 메커니즘을 제공한다.

설계

[편집]
WAFL 아이노드 구조, 데이터와 함께 저장되는 메타데이터

WAFL은 데이터뿐만 아니라 메타데이터도 파일 형태로 저장한다. 볼륨 내에서 할당된 블록을 나타내는 아이노드나 블록 맵과 같은 메타데이터는 파일 시스템 내의 고정된 위치에 저장되지 않는다. 볼륨의 최상위 파일은 모든 파일의 아이노드를 포함하는 아이노드 파일이다. 루트 아이노드라고 불리는 아이노드 파일 자체의 아이노드는 고정된 위치의 블록에 저장된다. 충분히 작은 파일의 아이노드는 파일의 내용을 포함하지만, 그렇지 않은 경우 파일 데이터 블록을 가리키는 포인터 목록이나, 파일 데이터 블록을 가리키는 포인터 목록을 포함하는 간접 블록을 가리키는 포인터 목록 등을 포함하며, 필요한 만큼의 간접 블록 계층을 형성하여 블록 트리를 이룬다. 루트 아이노드를 포함하는 블록을 제외한 파일 시스템의 모든 데이터 및 메타데이터 블록은 파일 시스템 내의 파일로 저장된다. 따라서 루트 아이노드를 사용하면 아이노드 파일을 제외한 모든 파일의 모든 블록 위치를 찾을 수 있다.[4]

메인 메모리는 파일 블록을 위한 버퍼 캐시로 사용된다. 파일의 블록이 변경되면 버퍼 캐시의 복사본이 업데이트되고 더티(dirty)로 표시되며, 변경 사항은 NVLOG라는 로그 내의 비휘발성 메모리에 기록된다. 버퍼 캐시의 더티 블록이 영구 스토리지에 기록되어야 할 때, 원래 읽어온 블록을 덮어쓰지 않는다. 대신 영구 스토리지에 새로운 블록이 할당되고 데이터가 새로운 위치에 기록되며, 메인 메모리에 있는 해당 블록을 가리키던 아이노드나 간접 블록이 업데이트된다. 아이노드를 포함하는 블록이나 간접 블록이 영구 스토리지에 기록되어야 할 경우, 이전 위치에 덮어쓰는 대신 새로운 위치에 기록된다. 이것이 "Write Anywhere File Layout"에서 "Write Anywhere"가 의미하는 바이다.[4]

루트 아이노드를 포함하는 블록을 제외한 모든 블록은 루트 아이노드를 통해 찾아지기 때문에, 루트 아이노드가 업데이트되기 전까지는 영구 스토리지에 기록된 변경 사항이 영구 스토리지상에서 보이지 않는다. 루트 아이노드는 일관성 포인트(consistency point)라는 과정을 통해 업데이트된다. 이 과정에서 영구 스토리지에 아직 기록되지 않은 모든 더티 블록이 영구 스토리지에 기록되고, 새로운 버전의 아이노드 파일을 가리키는 새로운 루트 아이노드가 기록된다. 그 시점에서 파일 시스템에 대한 모든 변경 사항은 새로운 루트 아이노드를 사용하여 영구 스토리지에서 볼 수 있게 된다. 이제 표시되는 변경 사항에 대한 NVLOG 항목은 삭제되어 이후 변경 사항을 위한 로그 항목 공간을 확보한다. 일관성 포인트는 주기적으로 수행되거나 비휘발성 메모리의 로그 항목이 거의 가득 찼을 때 수행된다.[4]

서버가 파일 시스템의 모든 변경 사항이 일관성 포인트에서 표시되기 전에 충돌하면, 표시되지 않은 변경 사항은 여전히 NVLOG에 남아 있다. 서버가 재부팅되면 NVLOG의 모든 항목을 재생하여 NVLOG에 기록된 변경 사항을 다시 수행함으로써 데이터 손실을 방지한다.

특징

[편집]

위에서 논의한 바와 같이, WAFL은 데이터나 메타데이터를 디스크상의 미리 정해진 위치에 저장하지 않는다. 대신 시간적 지역성을 사용하여 메타데이터를 사용자 데이터와 함께 자동으로 배치함으로써, 단일 및 이중 패리티 기반 RAID를 사용하여 데이터를 안정적인 디스크 스토리지에 커밋하는 데 필요한 디스크 작업 횟수를 최소화하도록 설계되었다.

참조의 시간적 지역성에 기반한 데이터 배치는 작성된 방식과 유사하게 읽히는 데이터 세트(예: 데이터베이스 레코드와 관련 인덱스 항목)의 읽기 성능을 향상시킬 수 있지만, 공간적 지역성 관점에서는 단편화를 유발할 수 있다. 회전하는 하드 디스크 드라이브에서 이는 순차적으로 기록되거나 랜덤하게 읽히거나 동일한 시간적 패턴으로 읽히는 파일에는 악영향을 미치지 않지만, 랜덤 쓰기 후 순차 읽기라는 공간적 데이터 접근 패턴에는 영향을 준다. 자기 헤드는 데이터를 읽기 위해 한 번에 한 위치에만 있을 수 있기 때문이며, 반면 단편화는 솔리드 스테이트 드라이브에는 영향을 미치지 않는다.

7.3.1 버전 이후의 ONTAP 릴리스에는 예약된 혹은 수동 단편화를 수행하는 reallocate 명령과, 공간적 단편화로 인해 발생하는 최적화되지 않은 데이터 접근 패턴을 감지하고 자동으로 수정하는 Write after Reading 볼륨 옵션과 같은 공간적 데이터 레이아웃을 최적화하는 여러 기술이 포함되었다. ONTAP 8.1.1 릴리스에는 파일 시스템 내의 연속적인 여유 공간을 자동으로 최적화하는 기술이 포함되어 있어 대부분의 데이터 접근 패턴에 최적의 데이터 레이아웃을 유지하는 데 도움이 된다. 7G 이전에는 wafl scan reallocate 명령을 고급 권한 수준에서 호출해야 했으며 예약할 수 없었다. 9.1 이후의 ONTAP 릴리스에는 인라인 데이터 압축(9.1 버전), ONTAP 9.2부터는 콜드 데이터를 느린 S3 스토리지로 자동 계층화하고 필요한 경우 다시 가져오는 FabricPool 기능, 그리고 각 애그리게이트당 최대 800TiB의 볼륨 간 데이터 중복 제거와 같은 SSD 사용 최적화 기술이 다수 포함되었다.[5]

스냅샷

[편집]
전통적인 카피 온 라이트 기법 데이터 제자리 백업
NetApp RoW 스냅샷 데이터 제자리 백업

WAFL은 파일 시스템의 읽기 전용 복사본인 스냅샷을 지원한다. 스냅샷은 일관성 포인트에서 수행되는 것과 동일한 작업을 수행하되, 현재 파일 시스템 상태에 해당하는 루트 아이노드를 업데이트하는 대신 루트 아이노드의 복사본을 저장함으로써 생성된다. 파일 시스템의 모든 데이터와 메타데이터는 루트 아이노드에서 찾을 수 있으므로, 스냅샷이 생성된 시점의 모든 데이터와 메타데이터는 스냅샷의 루트 아이노드 복사본에서 찾을 수 있다. 스냅샷을 생성하기 위해 다른 데이터를 복사할 필요는 없다.[4]

블록은 블록 맵을 사용하여 기록될 때 할당되는데, 블록 맵은 사용 중인 블록과 빈 블록을 추적한다. 블록 맵의 항목에는 해당 블록이 현재 파일 시스템 버전에서 사용 중인지 여부를 나타내는 비트와, 스냅샷별로 해당 블록이 스냅샷에서 사용 중인지 여부를 나타내는 비트들이 포함된다. 이는 스냅샷이 삭제될 때까지 스냅샷의 데이터가 덮어써지지 않도록 보장한다. 블록 맵을 사용하여 모든 새로운 쓰기와 재작성은 새로운 빈 블록에 기록된다. WAFL은 블록 재작성이 성공했다고 보고하지만 실제로는 재작성이 발생하지 않으며, 이 접근 방식을 Redirect-on-write(ROW) 기법이라고 한다.[4] ROW는 기존 데이터 블록을 제자리에서 덮어쓰고 스냅샷에 캡처하기 위해 스냅샷 예약 공간에 먼저 복사해야 하는 카피 온 라이트 방식에 비해 재작성 작업이 훨씬 빠르며, 이로 인해 시스템에 재작성이 발생하면 추가적인 데이터 복사 작업이 생성된다.

스냅샷은 파일 시스템의 특별한 숨겨진 디렉토리를 통해 빠르게 액세스할 수 있는 온라인 백업을 제공하며, 사용자가 실수로 삭제하거나 수정한 파일을 복구할 수 있게 해준다.[4]

넷앱의 Data ONTAP 릴리스 7G 운영체제는 FlexClone이라는 읽기-쓰기 스냅샷을 지원한다. 스냅샷은 SnapMirror, SnapVault, 온라인 볼륨 이동과 같은 기술의 기초이며, FlexClone, SnapLock, SnapRestore와 같은 기능은 아이노드 조작과 같은 WAFL의 기능과 속성을 활용하는 스냅샷 유사 기술이다. ONTAP 9.4부터는 각 FlexVol당 지원되는 최대 스냅샷 수가 1024개이며, 이전 버전의 최대 제한은 255개였다.

ONTAP 9.5부터는 활성 파일 시스템과 스냅샷 전체에서 데이터 중복 제거 스캔을 실행하는 스냅샷 공유 기능이 추가되었으며, 중복 제거 절감 효과는 스냅샷 수의 배수만큼 증가한다. 9.5 이전에는 스냅샷에 잠긴 중복 제거되지 않은 데이터는 중복 제거 프로세스에서 사용할 수 없었으며 활성 파일 시스템에서만 실행되었다.

파일 및 디렉토리 모델

[편집]

WAFL의 중요한 특징은 네트워크 파일 시스템 클라이언트를 위한 유닉스 스타일의 파일 및 디렉토리 모델과 서버 메시지 블록 클라이언트를 위한 마이크로소프트 윈도우 스타일의 파일 및 디렉토리 모델을 모두 지원한다는 점이다. WAFL은 또한 동일한 볼륨의 서로 다른 파일이 서로 다른 보안 속성을 가질 수 있는 모드를 포함하여 두 보안 모델을 모두 지원한다. 유닉스는 접근 제어 목록 (ACL) 또는 간단한 비트마스크를 사용할 수 있는 반면, 최신 윈도우 모델은 접근 제어 목록을 기반으로 한다. 이러한 두 가지 기능 덕분에 SMB 유형의 네트워크 파일 시스템에 파일을 작성한 후 나중에 NFS를 통해 유닉스 워크스테이션에서 액세스할 수 있다. 일반 파일 외에도 WAFL은 LUN이라고 불리는 파일 컨테이너를 포함할 수 있으며, 이는 ONTAP OS 소프트웨어에서 실행되는 스토리지 에어리어 네트워크 프로토콜을 사용하여 액세스할 수 있는 블록 장치용 LUN 일련 번호와 같은 특별한 속성을 필요로 한다.

FlexVol

[편집]
WAFL FlexVol 레이아웃: 사용자 데이터와 함께 블록 및 아이노드 메타데이터

각 Flexible Volume (FlexVol)은 별도의 WAFL 파일 시스템이며, 애그리게이트에 위치하고 애그리게이트의 모든 디스크에 분산된다. 각 애그리게이트는 일반적으로 여러 개의 FlexVol 볼륨을 포함할 수 있다. 데이터 최적화 과정 중 일관성 포인트( NVRAM 참조)로 마무리되는 "테트리스"를 포함하는 ONTAP은 데이터 블록을 각 FlexVol 볼륨 내에서 애그리게이트의 모든 디스크에 최대한 고르게 분산하도록 프로그래밍되어, 각 FlexVol이 애그리게이트 내 모든 데이터 디스크의 가용 성능을 잠재적으로 사용할 수 있도록 한다. 애그리게이트의 모든 데이터 디스크에 데이터 블록을 고르게 분산하는 방식을 통해, FlexVol에 대한 성능 제한을 스토리지 QoS로 동적으로 수행할 수 있으며 각 FlexVol의 성능을 보장하고 사용되지 않은 성능을 필요한 FlexVol 볼륨에 제공하기 위해 전용 애그리게이트나 RAID 그룹이 필요하지 않다. 각 FlexVol은 두껍게(thick) 또는 얇게 프로비저닝된 공간으로 구성할 수 있으며 나중에 언제든지 즉시 변경할 수 있다. iSCSI, 파이버 채널 (FC), 파이버 채널 오버 이더넷 (FCoE)과 같은 스토리지 에어리어 네트워크 (SAN) 프로토콜을 사용한 블록 장치 액세스는 FlexVol 볼륨 상의 루프 장치 기법과 유사한 LUN 에뮬레이션을 통해 수행된다. 따라서 WAFL 파일 시스템의 각 LUN은 파일처럼 보이지만 블록 장치에 필요한 추가 속성을 가진다. LUN 또한 두껍게 또는 얇게 프로비저닝하도록 구성할 수 있으며 나중에 즉시 변경할 수 있다. WAFL 아키텍처로 인해 FlexVol과 LUN은 구성된 공간 사용량을 즉시 늘리거나 줄일 수 있다. FlexVol에 데이터가 포함된 경우 내부 공간은 사용된 공간보다 작게 줄일 수 없다. 데이터가 있는 LUN 크기를 WAFL 파일 시스템에서 줄일 수 있더라도, ONTAP은 SAN 아키텍처로 인해 상위 수준의 블록 구조를 알지 못하므로 데이터를 자르고 파일 시스템을 손상시킬 수 있다. 따라서 데이터 손실을 방지하려면 호스트가 데이터를 포함하는 블록을 새로운 LUN 경계로 마이그레이션해야 한다. 각 FlexVol은 고유한 QoS, FlashPool, FlashCache 또는 FabricPool 정책을 가질 수 있다.

두 개의 FlexVol 볼륨이 각각 두 개의 애그리게이트에 생성되고 해당 애그리게이트가 두 개의 다른 컨트롤러에 의해 소유된 경우, 시스템 관리자는 NAS 프로토콜을 통해 이 볼륨들의 공간을 사용해야 할 수 있다. 그러면 각 볼륨에 하나씩 두 개의 파일 공유를 생성하게 된다. 이 경우 관리자는 가장 가능성 높게 서로 다른 IP 주소를 생성할 것이며, 각각은 전용 파일 공유에 액세스하는 데 사용된다. 각 볼륨은 단일 쓰기 친화성(write affinity)을 가지며 두 개의 공간 버킷이 존재하게 된다. 비록 두 볼륨이 단일 컨트롤러, 예를 들어 단일 애그리게이트에 상주하고(따라서 두 번째 애그리게이트가 존재하더라도 이 경우에는 사용되지 않음) 두 볼륨 모두 단일 IP 주소를 통해 액세스되더라도, 여전히 각 볼륨에 하나씩 두 개의 쓰기 친화성이 존재하며 항상 두 개의 별도 공간 버킷이 존재한다. 따라서 볼륨이 많을수록 더 많은 쓰기 친화성(더 나은 병렬 처리 및 그에 따른 더 나은 CPU 활용)을 갖게 되지만, 여러 개의 볼륨(그리고 그에 따른 여러 공간 버킷, 즉 여러 파일 공유)을 관리해야 한다.

Plexes

[편집]
플렉스(plexes)를 사용한 싱크미러 복제

표준 RAID 레벨과 유사하게, ONTAP 시스템의 플렉스는 미러링된 데이터를 두 곳에 보관할 수 있다. 전통적인 RAID-1은 단일 스토리지 시스템의 경계 내에 존재해야 하지만, 두 개의 플렉스는 두 개의 스토리지 시스템 사이에 분산될 수 있다. 각 애그리게이트는 하나 또는 두 개의 플렉스로 구성된다. 전통적인 HA 스토리지 시스템은 각 애그리게이트에 대해 하나의 플렉스만 가지지만, 싱크미러(SyncMirror) 로컬 또는 메트로클러스터(MetroCluster) 구성은 각 애그리게이트에 대해 두 개의 플렉스를 가질 수 있다. 반면, 각 플렉스는 RAID 0과 유사하게 단일 플렉스 내에서 하나 이상의 넷앱 RAID 그룹 또는 타사 스토리지 시스템( FlexArray 참조)의 LUN으로부터 기반 스토리지 공간을 포함한다. 애그리게이트가 두 개의 플렉스로 구성된 경우, 하나의 플렉스는 마스터로, 두 번째 플렉스는 슬레이브로 간주된다. 슬레이브는 마스터와 정확히 동일한 RAID 구성 및 드라이브로 구성되어야 한다. 예를 들어, 마스터 플렉스가 RAID-TEC 구성의 21개 데이터 및 3개의 1.8TB SAS 패리티 드라이브로 구성된 2개의 플렉스 애그리게이트가 있는 경우, 슬레이브 플렉스도 동일하게 21개 데이터 및 3개의 1.8TB SAS 패리티 드라이브를 RAID-TEC으로 구성해야 한다. 두 번째 예로, 마스터 플렉스가 RAID-TEC으로 구성된 17개의 데이터와 3개의 패리티 SAS 1.8TB 드라이브의 RAID 1개와 2개의 데이터와 2개의 패리티 SSD 960GB인 RAID-DP로 구성된 두 번째 RAID로 이루어진 2개의 플렉스 애그리게이트가 있는 경우, 두 번째 플렉스도 동일한 구성을 가져야 한다. 즉, 슬레이브 플렉스의 첫 번째 RAID는 RAID-TEC 구성의 17개 데이터와 3개 패리티 SAS 1.8TB 드라이브여야 하며, 두 번째 RAID는 2개 데이터와 2개 패리티 SSD 960GB인 RAID-DP여야 한다. 메트로클러스터 구성은 동기식 데이터 복제를 위해 싱크미러(SyncMirror) 기술을 사용한다. 메트로클러스터와 로컬 싱크미러 두 가지 싱크미러 옵션이 있으며, 둘 다 두 플렉스 간의 동기식 데이터 복제를 위해 동일한 플렉스 기법을 사용한다. 로컬 싱크미러는 단일 컨트롤러에 두 플렉스를 모두 생성하며, 스토리지 시스템의 전체 디스크 셸프 장애를 방지하기 위한 추가 보안 목적으로 자주 사용된다. 메트로클러스터는 두 스토리지 시스템 간의 데이터 복제를 허용한다. 각 스토리지 시스템은 단일 컨트롤러로 구성되거나 두 개의 컨트롤러를 가진 HA 쌍으로 구성될 수 있다. 단일 HA 쌍에서는 두 컨트롤러가 별도의 섀시에 있고 거리가 수십 미터 떨어져 있을 수 있으며, 메트로클러스터 구성에서는 거리가 최대 300km까지 가능할 수 있다.

비휘발성 메모리

[편집]
메트로클러스터 및 HA에서의 비휘발성 메모리 캐시 미러링

많은 경쟁사와 마찬가지로, 넷앱 ONTAP 시스템은 호스트로부터 데이터를 수용하고 캐싱하며, 무엇보다도 쓰기 전 데이터 최적화를 위한 훨씬 더 빠른 스토리지 매체로 메모리를 활용하여 스토리지 시스템의 성능을 크게 향상시킨다. 경쟁사가 쓰기 캐싱 및 데이터 최적화 모두를 위해 재부팅과 같은 예기치 않은 상황에서 데이터를 보존하고자 비휘발성 랜덤 액세스 메모리 (NVRAM)를 널리 사용하는 반면, 넷앱 ONTAP 시스템은 데이터 최적화에는 일반 랜덤 액세스 메모리 (RAM)를 사용하고, 관계형 데이터베이스의 트랜잭션 로깅과 유사하게 호스트에서 들어온 초기 데이터 상태를 변경되지 않은 상태로 기록하기 위해 전용 NVRAM 또는 NVDIMM을 사용한다. 따라서 장애 발생 시, 재부팅 후 RAM은 자동으로 지워지지만 로그 형태로 비휘발성 메모리에 저장된 데이터인 NVLOG는 재부팅 후에도 생존하며 일관성 복구에 사용된다. ONTAP 시스템의 모든 변경 및 최적화는 RAM에서만 수행되므로 ONTAP 시스템의 비휘발성 메모리 크기를 줄이는 데 도움이 된다. 최적화 후 호스트로부터의 데이터는 테트리스와 유사한 방식으로 구조화되어, 데이터가 저장될 애그리게이트의 RAID 그룹 디스크에 기록되기 위해 몇 가지 단계(즉, WAFL 및 RAID)를 거쳐 최적화되고 준비된다. 최적화 후 데이터는 일관성 포인트(CP) 트랜잭션의 일부로 디스크에 순차적으로 기록된다. 애그리게이트에 기록된 데이터는 필요한 WAFL 메타데이터와 RAID 패리티를 포함하므로, 전통적인 RAID-6 및 RAID-4 그룹과 같이 데이터 디스크에서 추가로 읽고, 패리티 디스크에 계산 및 기록하는 작업이 발생하지 않는다. CP는 먼저 데이터가 기록될 애그리게이트에 시스템 스냅샷을 생성한 다음, RAM에서 최적화 및 준비된 데이터를 단일 트랜잭션으로 애그리게이트에 순차적으로 기록한다. 만약 실패할 경우, 갑작스러운 재부팅 시 전체 트랜잭션이 실패하여 WAFL 파일 시스템이 항상 일관성을 유지하도록 한다. 성공적인 CP 트랜잭션의 경우 새로운 활성 파일 시스템 포인트가 전파되고 해당 NVLOG가 지워진다. 모든 데이터는 항상 새로운 장소에 기록되며 재작성은 발생할 수 없다. 호스트에 의해 삭제된 데이터 블록은 나중에 다음 CP 주기에서 사용될 수 있도록 빈 상태로 표시되며, 시스템은 WAFL의 항상 새로운 데이터를 새로운 장소에 기록하는 정책으로 인해 공간이 부족해지지 않는다. HA 스토리지 시스템의 NVLOG만이 HA 스토리지 시스템 장애 조치 기능을 위해 두 컨트롤러 간에 동기적으로 복제되며, 이는 전반적인 시스템 메모리 보호 오버헤드를 줄이는 데 도움이 된다. 2개의 컨트롤러를 가진 HA 구성의 스토리지 시스템이나 각 사이트에 1개의 컨트롤러가 있는 메트로클러스터에서, 2개의 컨트롤러 각각은 자신의 비휘발성 메모리를 로컬과 파트너의 두 부분으로 나눈다. 4개의 노드가 있는 메트로클러스터 구성에서 각 비휘발성 메모리는 로컬, 로컬 파트너의 것, 그리고 원격 파트너의 것으로 나뉜다.[6]

All-Flash FAS A800 시스템부터 넷앱은 NVRAM PCI 모듈을 메모리 버스에 연결된 NVDIMM으로 교체하여 성능을 향상시켰다.

같이 보기

[편집]

내용주

[편집]

외부 링크

[편집]