파일 시스템 및 스냅샷 공간 크기 불일치를 처리하는 방법

坏嘻嘻
풀어 주다: 2018-09-29 15:38:42
원래의
2295명이 탐색했습니다.

이 글에서는 일관되지 않은 파일 시스템 크기와 스냅샷 공간을 처리하는 방법을 소개하고 구체적인 단계에 중점을 두고 있습니다. 이 글의 내용은 간결하며 모두가 뭔가를 얻을 수 있기를 바랍니다.

파일 시스템과 스냅샷 공간 크기가 일치하지 않는 이유는 무엇입니까?

한 사용자가 ECS 인스턴스에서 파일을 삭제한 후 스냅샷을 촬영한 후에도 스냅샷 용량이 줄어들지 않는다고 문의해 주셨습니다. 이러한 현상이 나타나는 이유는 스냅샷 원리와 파일 시스템, 디스크, 스냅샷의 관계와 관련이 있습니다. 즉, 데이터 저장 블록(Block)이 기록되어 있는 한 해당 데이터 블록은 계속 삭제됩니다. 디스크에 있는 관련 파일이 삭제된 경우에도 스냅샷에 기록되므로 디스크보다 많은 공간을 차지합니다. 소위 파일 시스템에서의 삭제는 삭제해야 하는 파일의 헤더만 표시하여 이 공간을 사용할 수 있음을 사용자에게 알릴 뿐, 디스크 자체가 차지하는 공간을 줄이지는 않습니다.

파일 시스템과 스냅샷 공간 크기가 일치하지 않는 이유는 무엇입니까?

인스턴스 내부에서 사용자에게 보이는 것은 디스크(EBS)이고, 디스크 파티션에 생성되는 것은 파일 시스템(File System)입니다. 파일 시스템은 디스크 공간 관리를 담당하며 해당 작업은 궁극적으로 디스크 I/O 요청으로 변환됩니다. EBS는 블록의 상태(블록 스토리지별로 동일한 크기의 블록으로 분할되는 디스크의 논리적 블록 주소 참조)를 기록하고, 요청 시 더티 데이터를 OSS에 복사하는 과정입니다.

다음 이유 때문에 파일 시스템 공간이 스냅샷 크기와 일치하지 않을 수 있습니다.

파일 시스템 자체의 메타데이터가 디스크 공간을 차지합니다.

파일 시스템을 생성하는 과정에서 많은 블록이 작성됩니다. 특히, Windows의 느린 포맷은 많은 수의 더티 블록을 작성하는 반면, 빠른 포맷을 사용하면 작성된 블록의 수를 줄일 수 있습니다.

오버헤드를 줄이기 위해 파일 시스템은 파일을 삭제할 때 내부적으로만 표시합니다. 그러나 EBS는 이 삭제 명령을 인식하지 못하므로 이 부분은 여전히 ​​스냅샷에 포함되어 스냅샷이 발생합니다. 파일 시스템보다 작습니다.

Virtio-block과 Xen의 Block-front 및 기타 모듈은 TRIM 명령어(LBA의 특정 데이터가 더 이상 사용되지 않고 삭제될 수 있음을 나타내는 IO 명령어)를 지원하지 않으므로 디스크가 이를 감지할 수 없습니다. 데이터가 삭제될 수 있습니다.

스냅샷 생성 원리

스냅샷 생성 원리는 아래 그림과 같습니다.

설명:

디스크 LBA(논리 블록 주소)를 블록으로 나눕니다. 할당되지 않은 블록은 빈 블록이라고 하며 그림에서 작은 흰색 상자로 표시됩니다.

블록이 기록된 한(할당되었으며 더 이상 빈 블록이 아님) 측정에 참여합니다.

디스크의 첫 번째 스냅샷은 전체 크기이며, 빈 블록은 복사되지 않습니다.

디스크의 후속 스냅샷은 이전 스냅샷 이후 증분 더티 데이터를 복사하는 증분 스냅샷이므로 동일한 블록이 서로 다른 스냅샷에 여러 버전을 가질 수 있습니다(그림에서 서로 다른 색상으로 표시됨).

파일 시스템 및 스냅샷 공간 크기 불일치를 처리하는 방법

스냅샷 측정 방법

위 그림과 같이 스냅샷 기록 공간에는 디스크 T2의 9개 블록보다 2개 더 많은 총 11개의 블록이 있습니다.

단일 디스크의 모든 스냅샷을 전체적으로 측정합니다.

할당된 블록만 측정됩니다. 서로 다른 시점의 동일한 버전의 Block은 한 번만 계산됩니다.

다양한 버전의 블록은 N배의 공간을 차지합니다.

스냅샷 삭제 원리

스냅샷 삭제 원리는 아래 그림과 같습니다.

지침:

삭제된 스냅샷의 모든 블록을 오프라인으로 분석하고 다른 스냅샷에서 참조하지 않는 블록의 데이터를 삭제합니다.

S1을 삭제한 후 남은 스냅샷에는 8개 블록(S0에서 6개, S2에서 2개) 대신 총 10개의 블록(S0에서 6개, S1에서 생성된 더티 데이터 2개, S2에서 2개 포함)이 있습니다. 2. .

파일 시스템 및 스냅샷 공간 크기 불일치를 처리하는 방법

"데이터 쓰기 작업"의 정확한 정의

먼저, 기본 분산 스토리지 시스템에 대해 "데이터 쓰기 작업"은 사용자가 작성한 비즈니스 데이터만 의미하는 것은 아닙니다. , 디스크 포맷과 같은 일련의 I/O 작업도 포함됩니다.

사용자가 디스크를 받은 후 포맷해야 정상적으로 사용할 수 있습니다. 포맷의 핵심은 파일 시스템을 구축하는 과정입니다. 파티션이나 디스크를 파일 시스템으로 사용하려면 먼저 초기화하고 데이터 구조를 디스크에 기록해야 합니다. 이 프로세스를 파일 시스템 구축이라고 합니다.

따라서 디스크에 파일 시스템을 구축한다는 것은 디스크에 데이터를 쓰는 것을 의미합니다. 파일 시스템마다 포맷 시 파일 크기가 다릅니다.

Windows 시스템 포맷은 빠른 포맷과 일반 포맷으로 구분됩니다.

빠른 포맷은 파티션에 파일 시스템을 할당하고 디렉터리 테이블을 다시 작성합니다.

일반 포맷은 위 작업을 수행할 뿐만 아니라 파티션 섹터를 섹터별로 검색하여 불량 섹터를 식별하고 표시합니다. 디스크의 빈 블록을 채웁니다. 이는 전체 디스크를 쓰는 것과 같습니다. 이 경우 첫 번째 전체 스냅샷의 크기는 대략 디스크 용량이 됩니다. 빠른 포맷이 차지하는 실제 공간은 상대적으로 작습니다.

Linux 시스템 포맷은 파일 시스템을 구축하는 과정이기도 합니다. 따라서 디스크가 방금 포맷되었고 사용자가 비즈니스 데이터를 쓰지 않은 경우 첫 번째 스냅샷도 다양한 파일 시스템 형식에 따라 특정 용량을 갖게 됩니다.

위 내용은 파일 시스템 및 스냅샷 공간 크기 불일치를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