Thứ Sáu, 31 tháng 8, 2012

VMware Resource Allocation

Resource theo tiếng Việt nghĩa là "tài nguyên" mà tài nguyên thì ai cũng muốn giành lấy cho mình, chính vì vậy việc quản lý tài nguyên đã, đang và sẽ trở thành vấn đề thiết yếu đối với bất kỳ hoạt động nào. Trừ những trường hợp tài nguyên được độc quyền khai thác vô tội vạ bởi một số tổ chức, còn lại thì tài nguyên cần được quản lý và phân phối hợp lý cho các đối tượng cần sử dụng nó, đơn giản chỉ vì cung luôn ít hơn cầu.

Việc quản lý hệ thống VMware cũng không nằm ngoài xu hướng đó với 4 loại tài nguyên quan trọng : CPU, Memory, Storage và Network.

  • Chủ sở hữu 04 loại tài nguyên trên là ai ? _ Là các host hay cluster, datacenter được dựng nên từ các hosts.
  • Cái gì sẽ sử dụng những tài nguyên đó ? _ Là các máy ảo và các resource pools.
  • Đơn vị để định lượng tài nguyên là gì ?
    • CPU : MHz
    • RAM : MB
    • Storage : IOPS
  • Có những cơ chế phân phát tài nguyên nào ?
    • Limit : Là lượng tài nguyên lớn nhất mà 1 máy ảo hay 1 resource pool có thể sử dụng. Chủ sở hữu không bao giờ cấp phát lượng tài nguyên vượt quá giá trị limit này dù rằng chủ sở hữu còn nhiều tài nguyên để không !
    • Reservation : Là lượng tài nguyên mà chủ sở hữu đảm bảo sẽ cung cấp cho 1 máy ảo hay 1 resource pool. Nếu một máy ảo được chủ sở hữu hứa sẽ cung cấp A tài nguyên, nhưng hiện tại chủ sở hữu chỉ còn A1 tài nguyên trong đó A1 < A thì máy ảo đó sẽ không thể khởi động được.
    • Shares : Thể hiện mối tương quan về độ ưu tiên của các máy ảo/resouce pool. Hãy tưởng tượng 1 công ty phát hành ra thị trường 10,000 cổ phiếu : bạn nắm trong tay 2,000 cổ phiếu tương đương 20% và vợ bạn nắm 3,000 cổ phiếu tương đương 30% (5,000 cổ phiếu còn lại thuộc về những cổ đông khác), khi đó độ ưu tiên sử dụng tài nguyên của bạn chỉ bằng 2/3 vợ bạn. Bên cạnh đó, nếu công ty phát hành thêm 5,000 cổ phiếu nữa để nâng tổng mức cổ phiếu phát hành lên 15,000 cổ phiếu thì lúc này tỷ lệ sở hữu của bạn giảm từ 20% xuống còn 13,33% (=2,000 / 15,000 * 100%) và của vợ bản giảm từ 30% xuống còn 20% (=3,000 / 15,000 * 100%)
Phần tiếp theo, chúng ta cùng đi sâu hơn vào các cơ chế phân phối tài nguyên này.

Share
Có 4 lựa chọn với cơ chế Share :  Low, Normal, High và Custom

Tỷ lệ tương quan Low : Normal : High là 1 : 2 : 4, cụ thể như sau :


như vậy, với thông tin bên dưới

tất cả các máy ảo DC, VMware vCener Server App..., OpenFiler và anhvt đều được cấu hình Shares ở mức Normal, tuy nhiên do 03 máy ảo DC, VMware vCenter Server App... và OpenFiler đều có 02 vCPU nên Share Value sẽ là 1000*2 = 2000 còn anhvt chỉ có Share Value 1000 do chỉ có 01 vCPU.

Tổng Shares đang có là 1000+2000+2000+2000 = 7000, do đó % Shares của anhvt là 1000/7000 ~ 14% và % Shares của các máy ảo còn lại bằng nhau và bằng 2000/7000 ~ 28%.

Nếu số lượng cổ phiếu phát hành tăng thêm 1000 đơn vị, hay số lượng Shares tăng lên thành 8000 (thêm 1 máy ảo nữa có Shares Value là 1000 _ trong trường hợp này là máy ảo có tên Backup DC) như trường hợp dưới đây


