デフォルトのサブボリューム(subvolid = 0)でbtrfsを使用してLinuxインストールを別のサブボリュームに移動します


14

ルートbtrfsファイルシステムにインストールするとき、多くのLinuxディストリビューションはデフォルトのサブボリュームにインストールします。変更しない場合、このレイアウトにより、スナップショットまたはサブボリュームがルートファイルシステム内に強制的に作成されますが、これは望ましくない場合があります。別の可能なレイアウトは、デフォルトのサブボリュームにsnapshotsディレクトリrootfsと、ルートファイルシステムであるサブボリュームを含めることです。livecdから起動せずに、このサブボリュームレイアウトを使用するように、デフォルトのbtrfsインストールを変更するにはどうすればよいですか?

回答:


14

最初に、デフォルトのサブボリュームに必要なレイアウトを作成します。

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

これ/rootfsが新しいルートファイルシステムになるため、この手順の後に現在のファイルシステムに変更を加えないでください。

/rootfs/etc/fstabシステムがルートファイルシステムとして新しいrootfsサブボリュームを使用するように編集します。そのためには、subvol=rootfsオプションを含めるように変更する必要があります。

新しいルートファイルシステムをどこかにマウントし、関連するファイルシステム(dev、sys、proc、もしあればブート)をマウントし、chrootしてgrubを更新します:

mount -o subvol=rootfs /dev/sdXX /media/temporary
cd /media/temporary
mount -o bind /dev  dev
mount -o bind /sys  sys
mount -o bind /proc proc
mount -o bind /boot boot
chroot .
update-grub
exit

それでおしまい。再起動すると、ルートファイルシステムがrootfsサブボリュームになります。これが成功した場合、/ snapshotsディレクトリはありません。これで、デフォルトのサブボリュームにある古いルートファイルシステムの内容を削除できます。

必要に応じて、デフォルトのサブボリュームの永続的なマウントポイントを作成できます。

mkdir /media/btrfs/root

その後mount -o subvolid=0 /dev/sdXX /media/btrfs/root、スナップショット/サブボリュームを作成できます。


1
また、grubをマウント、chroot、更新する代わりに、デフォルトのサブボリュームをrootfsに設定するだけでよいことに注意してくださいbtrfs subvolume set-default ID /ID`btrfsサブボリュームリストを使用して見つけることができます/
-goncalopp

(btrfs wiki)[ btrfs.wiki.kernel.org/index.php/Mount_options]で説明されているように、それが「適切な」方法であると思われるので、subvol=/rootfs(に注意してください/)を追加しました。fstab
go2null

@ go2null使用の問題はsubvol=/rootfs、レイアウトを認識しないプログラム(たとえば、ディストリビューションインストーラー)が代わりにデフォルトのサブボリュームをマウントすることです。プログラムは、ファイルシステムに障害が発生、または悪化します場合は、Linuxのファイルシステムのように見えるように想定している場合-のものを使用して、デフォルトのサブボリュームを埋め、あなたはしたくないが
goncalopp

うーん、ファイルシステムをいじるプログラムは、少なくともfstabブートローダーの設定をチェックするだろうと思っていたでしょう。
go2null
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.