Fedora 25にアップグレードする前に、私はbtrfs subvolume snapshot / /f24
を実行しました。空き容量が少ないのが嫌なので、更新に失敗しました。ここで問題は、スナップショットを元に戻す方法です。 grub.cfgを編集して(rootflags=subvol=root/f24
を設定)、スナップショットを既に起動しました。
この男 はbtrfs subvolume delete root
だけに言います。しかし、grub2が次のカーネルアップデートで不正なgrub.cfgを再生成するかどうかはわかりません。また、delete root
はrm -rf /
のような操作のように聞こえます。
この男 rsyncを使用して、スナップショットからルートにデータをコピーしました。動作すると確信していますが、2013年の回答であり、スナップショットを元に戻すためのより良い方法があると思います。
「mv
を使用するだけ」、通常はapt-btrfs-snapshot
と一緒に使用することが何度かあります。 mv /f24 /
が実際に機能するようには聞こえません。 (もしそうなら、私を訂正してください。)
最後に、元に戻されたスナップショットには、もちろんroot/f24
ではなくroot
という名前を付ける必要があります。 FSに関する情報は次のとおりです。
$ btrfs subvolume list /
ID 257 gen 419417 top level 5 path root
ID 3231 gen 419430 top level 257 path root/f24
スナップショットを起動します:
$ btrfs subvolume show /
/
Name: f24
UUID: b1782609-7d9f-4725-911d-428cda2256c7
Parent UUID: 8df6fae9-770a-4d55-a4bf-6a32edf1fbd7
Received UUID: -
Creation time: 2016-11-26 19:17:22 +0200
Subvolume ID: 3231
Generation: 419438
Gen at creation: 411444
Parent ID: 257
Top level ID: 257
Flags: -
Snapshot(s):
これを行う2016年の方法はありますか?
現在のサブボリュームも目的のサブボリュームも「実際の」Btrfsルート、つまりサブボリュームID 0ではないという事実によって、状況は多少単純化されています。
次のように、実際のBtrfsルートを(一時的に)マウントすることから始めます。
mkdir /mnt/btrfs-root
mount -o subvolid=0 /dev/somedevice /mnt/btrfs-root
これで、btrfs-root内で、サブボリュームの「ルート」と、そこで定義した他のサブボリュームを確認できるはずです。プレーンなmv
を使用して、必要な方法でそれらを再配置できます。
cd /mnt/btrfs-top
mv -i root/f24 newroot
# Now at least you don't have one subvolume rooted inside another
# It's a little simpler to work with.
# Now just shuffle them as desired
mv -i root oldroot
mv -i newroot root
# ...and clean up
cd
umount /mnt/btrfs-top
rmdir /mnt/btrfs-top
これで、次に「root」というサブボリュームをマウントすると、新しいサブボリュームになります。
Subvolidでルートファイルシステムをマウントしないように注意してください。 subvolidでマウントしている場合は、上記のように名前を変更しても、subvolidは変更されません。
デフォルトのサブボリュームに依存してファイルシステムをマウントしている場合は、デフォルトのサブボリュームを新しいサブボリュームに変更する必要があります。
btrfs subvolume set-default 3231 /
明示的なsubvolid仕様でマウントする場合は、/etc/fstab
と/etc/default/grub
をsubvolid=3231
を使用するように変更する必要があります。