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-snapshot않을 것 같습니다 . mv /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 내에서 하위 볼륨 "루트"와 여기에 정의한 다른 하위 볼륨을 볼 수 있습니다. plain을 사용하여 원하는 방식으로 재정렬할 수 있습니다 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.

관련 정보