LoginSignup
4
9

More than 3 years have passed since last update.

Ubuntu Server 20.04をBtrfsにインストールする

Last updated at Posted at 2020-10-23

Ubuntu Server 20.04をBtrfsにインストールする

Ubuntu Server 20.04のルートファイルシステムをBtrfsにした時の手順をまとめました。

Btrfsのサブボリュームについて

Btrfsのサブボリュームは、個別にマウントでき、サブディレクトリとして表示できます。また、Btrfsのスナップショットはコピーオンライト(CoW)機能により、素早くスナップショットを作成できます。

Btrfsのサブボリュームのレイアウトについて

BtrfsのサブボリュームのレイアウトはopenSUSEが参考になります。openSUSEのデフォルトのファイルシステムはBtrfsを採用しています。

ストレージ レイアウトの設定

ストレージ レイアウトの設定で、Custom storage layoutを選択します。

Screenshot_ubuntu20.04_2020-10-18_01:01:40.png

ブート デバイス用のパーティションを作成します。

Screenshot_ubuntu20.04_2020-10-18_01:01:55.png

GPTパーティションを追加します。

Screenshot_ubuntu20.04_2020-10-18_01:02:12.png

btrfsでフォーマットし、マウント ポイントは/にします。

Screenshot_ubuntu20.04_2020-10-18_01:02:23.png

ディスクにパーティション テーブルを書き込んで、インストールを続けます。

Screenshot_ubuntu20.04_2020-10-18_01:02:36.png

インストールが完了したら、再起動せずに次のステップに進んでください。

Screenshot_ubuntu20.04_2020-10-18_09:02:29.png

Btrfsのサブボリュームの作成

インストールが完了したら、再起動せずにALT + F2を押して、コンソールに切り替えます。ここでルートになります。

sudo -i

マウントしたデバイスを表示します。/targetにUbuntuがインストールされています。

mount -l | grep /target

Screenshot_ubuntu20.04_2020-10-18_09:07:45.png

/targetをアンマウントし、/mntにディスクをマウントします。

umount -l /target
mount /dev/vda2 /mnt

lsblkでブロックデバイスの一覧を表示できます。

Screenshot_ubuntu20.04_2020-10-18_09:15:38.png

サブボリュームを作成します。

cd /mnt
btrfs subvolume create @
btrfs subvolume create @/home
btrfs subvolume create @/opt
btrfs subvolume create @/root
btrfs subvolume create @/srv
btrfs subvolume create @/tmp
chmod 1777 @/tmp
mkdir @/usr
btrfs subvolume create @/usr/local
btrfs subvolume create @/var
btrfs subvolume create @/swap

/varのコピーオンライト(CoW)を無効にして、パフォーマンスを向上させます。

chattr +C /mnt/@/var

すべてのファイルとフォルダをサブボリュームに移動します。

shopt -s dotglob
mv home/* @/home
mv root/* @/root
mv usr/local/* @/usr/local
mv var/* @/var
rmdir home opt root srv usr/local tmp var
ls | grep -v @ | xargs mv -t @

/mntをアンマウントして、システムに必要なデバイスをすべてマウントします。

umount /mnt
mount -o subvol=@ /dev/vda2 /target
mount /dev/vda2 /target/boot/efi
mount --bind /proc /target/proc
mount --bind /dev  /target/dev
mount --bind /sys  /target/sys

ALT + F3を押して、3番目のウインドウに切り替え、chrootでシステムを切り替えます。

sudo -i
chroot /target

fstabを編集して、サブボリュームを適切なマウントポイントを設定します。

vi /etc/fstab
UUID=xxxx / btrfs defaults,ssd,noatime,space_cache,commit=120,compress=zstd,subvol=@ 0 1
/swap/swapfile none swap sw 0 0

スワップ ファイルの作成

Btrfsのサブボリュームにスワップ ファイルを作成するには、コピーオンライト(CoW)を無効にしないといけません。しかし、コピーオンライト(CoW)が無効なファイルがあると、スナップショットを撮ることができません。そこで、スワップ ファイル用のサブボリュームを作成、そこにスワップ ファイルを作成します。

touch /swap/swapfile
chmod 0600 /swap/swapfile
chattr +C /swap/swapfile
fallocate /swap/swapfile -l 2g
mkswap /swap/swapfile

最後にGRUBを更新します。

update-initramfs -u -k all
grub-install --recheck /dev/sda
update-grub

ALT + F1を押して、1番目のウインドウに切り替えて、再起動します。

Screenshot_ubuntu20.04_2020-10-18_09:02:29.png

参考文献

  1. Install Ubuntu 18.04 Server on btrfs - work-work.work
  2. 18.04 - Where are my BTRFS subvolumes? - Ask Ubuntu
  3. Ubuntu 20.04 with btrfs-luks-RAID1 full disk encryption including /boot and auto-apt snapshots with Timeshift | Willi Mutschler
  4. Using Btrfs for Easy Backup and Rollback | John Ramsden
  5. Creating openSUSE-style btrfs root partition & subvolumes
  6. SDB:BTRFS - openSUSE Wiki
  7. swap - Can I have a swapfile on btrfs? - Ask Ubuntu
4
9
2

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
4
9