Ubuntu 14.04に基づいてローカル移行プロセスを開発しています。ステップは次のとおりです。
/
/sbin/lvcreate -s -n ...
LVM()を使用してスナップショットを撮る- 移行スクリプトの実行
- 成功時
- LVMを使用した変更のコミット(
/sbin/lvremove -f ...
)
- LVMを使用した変更のコミット(
- 失敗した場合
- また覆うLVMを使用したスナップショット(
/sbin/lvconvert --merge ...
) - 再起動
- また覆うLVMを使用したスナップショット(
- 成功時
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秒待つように指示されています。それまで使用できない場合は、放棄してビジボックスに委任してください。次の方法で遅延時間を増やすことができます。
- 行の値を
/etc/default/grub
大きい数に変更するには、編集してください。単位は秒です。rootdelay
GRUB_CMDLINE_LINUX_DEFAULT
update-grub
端末で実行してGRUB2を更新してください。
注:上記の手順に従ってシステムを正常に起動できる必要があり、LiveCDでは実行されません。システムが正常に起動できない場合は、rootdelay
GRUBの「e」キーを押して一時的に変更できます。これにより、編集モードに入りカーネルパラメータを変更でき、ENTERを押して更新されたパラメータから起動できます。
ヒント:移行プロセスでは、LVM(およびファイルシステム)を使用する代わりにBTRFSを使用することを検討できます。仕組みは次のとおりです。
- @(ルート)サブボリュームのスナップショットを撮る
- 移行スクリプトを実行します。
- 成功情報:
- 何もしないと、変更はライブシステムに適用されます。
- 失敗した場合:
mv
@サブボリュームがサブボリュームIDではなく名前でマウントされていると仮定して、サブボリュームの名前を変更して@の(読み取り/書き込み)スナップショットと置き換えます。- 再起動してください。遅延は必要ありません。
- これで、古い@subvolumeを簡単に削除できます。
- 成功情報: