기존 디렉토리에서 zfs를 만드는 올바른 방법은 무엇입니까?

기존 디렉토리에서 zfs를 만드는 올바른 방법은 무엇입니까?

etc/가 포함된 rpool이 그 안에 일반 디렉토리로 있고 이제 별도의 zfs rpool/etc를 만들고 원래 /etc에 있던 모든 데이터를 분명히 상속하려고 한다고 가정해 보겠습니다.

그렇게 하는 가장 적절하고 안전한 방법은 무엇입니까?

답변1

/etc자체 zfs 파일 시스템으로 전환하는 것은 지원되지 않습니다 .

그 이유는 /etc(Open)Solaris가 zfs 파일 시스템 마운트를 시작하기 전, 부팅 초기 단계에 필요하기 때문입니다. 따라서 이를 변경하면 비어 있게 됩니다.

내 생각에는 의 스냅샷을 찍고 싶지만 /etc대신 루트 파일 시스템의 스냅샷을 찍을 수도 있습니다.

zfs snapshot rpool/ROOT/opensolaris

opensolaris현재 부트 환경의 이름으로 바꿔야 할 수도 있습니다 ( beadm list어느 것인지 알아보려면 실행하세요).

답변2

새 DataSet을 만들고 기존 데이터를 마이그레이션하는 기본 제공 방법이나 자동화된 방법은 없습니다. 이를 완료하려면 데이터세트를 생성하고 해당 데이터세트에 데이터를 수동으로(예: rsync) 수행해야 합니다.

tank\set라는 이름의 디렉터리가 포함된 데이터세트가 있다고 가정해 보겠습니다 folder. 폴더를 다음 이름의 하위 데이터 세트로 '승격'하려고 합니다 tank\set\folder.

mv /mnt/tank/set/folder /mnt/tank/set/folder-backup # move this out of the way so the new dataset doesn't mount on top of it
zfs create tank/set/folder
rsync -aAX /mnt/tank/set/folder-backup/ /mnt/tank/set/folder # bring over all the old data including acls and attributes

그런 다음 데이터가 좋아 보이는지 검토합니다. 만약을 대비해 상위 데이터세트의 스냅샷을 찍고 디렉터리를 삭제하세요 folder-backup.

답변3

꽤 아프지만 유용한 아이디어일 수 있습니다.

tank\set기존 데이터 세트의 복제본을 다음 과 같이 만들면 어떻게 되나요?tank\folder

tank\set그것은 내가 원하는 것 tank\folder\folder뿐만 아니라 엄청난 다른 것들을 포함하는 것과 정확히 같을 것입니다 .

tank\folder그런 다음 에서 원하지 않는 모든 항목을 제거할 수 있습니다 mv tank\folder\folder\* tank\folder\. 이 작업은 파일 시스템 내 이동에만 해당되며 몇 초 안에 완료됩니다.

하루 이틀 뒤에 테스트해보겠습니다


rm -rf가 생각보다 오래 걸릴까 봐 걱정됩니다.

결국 사용할 옵션입니다.

관련 정보