Bài 03 · Chuyên đề Hyper-V

Lưu trữ Hyper-V — disk vật lý, S2D & SAN/NAS

Ba mô hình lưu trữ: tận dụng disk trống trên host (Storage Spaces), gộp disk nhiều host thành kho HA (S2D), và dùng SAN/NAS qua iSCSI/FC/SMB3.

Về trang tổng Hyper-V

Lưu trữ — tận dụng disk vật lý & SAN/NAS

3 mô hình lưu trữ cho Hyper-V. Chọn đúng quyết định việc có HA hay không và chi phí:

Mô hìnhCần SAN?HA?Khi nào chọn
Local disk (standalone)KhôngKhôngHost đơn, dev/test, không cần HA
S2D — Storage Spaces Direct (HCI)KhôngGộp disk trống của ≥2 host làm "vSAN" — không mua SAN
SAN/NAS chia sẻ (iSCSI/FC/SMB3)Đã có SAN; tách compute & storage (như bài chính)

A · Tận dụng disk trống trên 1 host (Storage Spaces — không HA)

Gộp các ổ trống thành 1 pool, tạo volume mirror chứa VM. Hợp lý cho host lab đơn lẻ.

# Gộp mọi disk còn trống thành Storage Pool New-StoragePool -FriendlyName Pool1 -StorageSubSystemFriendlyName (Get-StorageSubSystem).FriendlyName ` -PhysicalDisks (Get-PhysicalDisk -CanPool $true) # Tạo volume ReFS mirror 500GB để đặt VM New-Volume -StoragePoolFriendlyName Pool1 -FriendlyName VMs -FileSystem ReFS ` -ResiliencySettingName Mirror -Size 500GB

B · S2D — biến disk trống 2 host thành kho HA (không cần SAN)

Storage Spaces Direct gộp ổ NVMe/SSD/HDD bên trong các host thành một pool dùng chung — tương đương vSAN. Đây là cách tận dụng disk vật lý để có HA mà không mua SAN.

CSV · C:\ClusterStorage\VMs ReFS · Mirror 2-way · ổ chung cho VM (có HA) VM VM VM Storage Pool — Storage Spaces Direct (S2D) block Abản 1 @N1 block Abản 2 @N2 Mỗi block dữ liệu lưu 2 bản ở 2 node 🖧 H-NODE01 ổ trống nội bộ 🖧 H-NODE02 ổ trống nội bộ ↔ SMB3 + RDMA · đồng bộ realtime ❌ Không cần SAN
Sơ đồ S2D: ổ trống trong H-NODE01 & H-NODE02 gộp thành Storage Pool → xuất ra CSV có HA; mỗi block dữ liệu lưu 2 bản ở 2 node (mirror), đồng bộ qua SMB3/RDMA — không cần SAN.

Yêu cầu: Windows Server Datacenter, ≥2 node (khuyến nghị 3+), ổ không RAID phần cứng (HBA pass-through), NIC tốc độ cao + RDMA khuyến nghị. Cụm 2 node cần witness + nested resiliency.

Đang dùng RAID phần cứng? S2D cần truy cập thẳng từng ổ (đọc SMART, tự rebuild) nên không nhận ổ sau RAID controller. Kiểm tra Get-PhysicalDisk | ft FriendlyName,CanPool,BusTypeBusType phải là SAS/SATA/NVMe (nếu là RAID thì CanPool=False). Cách xử lý: chuyển controller sang HBA/IT mode (pass-through — xoá RAID, backup trước) hoặc gắn HBA thật. RAID0 single-disk chạy được nhưng Microsoft không khuyến nghị. Không muốn bỏ RAID → dùng SAN/iSCSI cho HA (RAID trên SAN là đúng), chỉ riêng S2D mới đòi không-RAID.

Đang dùng bản Standard? Nâng lên Datacenter

S2D chỉ chạy trên Datacenter. Nếu báo lỗi Feature S2D is not supported on node (HRESULT 0x80070032) → kiểm tra edition và nâng cấp tại chỗ (làm lần lượt từng node, giữ nguyên cụm/VM):

# Kiểm tra edition hiện tại (ServerStandard / ServerStandardEval?) DISM /online /Get-CurrentEdition # Đẩy VM sang node kia trước cho khỏi downtime Suspend-ClusterNode -Name H-NODE01 -Drain # Nâng Standard → Datacenter (Windows Server 2025) — máy tự reboot DISM /online /Set-Edition:ServerDatacenter ` /ProductKey:D764K-2NDRG-47T6Q-P8T8W-YP6DF /AcceptEula # Sau reboot: đưa node lại vào cụm + kiểm tra Resume-ClusterNode -Name H-NODE01 DISM /online /Get-CurrentEdition # → ServerDatacenter # Lặp lại y hệt cho H-NODE02, rồi mới bật S2D bên dưới

⚠️ Chỉ phục vụ LAB / học tập — KHÔNG dùng cho mục đích thương mại. Key D764K-…-YP6DFKMS client key generic của WS2025 Datacenter (Microsoft công bố), chỉ để đổi edition trong môi trường thử nghiệm; kích hoạt cần KMS/AVMA. Production bắt buộc mua license Datacenter hợp lệ (MAK/retail) và dùng key đó. Bản Evaluation phải có key bản quyền mới convert được.

# (Đã có Failover Cluster ở B6) — bật S2D gộp disk các node # Chạy TRỰC TIẾP trên 1 node (vd H-NODE01), đăng nhập tài khoản DOMAIN — KHÔNG dùng -CimSession Enable-ClusterStorageSpacesDirect -Confirm:$false # Tạo CSV volume 1TB mirror (2 node) — dùng đặt VM, có HA New-Volume -FriendlyName VMs -FileSystem CSVFS_ReFS ` -StoragePoolFriendlyName "S2D*" -Size 1TB -ResiliencySettingName Mirror # → Xuất hiện tại C:\ClusterStorage\VMs trên cả 2 node

C · Dùng disk trong SAN/NAS

  • iSCSI (phổ biến, rẻ): kết nối LUN qua mạng IP — đã làm ở Bước B4. Bật MPIO đa đường chống đứt cáp.
  • Fibre Channel (FC): HBA + switch FC riêng, hiệu năng cao, đắt — doanh nghiệp lớn.
  • SMB 3.0 (SOFS): đặt VM trên file share \\SOFS\VMs, hỗ trợ continuous availability + encryption.

Không trộn S2D và SAN trên cùng 1 cụm. Chọn 1 mô hình lưu trữ cho mỗi cụm.

🧪 LAB thực hành — Dựng kho chứa VM từ disk trống

Mục tiêu: tận dụng các ổ trống thành nơi đặt VM — LAB A cho host đơn (Storage Spaces trên H-NODE01), LAB B cho cụm (S2D gộp disk H-NODE01+H-NODE02 thành CSV có HA).

1

Xem ổ đĩa còn trống (gộp được)

Get-PhysicalDisk -CanPool $true | ft FriendlyName,Size,MediaType

Cách GUI: Server Manager → File and Storage Services → Storage Pools → mục Physical Disks (xem ổ "Primordial"); hoặc Disk Management (diskmgmt.msc).

A

LAB A — Host đơn: Storage Pool + volume mirror (không HA)

New-StoragePool -FriendlyName Pool1 ` -StorageSubSystemFriendlyName (Get-StorageSubSystem).FriendlyName ` -PhysicalDisks (Get-PhysicalDisk -CanPool $true) New-Volume -StoragePoolFriendlyName Pool1 -FriendlyName VMs ` -FileSystem ReFS -ResiliencySettingName Mirror -Size 200GB

Cách GUI: Server Manager → File and Storage Services → Storage Pools → New Storage Pool → chọn các disk → New Virtual Disk → Layout: Mirror → New Volume → File system: ReFS.

B

LAB B — Cụm: bật S2D gộp disk 2 host → CSV có HA

# Cần đã có Failover Cluster (xem Bài 02) # Chạy TRỰC TIẾP trên 1 node (vd H-NODE01), đăng nhập tài khoản DOMAIN — KHÔNG dùng -CimSession Enable-ClusterStorageSpacesDirect -Confirm:$false New-Volume -FriendlyName VMs -FileSystem CSVFS_ReFS ` -StoragePoolFriendlyName "S2D*" -Size 500GB -ResiliencySettingName Mirror

Cách GUI: Windows Admin Center → chọn cluster HV-CLUSTER → Settings → "Enable Storage Spaces Direct"; rồi Volumes → Create → Resiliency: Mirror, File system: ReFS (CSVFS). (S2D không có công cụ MMC riêng — dùng WAC hoặc PowerShell.)

Kiểm chứng: LAB A → Get-StoragePool Pool1; Get-Volume thấy ổ VMs. LAB B → Get-ClusterSharedVolume thấy CSV tại C:\ClusterStorage\VMs trên cả 2 node.