소스 ZFS 파일 시스템 마운트

소스 ZFS 파일 시스템 마운트

FreeBSD 설치를 새 하드 드라이브에 복제하려고 하는데 복제 프로세스를 계속하려면 이를 설치한 다음 마운트 지점을 찾아야 합니다.

복제하려는 내부 드라이브에는 현재 Windows 10이 설치되어 있고 복제하려는 덜 최적화된 FreeBSD 설치가 있습니다.

FreeBSD에 대한 현재 UFS 파티션 구성표를 사용하게 되어 기쁩니다.

적절한 명령을 실행하기 위해 라이브 FreeBSD USB 스틱에서 부팅하겠습니다. 제가 겪고 있는 문제는 복제하려는 디스크가 ZFS를 사용하여 분할되어 있는데 이를 마운트하고 마운트 지점을 찾는 방법을 이해할 수 없다는 것입니다. 디스크는 USB-SATA 어댑터를 사용하여 내 컴퓨터에 연결됩니다.

답변1

나는 "소스" 설치가 순전히 ZFS에 있고 ZFS 풀에서 직접 부팅된다고 가정합니다.

rsync서로 다른 두 파일 시스템 유형 간에 복제하는 중이므로 유사한 도구를 사용하여 이를 수행 할 수 있습니다 . 하나의 마운트 지점에 소스 계층(ZFS 풀)을 마운트하고 다른 마운트 지점에 대상 계층(하나 이상의 UFS 파일 시스템)을 마운트합니다. 마지막으로 를 rsync사용하여 소스 계층 구조를 대상에 복사합니다.

먼저 매뉴얼 페이지를 읽어 보십시오 zpool. zpool많은 하위 명령이 있으며 각각 고유한 매뉴얼 페이지가 있습니다. 우선 다음 zpool import명령을 참고하세요.

 zpool-import(8)
         Make disks containing ZFS storage pools available for use on the
         system.

그리고 다음을 참조하십시오 man zpool-import:

zpool import [-D] [-d dir|device]…
         Lists pools available to import.

매개변수는 선택사항입니다. 아마도 필요하지 않을 것입니다. 이 작업을 수행하려면 USB 스틱에서 부팅하는 것이 좋습니다. USB 드라이브에서 부팅하면 zpool import사용 가능한 풀이 표시됩니다. 먼저 tank이 예에서 참조할 소스 ZFS 풀을 확인하십시오 .

# zpool import
   pool: tank
     id: 11588110742206048524
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        tank                    ONLINE
          gpt/zfs-57SCK7S0FVLC  ONLINE
          gpt/zfs-57SCK7S1FVLC  ONLINE

"외부" ZFS 풀을 마운트할 때는 주의하십시오. 이러한 풀은 마운트된 시스템의 작동과 직접적인 관련이 없습니다. 실행 중인 시스템의 파일 시스템 위에 외부 ZFS 풀이나 파일 시스템을 실수로 마운트하기 쉽고 재부팅하지 않으면 작업을 되돌릴 수 없습니다.

소스 ZFS 풀을 사용할 수 있다고 확인되면 소스(ZFS) 및 대상(UFS) 파일 시스템을 마운트하고 시작할 수 있습니다.

소스 ZFS 파일 시스템 마운트

다시 man zpool-import:

         -R root
                 Sets the cachefile property to none and the altroot
                 property to root.

zpool import -R /mnt tank다른 마운트 지점 아래에 풀의 전체 ZFS 계층을 마운트할 수 있습니다 . tank이 경우 /mnt소스 풀도 읽기 전용으로 유지하는 것이 좋습니다. 주문하다

# zpool import -o readonly=on -R /mnt tank
# zfs list -r tank
# zfs mount

소스 풀은 읽기 전용 모드로 마운트되며 /mnt존재하고 마운트된 각 ZFS 파일 시스템이 나열됩니다. 다음과 같은 메시지가 표시될 수 있습니다.

