btrfsを使用して、プライマリサブボリューム(subvolid = 0)のLinuxインストールを別のサブボリュームに移動します。

btrfsを使用して、プライマリサブボリューム(subvolid = 0)のLinuxインストールを別のサブボリュームに移動します。

ルートbtrfsファイルシステムにマウントすると、多くのLinuxディストリビューションがデフォルトのサブボリュームにインストールされます。変更しないままにすると、このレイアウトは新しいスナップショットまたはサブボリュームがルートファイルシステム内に作成されるように強制します。これはスナップショット自体が含まれているため非常に混乱します。

/ 
│─dev
│─home
│─var
│─usr
│─...
└─snapshots
  └─snap1 

より理解しやすい基本サブボリュームのレイアウトは次のとおりです。

/ 
├─subvolumes
│ └─root
│   ├─dev
│   ├─home
│   ├─var
│   ├─usr
│   └─...
└─snapshots
  └─snap1 

livecdから起動せずにこのサブボリュームレイアウトを使用するようにディストリビューションのデフォルトのbtrfsインストールをどのように変更できますか?

ベストアンサー1

必ずしも必要ではありませんが、予期しないデータ損失を防ぐために、シングルユーザー(「回復」)モードでこれらの手順を実行することをお勧めします。

基本サブボリュームに目的のレイアウトを作成します。

mkdir /subvolumes
btrfs subvolume snapshot / /subvolumes/root
mkdir /snapshots

/subvolumes/root新しいルートファイルシステムになるのでこのステップの後、ファイルシステムを変更しないでください。

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

新しいサブボリュームを指すようにgrubを変更できるように、どこかに新しいルートファイルシステムをマウントする必要があります。

mkdir /media/temporary
mount -o subvol=/subvolumes/root /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 # only necessary if you have a separate boot partition
chroot .
update-grub
exit

それはすべてです。再起動すると、ルートファイルシステムが新しいサブボリュームになります。成功したら、ディレクトリがあってはいけません/snapshots

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

mkdir /media/btrfs/root

mount -o subvolid=0 /dev/sdXX /media/btrfs/rootその後、デフォルトのサブボリュームをマウントできます。

これで、デフォルトのサブボリュームから古いルートファイルシステムの内容を安全に削除できるようになりました。

cd /media/btrfs/root
rm -rf {dev,home,var,...}

おすすめ記事