Thay đổi kích thước động ổ cứng máy ảo khả dụng từ Hyper-V trong Windows Server 2012 R2. Tính năng Online VHDX Resize cho phép bạn tăng hoặc giảm kích thước tệp vhdx của máy ảo trực tuyến (không cần dừng VM). Bài viết này sẽ hướng dẫn cách mở rộng hoặc thu nhỏ ổ cứng máy ảo trong Hyper-V chạy trên Windows 10 hoặc Windows Server 2016 (hướng dẫn áp dụng cho tất cả phiên bản Hyper-V được hỗ trợ, bao gồm Hyper-V Server miễn phí).
Các tính năng và giới hạn chính của Online VHDX Resize trong Hyper-V:
- Bạn có thể thay đổi kích thước bất kỳ loại ổ ảo Hyper-V nào: cố định, động và phân biệt;
- Bạn có thể thay đổi kích thước ổ VHDX (bao gồm ổ hệ thống của hệ điều hành khách) trên cùng một lúc. Không cần dừng VM; Chỉ VHDX mới có thể thay đổi kích thước động. VHD không được hỗ trợ và phải chuyển đổi sang định dạng VHDX.
- Ổ VHDX phải được kết nối với VM qua bộ điều khiển SCSI ảo (mở rộng trực tuyến ổ trên bộ điều khiển IDE không được hỗ trợ, VM như vậy sẽ phải tắt để thay đổi kích thước ổ);
- Online VHDX Resize hoạt động trên cả máy ảo thế hệ đầu tiên và thứ hai Hyper-V;
- Cả Windows và Linux đều có thể đóng vai trò hệ điều hành khách;
- Cả mở rộng và thu nhỏ ổ ảo đều được hỗ trợ;
- Bạn có thể thay đổi kích thước ổ vhdx từ bảng điều khiển đồ họa Hyper-V, PowerShell hoặc Windows Admin Center;
- Thay đổi kích thước ổ VHDX chia sẻ (AVHDX) dùng trong cụm không được hỗ trợ;
- Bạn không thể thay đổi kích thước ổ ảo đã tạo snapshot (ví dụ trong quá trình sao lưu).
Mở rộng ổ cứng VM trong Hyper-V
Bạn có thể tăng kích thước ổ VHDX ảo bằng bảng điều khiển Hyper-V Manager.
- Chọn máy ảo trong trình quản lý máy ảo Hyper-V, vào Settings của VM -> mở rộng SCSI Controller;
- Chọn ổ ảo và nhấn nút Edit; Nếu nút Edit không hoạt động và cảnh báo “Edit is not available because checkpoint exist for this virtual machine”, bạn cần xóa tất cả snapshot. Có thể cần tắt tùy chọn Production Checkpoint trong thuộc tính VM.
- Trong trình hướng dẫn Edit Virtual Hard Disk Wizard xuất hiện, chọn Expand;
- Chỉ định kích thước mới của ổ cứng ảo (trong ví dụ chúng ta mở rộng lên 170 GB);
- Chuyển đến bảng điều khiển hệ điều hành khách, ổ vừa được mở rộng. Hãy xem cách tăng phân vùng hệ thống trong Windows khách. Mở bảng điều khiển Disk Manager. Như bạn thấy, 43 GB không gian chưa phân bổ xuất hiện trên ổ;
- Nhấp chuột phải vào phân vùng muốn mở rộng và chọn Extend Volume (chỉ có thể mở rộng phân vùng bên trái vùng chưa phân bổ). Chỉ định dung lượng muốn tăng thêm cho phân vùng hiện tại; Đôi khi việc mở rộng phân vùng có thể bị chặn bởi phân vùng khôi phục Windows.
- Sau khi hoàn tất thủ tục Extend, kích thước phân vùng sẽ tăng lên. Trong hệ điều hành khách Linux, bạn có thể mở rộng ổ bằng công cụ parted.
Cách thu nhỏ kích thước ổ ảo Hyper-V (VHDX)?
Bây giờ hãy xem cách giảm kích thước ổ vhdx ảo trên Hyper-V.
- Trước khi thu nhỏ ổ ảo từ bảng điều khiển Hyper-V, cần giảm kích thước phân vùng logic trên ổ bên trong hệ điều hành khách. Giải phóng một ít không gian và chuyển đổi thành ổ chưa phân bổ. Mở Disk Manager trong hệ điều hành khách, chọn một ổ và nhấn Shrink Volume; Lưu ý. Tùy chọn Shrink Volume chỉ khả dụng khi phân vùng có không gian trống.
- Chỉ định dung lượng muốn thu nhỏ phân vùng (trong ví dụ chỉ định 50GB);
- Sau khi giảm kích thước phân vùng trong hệ điều hành khách, mở bảng điều khiển Hyper-V và vào cài đặt ổ ảo. Nhấn nút Edit;
- Trong trình hướng dẫn Edit Virtual Hard Disk, chọn Shrink, sau đó chỉ định kích thước mới cho tệp vhdx. Lưu ý bạn không thể làm ổ nhỏ hơn dữ liệu trên đó (kiểm tra giá trị Minimum). Trong trường hợp này, bạn có thể giảm kích thước ổ từ 40 xuống 31 GB; Trước khi thu nhỏ tệp VHDX, hãy thử desfragment nó bằng Tối ưu hóa Hyper-V. Trong biểu mẫu trước, chọn tùy chọn Compact. Ngoài ra, bạn có thể dùng lệnh PowerShell để tối ưu hóa và desfragment ổ ảo động Hyper-V:
Optimize-VHD -Path 'C:\VM\VHDHyper-V\fs01.vhdx' - Hoàn tất.
Thay đổi kích thước tệp ổ cứng ảo trong Hyper-V bằng PowerShell
Bạn có thể thay đổi kích thước ổ VHDX trên máy chủ Hyper-V bằng PowerShell. Sử dụng cmdlet Resize-VHD (không nhầm lẫn với Resize-VirtualDisk, thuộc cmdlet quản lý ổ tích hợp Windows).
Lưu ý. Bạn không cần tắt máy ảo để thay đổi kích thước ổ ảo bằng cmdlet Resize-VHD trong các phiên bản Hyper-V hiện tại.
Trước tiên, cần lấy đường dẫn đầy đủ đến ổ VHDX của máy ảo:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD
Các cmdlet này cũng trả về kích thước thực tế của tệp VHDX trên bộ nhớ (FileSize) và kích thước tối đa mà nó có thể chiếm (Size). MinimumSize là kích thước tối thiểu của ổ VHDX mà tệp ổ ảo có thể giảm xuống.
Để tăng kích thước ổ VHDX, chỉ định kích thước mới:
Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -SizeBytes 50Gb
Nếu bạn chỉ định kích thước mới nhỏ hơn kích thước hiện tại trên đĩa, sẽ xuất hiện lỗi: Resize-VHD : Failed to resize the virtual disk. Bạn chỉ cần thay đổi kích thước phân vùng trong hệ điều hành khách.
Bạn có thể mở rộng ổ trên Windows từ xa bằng PowerShell Remoting. Kết nối với VM từ xa bằng cmdlet Invoke-Command hoặc Enter-PSSession (qua mạng hoặc qua Hyper-V PowerShell Direct):
Enter-PSSession -ComputerName fs01
Bạn cần lấy thông tin về mức độ có thể mở rộng phân vùng và mở rộng nó lên đến kích thước tối đa có sẵn:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Nếu cần thu nhỏ kích thước ổ ảo xuống mức nhỏ nhất có thể, chạy:
Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -ToMinimumSize
Lệnh này sẽ giảm kích thước tối đa tệp VHDX đi 6 GB.
Hướng dẫn thay đổi kích thước ổ ảo trong các hypervisor khác có tại các liên kết: KVM, VMWare.