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을 간단히 삭제할 수 있습니다.
- 성공 정보: