Ubuntu 18.04: LVMが有効だと起動時間が遅くなる問題

LVMが有効な場合に起動時間が遅くなる問題の回避策を記載します。LVMが無効な場合はここに書かれていることを実行する必要はありません。

1 LVMが有効だと起動時間が遅くなる問題

LVMを有効にしてインストールした場合、initrdの処理に時間がかかってしまいます。

$ systemd-analyze
Startup finished in 34.003s (kernel) + 1.843s (userspace) = 35.847s
graphical.target reached after 1.822s in userspac

以下の/usr/share/initramfs-tools/scripts/localのwait-for-rootの呼び出しで、slumberに設定されたタイムアウトの30秒が経過してしまいます。

local_device_setup()
{
<snip>
  case "$dev_id" in
  UUID=*|LABEL=*|/dev/*)
    FSTYPE=$( wait-for-root "$dev_id" $slumber )
    ;;
  *)
    wait_for_udev 10
    ;;
  esac

上記のdev_idには/etc/initramfs-tools/conf.d/resumeで定義されたRESUMEの値が入っています。このUUIDはスワップ領域のボリュームのものです。

$ cat /etc/initramfs-tools/conf.d/resume
RESUME=UUID=67b3fe6f-1ec4-413f-8c5a-1136bc7f3270

2 LVMが有効だと起動時間が遅くなる問題の回避策

RESUME変数にUUIDではなくデバイスファイルのパスを設定します。

$ sudo sed -e 's/^RESUME=/#RESUME=/g' \
     -i /etc/initramfs-tools/conf.d/resume
$ echo "RESUME=/dev/mapper/ubuntu--vg-swap_1" | \
  sudo tee -a /etc/initramfs-tools/conf.d/resume

initrdを作り直して再起動します。

$ sudo update-initramfs -u
$ sudo reboot

カーネルの起動が30秒早くなりました。ハイバーネーションも動作します。

$ systemd-analyze
Startup finished in 1.920s (kernel) + 2.370s (userspace) = 4.291s
graphical.target reached after 2.196s in userspace