thì tương quan %Shares giữa các máy ảo sẽ thay đổi. 

Lúc này, % Shares của anhvt chỉ còn 12% (1000/8000) còn 3 máy ảo ban đầu cũng chỉ còn 25% (2000/8000).

Lấy một ví dụ khác : Ngân sách hàng năm của cả nước là 500,000 tỷ. Hà Nội được cấp 5%, Hồ Chí Minh 5%, Đà Nẵng 4%, Hải Phòng 2% ... Trong nội bộ Hà Nội, sở giao thông được cấp 20%, sở giáo dục 19%, sở y tế 10%... Giả sử có sự thay đổi về việc phân bổ ngân sách trong nội bộ thành phố Hà Nội khi sở giao thông được tăng ngân sách lên 25% thì sự thay đổi này, như chúng ta có thể dễ dàng nhận thấy, chỉ ảnh hưởng đến mức ngân sách của các sở ban ngành của riêng thành phố Hà Nội mà thôi. Còn ngân sách của các thành phố khác thì hoàn toàn không bị ảnh hưởng !

Điều này cũng đúng với việc phân bổ Shares mà chúng ta đang xét. Sự thay đổi về Share Value hay % Share  chỉ tác động đến các đối tượng ngang cấp, cụ thể là các máy ảo hoặc Resource Pool có chung parent pool, còn các máy ảo và Resource Pool khác hoàn toàn không bị tác động.

Điểm thứ ba cần nói về cơ chế phân phối Shares là sự ảnh hưởng của việc tắt/bật máy ảo đến tài nguyên thực sự được phân phối cho các máy.

Ví dụ Resource Pool A với tổng CPU là 12GHz có 03 máy ảo : VM1, VM2, VM3 với tỷ lệ %Shares CPU tương ứng là 30%, 30%, 40%.

Nếu VM1 và VM2 bật còn VM3 tắt thì VM1 có thể sử dụng 6GHz CPU và VM2 có thể sử dụng 6GHz CPU (vì tương quan tỷ lệ giữa VM1 và VM2 là 50:50)

Nếu VM3 bật lên thì khi đó VM1 và VM2 chỉ có thể sử dụng 3,6GHz CPU (=12GHz * 30%) cho mỗi máy ảo

Reservation
Reservation cho phép ESXi hosts có thể đảm bảo một lượng tài nguyên tối thiểu cho máy ảo hoặc cho resource pool khi cần thiết. Reservation chỉ thực sự có ý nghĩa khi resource contention xảy ra, còn trong trường hợp các resources vẫn available thì các máy ảo hoặc resource pool có thể sử dụng lượng tài nguyên lớn hơn giá trị reservation này.


Khi một máy ảo được đảm bảo một lượng resource tối thiểu thông qua reservation nhưng hiện tại hosts không còn đủ tài nguyên thì máy ảo đó sẽ không thể power on được.

Yếu tố "đảm bảo lượng tài nguyên tối thiểu KHI CẦN THIẾT" cũng cần được lưu ý. Lấy ví dụ, ESXi host còn 2GHz available và reserve 1GHz cho VM1 và 1GHz cho VM2. Nếu VM1 chỉ sử dụng 500MHz thì VM2 hoàn toàn có thể sử dụng 1,5GHz tài nguyên. Trong trường hợp VM1 muốn sử dụng 1GHz thì VM2 sẽ buộc phải release 0,5GHz đang dùng để trả lại cho VM1.

Mặc định, giá trị reservation bằng 0 và chúng ta có thể sử dụng reservation đối với các tài nguyên RAM và CPU.

Limit
Ngược lại với Reservation khi ESXi host đảm bảo một lượng tài nguyên tối thiểu cho máy ảo hoặc resource pool, giá trị Limit lại là chặn trên cho các tài nguyên này. Điều này có nghĩa, nếu máy ảo được gán một giá trị limit là X thì trong mọi trường hợp, máy ảo đó không thể sử dụng tài nguyên vượt quá giá trị X này. Ngay cả trong trường hợp cấu hình ban đầu của máy ảo có dung lượng RAM là 2GB nhưng nếu giá trị limit gán cho máy ảo là 1,5GB thì máy ảo cũng chỉ có thể sử dụng tối đa 1,5GB mà thôi.


