Khắc phục lỗi VMware: Cần hợp nhất các đĩa của máy ảo
Lỗi “Cần hợp nhất đĩa máy ảo VMware” thường xuất hiện khi các bản chụp nhanh (snapshot) không thể hợp nhất chính xác với đĩa ảo chính. Vấn đề này thường xảy ra sau khi quá trình sao lưu không hoàn tất, việc xóa bản chụp nhanh bị hủy bỏ hoặc dung lượng lưu trữ còn ít. Nếu không được khắc phục, lỗi này có thể làm chậm máy ảo của bạn hoặc thậm chí dẫn đến nguy cơ hỏng dữ liệu. Hãy đọc bài viết trên blog này để tìm hiểu lý do tại sao trạng thái “Cần hợp nhất máy ảo” xuất hiện và cách khắc phục an toàn.
Hợp nhất đĩa ảo VMware là gì?
Hợp nhất đĩa ảo là quá trình hợp nhất các tệp đĩa ảo được tạo ra sau khi thực hiện Ảnh chụp nhanh VM. Bạn có thể khởi tạo quá trình hợp nhất đĩa theo yêu cầu để tránh tình trạng suy giảm hiệu suất và các vấn đề khác. Khi bạn tạo ảnh chụp nhanh, các đĩa delta sẽ được tạo ra và các thay đổi sẽ được ghi vào đĩa delta tương ứng (mặc định là đĩa delta mới nhất, cho đến khi một trong các ảnh chụp nhanh trước đó được chọn để khôi phục máy ảo). Do đó, dữ liệu trùng lặp tồn tại trong bộ lưu trữ của máy ảo vì mỗi đĩa delta chứa tất cả các thay đổi so với trạng thái của đĩa delta trước đó, trong khi đĩa gốc vẫn không thay đổi.
Khi chuỗi ảnh chụp nhanh và các tệp đĩa ảo liên quan trở nên quá lớn, hiệu suất sẽ bị suy giảm. Khi thực hiện hợp nhất đĩa VMware, dữ liệu từ các đĩa delta sẽ được hợp nhất thành một đĩa duy nhất, và không còn dữ liệu trùng lặp nào trên kho dữ liệu (datastore) nơi lưu trữ các tệp của máy ảo này. Dung lượng lưu trữ sẽ được giải phóng sau khi bạn hợp nhất các tệp đĩa của máy ảo. Lưu ý rằng VMware khuyến nghị không sử dụng quá 32 bản chụp nhanh cho mỗi máy ảo.
Các nguyên nhân có thể gây ra lỗi hợp nhất đĩa VMware
Thông báo lỗi “Hợp nhất đĩa máy ảo VMware là cần thiết” được hiển thị trong máy ảo trong tab của Ứng dụng VMware vSphere Client (hình chụp màn hình bên dưới). Một trong những nguyên nhân phổ biến dẫn đến thông báo lỗi này là việc xóa bản sao lưu máy ảo (VM snapshot) không đúng cách, điều này có thể để lại các tệp VMDK liên quan đến bản sao lưu và tệp nhật ký trên kho dữ liệu (ví dụ: sau khi bạn thực hiện thao tác Delete All hoặc Delete đối với bản sao lưu máy ảo).

Các nguyên nhân phổ biến nhất dẫn đến trạng thái “ ” (Cần hợp nhất máy ảo) và “ ” (Hợp nhất bản sao lưu):
- Không đủ dung lượng đĩa trên kho dữ liệu VMFS để hợp nhất các bản sao lưu máy ảo và các tệp đĩa ảo. Nếu kho dữ liệu có ít hơn 1 GB dung lượng trống, lỗi này có thể xảy ra.
- Hiệu suất thấp của hệ thống lưu trữ được kết nối với máy chủ ESXi nơi máy ảo đang chạy. Nếu kích thước bản sao lưu lớn hoặc hết thời gian chờ, quá trình hợp nhất bản sao lưu có thể thất bại.
- Sự cố kết nối giữa máy chủ ESXi và vCenter.
- Các tệp ảnh chụp nhanh bị khóa bởi một ứng dụng của bên thứ ba (ví dụ: ứng dụng sao lưu). Điều này có thể xảy ra nếu ứng dụng sao lưu chưa hoàn tất tác vụ sao lưu và đã khóa ảnh chụp nhanh (các ứng dụng sao lưu có thể tạo ảnh chụp nhanh tạm thời của máy ảo khi thực hiện sao lưu). Các ứng dụng sao lưu không thể tạm dừng hoạt động của đĩa mà không sử dụng kỹ thuật chụp nhanh (snapshot) để tạo bản sao lưu nhất quán cho máy ảo đang chạy.
Về cơ bản, bạn cần khôi phục tính nhất quán cho các tệp đĩa của máy ảo.
Làm thế nào để khắc phục lỗi hợp nhất đĩa VMware?
Để giải quyết tình trạng cần hợp nhất máy ảo , hãy nhấp chuột phải vào tên máy ảo trong VMware vSphere Client và trong menu hiện ra, nhấp vào Snapshots > Consolidate.

