Quản lý Storage trên VMware ESXi: Đừng để ổ cứng “báo đỏ” mới cuống cuồng

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Nỗi ám ảnh 3 giờ sáng: Khi ổ cứng báo đỏ

Dân System hay DevOps chắc chẳng lạ gì cảnh đang ngủ ngon thì nhận alert từ Zabbix: “Disk Space Low” trên cụm Production. Cảm giác lúc đó thực sự… thốn. Với VMware ESXi, quản lý storage không đơn giản là cắm thêm ổ cứng vào là xong. Nó là một chuỗi thao tác từ tầng vật lý, tầng ảo hóa (Datastore/VMDK) đến tận phân vùng OS.

Hồi mới vào nghề, mình từng run tay khi resize ổ cứng cho một con Database Server 2TB. Sợ nhất là lỡ tay làm mất dữ liệu hoặc treo máy ảo của khách. Sau này, khi đã chuyển qua lại nhiều nền tảng như Proxmox hay Hyper-V, mình vẫn thấy VMware quản lý storage rất chặt chẽ. Chỉ cần bạn nắm rõ bản chất, mọi việc sẽ nằm trong tầm kiểm soát.

Khái niệm cốt lõi: Datastore và Virtual Disk (VMDK)

Trước khi gõ lệnh, hãy cùng chốt lại vài khái niệm để không bị lú khi thao tác trên vSphere Client.

1. Datastore là gì?

Hãy coi Datastore là một cái kho chứa khổng lồ. Nó che đi sự phức tạp của phần cứng bên dưới, dù bạn dùng ổ cục bộ, mảng RAID hay SAN/NAS. VMware dùng định dạng file hệ thống VMFS (Virtual Machine File System). Đây là định dạng đặc thù giúp nhiều host đọc/ghi đồng thời vào cùng một ổ cứng mà không gây xung đột.

2. Virtual Disk (VMDK) – “Miếng bánh” của máy ảo

Đây là file ổ cứng ảo mà OS khách nhìn thấy. Có 3 kiểu định dạng chính bạn cần nhớ kỹ:

  • Thin Provisioning: Ăn chắc mặc bền, dùng đến đâu lấy đến đó. File VMDK ban đầu rất nhẹ. Tuy nhiên, nếu bạn cấp 500GB nhưng Datastore thực tế chỉ còn 100GB, máy ảo sẽ “sập tiệm” ngay khi vượt ngưỡng này.
  • Thick Provision Lazy Zeroed: Cấp đủ dung lượng ngay lập tức. Dữ liệu cũ trên ổ vật lý chỉ bị xóa khi máy ảo thực hiện lệnh ghi lần đầu. Tốc độ khởi tạo nhanh nhưng hiệu năng ghi lần đầu hơi kém.
  • Thick Provision Eager Zeroed: Xịn nhất nhưng cũng tốn thời gian nhất. Nó xóa sạch dữ liệu cũ và chiếm dụng không gian ngay khi tạo. Với các ứng dụng I/O cao như SQL Server (trên 5000 IOPS), đây là lựa chọn bắt buộc.

Thực hành: Nâng cấp dung lượng từ gốc đến ngọn

Giả sử bạn vừa gắn thêm một ổ SSD 1TB vào Server và muốn tăng dung lượng cho con Web Server chạy Ubuntu. Quy trình gồm 3 bước chốt hạ.

Bước 1: Mở rộng Datastore (Tầng vật lý)

Sau khi cắm ổ, vào Storage > Datastores > Increase capacity. Bạn sẽ thấy hai lựa chọn:

  • Add extent: Gộp thêm một ổ mới (LUN mới) vào Datastore cũ. Cách này hơi rủi ro vì nếu 1 trong 2 ổ hỏng, toàn bộ Datastore sẽ bay màu.
  • Expand existing extent: Nếu bạn vừa resize mảng RAID cứng, hãy chọn cái này để nuốt trọn phần dung lượng trống mới tăng thêm.

Để kiểm tra cho chắc qua CLI, hãy SSH vào ESXi và dùng lệnh:

# Xem danh sách thiết bị lưu trữ
esxcli storage core device list

# Kiểm tra dung lượng thực tế của Datastore
vmkfstools -P /vmfs/volumes/DATASTORE_NAME

Bước 2: Nới rộng Virtual Disk (VMDK)

Khi kho đã rộng, ta sẽ cấp thêm “thịt” cho VM. Vào Edit Settings, tìm mục Hard Disk và nhập con số mới. Ví dụ: từ 100GB lên 250GB.

Cảnh báo: Nếu máy ảo đang có Snapshot, nút chỉnh dung lượng sẽ bị mờ (grayed out). Bạn phải xóa sạch Snapshot thì mới resize được. Đừng cố ép, hỏng file VMDK là không cứu được đâu.

Nếu muốn dùng lệnh cho ngầu:

# Tăng file VMDK lên hẳn 250GB
vmkfstools -X 250G /vmfs/volumes/DATA_01/WebSrv/WebSrv.vmdk

Bước 3: Để OS nhận diện dung lượng mới

Máy ảo thấy ổ cứng to ra rồi, nhưng phân vùng bên trong vẫn chưa đổi. Với Windows, bạn chỉ cần diskmgmt.msc và chọn Extend Volume. Với Linux (LVM), hãy thực hiện bộ lệnh “thần thánh” sau:

# 1. Quét lại ổ cứng để nhận dung lượng mới
echo 1 > /sys/class/block/sda/device/rescan

# 2. Resize Physical Volume (giả sử partition là sda3)
pvresize /dev/sda3

# 3. Mở rộng Logical Volume (LV) thêm 100% dung lượng trống
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

# 4. Chốt hạ bằng lệnh resize file system
# Nếu là EXT4: resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
# Nếu là XFS: xfs_growfs /

Kinh nghiệm xương máu từ thực tế

Sau nhiều lần “ăn hành”, mình rút ra vài quy tắc bất di bất dịch:

1. Quy tắc 80/20: Đừng bao giờ dùng quá 80% dung lượng Datastore. Khi đầy 100%, ESXi sẽ “đóng băng” (suspend) toàn bộ máy ảo. Lúc đó bạn sẽ không thể bật máy để xóa file hay làm gì khác.

2. Tuyệt chiêu UNMAP: Với ổ SSD và Thin Provisioning, khi bạn xóa file trong VM, dung lượng trên Datastore không tự giảm ngay. Trên ESXi 6.7 trở lên, hãy dùng lệnh này để thu hồi dung lượng trống:

esxcli storage vmfs unmap -l MyDatastore

3. Đừng sính ngoại: Nhiều người thần thánh hóa Thick Eager Zeroed. Thực tế, với các web server thông thường, dùng Thin Provisioning giúp bạn tiết kiệm được cả khối tiền mua ổ cứng mà hiệu năng chẳng giảm là mấy.

Kết luận

Quản lý lưu trữ là bài toán cân bằng giữa túi tiền và hiệu năng. Đừng quá máy móc. Hãy căn cứ vào tải thực tế của ứng dụng để chọn định dạng ổ đĩa phù hợp. Quan trọng nhất là phải có hệ thống monitor tốt để không bao giờ phải nhận alert lúc nửa đêm.

Hy vọng những chia sẻ này giúp bạn tự tin hơn khi “múa lệnh” trên VMware. Nếu gặp ca nào khó nhằn về disk, cứ để lại comment phía dưới nhé!

Share: