> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/knowledge-base/vi/backup-dr/rhel9-boot-failure-clone-snapshot-restore.md).

# VM thuộc họ RHEL 9 không khởi động được sau khi sao chép hoặc khôi phục snapshot

Hướng dẫn này bao gồm một lỗi khởi động cụ thể: một VM thuộc họ RHEL 9 (RHEL, AlmaLinux 9, Rocky Linux 9 hoặc CentOS Stream 9) khởi động bình thường trên máy nguồn, sau đó thất bại trên phiên bản sao chép hoặc khôi phục từ snapshot vì tệp system.devices của LVM không còn khớp với số serial ổ đĩa của VM. Các bước dưới đây sẽ sửa VM từ chế độ cứu hộ. nếu bạn chưa thực hiện sao chép hoặc khôi phục, xem ghi chú "*Ngăn chặn điều này trên các bản sao, snapshot hoặc bản xuất trong tương lai*" bên dưới.

## Triệu chứng

* Sau khi khôi phục VM từ snapshot hoặc sao chép VM, VM RHEL 9 không khởi động được (chuyển sang chế độ khẩn cấp hoặc treo ở lúc khởi động)
* Ở chế độ cứu hộ, vgchange -ay không tạo ra đầu ra và lvdisplay không hiển thị gì

## Tổng quan

RHEL 9 và các bản phái sinh của nó (AlmaLinux 9, Rocky Linux 9, CentOS Stream 9) sử dụng một tệp thiết bị LVM tại `/etc/lvm/devices/system.devices` tệp này cho phép liệt kê trắng rõ ràng các thiết bị khối theo định danh duy nhất của chúng — đáng chú ý nhất là số serial của ổ đĩa. Khi khởi động, LVM chỉ xem xét các thiết bị được liệt kê trong tệp này khi ghép các nhóm volume. Nếu số serial mà nó thấy không khớp với số đã được ghi lại khi tệp được tạo, LVM sẽ không kích hoạt nhóm volume gốc và VM sẽ rơi vào shell khẩn cấp dracut.

Điều này có nghĩa là bất kỳ thao tác nào làm VM có số serial ổ đĩa mới — sao chép VM với số serial phần cứng mới được tạo, hoặc khôi phục snapshot theo cách làm thay đổi số serial — sẽ khiến quá trình khởi động thất bại.

{% hint style="info" %}
**VergeOS 26.1.5 và các phiên bản mới hơn**

Bắt đầu từ VergeOS 26.1.5, việc sao chép VM và khôi phục snapshot **giữ nguyên số serial ổ đĩa gốc theo mặc định**, loại bỏ sự không khớp số serial cho hầu hết các thao tác sao chép và khôi phục. Vấn đề này thường ảnh hưởng nhất đến:

* Các bản sao hoặc khôi phục mà tùy chọn tạo số serial phần cứng mới được chọn rõ ràng
* Môi trường đang chạy các phiên bản VergeOS trước 26.1.5
  {% endhint %}

{% hint style="info" %}
**Nhập từ một hypervisor khác**

Cùng lỗi khởi động này cũng có thể xảy ra khi nhập một VM từ hypervisor khác *nếu* VM đã được xuất mà không giữ nguyên số serial thiết bị gốc của nó. Ngoài ra, VM đã nhập có thể không khởi động được do thiếu trình điều khiển virtio cho phần cứng VergeOS. Xem [Hướng dẫn nhập VM Linux](/knowledge-base/vi/virtual-machines/import-rhel-centos-vm.md) để biết các bước bao gồm điều chỉnh cấu hình VM và tạo lại initramfs với trình điều khiển virtio.
{% endhint %}

{% hint style="info" %}
**Ngăn chặn điều này trên các bản sao, snapshot hoặc bản xuất trong tương lai**

