BtrFS 스냅샷이 내 SSD를 파괴하나요?

BtrFS 스냅샷이 내 SSD를 파괴하나요?

내가 아는 한 BtrFS 스냅샷은 실제로 데이터를 복사하지 않습니다. 스냅샷 데이터가 변경될 때마다 실제 복사가 수행될 것이라고 생각합니다.

그렇다면 스냅샷 지원 SSD의 BtrFS 파티션은 SSD 메모리의 마모를 두 배로 늘리나요? 첫 번째 쓰기는 새 데이터에 대한 것이고 두 번째 쓰기는 차이점을 스냅샷에 기록하기 위한 것입니다.

저는 꽤 오랫동안 스냅샷과 함께 BtrFS를 파티션 파일 시스템으로 사용해 왔으며 /몇 번이나 정말 도움이 되었습니다. 하지만 이제 SSD에 시스템을 설치하고 싶습니다.

답변1

긴 이야기 짧게

아니요, 스냅샷 없이 BTRFS를 사용하는 것보다 SSD의 수명이 더 이상 단축되지 않습니다.

설명하다

소프트웨어에서 스냅샷을 구현하는 방법에는 여러 가지가 있습니다.

  1. 스냅샷을 생성하는 모든 데이터의 정확한 복사본을 저장합니다. 이는 공간이나 시간 측면에서 매우 효율적이지는 않지만 데이터의 실제 기록 복사본을 저장하기 위한 유일한 옵션이며 구현이 매우 간단합니다. 효율성 문제로 인해 스냅샷에 널리 사용되지는 않지만 기본적으로 볼륨의 전체 백업이 수행하는 작업입니다.

  2. 데이터의 현재 상태와 기록 상태 간의 차이에 대한 복사본을 저장합니다. 이 방법은 요청 시 시스템이 요청된 데이터의 상태를 계산해야 하기 때문에 데이터를 읽을 때 성능 문제가 있습니다. 이는 다음 두 가지 방법 중 하나로 계층화될 수 있습니다.

    ㅏ. 각 스냅샷은 데이터의 현재 상태와 스냅샷을 생성했을 때의 데이터 상태 간의 차이를 저장합니다. 이는 공간 효율적이지만 시간은 비효율적입니다(변경 내용을 기록하는 시간이 스냅샷 수에 따라 선형적으로 증가하므로). 스냅샷의 읽기 성능은 나쁘지만, 현재 데이터의 읽기 성능은 나쁘지 않습니다. 이 방법은 구현이 다소 까다롭고 쓰기 성능도 좋지 않아 널리 사용되지는 않으므로 그냥 전체 복사본을 저장하는 것이 좋습니다.

    b. 생성된 첫 번째 스냅샷은 해당 시점의 데이터 상태를 보관합니다. 후속 스냅샷은 해당 복사본 이후의 차이점만 저장하며 현재 상태는 사용자가 업데이트함에 따라 변경됩니다. 이는 데이터를 추가하거나 제거하지 않고 기존 데이터만 수정하는 경우에만 공간 효율적이지만 2a보다 시간 효율적입니다. 대부분의 스냅샷과 현재 데이터에 대한 읽기 성능은 좋지 않지만 첫 번째 스냅샷에 대한 읽기 성능은 좋습니다. 이것이 증분 백업이 작동하는 방식입니다. 버전 제어 소프트웨어가 수행하는 작업은 각 차이점이 이전 버전에 해당한다는 것입니다. 그러나 다음 옵션이 모든 면에서 거의 더 우수하기 때문에 스냅샷에는 널리 사용되지 않습니다.

  3. 스냅샷은 COW(기록 중 복사) 의미를 사용하여 구현됩니다. 이는 가장 공간 효율적인 옵션이며 평균적으로 방법 2의 두 변형보다 시간 효율적입니다. COW 스냅샷을 사용하면 특정 데이터가 한 번 저장되고 해당 데이터가 포함된 모든 스냅샷이 이를 참조합니다. 이렇게 하면 옵션 1과 2의 대부분의 문제가 해결됩니다. COW 스냅샷을 처리하는 다른 두 가지 방법이 있습니다.

    ㅏ. 현재 버전의 데이터 일부가 변경되면 이전 데이터가 스냅샷에 복사된 후 새 데이터가 업데이트됩니다. 이로 인해 스냅샷을 만든 후 위치에 처음 쓸 때 성능 문제가 발생하지만 후속 쓰기는 제대로 작동하고 그 외에는 성능이 합리적입니다. 아직 COW 의미 체계를 사용하지 않는 기존 데이터 세트에 추가하기 쉽기 때문에 LVM이 스냅샷을 구현하는 방법입니다.

    b. 현재 버전에서 지정된 데이터가 변경되면 현재 버전에서 해당 위치의 새 복사본을 만들고 거기에 변경된 데이터를 저장합니다. 이렇게 하면 옵션 3a의 첫 번째 쓰기 성능 문제를 피할 수 있지만 스냅샷을 삭제할 때 성능 저하가 발생합니다(삭제 가능 여부를 결정하려면 모든 데이터 비트의 참조를 확인해야 하기 때문입니다). 이것이 ZFS와 BTRFS가 스냅샷을 구현하는 방법입니다(BTRFS는 일부 매우 특정한 경우에 방법 3a를 사용하지만).

BTRFS는 방법 3b를 사용하기 때문에 스냅샷을 사용하여 발생하는 유일한 추가 오버헤드는 메타데이터를 처리할 때입니다. 이는 BTRFS에 의해 작성된 실제 데이터의 매우 작은 부분에 불과합니다(메타데이터 업데이트는 어쨌든 발생합니다. 스냅샷이 필요합니다.)

관련 정보