2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu-18.04 new installerでbtrfsを使う際のサブボリューム構成の違いと修正

Posted at

Ubuntu 18.04以降の新しいインストーラはbtrfsなルートパーティションの扱いが変わっている。
ハマりたくなければおとなしくalt imageの旧インストーラを使ったほうがいい。

Ubuntu 旧インストーラでの挙動

旧インストーラ(名前はdebian installerで良いのだろうか?)でルートパーティションにbtrfsを指定すると、自動的にサブボリュームが作成され、ルート/とホーム/homeにマウントされる。

たとえば、

/dev/mapper/vg-root /     defaults,subvol=@ 0 0
/dev/mapper/vg-root /home defaults,subvol=@home 0 0

これはbtrfsでは順当な構成。(@homeは要らない人も多いだろうが)

Ubuntu 新インストーラでの挙動

サブボリュームが作成されず、そのままルートボリュームがマウントされる。

(ついでに/boot/やLVMの中に置くことができず、/bootは通常のパーティションにext4などで作ることを強制される)

何が問題か?

btrfsのルートボリュームはサブボリュームと扱いが異なり、削除や移動ができない。
特に、ルートボリュームのスナップショットをサブボリュームとして作成することはできても、作成したサブボリュームでルートボリュームを差し替えることができない。

つまり、ルートパーティションとしてbtrfsのルートボリュームをそのままマウントしてしまうと、ロールバックができない。

一方サブボリュームならリネームができるので、ルートパーティションやinitramfsを壊してしまっても最悪古いスナップショットをRWにして置き換えるだけで最低限の復旧ができる。(配下のサブボリュームは作り直すか、同形になるようにスナップショットを作り直す必要があるが)

他にも、作成したサブボリュームはすべてルートボリューム配下、つまり/以下に見えてしまうのでapparmorなどのアクセス制御上の扱いが面倒になる。

修復

ルートパーティションの差し替えを行う。これはbtrfsに限らず通常の運用と同じ。

ルートボリュームのスナップショットは作れるので、

mkdir /mnt/chroot
sync
btrfs subvolume snapshot / /@
mount /dev/vda2 /mnt/chroot -o subvol=@

mount --bind /dev /mnt/chroot/dev
... 他sys/dev/procなど繰り返し

chroot /mnt/chroot
vi /etc/fstab  (subvol=@を追加)
update-initramfs -u -k all
update-grub

で行けるはず。

あとは忘れずルートボリュームをマウントしてサブボリューム以外を削除。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?