Nếu bạn vẫn còn quyền truy cập vào một VM nguồn đang hoạt động, bạn có thể tránh lỗi khởi động trên các bản sao, snapshot hoặc bản xuất trong tương lai từ hypervisor khác bằng cách vô hiệu hóa tệp thiết bị LVM *trước* thao tác. Đặt `use_devicesfile = 0` trong `/etc/lvm/lvm.conf` trên máy khách. LVM sẽ quay về quét tất cả các thiết bị khối khả dụng bất kể số serial. Tệp thiết bị LVM chủ yếu được thiết kế cho các máy chủ kết nối với SAN fabric, nơi một máy có thể nhìn thấy nhiều thiết bị khối không thuộc về nó; trong môi trường VergeOS điển hình, một VM chỉ nhìn thấy các ổ đĩa ảo được gán rõ ràng cho nó, vì vậy sự bảo vệ mà nó cung cấp hiếm khi cần thiết. Xem của Red Hat [Giới hạn khả năng hiển thị và sử dụng thiết bị LVM](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/limiting-lvm-device-visibility-and-usage_configuring-and-managing-logical-volumes) để biết thêm về tệp thiết bị.
{% endhint %}

## Điều kiện tiên quyết

* Quyền truy cập vào giao diện VergeOS và console VM
* Một ISO cài đặt thuộc họ RHEL 9 có sẵn trong media VergeOS (chỉ cần nếu VM không thể vào được menu GRUB)

## Các bước

### 1. Khởi động vào môi trường cứu hộ

VM rất có thể sẽ không khởi động bình thường được. Hãy dùng một trong các phương pháp sau để vào được shell đang hoạt động.

#### Tùy chọn A — GRUB Rescue Kernel (khuyến nghị)

* Bật VM và mở console trong VergeOS.
* Trong lúc khởi động, nhấn và giữ **Shift** (BIOS) hoặc **Esc** (UEFI) để truy cập menu GRUB.
* Chọn **Tùy chọn nâng cao** và chọn mục kernel **cứu hộ** .
* Làm theo các lời nhắc — nếu được hỏi có muốn gắn filesystem gốc hay không, hãy chọn **Tiếp tục**.

#### Tùy chọn B — Khởi động từ ISO cài đặt

Nếu không vào được menu GRUB hoặc VM không đi tới được bước đó:

* Trong VergeOS, gắn một ISO cài đặt thuộc họ RHEL 9 vào VM dưới dạng ổ CD/DVD.
* Điều chỉnh thứ tự khởi động của VM để khởi động từ ISO trước, hoặc dùng tùy chọn boot một lần.
* Tại menu trình cài đặt, điều hướng đến **Khắc phục sự cố → Cứu hộ hệ thống \[distro]**.
* Khi được hỏi về việc gắn hệ thống đã cài đặt, chọn tùy chọn **1** (gắn dưới `/mnt/sysimage`).
* Chọn **Shell** để mở dấu nhắc lệnh.

{% hint style="warning" %}
**Chế độ cứu hộ từ ISO dùng một đường dẫn gắn khác**

Khi dùng chế độ cứu hộ của trình cài đặt, hệ thống đã cài đặt của bạn nằm ở `/mnt/sysimage` thay vì `/mnt`. Hãy điều chỉnh các bước tiếp theo cho phù hợp.
{% endhint %}

### 2. Xác nhận đĩa hiển thị, quét lại và xác minh các nhóm volume

* **Hiển thị các thiết bị khối:**

  `lsblk`

  Ghi lại tên thiết bị (ví dụ: /dev/sda) và phân vùng LVM (ví dụ: /dev/sda3)
* **Buộc LVM quét lại tất cả các thiết bị khối (bỏ qua tệp thiết bị):**

  `pvscan --cache`\
  `vgchange -ay`
* **Nếu quét lại vẫn không thấy gì, hãy đăng ký phân vùng LVM một cách rõ ràng:**

  `lvmdevices --adddev /dev/sda3` Thay bằng phân vùng LVM thực tế của bạn từ lsblk\
  `vgchange -ay`

  <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p><strong>Các bản cài đặt RHEL 9 thường dùng LVM, với logical volume gốc tại <code>/dev/mapper/rhel-root</code> (hoặc <code>almalinux-root</code>, <code>rocky-root</code>).</strong></p></div>
