Linux 救援 VM 中的 Chroot 環境

適用於:✔️ Linux VM

備註

本文所參考的 CentOS 是一種 Linux 發行版,且將到達生命周期結束(EOL)。 請考慮您的使用方式並據此進行規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引。

總結

本文說明如何在 Linux 中對救援虛擬機(VM)上的 chroot 環境進行故障排除。

Tip

為了簡化救援虛擬機的故障排除,建議使用 chroot 自動化工具 自動偵測所需的分割區,執行必要的掛載操作,並在執行復原操作前先準備好 chroot 環境。

Ubuntu

  1. 請停止或解除分配受到影響的虛擬機器。

  2. 使用受控磁碟,在相同資源群組和位置中建立相同世代和相同作系統版本的救援 VM。

  3. 使用 Azure 入口網站擷取受影響虛擬機作業系統磁碟的快照。

  4. 從OS磁碟的快照集建立磁碟,並將其連結至救援 VM。

  5. 建立磁碟之後,請排除救援 VM 中 chroot 環境的故障。

    1. 使用下列命令,以根使用者身分存取您的 VM:

      sudo su -

    2. 尋找磁碟。 您用來探索新磁碟的方法可能會有所不同。 建議您使用 dmesg 命令。 下列範例會使用 dmesg 來篩選小型電腦系統介面 (SCSI) 磁碟:

      dmesg | grep SCSI

      命令輸出類似下列範例。 在此範例中,/dev/sdc 磁碟是您需要的:

      [    0.294784] SCSI subsystem initialized
      [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
      [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
      [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
      [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
      
    3. 使用下列命令來存取 chroot 環境:

      mkdir /rescue
      mount /dev/sdc1 /rescue
      mount /dev/sdc16 /rescue/boot 
      mount /dev/sdc15 /rescue/boot/efi
      
      
      mount -t proc /proc /rescue/proc
      mount -t sysfs /sys /rescue/sys
      mount -o bind /dev /rescue/dev
      mount -o bind /dev/pts /rescue/dev/pts
      mount -o bind /run /rescue/run
      chroot /rescue
      

      備註

      在較新的 Ubuntu 映像上,/boot 資料夾只有一個分割區。 如果您要復原較舊的 Ubuntu 映像,您可以忽略掛接 /dev/sdc16 至 /rescue/boot時發生的任何錯誤。 不過,在完成這些步驟之後,請確定中有 /rescue/boot 檔案。

      如果在掛接期間發生錯誤,您可以放心地忽略在步驟 5e 中卸除 /rescue/boot 時可能發生的錯誤。

    4. 針對 chroot 環境進行故障排除。

    5. 使用下列命令結束 chroot 環境:

      exit
      
      umount /rescue/proc/
      umount /rescue/sys/
      umount /rescue/dev/pts
      umount /rescue/dev/
      umount /rescue/run
      cd /
      umount /rescue/boot/efi
      umount /rescue/boot
      umount /rescue
      

      備註

      如果您收到「無法卸除 /rescue」錯誤訊息,請將-l選項新增至umount命令。 例如: umount -l /rescue 。

  6. 從救援 VM 卸載磁碟,然後執行與原始 VM 的磁碟替換操作。

  7. 啟動原始 VM,並檢查其連線能力。

RHEL/Centos/Oracle 6。x 、Oracle 8。x 和 RHEL/Centos 7。x 和 RAW 分割區

  1. 請停止或解除分配受到影響的虛擬機器。

  2. 使用受控磁碟,在相同資源群組 (RSG) 和位置中建立相同 OS 版本的救援 VM 映射。

  3. 使用 Azure 入口網站擷取受影響虛擬機作業系統磁碟的快照。

  4. 從OS磁碟的快照集建立磁碟,然後將它連結至救援 VM。

  5. 建立磁碟之後,請排除救援 VM 中 chroot 環境的故障。

    1. 使用下列命令,以根使用者身分存取您的 VM:

      sudo su -

    2. 尋找磁碟。 您用來探索新磁碟的方法可能會有所不同。 建議您使用 dmesg 命令。 下列範例會使用 dmesg 來篩選 SCSI 磁碟:

      dmesg | grep SCSI

      命令輸出類似下列範例。 在此範例中,/dev/sdc 磁碟是您需要的:

      [    0.294784] SCSI subsystem initialized
      [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
      [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
      [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
      [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
      
    3. 使用下列命令來存取 chroot 環境:

      mkdir /rescue
      mount -o nouuid /dev/sdc2 /rescue
      mount -o nouuid /dev/sdc1 /rescue/boot/
      
      mount -t proc /proc /rescue/proc
      mount -t sysfs /sys /rescue/sys
      mount -o bind /dev /rescue/dev
      mount -o bind /dev/pts /rescue/dev/pts
      mount -o bind /run /rescue/run
      chroot /rescue
      
    4. 針對 chroot 環境進行故障排除。

    5. 使用下列命令結束 chroot 環境:

      exit
      
      umount /rescue/proc/
      umount /rescue/sys/
      umount /rescue/dev/pts
      umount /rescue/dev/
      umount /rescue/run
      cd /
      umount /rescue/boot/
      umount /rescue
      

      備註

      如果您收到「無法卸除 /rescue」錯誤訊息,請將-l選項新增至umount命令。 例如: umount -l /rescue 。

  6. 從救援 VM 卸載磁碟,然後執行與原始 VM 的磁碟替換操作。

  7. 啟動原始 VM,並檢查其連線能力。

RHEL/Centos 7。x 和 8。x 與 LVM

備註

如果您的原始 VM 包含 OS 磁碟上的邏輯磁碟區管理員 (LVM),請使用包含 OS 磁碟原始分割區的映像檔來建立救援虛擬機。

  1. 請停止或解除分配受到影響的虛擬機器。

  2. 使用受控磁碟,在相同資源群組 (RSG) 和位置中,建立相同 OS 版本的救援 VM 映射。

  3. 使用 Azure 入口網站擷取受影響虛擬機作業系統磁碟的快照。

  4. 從OS磁碟的快照集建立磁碟,並將其連結至救援 VM。

  5. 建立磁碟之後,針對救援 VM 中的 chroot 環境進行疑難解答。

    1. 使用下列命令,以根使用者身分存取您的 VM:

      sudo su -

    2. 尋找磁碟。 您用來探索新磁碟的方法可能會有所不同。 我們建議您使用 dmesg 命令。 下列範例會使用 dmesg 來篩選 SCSI 磁碟:

      dmesg | grep SCSI

      命令輸出類似下列範例。 在此範例中,/dev/sdc 磁碟是您需要的:

      [    0.294784] SCSI subsystem initialized
      [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
      [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
      [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
      [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
      
    3. 使用下列命令來啟動邏輯磁碟區群組:

      vgscan --mknodes
      vgchange -ay
      lvscan
      
    4. 請使用命令lsblk來擷取 LVM 名稱:

      lsblk
      
      NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda                 8:0    0   64G  0 disk
      ├─sda1              8:1    0  500M  0 part /boot
      ├─sda2              8:2    0   63G  0 part /
      sdb                 8:16   0    4G  0 disk
      └─sdb1              8:17   0    4G  0 part /mnt/resource
      sdc                 8:0    0   64G  0 disk
      ├─sdc1              8:1    0  500M  0 part
      ├─sdc2              8:2    0   63G  0 part
      ├─sdc3              8:3    0    2M  0 part
      ├─sdc4              8:4    0   63G  0 part
        ├─rootvg-tmplv  253:0    0    2G  0 lvm  
        ├─rootvg-usrlv  253:1    0   10G  0 lvm  
        ├─rootvg-optlv  253:2    0    2G  0 lvm  
        ├─rootvg-homelv 253:3    0    1G  0 lvm  
        ├─rootvg-varlv  253:4    0    8G  0 lvm  
        └─rootvg-rootlv 253:5    0    2G  0 lvm
      
    5. 使用下列命令來準備 chroot dir:

      mkdir /rescue
      mount /dev/mapper/rootvg-rootlv /rescue
      mount /dev/mapper/rootvg-varlv /rescue/var
      mount /dev/mapper/rootvg-homelv /rescue/home
      mount /dev/mapper/rootvg-usrlv /rescue/usr
      mount /dev/mapper/rootvg-tmplv /rescue/tmp
      mount /dev/mapper/rootvg-optlv /rescue/opt
      mount /dev/sdc2 /rescue/boot/
      mount /dev/sdc1 /rescue/boot/efi
      

      /rescue/boot/ 和 /rescue/boot/efi 分割區不一定位於 /dev/sdc2 或 /dev/sdc1。 如果您嘗試掛接這些分割區時發生錯誤,請檢查 /rescue/etc/fstab 檔案,以確定損壞的作業系統磁碟中 /boot 和 /boot/efi 分割區的正確裝置。 然後,執行 blkid 命令,並將 /rescue/etc/fstab 檔案中的通用唯一標識符 (UUID) 與命令的blkid輸出進行比較,以判斷修復 VM 中掛接 /rescue/boot/ 和 /rescue/boot/efi 的正確裝置。

      如果mount /dev/mapper/rootvg-optlv /rescue/opt命令失敗,可能是因為rootvg-optlv卷組不存在。 在此情況下,您可以略過此命令。

    6. 使用下列命令存取 chroot 環境:

      mount -t proc /proc /rescue/proc
      mount -t sysfs /sys /rescue/sys
      mount -o bind /dev /rescue/dev
      mount -o bind /dev/pts /rescue/dev/pts
      mount -o bind /run /rescue/run
      chroot /rescue
      
    7. 針對 chroot 環境進行故障排除。

    8. 使用下列命令結束 chroot 環境:

      exit
      
      umount /rescue/proc/
      umount /rescue/sys/
      umount /rescue/dev/pts
      umount /rescue/dev/
      umount /rescue/run
      cd /
      umount /rescue/boot/efi
      umount /rescue/boot
      umount /rescue/home
      umount /rescue/var
      umount /rescue/usr
      umount /rescue/tmp
      umount /rescue/opt
      umount /rescue
      

      備註

      如果您收到「無法卸除 /rescue」錯誤訊息,請將-l選項新增至umount命令。 例如: umount -l /rescue 。

  6. 從救援 VM 卸載磁碟,然後執行與原始 VM 的磁碟替換操作。

  7. 啟動原始 VM,並檢查其連線能力。

使用相同的 LVM 映像

備註

如果您必須使用相同的 LVM 映射來部署救援 VM,您必須使用 LVM 修改救援 VM 的某些層面。

下列命令將在暫時為復原作業建立的復原(救援)VM 上執行。

  1. 使用下列命令來檢查磁碟的狀態,再連接您要救援的磁碟:

    sudo lsblk -f
    
    NAME              FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1            vfat              93DA-8C20                              /boot/efi
    ├─sda2            xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sda3
    └─sda4            LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─rootvg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─rootvg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─rootvg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─rootvg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─rootvg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─rootvg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    sdb
    └─sdb1            ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8   /mnt
    
  2. 將您想要解救的磁碟連結為數據磁碟驅動器。

  3. 使用下列命令再次檢查磁碟:

    sudo lsblk -f
    
    NAME              FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1            vfat              93DA-8C20                              /boot/efi
    ├─sda2            xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sda3
    └─sda4            LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─rootvg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─rootvg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─rootvg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─rootvg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─rootvg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─rootvg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    sdb
    └─sdb1            ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8   /mnt
    sdc
    ├─sdc1            vfat              93DA-8C20
    ├─sdc2            xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d
    ├─sdc3
    └─sdc4            LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    

    命令輸出不會立即顯示 LVM 結構。

  4. 使用下列命令檢視實體 LVM 分割區:

    sudo pvs
    

    此輸出會顯示有關重複實體磁碟區 (PVs) 的警告:

    WARNING: Not using lvmetad because duplicate PVs were found.
    WARNING: Use multipath or vgimportclone to resolve duplicate PVs?
    WARNING: After duplicates are resolved, run "pvscan --cache" to enable lvmetad.
    WARNING: Not using device /dev/sdc4 for PV pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU.
    WARNING: PV pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU prefers device /dev/sda4 because device is used by LV.
    PV         VG     Fmt  Attr PSize   PFree
    /dev/sda4  rootvg lvm2 a--  <63.02g <38.02g
    
  5. 使用vmimportclone 命令,以其他名稱從數據驅動器匯入rootvg。

    此命令會變更 PV 的 UUID,並啟動它:

    sudo vgimportclone -n rescuemevg /dev/sdc4
    
    WARNING: Not using device /dev/sdc4 for PV <PV>.
    WARNING: PV pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU prefers device /dev/sda4 because device is used by LV.
    
    sudo vgchange -a y rescuemevg 
    
    6 logical volume(s) in volume group "rescuemevg" now active
    
  6. 使用下列命令來確認名稱變更:

    sudo lsblk -f
    
    NAME                  FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1                vfat              93DA-8C20                              /boot/efi
    ├─sda2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sda3
    └─sda4                LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─rootvg-tmplv      xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─rootvg-usrlv      xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─rootvg-optlv      xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─rootvg-homelv     xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─rootvg-varlv      xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─rootvg-rootlv     xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    sdb
    └─sdb1                ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8   /mnt
    sdc
    ├─sdc1                vfat              93DA-8C20
    ├─sdc2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d
    ├─sdc3
    └─sdc4                LVM2_member       BbZsAT-5oOK-nITn-bHFW-IVyS-y0O3-93oDes
    ├─rescuemevg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207
    ├─rescuemevg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d
    ├─rescuemevg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3
    ├─rescuemevg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0
    ├─rescuemevg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86
    └─rescuemevg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809
    
  7. 使用下列命令將救援 VM 的 rootvg 重新命名:

    sudo vgrename rootvg oldvg
    
    Volume group "rootvg" successfully renamed to "oldvg"
    
  8. 使用下列命令檢查磁碟:

    sudo lsblk -f
    
    NAME                  FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1                vfat              93DA-8C20                              /boot/efi
    ├─sda2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sda3
    └─sda4                LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─oldvg-tmplv       xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─oldvg-usrlv       xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─oldvg-optlv       xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─oldvg-homelv      xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─oldvg-varlv       xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─oldvg-rootlv      xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    sdb
    └─sdb1                ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8   /mnt
    sdc
    ├─sdc1                vfat              93DA-8C20
    ├─sdc2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d
    ├─sdc3
    └─sdc4                LVM2_member       BbZsAT-5oOK-nITn-bHFW-IVyS-y0O3-93oDes
    ├─rescuemevg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207
    ├─rescuemevg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d
    ├─rescuemevg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3
    ├─rescuemevg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0
    ├─rescuemevg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86
    └─rescuemevg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809
    
  9. 掛載來自資料驅動器的文件系統。

    使用 xfs時,請指定 -o nouuid 選項以避免與 UUID 發生衝突,並掛接所需的檔案系統以執行 chroot。 這個選項不適用於 ext4 檔案系統,因此您必須從這類案例中的命令中移除此選項:

    sudo mkdir /rescue
    sudo mount -o nouuid /dev/mapper/rescuemevg-rootlv /rescue
    sudo mount -o nouuid  /dev/mapper/rescuemevg-homelv /rescue/home
    sudo mount -o nouuid  /dev/mapper/rescuemevg-optlv /rescue/opt 
    sudo mount -o nouuid  /dev/mapper/rescuemevg-tmplv /rescue/tmp 
    sudo mount -o nouuid  /dev/mapper/rescuemevg-usrlv /rescue/usr 
    sudo mount -o nouuid  /dev/mapper/rescuemevg-varlv /rescue/var 
    sudo mount -o nouuid  /dev/sdc2 /rescue/boot
    sudo mount /dev/sdc1 /rescue/boot/efi
    
    sudo mount -t proc /proc /rescue/proc 
    sudo mount -t sysfs /sys /rescue/sys
    sudo mount -o bind /dev /rescue/dev 
    sudo mount -o bind /dev/pts /rescue/dev/pts
    sudo mount -o bind /run /rescue/run
    

    /rescue/boot/ 和 /rescue/boot/efi 分割區不一定位於 /dev/sdc2 或 /dev/sdc1。 如果您在嘗試掛接這些分割區時發生錯誤,請檢查 /rescue/etc/fstab 檔案,以判斷中斷 OS 磁盤中 /boot 和 /boot/efi 分割區的正確裝置。 然後,執行 命令,blkid並將 /rescue/etc/fstab 檔案中的 UUID 與命令的blkid輸出進行比較,以判斷修復 VM 上掛接 /rescue/boot/ 和 /rescue/boot/efi 的正確裝置。 重複的 UUID 可能會出現在輸出中。 在此案例中,掛載符合步驟 5 中裝置信件的分割區。 在本節的範例中,您應該掛接的正確分割區是 /dev/sdc。 dev/sda 代表目前正在使用的作系統,應該忽略。

  10. 使用下列命令確認掛接:

    sudo lsblk -f
    
    NAME                  FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1                vfat              93DA-8C20                              /boot/efi
    ├─sda2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sda3
    └─sda4                LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─oldvg-tmplv       xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─oldvg-usrlv       xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─oldvg-optlv       xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─oldvg-homelv      xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─oldvg-varlv       xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─oldvg-rootlv      xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    sdb
    └─sdb1                ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8   /mnt
    sdc
    ├─sdc1                vfat              93DA-8C20                              /rescue/boot/efi
    ├─sdc2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /rescue/boot
    ├─sdc3
    └─sdc4                LVM2_member       BbZsAT-5oOK-nITn-bHFW-IVyS-y0O3-93oDes
    ├─rescuemevg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207   /rescue/tmp
    ├─rescuemevg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /rescue/usr
    ├─rescuemevg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /rescue/opt
    ├─rescuemevg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /rescue/home
    ├─rescuemevg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /rescue/var
    └─rescuemevg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /rescue
    
  11. 使用以下命令來執行 chroot:

    sudo chroot /rescue/
    
  12. 使用下列命令來驗證位於 chroot 環境內的掛接:

    sudo lsblk -f
    
    NAME                  FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1                vfat              93DA-8C20
    ├─sda2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d
    ├─sda3
    └─sda4                LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─oldvg-tmplv       xfs               9098eb05-0176-4997-8132-9152a7bef207
    ├─oldvg-usrlv       xfs               2f9ff36c-742d-4914-b463-d4152801b95d
    ├─oldvg-optlv       xfs               aeacea8e-3663-4569-af25-c52357f8a0a3
    ├─oldvg-homelv      xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0
    ├─oldvg-varlv       xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86
    └─oldvg-rootlv      xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809
    sdb
    └─sdb1                ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8
    sdc
    ├─sdc1                vfat              93DA-8C20                              /boot/efi
    ├─sdc2                xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sdc3
    └─sdc4                LVM2_member       BbZsAT-5oOK-nITn-bHFW-IVyS-y0O3-93oDes
    ├─rescuemevg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─rescuemevg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─rescuemevg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─rescuemevg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─rescuemevg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─rescuemevg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    

    現在,rescuemevg-rootlv 被掛載於 /。

  13. 使用下列命令,將磁碟區群組 (VG) 重新命名,以保持一致性。 重新命名 VG 可協助您避免在重新產生 initrd 並重新啟動原始 VM 上的磁碟時可能發生的問題。

    sudo vgrename rescuemevg rootvg
    
    Volume group "rescuemevg" successfully renamed to "rootvg"
    
  14. 使用下列命令來確認變更:

    sudo lsblk -f
    
    NAME              FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda
    ├─sda1            vfat              93DA-8C20
    ├─sda2            xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d
    ├─sda3
    └─sda4            LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
    ├─oldvg-tmplv   xfs               9098eb05-0176-4997-8132-9152a7bef207
    ├─oldvg-usrlv   xfs               2f9ff36c-742d-4914-b463-d4152801b95d
    ├─oldvg-optlv   xfs               aeacea8e-3663-4569-af25-c52357f8a0a3
    ├─oldvg-homelv  xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0
    ├─oldvg-varlv   xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86
    └─oldvg-rootlv  xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809
    sdb
    └─sdb1            ext4              e72e7c2c-db27-4a73-a97e-01d63d21ccf8
    sdc
    ├─sdc1            vfat              93DA-8C20                              /boot/efi
    ├─sdc2            xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
    ├─sdc3
    └─sdc4            LVM2_member       BbZsAT-5oOK-nITn-bHFW-IVyS-y0O3-93oDes
    ├─rootvg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
    ├─rootvg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
    ├─rootvg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
    ├─rootvg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0   /home
    ├─rootvg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
    └─rootvg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
    
  15. 執行必要的活動以營救OS。 這些操作可能包括重新產生 initramfs 或 GRUB 設定。

  16. 使用下列命令結束 chroot 環境:

    sudo exit
    
  17. 從救援 VM 卸載並卸下資料硬碟,然後使用下列命令,與原始 VM 進行磁碟交換:

    umount /rescue/run/
    umount /rescue/dev/pts/
    umount /rescue/dev/ 
    umount /rescue/sys/
    umount /rescue/proc
    umount /rescue/boot/efi
    umount /rescue/boot
    umount /rescue/var
    umount /rescue/usr
    umount /rescue/tmp
    umount /rescue/opt
    umount /rescue/home
    umount /rescue
    
  18. 啟動原始 VM,並確認其功能。

甲骨文 7.x

  1. 請停止或解除分配受到影響的虛擬機器。

  2. 使用受控磁碟,在相同資源群組 (RSG) 和位置中建立相同 OS 版本的救援 VM 映射。

  3. 使用 Azure 入口網站擷取受影響虛擬機作業系統磁碟的快照。

  4. 從OS磁碟的快照集建立磁碟,並將其連結至救援 VM。

  5. 建立磁碟之後,請排除救援 VM 中 chroot 環境的故障。

    1. 使用下列命令,以根使用者身分存取您的 VM:

      sudo su -

    2. 尋找磁碟。 您用來探索新磁碟的方法可能會有所不同。 建議您使用 dmesg 命令。 下列範例會使用 dmesg 來篩選 SCSI 磁碟:

      dmesg | grep SCSI

      命令輸出類似下列範例。 在這個範例中,您想要的是 /dev/sdc 磁碟:

      [    0.294784] SCSI subsystem initialized
      [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
      [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
      [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
      [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
      
    3. 使用下列命令來存取 chroot 環境:

      mkdir /rescue
      mount -o nouuid /dev/sdc2 /rescue
      mount -o nouuid /dev/sdc1 /rescue/boot/
      mount /dev/sdc15 /rescue/boot/efi
      
      mount -t proc /proc /rescue/proc
      mount -t sysfs /sys /rescue/sys
      mount -o bind /dev /rescue/dev
      mount -o bind /dev/pts /rescue/dev/pts
      mount -o bind /run /rescue/run
      chroot /rescue
      
    4. 針對 chroot 環境進行故障排除。

    5. 使用下列命令結束 chroot 環境:

      exit
      
      umount /rescue/proc/
      umount /rescue/sys/
      umount /rescue/dev/pts
      umount /rescue/dev/
      umount /rescue/run
      umount /rescue/boot/efi
      umount /rescue/boot
      umount /rescue
      

      備註

      如果您收到「無法卸除 /rescue」錯誤訊息,請將-l選項新增至umount命令。 例如: umount -l /rescue 。

  6. 從救援 VM 卸載磁碟,然後執行與原始 VM 的磁碟替換操作。

  7. 啟動原始 VM,並檢查其連線能力。

SUSE-SLES 12 SP4、SUSE-SLES 12 SP4 用於 SAP、SUSE-SLES 15 SP1 和 SUSE-SLES 15 SP1 用於 SAP

  1. 請停止或解除分配受到影響的虛擬機器。

  2. 使用受控磁碟,在相同資源群組 (RSG) 和位置中建立相同 OS 版本的救援 VM 映射。

  3. 使用 Azure 入口網站擷取受影響虛擬機作業系統磁碟的快照。

  4. 從OS磁碟的快照集建立磁碟,並將其連結至救援 VM。

  5. 建立磁碟之後,針對救援 VM 中的 chroot 環境進行疑難解答。

    1. 使用下列命令,以根使用者身分存取您的 VM:

      sudo su -

    2. 尋找磁碟。 您用來探索新磁碟的方法可能會有所不同。 建議您使用 dmesg 命令。 下列範例會使用 dmesg 來篩選 SCSI 磁碟:

      dmesg | grep SCSI

      命令輸出類似下列範例。 在這個範例中,您想要的是 /dev/sdc 磁碟:

      [    0.294784] SCSI subsystem initialized
      [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
      [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
      [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
      [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
      
    3. 使用下列命令來存取 chroot 環境:

      mkdir /rescue
      mount -o nouuid /dev/sdc4 /rescue
      mount -o nouuid /dev/sdc3 /rescue/boot/
      mount /dev/sdc2 /rescue/boot/efi
      
      mount -t proc /proc /rescue/proc
      mount -t sysfs /sys /rescue/sys
      mount -o bind /dev /rescue/dev
      mount -o bind /dev/pts /rescue/dev/pts
      mount -o bind /run /rescue/run
      chroot /rescue
      
    4. 針對 chroot 環境進行故障排除。

    5. 使用下列命令結束 chroot 環境:

      exit
      
      umount /rescue/proc/
      umount /rescue/sys/
      umount /rescue/dev/pts
      umount /rescue/dev/
      umount /rescue/run
      umount /rescue/boot/efi
      umount /rescue/boot
      umount /rescue
      

      備註

      如果您收到錯誤訊息「無法卸除 /rescue」,請將 -l 選項加入umount 命令,例如 umount -l /rescue。

  6. 從救援 VM 卸載磁碟,然後執行與原始 VM 的磁碟替換操作。

  7. 啟動原始 VM,並檢查其連線能力。

後續步驟

a