![두 운영 체제에서 차례로 ZFS 풀 사용](https://rvso.com/image/154469/%EB%91%90%20%EC%9A%B4%EC%98%81%20%EC%B2%B4%EC%A0%9C%EC%97%90%EC%84%9C%20%EC%B0%A8%EB%A1%80%EB%A1%9C%20ZFS%20%ED%92%80%20%EC%82%AC%EC%9A%A9.png)
이전 Ubuntu 설치에서 새 설치로 전환 중입니다. 전환하는 동안 이전 OS와 새 OS에서 동일한 풀을 사용할 수 있기를 원합니다.
새 OS는 다른 디스크에 있습니다. 부팅하는 동안 OS를 선택합니다. 특정 시간에 하나의 OS만 풀을 사용합니다.
이것이 가능합니까? 데이터가 손상되거나 전체 풀이 손실될 위험이 있나요?
답변1
종료 중에 풀을 내보내고 한 번에 하나의 시스템에서만 사용되는 한,당신이 논의하는 내용은 문제가 없어야합니다.
ZFS 정말, 정말,정말-o readonly=on
읽기 전용 모드( ~에 제공됨 ) 에서도 여러 시스템에서 동시에 사용되는 동일한 풀을 좋아하지 않지만 zpool import
이는 귀하의 상황에 적용되지 않는 것 같습니다.
두 버전 간의 호환성을 유지하려면 다음 사항을 확인하세요.~ 아니다실행 zpool upgrade
하거나 zfs upgrade
특히 최신 설치에서 실행합니다. 두 가지 모두 이전 설치를 실행할 때 풀이나 파일 시스템에 대한 액세스가 손실될 수 있지만, 업그레이드된 ZFS 온디스크 버전을 지원하는 시스템을 실행할 때 풀이나 파일 시스템이 손실되어서는 안 됩니다.
업그레이드가 완료되면 원하는 경우 zpool upgrade
및/또는 zfs upgrade
필요에 따라 풀을 최신 온디스크 형식 및 기능으로 업그레이드할 수 있습니다.
답변2
풀에서 시스템 루트를 실행하지 않고 풀을 데이터 저장소로 사용하는 것에 대해 이야기한다고 가정하면 괜찮을 것입니다.
현재 두 개의 시스템이 설치되어 있습니다. 하나는 EXT4 파티션에 있고 다른 하나는 sudo zfs set mountpoint=/ tank/my/dataset
.
EXT4 시스템에서 이 풀에 액세스하는 것은 zfs mount -a
루트로의 마운트에 실패하기 때문에 어렵습니다. 대신 여기에 세 가지 방법이 있습니다.
두 가지 방법 모두 자동 마운트하지 않고 풀을 가져와야 합니다.
sudo zpool import tank -N
A) 속성 수정
sudo mkdir /mnt/mydataset
sudo zfs set mountpoint=/mnt/mydataset tank/my/dataset
sudo zfs mount tank/my/dataset
# [do stuff in /mnt/mydataset]
# ...
sudo zfs unmount tank/my/dataset
# restore mountpoint so that the other system is able to boot from it
sudo zfs set mountpoint=/ tank/my/dataset
나) 피하라zfs mount
마운트 지점을 앞뒤로 설정하는 것이 귀찮다면 다음 방법도 작동한다는 것을 알았습니다. 이것이 얼마나 해킹되는지에 대한 보장은 없습니다.
sudo mkdir /mnt/mydataset
sudo mount -t zfs -o zfsutil tank/my/dataset /mnt/mydataset
# [do stuff in /mnt/mydataset]
# ...
sudo umount /mnt/mydataset
/mnt/mydataset
이 옵션 B)를 사용하여 다른 시스템의 zfs 명령을 chroot하고 사용할 때 몇 가지 문제가 발생했습니다 . 이 문제가 관련이 있는지 모르겠습니다. 비슷한 일을 하지 않는 한 괜찮을 것입니다.
다) 알트루트
altroot
풀의 속성을 지정할 수 있습니다 .
대체 루트
대체 루트 디렉터리. 설정된 경우 이 디렉터리는 풀 내의 모든 탑재 지점 앞에 추가됩니다. 이는 마운트 지점을 신뢰할 수 없는 알 수 없는 풀을 검사할 때나 일반적인 경로가 유효하지 않은 대체 부팅 환경에서 사용할 수 있습니다.
altroot
영구 속성이 아닙니다. 시스템이 가동되는 동안에만 유효합니다. altroot 설정은 기본적으로 사용으로 설정되지만cachefile = none
이는 명시적 설정을 사용하여 재정의될 수 있습니다.