* Xác minh các nhóm volume giờ đã hiển thị

  `lvdisplay`

### 3. Gắn phân vùng gốc và bind các filesystem

* `mount /dev/<device_name> /mnt`\
  Thay \<device\_name> bằng phân vùng gốc của bạn (ví dụ: sda2, mapper/vg0-root).
* **Xác minh điểm gắn:**

  `ls /mnt`

  Bạn sẽ thấy các thư mục như /root, /boot, /home, /etc và /var.
* **Bind các filesystem:**

  **Dùng vòng lặp for sau để bind các filesystem ảo cần thiết:**

  `for i in proc sys dev run; do mount --rbind /$i /mnt/$i; done`

  **HOẶC gắn từng cái riêng lẻ:**

  `mount --rbind /proc /mnt/proc`\
  `mount --rbind /sys /mnt/sys`\
  `mount --rbind /dev /mnt/dev`\
  `mount --rbind /run /mnt/run`

  Đối với hệ thống EFI/UEFI, cũng hãy gắn phân vùng EFI:

  ```bash
  mount /dev/sdX1 /mnt/boot/efi
  ```

  Thay /dev/sdX1 bằng phân vùng EFI thực tế của bạn (kiểm tra bằng lsblk hoặc fdisk -l).

### 4. Chroot vào hệ thống đã cài đặt và gắn thêm các filesystem

* **Thay đổi thư mục gốc**

  `chroot /mnt`
* Sau khi chroot, **gắn mọi phân vùng bổ sung** được khai báo trong fstab:

  `mount -a`

### 5. Tạo lại Initramfs

* **Xây dựng lại initramfs** để nó nhận cấu hình thiết bị đã được dọn sạch:

  `dracut -f --regenerate-all`

### 6. Khởi động lại và xác minh

* **Thoát khỏi môi trường chroot:**

  `exit`
* **Khởi động lại VM:**

  `reboot`
* \*\*Xác minh khởi động:\*\*Xác nhận rằng VM khởi động thành công và tất cả các ổ đĩa xuất hiện như mong đợi.

## Khắc phục sự cố

{% hint style="warning" %}
**Không vào được menu GRUB**

Nếu VM không hiển thị GRUB gì cả, hãy dùng Tùy chọn B từ Bước 1 để khởi động từ ISO cài đặt vào chế độ cứu hộ.
{% endhint %}

{% hint style="warning" %}
**Không có mạng sau khi khởi động**

* Xác nhận NIC được đặt thành **virtio** trong cài đặt VM của VergeOS.
* Kiểm tra xem có quy tắc mạng cố định nào (`70-persistent-net.rules`) tồn tại và có thể chặn việc đặt tên đúng cho giao diện mới hay không.
* Chạy `ip link show` để xem có NIC nào hiện diện nhưng chưa được cấu hình hay không, sau đó kiểm tra `/etc/sysconfig/network-scripts/` hoặc NetworkManager để xem cấu hình giao diện.
  {% endhint %}

## Tài nguyên bổ sung

* [Giới hạn khả năng hiển thị và sử dụng thiết bị LVM (Red Hat)](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/limiting-lvm-device-visibility-and-usage_configuring-and-managing-logical-volumes)
* [Cấu hình và quản lý logical volume (Red Hat)](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/index)
* [Nhập VM Linux — Hướng dẫn chung](/knowledge-base/vi/virtual-machines/import-rhel-centos-vm.md)
* [Các phương pháp hay nhất cho VM](/run-the-platform/virtual-machines/vm-best-practices.md)

{% hint style="info" %}
**Cần trợ giúp?**

Nếu bạn vẫn tiếp tục gặp sự cố khởi động sau khi làm theo hướng dẫn này, hãy liên hệ bộ phận hỗ trợ VergeOS để được trợ giúp.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/knowledge-base/vi/backup-dr/rhel9-boot-failure-clone-snapshot-restore.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