cannot import 'tank': pool was previously in use from another system.
Last accessed by <unknown> (hostid=0) at Tue Apr 19 03:29:13 2022
The pool can be imported, use 'zpool import -f' to import the pool.

이런 일이 발생하면 표시된 대로 명령 -f에 옵션을 추가하면 됩니다 zpool import.

# zpool import -f -o readonly=on -R /mnt tank

이것이 소스 트리입니다.

대상 파일 시스템 마운트

나는 대상 파일 시스템의 마운트 지점을 사용하겠습니다 /mnt.new. 당신이 말하는 파일 시스템은 아마도 UFS일 것입니다. ZFS가 아닌 파일 시스템을 구조로 사용하는 경우 /mnt.new사용할 각 디스크 파티션( , 등)에서 "newfs /dev/ada0p1" 를 실행해야 합니다 /dev/ada0p2. 언제나처럼,매우 확신하다어떤 장치가 어떤 장치이고 설정이 올바른지 알 수 있습니다.

Leave the file system pristine 을 사용한 후 그 아래의 newfs파티션을 파일 시스템으로 마운트 하고 UFS 계층에서 다음 레벨 마운트 지점으로 필요한 디렉터리를 만듭니다. 그런 다음 다음 레벨의 디스크 파티션을 마운트하고 각 파티션을 올바른 위치에 마운트합니다. 예를 들어, 새 UFS 파일 시스템이 /dev/ada0p1에 루트가 있고 /dev/ada0p2 및 /dev/ada0p3을 포함하는 경우 다음을 수행해야 합니다.//mnt.new/usr/usr/home

mkdir /mnt.new
mount /dev/ada0p1 /mnt.new
mkdir /mnt.new/usr
mount /dev/ada0p2 /mnt.new/usr
mkdir /mnt.new/usr/home
mount /dev/ada0p3 /mnt.new/usr/home

/mnt.new마운트 지점에 복제한 후에는 /mnt.new/etc/fstab파일 시스템이 포함된 디스크 파티션을 올바르게 마운트하고 편집해야 한다는 점을 기억하십시오 .

이것은 기본적인 UFS 파일 시스템 관리이므로 더 자세히 설명하지 않겠습니다.

소스 계층 구조를 대상에 다시 동기화하십시오.

소스 ZFS 트리가 마운트되고 /mnt대상 UFS 트리가 마운트 되면 /mnt.new한 트리에서 다른 트리로 파일을 복사하기만 하면 됩니다. rsync훌륭한 도구입니다.

# rsync -HAXav /mnt/ /mnt.new/

후행 슬래시는 /mnt/중요하며 /mnt.new/"unity"에 포함됩니다. 주어진 명령은 복사된 각 파일 이름을 나열합니다. 이 세부정보를 보고 싶지 않으면 v명령에서 생략하세요.

파일을 복사한 후에도 일부 수동 변경이 필요합니다. 앞에서 언급했듯이 /mnt.new/etc/fstab새 시스템이 시작될 때 UFS 파일 시스템이 올바르게 설치되었는지 확인하고 필요한 변경을 수행 해야 합니다 . 또한 에서 유사한 줄과 유사한 항목을 /mnt.new/etc/rc.conf주석 처리 해야 합니다 .zfs_enable='yes'/mnt.new/boot/loader.conf

소스 및 대상 계층 구조를 언로드하고 다시 시작하세요.

새 시스템을 사용해 볼 준비가 되었다고 생각되면 소스 ZFS 풀을 내보냅니다.

zpool export tank

그리고 다음에서 UFS 장치를 마운트 해제합니다 /mnt.new.

umount /mnt.new/usr/home
umount /mnt.new/usr
umount /mnt.new

이제 UFS 드라이브를 기도하고 재부팅할 수 있습니다. UFS 디스크가 첫 번째 시도에서 부팅에 실패하는 경우 문제를 해결할 수 있도록 USB 스틱을 가까이에 두십시오.

관련 정보