저장 장치에서 ZFS를 사용하기로 결정했다면 축하합니다! 당신은 지구상에서 가장 복잡하고 기능이 풍부한 파일 시스템 중 하나를 사용하고 있습니다. 그리고 가족 사진 및 비디오와 같은 장기 데이터를 저장하기로 결정했다면 ZFS를 진지하게 고려하십시오. 4개의 미러링된 하드 드라이브와 같은 중복 설정에서는 비트 부패 또는 시간 경과에 따른 다른 형태의 스토리지 저하, 컴퓨터 오류 등으로 인해 데이터 1비트가 손실되지 않도록 절대적으로 보장합니다. ZFS는 데이터를 자동으로 자가 치유 및 복구할 수 있습니다. 복잡한 알고리즘, 해시 및 Merkle 트리는 데이터 무결성을 보장합니다.
그러나 이 자습서에서는 ZFS가 장기 데이터 보관에 가장 좋은 선택인 이유는 다루지 않습니다. 대신 스냅샷과 클론이 무엇을 할 수 있는지 논의 중입니다.
ZFS 스냅샷 및 클론이란 무엇입니까?
스냅샷은 특정 시점의 데이터 상태에 대한 정확한 그림입니다. 예를 들어 복잡한 웹사이트에서 작업하고 있다고 가정해 보겠습니다. ZFS 데이터 세트에 모든 코드, 데이터베이스 및 이미지를 저장합니다. 웹사이트 디자인을 변경하고, 일부 이미지를 수정하고, 일부 레이아웃 치수를 변경하고, 일부 코드를 수정하여 이 모든 것을 적합하게 만듭니다. 이전 디자인으로 되돌리려면 모든 변경 사항을 개별적으로 되돌려야 합니다. ZFS를 사용하면 현재 디자인의 스냅샷을 만들고 원하는 모든 변경을 수행할 수 있으며 새 디자인이 마음에 들지 않으면 이전 스냅샷으로 롤백할 수 있습니다. 그리고 그렇습니다. Git, GitHub 및 심지어 스냅샷을 찍고 롤백하는 기능을 포함하는 일부 코드 편집기가 있는 것도 사실입니다. 그러나 ZFS에는 다음 기능도 포함됩니다.
- 스냅샷은 전역적입니다. 프로젝트에 포함된 모든 데이터의 스냅샷을 생성합니다.
- 스냅샷과 롤백은 프로젝트의 규모에 상관없이(수백 기가바이트가 있더라도) 거의 즉각적입니다.
스냅샷 수에는 제한이 없습니다. "디자인 1", "디자인 2" 및 "디자인 3"이 있고 이들 사이를 자유롭게 전환하고 변경하고 새 스냅샷을 만들 수 있습니다. "디자인 2 – 개선됨"
클론
스냅샷은 기본적으로 되돌릴 수 있는 고정된 데이터 상태인 반면, 클론은 공통 지점에서 시작하는 분기와 같습니다. 더 잘 이해하려면 다음 시나리오를 상상해 보십시오. 광고 캠페인을 위한 비디오를 만듭니다. 그런 다음 이 비디오(실제로는 비디오를 저장하는 ZFS 데이터 세트)의 스냅샷을 찍습니다. 이제 이 스냅샷을 세 번 복제합니다. "클론 1"을 한 직원에게, "클론 2"를 다른 직원에게, "클론 3"을 세 번째 직원에게 줍니다. 이제 각자의 공간에서 작업하고 원하는 대로 변경할 수 있습니다.
이것이 왜 유용한가요? 비디오는 엄청난 양의 디스크 공간을 차지할 수 있습니다. 고해상도 원시 필름에는 수백 또는 수천 GB의 저장 공간이 필요할 수 있습니다. 기본 비디오에 500GB의 저장 공간이 필요하고 3명이 복제하고 다양한 변경 작업을 수행해야 하는 경우 1500GB 이상의 저장 공간이 필요합니다.
ZFS를 사용하면 스냅샷과 3개(또는 그 이상)의 클론에 501GB 이하의 스토리지가 필요합니다. 변경되지 않는 데이터 블록(모든 클론에 공통됨)은 한 번만 저장됩니다. 이렇게 하면 각 편집자가 추가하는 차이점만 추가 데이터로 저장됩니다. 실제 시나리오에서는 세 개의 클론 모두에 대해 650GB와 같은 데이터가 필요할 수 있습니다. 스토리지와 리소스를 효율적으로 사용하고 각 편집자가 마음껏 작업할 수 있도록 데이터를 적절하게 격리합니다.
물론 디스크 공간 요구 사항이 문제가 되지 않더라도 동일한 콘텐츠를 여러 방향으로 분기해야 하는 다른 많은 시나리오에 유용합니다.
ZFS 스냅샷 작업에 사용되는 명령
다른 Linux 배포판에서 이 파일 시스템/볼륨 관리자를 사용할 수 있지만 Ubuntu는 ZFS에 대해 현재까지 최고의 지원을 제공합니다.
모든 사용자에게 ZFS를 제공할 수 있는 전체 디스크가 있는 것은 아니므로 sudo zpool create pool_name /dev/sda3
와 같은 명령을 사용하여 빈 파티션에 풀을 생성할 수도 있다는 것을 아는 것이 유용할 수 있습니다. , 여기서 /dev/sda3
첫 번째 디스크에 있는 세 번째 파티션의 장치 이름입니다.
적절한 패키지를 설치하고 첫 번째 ZFS 데이터 세트를 만든 후 스냅샷을 만드는 방법입니다.
먼저 스냅샷을 생성하려는 ZFS 데이터 세트의 이름을 찾으십시오.
zfs list
이 예에서 데이터세트의 이름은 data
입니다. 스냅샷의 이름은 snap1
이 됩니다. . 다음 명령에서 이 값을 귀하의 경우에 적용되는 값으로 바꾸십시오. 스냅샷을 생성하려면 다음을 입력하십시오:
sudo zfs snapshot data@snap1
귀하의 경우 데이터 세트의 이름이 videos
인 경우 , 그리고 스냅샷을 first
, 명령은 다음과 같습니다.
sudo zfs snapshot videos@first
변경 사항을 롤백하고 스냅샷을 찍을 때의 정확한 내용으로 데이터세트를 복원하려면 다음을 사용하세요.
sudo zfs rollback data@snap1
더 이상 스냅샷이 필요하지 않으면 다음을 사용하여 삭제하세요.
sudo zfs destroy data@snap1
ZFS 복제 작업에 사용되는 명령
"data@snap1"이라는 스냅샷이 있다고 가정하고 다음을 사용하여 복제합니다.
sudo zfs clone data@snap1 data/clone1
클론을 삭제하려면:
sudo zfs destroy data/clone3
또한 클론을 스냅샷할 수도 있습니다.
sudo zfs snapshot data/clone2@snap_of_clone
나중에 생성한 모든 스냅샷과 클론을 기억하려면 다음을 사용하십시오.
zfs list -t all
결론
여기서는 ZFS 스냅샷 및 복제로 수행할 수 있는 모든 기본 작업을 다룹니다. 각 데이터 세트에는 ".zfs"라는 숨겨진 디렉토리가 있다는 것을 아는 것이 유용할 수 있습니다. ls /data/.zfs/snapshot/snap1/
과 같은 명령 사용 , 스냅샷에서 파일의 상태를 볼 수 있습니다. 일반(읽기 전용) 디렉토리처럼 작동하기 때문에 전체 스냅샷을 되돌릴 필요가 없는 경우 스냅샷에서 개별 파일을 복사할 수도 있습니다.