ソースZFSファイルシステムのマウント

ソースZFSファイルシステムのマウント

FreeBSDインストールを新しいハードドライブに複製しようとしているが複製プロセスを続行するには、それをインストールしてからマウントポイントを見つけなければなりません。

複製しようとしている内部ドライブには、現在Windows 10がインストールされており、複製する最適化の少ないFreeBSDインストールがあります。

FreeBSDの現在のUFSパーティションスキームを使用してうれしいです。

適切なコマンドを実行するためにライブFreeBSD USBスティックから起動します。私が経験している問題は、複製しようとしているディスクがZFSを使用して分割されていることを示しています。ディスクはUSB-SATAアダプタを使用してマイコンピュータに接続されます。

答え1

私は「ソース」インストールが純粋にZFSにあり、ZFSプールから直接起動すると仮定します。

rsync2つの異なるファイルシステムタイプを複製しているため、同様のツールを使用してこれを実行できます。あるマウントポイントにソースレイヤー(ZFSプール)をマウントし、別のマウントポイントにターゲットレイヤー(1つ以上のUFSファイルシステム)をマウントします。最後に、をrsync使用してソース階層をターゲットにコピーします。

まず、マニュアルページをお読みくださいzpoolzpool多くのサブコマンドがあり、それぞれ独自のマニュアルページがあります。まず、次の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ファイルシステムのマウント

Re 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ツリーがマウントされ、ターゲット/mntUFSツリーがマウントされたら、ある/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スティックを近くに置いてください。

関連情報