Một thông báo xác nhận sẽ hiển thị:
Thao tác này sẽ hợp nhất tất cả các nhật ký redo dư thừa trên máy ảo của bạn. Bạn có chắc chắn muốn tiếp tục không?
Nhấp vào Yes để xác nhận và hợp nhất các tệp đĩa của máy ảo.
Note: Nếu lo ngại rằng một số dữ liệu có thể bị mất trong quá trình hợp nhất đĩa VMware, hãy tạo một Sao lưu máy ảo VMware bằng cách sao chép tất cả các tệp máy ảo sang một thư mục khác trên kho dữ liệu (datastore), sau đó thực hiện hợp nhất đĩa VMware.
Chờ cho đến khi quá trình hợp nhất đĩa VMware hoàn tất và các nhật ký được xóa. Bạn có thể theo dõi tiến trình tác vụ trong bảng tác vụ ở phía dưới giao diện VMware vSphere Client. Nếu máy ảo đang chạy, hiệu suất của máy ảo có thể bị giảm trong quá trình thực hiện thao tác này. Thời gian cần thiết để hoàn tất thao tác này phụ thuộc vào kích thước máy ảo, số lượng bản chụp nhanh và tải của máy ảo.
Sau khi tác vụ hợp nhất đĩa VMware hoàn tất, cảnh báo sẽ biến mất.
Các lỗi khác có thể xảy ra
Đôi khi, một lỗi khác có thể xảy ra trong quá trình hợp nhất đĩa VMware và thông báo lỗi sau sẽ được hiển thị:
Không thể truy cập tệp vì tệp đang bị khóa. Đã xảy ra lỗi trong quá trình hợp nhất đĩa: Không thể khóa tệp. Quá trình hợp nhất đã thất bại đối với nút đĩa ‘scsi0:0’.
Các khóa cũng có thể được tạo ra khi các ứng dụng sao lưu sử dụng tùy chọn thêm đĩa nóng (hot-add) cho các bản sao lưu sử dụng ảnh chụp nhanh (snapshot). Khóa tệp máy ảo nhằm tránh việc nhiều máy chủ ESXi ghi đồng thời vào tệp.
Hãy thử thực hiện các thao tác sau để khắc phục lỗi này:
- Khởi động lại các tác nhân quản lý trên máy chủ ESXi nơi máy ảo đang hoạt động. Mở Vỏ lệnh ESXi hoặc kết nối với máy chủ ESXi qua SSH và chạy lệnh với quyền root:
services.sh restartHoặc
/etc/init.d/hostd restart/etc/init.d/vpxa restartBạn cũng có thể mở giao diện điều khiển trực tiếp của ESXi, truy cập
Troubleshooting Optionsvà chọnRestart Management Agents(nhấnEnterđể kích hoạt tùy chọn cần thiết, sau đó nhấnF11để xác nhận). - Kiểm tra tệp bị khóa bằng lệnh:
vmfsfilelockinfo -p /vmfs/volumes/vm_datastore/vm_name/vm_name.vmx - Kiểm tra tệp nhật ký hostd nếu bạn cần xác định đường dẫn trên kho dữ liệu (datastore) nơi các tệp máy ảo được lưu trữ.
cat /var/log/hostd.log |grep -i vm_name - Khi đã biết vị trí các tệp máy ảo, hãy truy cập thư mục máy ảo trên kho dữ liệu:
cd /vmfs/volumes/datastore_name/vm_name - Chạy lệnh để liệt kê các máy chủ ESXi đang khóa các tệp máy ảo:
for i in `ls`; do vmfsfilelockinfo -p $i ;done|grep 'is locked in|Host owning the lock|Total time taken' | sed 's|Host owning the lock on file is||g'|sed 's|Total time|---|g' | awk '{print $1}' |uniq - Khởi động lại các trình quản lý ESXi, bao gồm
hostdvàvpxanhư đã giải thích ở trên, hoặc chạy các lệnh này trên máy chủ ESXi đang khóa các tệp máy ảo:/etc/init.d/hostd restart/etc/init.d/vpxa restart
Một phương pháp khác để mở khóa các tệp máy ảo
Ngoài ra, bạn có thể thử các bước sau để khắc phục lỗi xảy ra trong quá trình hợp nhất đĩa: Không thể khóa tệp.
- Tắt máy ảo.
- Tạo ảnh chụp nhanh đĩa máy ảo mới.
- Xóa tất cả các ảnh chụp nhanh máy ảo hiện có. Nhấp chuột phải vào tên máy ảo trong vSphere Client, chọn
Snapshotsvà nhấp vàoDelete All Snapshots.
- Sao chép máy ảo hoặc di chuyển nó sang một máy chủ ESXi khác bằng vMotion nếu lỗi vẫn chưa được khắc phục.
- Hãy thử hợp nhất các bản chụp nhanh một lần nữa, như đã giải thích ở trên.
Nếu các thao tác này không giúp được gì, hãy thử tắt máy ảo, mở VM settings, chọn tab VM options , sau đó mở rộng phần Advanced và nhấp vào Edit Configuration. Trong cửa sổ Tham số cấu hình , nhấp vào Add Configuration Params. Thêm tham số asyncConsolidate.forceSync và đặt tham số này thành TRUE.
Đôi khi, tình trạng khi thực hiện hợp nhất máy ảo có thể do các tệp -ctk.vmdk không nhất quán được tạo ra cho theo dõi khối đã thay đổi (có thể do phần mềm sao lưu máy ảo). Hãy thử xóa các tệp CTK vì chúng không cần thiết cho quá trình hợp nhất ảnh chụp nhanh. Đừng quên sao lưu các tệp máy ảo trước khi xóa các tệp CTK. Sau đó, hãy thử hợp nhất các tệp đĩa máy ảo một lần nữa.

