Oracle® Solaris 11.2의 ZFS 파일 시스템 관리

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

ZFS 디스크 공간 계산

ZFS는 풀링된 저장소라는 개념을 기반으로 합니다. 물리적 저장소에 매핑되는 일반 파일 시스템과 달리, 풀의 모든 ZFS 파일 시스템은 풀에서 사용 가능한 저장소를 공유합니다. 따라서 특정 파일 시스템이 비활성 상태인 경우에도 풀의 다른 파일 시스템이 디스크 공간을 사용하거나 해제함에 따라 유틸리티(예: df)가 보고하는 사용 가능한 디스크 공간이 바뀔 수 있습니다.

쿼터를 사용하여 최대 파일 시스템 크기를 제한할 수 있습니다. 쿼터에 대한 자세한 내용은 ZFS 파일 시스템에 대한 쿼터 설정을 참조하십시오. 예약을 사용하여 파일 시스템이 지정된 디스크 공간을 사용하도록 보장할 수 있습니다. 예약에 대한 자세한 내용은 ZFS 파일 시스템에 대한 예약 설정을 참조하십시오. 이 모델은 여러 디렉토리가 동일한 파일 시스템(예: /home)에서 마운트되는 NFS 모델과 매우 유사합니다.

ZFS에서는 모든 메타 데이터가 동적으로 할당되는 반면, 대부분의 다른 파일 시스템에서는 많은 양의 메타 데이터가 미리 할당되므로 파일 시스템을 만들 때 이 메타 데이터에 대한 공간이 바로 계산되어야 합니다. 즉, 파일 시스템에서 지원하는 총 파일 수가 미리 정해집니다. 하지만 ZFS는 필요에 따라 메타 데이터를 할당하므로 초기 공간 계산이 필요하지 않고 파일 수도 사용 가능한 디스크 공간으로만 제한됩니다. ZFS의 경우 df -g 명령 출력 결과를 다른 파일 시스템과 다르게 해석해야 합니다. 보고되는 total files는 풀에서 사용 가능한 저장소의 양을 기반으로 한 예측일 뿐입니다.

ZFS는 트랜잭션 파일 시스템입니다. 대부분의 파일 시스템 수정 사항은 트랜잭션 그룹으로 번들되고 비동기적으로 디스크에 커밋됩니다. 디스크에 커밋되기 전까지의 수정 사항을 보류 중인 변경 사항이라고 합니다. 사용된 디스크 공간, 사용 가능한 디스크 공간 및 파일 또는 파일 시스템에서 참조하는 디스크 공간은 보류 중인 변경 사항으로 간주되지 않습니다. 일반적으로 변경 사항은 몇 초 동안 보류됩니다. fsync(3c) 또는 O_SYNC를 사용하여 디스크에 변경 사항을 커밋해도 디스크 공간 사용량 정보가 바로 업데이트되지는 않습니다.

UFS 파일 시스템에서 du 명령은 파일 내 데이터 블록의 크기를 보고합니다. ZFS 파일 시스템에서 du는 디스크에 저장된 파일의 실제 크기를 보고합니다. 이 크기에는 메타 데이터와 압축이 포함됩니다. 실제로 이 보고 기능은 "이 파일을 제거할 경우 확보되는 추가 공간의 크기"를 확인하는 데 도움이 됩니다. 따라서 압축이 해제된 경우에도 ZFS와 UFS에서 다른 결과가 나타납니다.

df 명령에서 보고된 공간 사용을 zfs list 명령과 비교할 경우 df는 파일 시스템 크기만이 아니라 풀 크기를 보고한다는 것에 주의합니다. 또한 df는 종속 파일 시스템 또는 스냅샷 존재 여부를 인식하지 못합니다. 압축, 할당량 등의 ZFS 등록 정보가 파일 시스템에 설정된 경우 df에서 보고된 공간 사용을 조정하기 어려울 수 있습니다.

보고된 공간 사용에도 영향을 줄 수 있는 다음 시나리오를 고려해 보십시오.

  • recordsize보다 큰 파일의 경우 파일의 마지막 블록은 일반적으로 약 1/2 정도 차 있습니다. 기본 recordsize가 128KB로 설정된 경우 파일당 약 64KB가 낭비되어 큰 영향을 줄 수 있습니다. RFE 6812608을 통합하면 이 시나리오가 해결됩니다. 압축을 사용으로 설정하면 이 문제를 해결할 수 있습니다. 데이터가 이미 압축된 경우에도 마지막 블록에서 사용되지 않은 부분은 채우기가 0이며 효과적으로 압축됩니다.

  • RAIDZ-2 풀에서 각 블록은 2개 섹터(512바이트 청크) 이상의 패리티 정보를 사용합니다. 패리티 정보에 사용되는 공간은 보고되지 않지만 각각 다르고 작은 블록의 경우 비율이 훨씬 더 클 수 있으므로 공간 보고에 영향을 줄 수 있습니다. recordsize가 512바이트로 설정된 경우 이 영향이 극대화되며, 각 512바이트 논리 블록이 1.5KB(공간의 3배)를 사용합니다. 저장 중인 데이터에 관계없이 공간 효율성이 주요 관심사인 경우 recordsize를 기본값(128KB)으로 그대로 두고 압축을 사용으로 설정해야 합니다(기본값 lzjb).

  • df 명령은 중복 제거된 파일 데이터를 인식하지 못합니다.

공간 부족 동작

파일 시스템 스냅샷은 ZFS에서 저렴한 비용으로 간편하게 만들 수 있습니다. 스냅샷은 대부분의 ZFS 환경에 공통됩니다. ZFS 스냅샷에 대한 자세한 내용은 Chapter 6, Oracle Solaris ZFS 스냅샷 및 복제 작업을 참조하십시오.

스냅샷이 있으면 디스크 공간을 확보하려고 시도할 때 예상치 않은 동작이 발생할 수 있습니다. 일반적으로 적합한 권한이 부여된 경우 전체 파일 시스템에서 파일을 제거할 수 있으며 이 작업으로 인해 파일 시스템에서 사용 가능한 디스크 공간이 늘어납니다. 하지만 제거할 파일이 파일 시스템의 스냅샷에 존재할 경우 파일 삭제 작업으로도 디스크 공간이 확보되지 않습니다. 파일에 사용되는 블록이 스냅샷에서 계속 참조됩니다.

따라서 이름 공간의 새 상태가 반영되도록 디렉토리의 새 버전을 만들어야 하므로 파일 삭제 작업으로 인해 더 많은 디스크 공간이 사용될 수 있습니다. 즉, 파일을 제거하려고 시도할 때 예상치 않은 ENOSPC 또는 EDQUOT 오류가 발생할 수 있습니다.