ZFS 온라인 디스크 마이그레이션

ZFS 온라인 디스크 마이그레이션

ZFS가 다음을 처리할 수 있는지 궁금합니다. 미러링된 설정에서 2개의 물리적 500GB 디스크가 있는 zpool에 FreeBSD를 설치했다고 가정해 보겠습니다. 이는 루트 파티션을 형성하므로 실제로는 최대 20GB만 사용됩니다.

나중에 미러링 설정에서 물리적 디스크를 두 개의 작은 SSD로 교체하고 싶습니다. 온라인으로 할 수 있는 방법이 있나요? 내 생각은 이러한 디스크를 추가 미러로 zpool에 추가하고 리실버링이 완료될 때까지 기다린 다음 이전 드라이브를 제거하는 것이었습니다. 문제는 이러한 새 디스크가 원본보다 작다는 것입니다.

제가 생각한 아이디어는 500GB 드라이브를 분할하여 ZFS가 각 물리적 디스크에서 30GB의 공간만 확보하고 나머지는 낭비되도록 하는 것입니다. 이렇게 하면 SSD에 더 많은 공간이 생기므로 축소 문제가 발생하지 않습니다. 문제는 이 방법으로 향후 교체 디스크의 크기를 미리 예측해야 한다는 것입니다. 이것을 피할 수 있는 방법이 있나요?

답변1

vdev가 전체 디스크인 경우 SSD로 전환할 때 최소한 그 크기 이상이어야 하며 더 작은 디스크로 "축소"할 수 없다는 것이 맞습니다(물론 더 큰 디스크로 확장할 수 있습니다). vdev가 미래의 SSD보다 작도록 파티션을 사용할 수 있다는 것도 맞으며 해당 SSD의 크기가 얼마나 될지 추측해야 합니다.

또는 서버가 짧은 기간 동안이라도 디스크 4개를 모두 동시에 수용할 수 있는 경우 지금 원하는 방식으로 zpool을 만든 다음 보내기/수신을 사용하여 데이터를 새 SSD로 전송할 수 있습니다. 이를 위해서는 모든 장치를 동시에 연결해야 합니다. 작은 주의 사항은 보내기/받기 작업은 스냅샷에서만 보낼 수 있으므로 "라이브" 디스크를 복제할 수 없으며 이에 대한 조정이 필요하다는 것입니다(약간의 복잡성을 추가하면 가동 중지 시간이 매우 짧을 수 있음).

훨씬 더 복잡한 것은 실제로 "보내기"를 다른 디스크의 중간 파일에 저장한 다음 그로부터 "수신"하는 것이 가능합니다. 따라서 언제든지 서버에 3개의 디스크만 있으면 됩니다. 더 복잡한 점은 4개의 디스크가 서로 다른 서버에 있을 수 있고 전송/수신이 ssh 또는 심지어 netcat을 통해 파이프될 수 있다는 것입니다.

답변2

나는 이것을 수행하는 확실한 방법을 생각할 수 없습니다.

지금은 부팅 코드를 추가하기 위해 루트 디스크를 분할해야 하고 자주 발생하는 일처럼 들리지 않으므로 루트 풀에 대해 작은(20GB 미만) 파티션을 생성하는 것이 좋습니다. 추가 공간이 필요한 경우 남은 공간으로 두 번째 풀을 만들 수 있습니다. SSD를 넣을 때는 파티션을 나누고 부트 코드를 추가하고 루트 풀에 'zfs 연결'한 다음 원본을 'zfs 분리'합니다(또는 'zfs 연결' 및 'zfs 분리' 대신 'zfs 교체'). ).

관련 정보