Tùy chọn Hợp nhất không hoạt động
Nếu tùy chọn hợp nhất ảnh chụp nhanh VMware bị mờ (không hoạt động), có thể có một tác vụ đang chạy trên máy ảo. Nếu bạn thấy thông báo lỗi “Phát hiện cấu hình bản chụp nhanh không hợp lệ” , một số bản chụp nhanh có thể bị hỏng hoặc có chuỗi bản chụp nhanh bị tách rời. Trong trường hợp này, hãy thử thực hiện các thao tác sau:
- Kết nối với máy chủ ESXi qua SSH và truy cập vào thư mục chứa các tệp máy ảo trên kho dữ liệu.
cd vmfs/volumes/DatastoreName/VMFolderNameBạn có thể kiểm tra vị trí các tệp máy ảo trong VMware vSphere Client và tìm vị trí của các đĩa ảo bằng cách xem cài đặt máy ảo.
- Xác định các bản chụp nhanh đĩa đang được trỏ đến:
cat VM-name.vmx | grep scsi*Tham khảo kết quả đầu ra để kiểm tra các tệp đĩa ảo, bao gồm cả các tệp bản chụp nhanh đĩa ảo. Ví dụ: tên của tệp đĩa ảo được hiển thị trong dòng đó. Đây không phải là bản sao lưu:
scsi 0:0.fileName = “VM-Name.vmdk”
Trong dòng kết quả, tên tệp bản sao lưu đĩa ảo được hiển thị, và bạn đang trỏ đến bản sao lưu:
scsi 0:0.fileName = “VM-Name-000002.vmdk”
Trong ví dụ này, bộ điều khiển đĩa ảo SCSI được sử dụng trong cấu hình máy ảo.
- Lệnh sau đây kiểm tra xem mỗi bản chụp nhanh đang trỏ đến đâu. Sử dụng lệnh này để xác định bản chụp nhanh nào đang trỏ đến tệp đĩa cụ thể (tệp VMDK của bản chụp nhanh hoặc tệp VMDK đĩa gốc) trong chuỗi bản chụp nhanh.
cat VM-Name-000002.vmdk | grep parentFileNameHintBạn có thể cần thực thi lại lệnh này cho các tệp VMDK khác (như VM-Name-000001.vmdk trong ví dụ này) cho đến khi tìm thấy đĩa gốc cần thiết. Phương pháp này giúp bạn xác định các điểm không nhất quán.
- Nếu bạn phát hiện ra một điểm không nhất quán, ví dụ: VM-Name-000002.vmdk đang trỏ đến VM-Name-000001.vmdk, mà tệp này lại trỏ đến VM-Name.vmdk, hãy chạy
vmkfstoolstại điểm cao nhất của chuỗi ảnh chụp nhanh đĩa ( VM-Name-000002.vmdk trong trường hợp này):vmkfstools -q -v10 VM-Name-000002.vmdkLệnh này sẽ cố gắng mở và đóng tất cả các tệp VMDK trong chuỗi, đồng thời thông báo cho bạn biết vị trí xảy ra lỗi.
Sử dụng PowerCLI
Thay vì thực hiện hợp nhất đĩa VMware trong giao diện người dùng đồ họa VMware vSphere Client, bạn có thể sử dụng vSphere PowerCLI với giao diện dòng lệnh.
- Kết nối với vCenter Server quản lý máy chủ ESXi có máy ảo cần hợp nhất . Nhập thông tin đăng nhập khi được yêu cầu.
Connect-VIServer vcenter01.test.com - Lấy danh sách các máy ảo có trạng thái cần hợp nhất máy ảo :
Get-VM | Where-Object {$ _. Extensiondata.Runtime.ConsolidationNeeded} - Thực hiện hợp nhất đĩa VMware.
Get-VM | Where-Object {$ . Extensiondata.Runtime.ConsolidationNeeded} | foreach {$ . ExtensionData.ConsolidateVMDisks_Task ()}
Các khuyến nghị bổ sung
Trong VMware vSphere 7.0, người dùng có thể gặp sự cố khi máy chủ được khởi động lại và dịch vụ CBT không khởi động được. Có thể cần phải khởi động dịch vụ này thủ công mỗi lần. Tuy nhiên, sự cố này đã được khắc phục trong vSphere 7 U3. Nếu bạn đang sử dụng vSphere 7.0, bạn có thể thử giải pháp tạm thời sau:
- Kiểm tra xem mô-đun CBT đã được kích hoạt chưa:
esxcli system module list --enabled=true | grep cbt - Kiểm tra xem mô-đun CBT đã được tải trên máy chủ ESXi chưa:
esxcli system module list --loaded=true | grep cbt - Tải mô-đun CBT theo cách thủ công:
vmkload_mod cbt
Nếu ứng dụng sao lưu đang khóa các tệp của máy ảo, bạn có thể khởi động lại quá trình vpx trên máy chủ ESXi để giúp giải phóng khóa. Hãy thử ngắt kết nối các đĩa ảo khỏi ứng dụng sao lưu máy ảo.
Thay vì di chuyển máy ảo, bạn có thể tắt máy ảo và khởi động lại máy chủ ESXi. Sau đó, đưa máy chủ ra khỏi chế độ bảo trì để giải phóng khóa và khắc phục sự cố.
Kết luận
Tình trạng cần hợp nhất máy ảo là một vấn đề phổ biến nhưng có thể khắc phục được trong môi trường VMware. Bằng cách hiểu nguyên nhân gây ra lỗi và áp dụng các thực hành chụp ảnh nhanh (snapshot) và sao lưu đúng cách, bạn có thể duy trì một cơ sở hạ tầng ảo khỏe mạnh và hiệu quả. Luôn xác minh việc xóa ảnh chụp nhanh và theo dõi dung lượng lưu trữ khả dụng để ngăn chặn sự tái diễn. Bảo trì định kỳ và giám sát chủ động giúp đảm bảo hiệu suất máy ảo mượt mà và bảo vệ dữ liệu đáng tin cậy.