LVMスナップショットから復元するときにBusyBoxから起動するのを防ぐ方法は?

LVMスナップショットから復元するときにBusyBoxから起動するのを防ぐ方法は?

Ubuntu 14.04に基づいてローカル移行プロセスを開発しています。ステップは次のとおりです。

  1. //sbin/lvcreate -s -n ...LVM()を使用してスナップショットを撮る
  2. 移行スクリプトの実行
    1. 成功時
      1. LVMを使用した変更のコミット(/sbin/lvremove -f ...
    2. 失敗した場合
      1. また覆うLVMを使用したスナップショット(/sbin/lvconvert --merge ...
      2. 再起動

LVMスナップショットの回復はすぐには実行されず、次の初期化が予定されているため、そのコマンドに従って再起動コマンドを実行しました。

大規模なLVMスナップショットの違いで - (たとえば、スナップショットの取得と復元の間で大きな変更が行われました) - 時には、OSの起動プロセスが停止し、正常に起動するのではなく、BusyBoxシェルに移動することがありました。

LVMスナップショットから復元するときにBusyBoxから起動するのを防ぐ方法は?

コンテンツ/proc/cmdline:

BOOT_IMAGE=/vmlinuz-3.19.0-80-generic root=/dev/mapper/root_vg-root_lv ro nomodeset i915.modeset=0 noplymouth acpi_osi=Linux cpi_backlight=vendor rootdelay=90 rootwait=180

コンテンツ/etc/default/grub:

# If you change this file, run 'update-grub' afterwards to update

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset i915.modeset=0 noplymouth acpi_osi=Linux cpi_backlight=vendor rootdelay=90 rootwait=180"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

ここに画像の説明を入力してください。

Gave up waiting for root device. Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/root_vg-root_lv does not exist. Dropping to a shell!

BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash)
Enter 'help' for a lost of built-in commands.

(initramfs)

ベストアンサー1

現在、Linuxカーネルは、ルートデバイスが利用可能になるまで90秒待つように指示されています。それまで使用できない場合は、放棄してビジボックスに委任してください。次の方法で遅延時間を増やすことができます。

  1. 行の値を/etc/default/grub大きい数に変更するには、編集してください。単位は秒です。rootdelayGRUB_CMDLINE_LINUX_DEFAULT
  2. update-grub端末で実行してGRUB2を更新してください。

注:上記の手順に従ってシステムを正常に起動できる必要があり、LiveCDでは実行されません。システムが正常に起動できない場合は、rootdelayGRUBの「e」キーを押して一時的に変更できます。これにより、編集モードに入りカーネルパラメータを変更でき、ENTERを押して更新されたパラメータから起動できます。

ヒント:移行プロセスでは、LVM(およびファイルシステム)を使用する代わりにBTRFSを使用することを検討できます。仕組みは次のとおりです。

  1. @(ルート)サブボリュームのスナップショットを撮る
  2. 移行スクリプトを実行します。
    • 成功情報:
      1. 何もしないと、変更はライブシステムに適用されます。
    • 失敗した場合:
      1. mv@サブボリュームがサブボリュームIDではなく名前でマウントされていると仮定して、サブボリュームの名前を変更して@の(読み取り/書き込み)スナップショットと置き換えます。
      2. 再起動してください。遅延は必要ありません。
      3. これで、古い@subvolumeを簡単に削除できます。

おすすめ記事