16.5.1 ZFS를 사용하여 파일 시스템 복제
zfs send
및 zfs recv
스트림을 사용하여 데이터를 교환하기 위해 이들을 사용하여 zfs send
, ssh
및 zfs recv
를 결합하여 한 시스템에서 다른 시스템에 정보를 복제 할 수 있습니다.
예를 들어, scratchpool
파일 시스템의 스냅 샷을 새 서버의 slavepool
라는 새로운 파일 시스템에 복사하려면 다음 명령을 사용합니다. 이 순서는 scratchpool
스냅 샷 슬레이브 시스템에 전송 (ssh 및 로그인 자격 증명을 사용) 및 zfs recv를 사용하여 슬레이브에서 스냅 샷 복구를 결합합니다.
root-shell> zfs send scratchpool@snap1 |sshid
@host
pfexec zfs recv -F slavepool
파이프 라인의 첫 번째 부분 zfs send scratchpool@snap1
스냅 샷을 스트림합니다. ssh
명령과 다른 서버에서 그것을 실행하는 명령 pfexec zfs recv -F slavepool
스트림 된 스냅 샷 데이터를 받아 slavepool에 씁니다. 이 예제에서 -F
옵션을 지정했습니다 (스냅 샷 데이터가 강제로 적용되기 때문에 파괴). 복제 된 파일 시스템의 첫 번째 버전을 작성하고 있기 때문에, 이것으로 문제 없습니다.
슬레이브 시스템에서 복제 된 파일 시스템에 동일한 내용이 포함되어 있습니다.
root-shell> ls -al /slavepool/ total 23 drwxr-xr-x 6 root root 7 Nov 8 09:13 ./ drwxr-xr-x 29 root root 34 Nov 9 07:06 ../ drwxr-xr-x 31 root bin 50 Jul 21 07:32 DTT/ drwxr-xr-x 4 root bin 5 Jul 21 07:32 SUNWmlib/ drwxr-xr-x 14 root sys 16 Nov 5 09:56 SUNWspro/ drwxrwxrwx 19 1000 1000 40 Nov 6 19:16 emacs-22.1/
스냅 샷이 생성 된 후 파일 시스템을 다시 동기화하려면 새로운 스냅 샷을 생성 한 다음 zfs send
증분 스냅 샷 기능을 사용하여 2 개의 스냅 샷 간의 변경을 슬레이브 머신에 다시 보냅니다.
root-shell> zfs send -i scratchpool@snapshot1 scratchpool@snapshot2 |sshid
@host
pfexec zfs recv slavepool
이 작업은 슬레이브 컴퓨터의 파일 시스템이 전혀 변경되지 않은 경우에만 성공합니다. 변경된 대상 파일 시스템에는 증분 변경 내용을 적용 할 수 없습니다. 위의 예에서는 ls
명령이 파일 또는 디렉터리의 마지막 액세스 시간 등의 메타 데이터를 변경하여 문제를 일으 킵니다.
슬레이브 파일 시스템의 변경을 방지하기 위해 슬레이브의 파일 시스템을 읽기 전용으로 설정합니다.
root-shell> zfs set readonly=on slavepool
readonly
를 설정하는 것은 정상적인 방법으로는 슬레이브의 파일 시스템을 변경할 수 없음을 의미합니다 (파일 시스템 메타 데이터를 포함한다). 일반적으로 메타 데이터를 업데이트하는 작업 ( ls
처럼) 파일 시스템 상태 업데이트를 시도하지 않고 자동으로 그 함수를 실행합니다.
슬레이브 파일 시스템의 본질은 원래 파일 시스템의 정적 복사에 지나지 않습니다. 그러나 읽기 전용으로 구성되어있는 경우에도 파일 시스템은 그것에 적용되는 스냅 샷을 가질 수 있습니다. 읽기 전용으로 설정되어있는 파일 시스템에서 초기 복사본을 다시 실행합니다.
root-shell> zfs send scratchpool@snap1 |sshid
@host
pfexec zfs recv -F slavepool
이제 원래의 파일 시스템을 변경하고, 그들을 노예로 복제 할 수 있습니다.