Limit đặc biệt có ý nghĩa trong trường hợp sau : ESXi host của bạn có 16GB RAM và hiện mới chỉ có 2VM, mỗi VM được cấu hình sử dụng 7GB RAM dù thực tế các ứng dụng trên VM chỉ cần 2GB RAM là có thể hoạt động tốt. 5 máy ảo nữa được tạo thêm trên ESXi host và người quản trị muốn 02 VM ban đầu chỉ sử dụng 2GB RAM đúng nhu nhu cầu của chúng. Thông thường, nếu không có tính năng Limit, người quản trị phải tắt máy ảo, chỉnh lại thông số RAM xuống 2GB rồi bật lại máy ảo. Thực tế không phải lúc nào cũng dễ dàng như vậy đặc biệt với các máy ảo chứa các ứng dụng quan trọng cần độ sẵn sàng cao. Trong trường hợp này, Limit sẽ giúp người quản trị giới hạn dung lượng RAM sử dụng của 02 VM ban đầu mà không cần phải tắt/bật máy ảo. Quả thật là tiện lợi !!!

Limit có thể được sử dụng đối với các tài nguyên RAM, CPU và Storage I/O.
Mặc định, ESXi host cho phép các máy ảo hay resource pool sử dụng tối đa (unlimited) lượng tài nguyên được cấu hình ban đầu và trong đa số trường hợp, chúng ta không cần thiết phải sử dụng thông số Limit này. Dưới đây là một số điều lưu ý khi sử dụng Limit :

  • Lợi thế : Ngay từ đầu, hạn chế kỳ vọng của người sử dụng. Nếu người dùng đầu cuối chỉ cần dùng 2GB RAM nhưng chúng ta lại cho họ 7GB RAM thì về sau khi áp lại 2GB RAM (5GB RAM kia chia sẻ cho các người dùng/máy ảo khác) người dùng chắc chắn sẽ phàn nàn (dù rằng họ vẫn có đủ tài nguyên cho các công việc của mình)
  • Bất lợi : Sử dụng Limit, chúng ta có thể lãng phí tài nguyên khi còn nhiều tài nguyên không được sử dụng cho các máy ảo hay resource pool. Chỉ cấu hình limit khi bạn có lý do thật xác đáng để làm điều đó.
Một số lưu ý khi thực hiện quá trình phân phối tài nguyên
Tùy thuộc vào điều kiện môi trường ESXi mà các máy ảo đang hoạt động, việc lựa chọn sử dụng Shares, Reservation hay Limit cần được xem xét cẩn thận để mang lại hiệu quả tối ưu.
  1. Nếu hệ thống có lượng tài nguyên (CPU, RAM, Storage) thường xuyên thay đổi (nâng cấp, bổ sung ...), sử dụng Shares sẽ mang lại hiệu quả cao nhất trong việc phân phối tài nguyên ở mức hợp lý cho các máy ảo hoặc resource pool. Trước khi nâng cấp hệ thống, tỉ lệ tài nguyên của VM1 và VM2 là 1:2 thì sau khi nâng cấp, tỉ lệ này vẫn được giữ nguyên (tuy mức giá trị tuyệt đối có tăng/giảm)
  2. Sử dụng Reservation cho lượng tài nguyên (CPU, Memory) tối thiểu mà máy ảo/resource pool có thể chấp nhận được, chứ Reservation không phải lượng tài nguyên bạn mong muốn máy ảo/resource pool sở hữu (đương nhiên số lượng bạn mong muốn phải lớn hơn nhiều số lượng tối thiểu bạn có thể chấp nhận được). Khi hệ thống được nâng cấp/hạ cấp thì giá trị Reservation này không thay đổi.
  3. Cố gắng tránh Reserve 100% tài nguyên được cấu hình của máy ảo hoặc resource pool, nên để lại tối thiểu 10% tài nguyên để tránh trường hợp các máy ảo không thể power on hoặc DRS không thể migrate máy ảo giữa các hosts.

0 nhận xét:

Đăng nhận xét

Popular Posts

Recent Posts

Categories

Unordered List

Text Widget

Pages