btrfsはルートFSのスナップショットを復元します。

btrfsはルートFSのスナップショットを復元します。

Fedora 25 にアップグレードする前にbtrfs subvolume snapshot / /f24空き容量が少なすぎて更新に失敗しました。今問題はスナップショットを復元する方法です。 grub.cfg(settings)を編集してスナップショットから起動しましたrootflags=subvol=root/f24

  1. この男ただ言ってくださいbtrfs subvolume delete root。しかし、grub2が次のカーネルアップデートで誤ったgrub.cfgを再生成するかどうかはわかりません。似たような操作のようdelete rootですね。rm -rf /

  2. この男rsyncを使用して、スナップショットのデータをルートディレクトリにコピーします。効果があると確信していますが、これは2013年の答えであり、スナップショットを復元するより良い方法があると思います。

  3. 私は何度も「ただ使用するmv」ことを発見しました。一般的に...はそれほどうまくいきませんapt-btrfs-snapshotmv /f24 /(そうであれば訂正してください。)

最後に復元したスナップショットのroot名前を変更する必要がありますroot/f24。以下は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年にできる方法はありますか?

ベストアンサー1

現在のサブボリュームまたは所望のサブボリュームが「実際の」Btrfsルート(つまり、サブボリュームID 0)ではないという事実により、状況はやや単純化されます。

まず、(一時的に)次のように実際のBtrfsルートをインストールします。

mkdir /mnt/btrfs-root
mount -o subvolid=0 /dev/somedevice /mnt/btrfs-root

これで、btrfs-root内でサブボリューム「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 は変更されません。

  • デフォルトのサブvolidを使用してファイルシステムをマウントした場合は、デフォルトのサブvolidを新しいサブvolidに変更する必要があります。

    btrfs subvolume set-default 3231 /
    
  • /etc/fstab明示的なsubvolid仕様でインストールした場合は、変更して使用する必要が/etc/default/grubありますsubvolid=3231

おすすめ記事