
古い Ubuntu インストールから新しいものに移行しています。移行中は、古い OS と新しい OS で同じプールを使用できるようにしたいと考えています。
新しい OS は別のディスク上にあります。起動時に OS を選択します。特定の時点でプールを使用する OS は 1 つだけです。
これは本当に可能なのでしょうか? データが破損したり、プール全体が失われるリスクはありますか?
答え1
プールがシャットダウン中にエクスポートされ、一度に1つのシステムからのみ使用される限り、あなたが議論する内容は問題ないはずです。
ZFSは本当に、本当に、本当に-o readonly=on
読み取り専用モード (に指定)でも、同じプールが複数のシステムから同時に使用されることは好ましくありませんzpool import
が、これはあなたの状況には当てはまらないようです。
2つのバージョン間の互換性を保つために、ない実行するにzpool upgrade
は、zfs upgrade
特に新しいインストールから実行する必要があります。どちらの場合も、古いインストールを実行しているときにプールまたはファイルシステムへのアクセスが失われる可能性がありますが、アップグレードされた ZFS オンディスク バージョンをサポートするシステムを実行しているときにプールまたはファイルシステムが失われることはありません。
zpool upgrade
アップグレードが完了したら、必要に応じておよび/または を使用して、プールを最新のオンディスク フォーマットと機能にアップグレードできますzfs upgrade
。
答え2
プールをデータ ストレージとして使用することについて話していて、システム ルートを実行することについて話していないと仮定すると、問題ありません。
現在、2 つのシステムがインストールされています。1 つは EXT4 パーティション上に、もう 1 つは を持つ zfs データセット内にありますsudo zfs set mountpoint=/ tank/my/dataset
。EXT4
システムからこのプールにアクセスするのは面倒ですzfs mount -a
。ルートへのマウントが失敗するからです。そこで、代わりに次の 3 つの方法を紹介します。
どちらの方法でも、プールを自動マウントせずにインポートする必要があります。
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
B) 避ける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
このオプション B) を使用して chroot し/mnt/mydataset
、他のシステムの zfs コマンドを使用したときに、いくつかの問題が発生したことに注意してください。これらの問題が関連しているかどうかはわかりません。ただし、同様のことを行わない限り、問題はないはずです。
C) 代替ルート
altroot
プール上のプロパティを指定できます。
代替ルート
代替ルート ディレクトリ。設定されている場合、このディレクトリはプール内のすべてのマウント ポイントの先頭に追加されます。これは、マウント ポイントが信頼できない不明なプールを調べるとき、または一般的なパスが有効でない代替ブート環境で使用できます。は
altroot
永続的なプロパティではありません。システムが起動している間のみ有効です。altroot を設定すると、デフォルトが になりますcachefile = none
が、明示的な設定を使用してこれを上書きできます。