Giám sát Hyper-V bằng dòng lệnh.

 Phần 1: Cài đặt thư viện giám sát

Quản Trị Mạng – Một trong những thiếu sót thấy rõ của Hyper-V là khả năng giám sát các máy ảo từ Windows PowerShell. Mặc dù Microsoft dự định cung cấp khả năng này trên Windows Server 8 nhưng người dùng hoàn toàn có thể thực hiện giám sát máy ảo từ giao diện dòng lệnh lúc này. Bài viết sẽ hướng dẫn các bạn làm điều đó.

Nhận thư viện giám sát Hyper-V

Mặc dù Hyper-V không cung cấp những tính năng giám sát PowerShell cục bộ nhưng có một thư viện giám sát PowerShell có thể tải về từ CodePlex. Bản phát hành hiện tại chỉ được thiết kế để làm việc với PowerShell phiên bản 2.0.

Chuẩn bị cài đặt

Trước khi cài đặt thư viện giám sát Hyper-V, ta sẽ cần cài đặt Windows PowerShell. Thư viện giám sát Hyper-V được thiết kế để làm việc với một server Hyper-V độc lập, Hyper-V hoạt động trong Server Core hay các server chạy Windows Server 2008/2008 R2.

Có thể cài đặt PowerShell bằng cách mở Server Manager-console, chọn Features và kích vào đường dẫn Add Features. Cửa sổ cài đặt Add Features sẽ hỏi những tính năng nào người dùng muốn cài đặt. Chọn tính năngWindows PowerShell integrated Scripting Enviroment sau đó theo hướng dẫn để hoàn tất quá trình cài đặt.

Cài đặt thư viện giám sát hyper-V

Sau khi tải về thư viện giám sát Hyper-V từ đường link bên trên, ta được một file ZIP chứa:

  • Install.cmd: Là file cài đặt thư viện.
  • PC_Console.REG: Cập nhật registry cho server để tương thích với thư viện giám sát Hyper-V.
  • Một thư mục Hyper-V: Thư mục này chứa dữ liệu để tạo thư viện.

Kích chuột phải vào Install.cmd và chọn Run as Administrator từ thực đơn ngữ cảnh. Windows sẽ mở một cửa sổ lệnh và hiển thị một thông báo PowerShell Module cho Hyper-V cần chắc chắn rằng .NET Framework và Windows PowerShell đều đã được cài trên server. Nhấn một phím bất kỳ để tiếp tục. Khi đó người dùng sẽ nhận được một chuỗi thông báo lỗi như hình dưới.

errors

Những thông báo lỗi này là vô hại. Lý do ta thấy chúng là vì file cài đặt được thiết kế để sử dụng cho Server Core. Nhấn một phím bất kỳ để cập nhật registry cho server. Sau khi nhấn, file cài sử dụng file PS_Console.REG để sửa đổi registry của server.

Tiếp theo, nhấn phím bất kỳ để tải PowerShell. Khi PowerShell tải, ta sẽ thấy xuất hiện một lỗi thông báo module Hyper-V không thể nhập được.

errors

Mặc dù lỗi trên là vô hại, nhưng nó đồng nghĩa với việc, người dùng sẽ phải hoàn thành tiến trình cài đặt một cách thủ công. Thật may là quá trình thực hiện tương đối dễ dàng.

Nhập các module Hyper-V

Sử dụng lệnh PowerShell sau để nhập module Hyper-V:

Import-Module “C:\Program Files\Modules\Hyperv\Hyperv.psd1”

Hãy nhớ chạy PowerShell dưới quyền quản trị (Run as Administrator) trước khi thực hiện lệnh mới có thể nhập module.

Để chạy PowerShell dưới quyền quản trị, kích chuột phải vào biểu tượng PowerShell và chọn Run as Administrator từ thực đơn ngữ cảnh.

errors

Khi PowerShell mở, nhập lệnh Get-ExecutionPolicy. Tiếp theo, nhập lệnh Import-Module bên trên để nhập module Hyper-V.

errors

Nếu nhận được một thông báo lỗi khi cố gắng nhập module Hyper-V, thì vấn đề có thể nằm ở chỗ Windows chặn những script từ Internet. Bỏ chặn script bằng cách, mở Windows Explorer và truy cập thư mục C:\Program Files\Modules\Hyperv. Bây giờ, kích chuột phải vào file đầu tiên trong thư mục và chọn Properties từ thực đơn ngữ cảnh. Khi các bảng thuộc tính xuất hiện, kích vào Unblock sau đó nhấn OK. Lặp lại quá trình cho mỗi file trong thư mục.

errors

Sử dụng thư viện giám sát Hyper-V

Sau khi đã nhập module Hyper-V, có rất nhiều câu lệnh (cmdlet) ta có thể sử dụng. Ví dụ như, nếu ta nhập Show-HyperVMenu, ta sẽ được thấy một giao diện giám sát dạng văn bản cho Hyper-V. Giao diện này cung cấp chức năng tương đương Hyper-V Manager.

errors

Bây giờ, thư viện giám sát Hyper-V đã được cài đặt và hoạt động. Trong bài sau, ta sẽ cùng tìm hiểu một số câu lệnh rất hữu ích từ PowerShell.

 Phần 2: Các câu lệnh giám sát cơ bản

Trong bài này, ta sẽ tìm hiểu cách truy cập danh sách máy ảo và xem thông tin tổng quát về máy ảo bằng các câu lệnh PowerShell đơn giản. Ta cũng sẽ tìm hiểu những câu lệnh dừng và khởi động các máy ảo từ cửa sổ lệnh.

Nếu đã đọc phần một của chuỗi bài này thì bạn đã biết cách cài đặt thư viện giám sát Hyper-V. Bây giờ là lúc gặt hái thành quả từ quá trình cài đặt bằng cách giám sát Hyper-V từ PowerShell.

Mỗi lần mở PowerShell, bạn sẽ phải nhập thư viện giám sát Hyper-V trước khi có thể sử dụng bất cứ lệnh nào dưới đây. Câu lệnh để nhập thư viện giám sát là:

Import-Module “C:\Program Files\Modules\Hyperv\Hyperv.psd1”

Các lệnh giám sát cơ bản

Thư viện giám sát Hyper-V hỗ trợ rất nhiều câu lệnh, dưới đây là một số câu lệnh cơ bản mà người dùng có thể thực hiện từ PowerShell.

Nếu muốn xem những máy ảo tồn tại trên server Hyper-V, sử dụng câu lệnh sau:

Get-VM

Lệnh này sẽ hiển thị một bảng biểu diễn mỗi một máy ảo và tên host server mà máy ảo hiện tồn tại trên đó (điều này đặc biệt thuận tiện cho những cụm lớn mà một máy ảo có thể đang chạy trên một cụm nào đó). Lệnh Get-VM cũng chỉ cho người dùng trạng thái hiện tại của mỗi máy ảo cũng như thời gian máy ảo đang chạy. Trong bảng cũng chứa một trường chủ (owner field).

Bây giờ bạn đã biết cách lấy một danh sách máy ảo trên server của mình. Giả sử bạn muốn xem thêm một số thông tin về một máy ảo cụ thể, hãy sử dụng câu lệnh Get-VMSummary kèm theo tên của máy ảo muốn kiểm tra.

Hình dưới đây thể hiện hoạt động của lệnh Get-VM và Get-VMSummary. Như ta thấy, câu lệnh Get-VMSummary hiển thị tên máy ảo, địa chỉ IP, hệ điều hành và một vài thống kê khác.

VM table

Ngoài ra, có một số biến thể của những câu lệnh này. Ví dụ như, nếu muốn lấy danh sách các máy ảo từ một server chỉ định có tên Main, chỉ cần thêm tham số “-Server” vào sau lệnh Get-VM:

Get-VM-Server Main

Tương tự, ta có thể lấy thông tin tóm lược từ một máy ảo trên server đầu xa. Ví dụ như, nếu muốn xem thông tin về một máy ảo tên DNS trên server Main, ta dùng lệnh:

Get-VMSummary DNS-Server Main

summary

Tất nhiên là thư viện giám sát Hyper-V còn hữu ích hơn là chỉ thu thập thông tin máy ảo. Nó cũng có thể khởi chạy và dừng các máy ảo bằng dòng lệnh. Câu lệnh ta sử dụng để khởi chạy máy ảo là: Start-VM <virtual machine name>.

Khi thực hiện lệnh này, bạn sẽ nhận được bản tin cảnh báo hoạt động chạy nền, như hình dưới. Có thể bỏ qua thông báo này vì nó chỉ đơn thuần thể hiện rằng máy ảo đang khởi động và WMI khởi tạo đã được sắp hàng.

Get-VM

Thực ra, nếu đọc kỹ cảnh báo, bạn sẽ nhận thấy PowerShell cấp cho bạn một số nhận dạng WMI cũng như những cmdlet sẽ sử dụng để kiểm tra trạng thái.

Start-VM

Sử dụng lệnh Stop-VM để dừng máy ảo. Câu lệnh về cơ bản chỉ đẩy máy ảo vào trạng thái bị ngừng nên để tắt hẳn máy ảo, tốt hơn ta nên sử dụng câu lệnh invoke-VMShutdown. Lệnh này thực ra bảo với hệ điều hành máy ảo thực hiện tắt máy. Tất nhiên, câu lệnh này được thiết kế để sử dụng cho các máy ảo sử dụng hệ điều hành Windows.

Ở hình dưới đây, bạn có thể thấy đầu tiên tôi nhập lệnh Stop-VM. Khi PowerShell hỏi có thực sự muốn dừng máy ảo, tôi hủy bằng cách nhấn N. Sau đó, tối sử dụng lệnh Invoke-VMShutdown (với tên máy ảo) để khởi động quá trình shutdown. Một lần nữa, PowerShell lại hỏi tôi có thực sự muốn thực hiện hoạt động này không. Lần này tôi nhập và quá trình tắt được bắt đầu. Cuối cùng, kiểm tra rằng máy ảo đã tắt nhờ câu lệnh Get-VM.

Stop-VM

Giờ bạn đã biết cách kiểm tra thông tin tổng thể của máy ảo và cách khởi động và dừng máy ảo từ giao diện dòng lệnh. Trong phần 3, tôi sẽ chỉ cho các bạn hai lệnh khắc phục lỗi, PingVM và TestVmHeartBeat. Tiếp theo là một số thủ thuật điều chỉnh việc cấp phát bộ nhớ cho máy ảo.

 Phần 3: Kiểm tra trạng thái máy ảo

 Bài viết trước đã hướng dẫn các bạn cách bật và tắt máy ảo bằng dòng lệnh. Bài viết này sẽ giới thiệu hai phương pháp xác thực rằng các máy ảo đang chạy và có hồi đáp.

Lưu ý rằng những câu lệnh sử dụng không thuộc Hyper-V. Chúng nằm trong thư viện giám sát Hyper-V. hơn nữa, thư viện này phải được nhập vào trong PowerShell mỗi lần bạn định sử dụng bất kỳ câu lệnh nào liên quan đến Hyper-V. Câu lệnh nhập thư viện là:

Import-Module “C:\Program Files\Modules\Hyperv\Hyperv.psd1”

Các chỉ dẫn đầy đủ về cách tải và cài đặt thư viện giám sát Hyper-V đã được cung cấp trong phần 1 của chuỗi bài này.

Các câu lệnh tìm lỗi

Các nhà quản trị thường phụ thuộc vào lệnh ping để kiểm thử kết nối của máy chủ. Rất đơn giản. Thực hiện lệnh ping đến máy và xem có hồi đáp hay không. Mặc dù lệnh ping hoạt động tương đối tốt, nhưng có một lệnh trong PowerShell tên là Ping-VM cũng được thiết kế chuyên dụng để ping các máy ảo.

Trước hết, lệnh Ping-VM dường như dư thừa và cú pháp đôi chút phức tạp hơn so với lệnh ping thông thường, nhưng câu lệnh có những ưu điểm riêng. Lệnh ping-VM yêu cầu người dùng cung cấp tên máy ảo muốn ping và tên của server chủ. Ví dụ như, Nếu ta muốn ping một máy ảo có tên Lab-DC đang hoạt động trên một máy chủ tên là Hyper-V thì cấu trúc lệnh sẽ là:

Ping-VM “Lab-DC” –Server Hyper-V

Khi câu lệnh này được thực hiện, lệnh Ping-VM sử dụng các dịch vụ tích hợp trên máy ảo để tìm Fully Qualified Domain Name và sau đó nó thực hiện một lệnh ping ICMP.

Có hai lý do để sử dụng Ping-VM thay vì Ping. Đầu tiên, Ping-VM nhận diện được máy ảo. Thứ hai, Ping-VM có thể chạy cới nhiều máy ảo nhờ sử dụng các wildcard. Để minh họa cho những khái niệm này, hãy cùng quan sát hình dưới đây. Server chủ có một vài máy ảo (Lab-). Ta sẽ thực hiện lệnh đối với những máy ảo này. Ping-VM đã trả về thông tin trên 6 máy ảo và thậm chí có thể xác định những máy ảo nào đã bị tắt.

Cũng có thể sử dụng Ping-VM để kiểm tra trạng thái máy ảo nằm trên máy host. Để làm điều này, chỉ cần thay thế tên máy ảo bằng dấu hoa thị. Bạn thậm chí có thể làm nhiều hơn và hiển thị một bản tin cảnh báo cho bất kỳ máy ảo nào đang chạy, nhưng lại không ping được. Câu lệnh là:

Get-VM –r | foreach-object {if ((Ping-VM $_).StatusCode –ne 0) {“$($_.elementname) is inaccessible”} }

Câu lệnh không cho kết quả đầu ra nếu các máy ảo được ping thành công.

Ngoài ra, lệnh Ping-VM còn được dùng để ping những máy ảo trên nhiều host Hyper-V. Chỉ cần cấp tên của mỗi máy host mà bạn muốn ping. Các tên máy phải được ngăn cách bằng dấu phẩy. Ví dụ như, nếu bạn muốn ping tất cả những máy ảo trên Hyper-V1, Hyper-V2 và Hyper-V 3 thì câu lệnh sử dụng là:

Ping-VM*-Server Hyper-V1,Hyper-V2,Hyper-V3

Kiểm tra trạng thái máy ảo

Không những có thể sử dụng Ping-VM để xem máy ảo có hồi đáp hay không, người dùng còn có thể sử dụng lệnh Test-VmHeartBeat. Giống như Ping-VM, lệnh Test-VMHeartBeat phụ thuộc vào những dịch vụ tích hợp đang chạy trên máy ảo được kiểm thử.

Cú pháp lệnh tương đối đơn giản. Người dùng phải chỉ định tên máy ảo và thời hạn. Thời hạn được tính bằng giây. Lệnh Test-VmHeartBeat sẽ kiểm tra trạng thái mỗi 5 giây một lần cho đến khi hết thời gian qui định.Ví dụ như, Nếu bạn muốn kiểm tra trạng thái máy ảo trong 5 phút, hãy đặt thời hạn là 300. Quan sát hình bên dưới để thấy rõ hơn cho máy ảo Lab-DC.

Giống như lệnh Ping-VM, người dùng có thể sử dụng Wildcard của tên máy ảo và chỉ định nhiều server chủ.

Do Ping-VM và Test-VMHeartBeat đều sử dụng để kiểm tra đáp ứng máy ảo nên người dùng có thể phân vân nên sử dụng lệnh nào.

Nếu muốn một báo cáo trạng thái nhanh từ toàn bộ máy ảo (kể cả những máy không hoạt động) thì tốt hơn hết nên sử dụng Ping-VM. Lý do là Test-VMHeartBeat sẽ chặn và chờ hết thời hạn cho mỗi máy ảo mà hiện bị tắt. Ví dụ như, giả sử server chủ có 10 máy ảo, nhưng chỉ có 5 trong số đó đang hoạt động lúc này. Ta thực hiện lệnh sau:

Test-VmHeartBeat*-Timeout 300

Câu lệnh sẽ mất tới đúng 25 phút để hoàn thành do lệnh Test-VM sẽ đợi cho đủ 5 phút trong khi kiểm tra mỗi máy ảo bị tắt. Ngược lại, lệnh Ping-VM sẽ cung cấp thông tin trạng thái cơ bản tương tự, nhưng sẽ hoàn thành gần như tức thì.

Mặc dù vậy, Test-VmHeartBeat lại đặc biệt hữu dụng khi các máy ảo cần được khởi động lần lượt. Ví dụ như, Lab-DC cần được khởi chạy trước Exchange Server (Lab-E2K10). Sử dụng lệnh Test-VmHeartBeat để kiểm tra xem Lab-DC có đang chạy trước Exchange Server hay không. Để khởi động hai server này tuần tự, ta có thể sử dụng câu lệnh như sau:

Start-vm “Lab-DC” ; Test-VmHeartBeat “Lab-DC” –Timeout 300; Start-vm “Lab-E2K10”

Ở hình trên, người dùng có thể thấy PowerShell khởi động Lab-DC và sau đó dừng lại để chờ đợi trạng thái máy ảo được ghi nhận. sau khi Lab-DC hoạt động, Exchange Server được khởi động như hình dưới.

Kết luận

Bây giờ, bạn đã biết cách kiểm tra trạng thái máy ảo bằng dòng lệnh. Trong phần tiếp theo, chúng ta sẽ cùng xem một số thủ thuật điều chỉnh bộ nhớ cấp phát cho máy ảo.

Giám sát Hyper-V bằng dòng lệnh (Phần 4)

 Trong số các tài nguyên phần cứng thường được ấn định cho máy ảo thì có lẽ bộ nhớ mang tính quết định nhất. Bài viết sẽ hướng dẫn các bạn cách quản lý bộ nhớ máy ảo thông qua Windows PowerShell.

Trước khi bắt đầu, hãy nhớ nhập thư viện giám sát Hyper-V vào PowerShell mỗi lần sử dụng câu lệnh liên quan đến Hyper-V. Câu lệnh nhập thư viện là:

Import-Module “C:\Program Files\Modules\Hyperv\Hyperv.psd1”

Các lệnh đầy đủ để tải về và cài đặt thư viện giám sát Hyper-V được trình bày trong phần 1 chuỗi bài viết này.

Tạo báo cáo sử dụng bộ nhớ

Do tài nguyên bộ nhớ là hữu hạn nên việc xác định lượng bộ nhớ cấp cho các máy ảo là rất quan trọng. Tuy việc này thực hiện tương đối đơn giản từ Hyper-V nhưng trình giám sát này lại không có chức năng báo cáo. May mắn là, người dùng vẫn có thể tự xây dựng cho mình các bản báo cáo hiệu năng sử dụng bộ nhớ một cách trực tiếp từ Windows PowerShell.

Câu lệnh được sử dụng để kiểm tra kích thước bộ nhớ một máy ảo đang sử dụng là Get-VMMemory. Cú pháp lệnh như sau:

Get-VMMemory –VM”<tên máy ảo>” –Server “<tên server chủ chạy Hyper-V>”

Về lý thuyết, “-Server” là tham số cần thiết, nhưng nếu bỏ tham số này thì lệnh Get-VMMemory sẽ truy vấn tới server cục bộ theo mặc định. Thường thì người dùng sẽ chỉ định một server nhất định những cũng có thể chỉ định nhiều server. Nếu truy vấn tới nhiều máy chủ chạy Hyper-V, ta phải nhập đầy đủ tên các server. Wildcard không có tác dụng ở đây.

Tham số tên máy ảo thì lại khác. Tham số này là không bắt buốc. Nếu bỏ nhập tên máy ảo thì PowerShell sẽ hiển thị tình hình cấp phát bộ nhớ cho mọi máy ảo trên server chủ chỉ định. Nếu muốn rút gọn phạm vi danh sách, hãy chỉ định một hay nhiều máy ảo.

Nếu chỉ nhập lệnh Get-VMMemory không thôi mà không có tham số đi kèm thì câu lệnh sẽ hiển thị tình hình cấp phát bộ nhớ cho mỗi máy ảo trong server cục bộ.

Như ta thấy trên hình, câu lệnh đã liệt kê kích thước bộ nhớ ảo, giới hạn và bộ nhớ dự trữ cho mỗi máy ảo.

Mặc dù rất tiện dụng khi có thể xem kích thước bộ nhớ ảo, giới hạn và bộ nhớ dự trữ cho mỗi máy ảo, nhưng bạn cũng có thể thực sự sử dụng Get-VMMemory để nhận được nhiều thông tin liên quan bộ nhớ hơn nữa. Để làm điều này, ta sẽ cần biết tên các thuộc tính được hỗ trợ bởi cmdlet Get-VMMemory.

Để xem danh sách tất cả các thuộc tính có sẵn, nhập câu lệnh sau:

Get-VMMemory | Get-Member –MemberType *Property | Select-Object Name

Như hình trên, VirtualQuantity, Limit và Reservation nằm trong số các thuộc tính được liệt kê, nhưng có rất nhiều thuộc tính khác. Bạn có thể sử dụng lệnh Get-VMMemory để hiển thị bất kỳ tập thuộc tính nào. Giả sử khi muốn xem VMElementName, Address và AllocationUnits, nhập câu lệnh sau:

Get-VMMemory | FT VMElementName, Address, AllocationUnits

Tạo báo cáo bộ nhớ

Nếu muốn lưu lại thông tin bộ nhớ để sử dụng sau đó thì có một giải pháp là xuất kết quả đầu ra của cmdlet Get-Memory thành một file HTML.

Sử dụng câu lệnh sau:

Get-VMMemory | ConvertTo-HTML | Out-File C:\temp\Test.HTM

Như hình dưới, câu lệnh này không hiện kết quả đầu ra. Đó là do đầu ra câu lệnh đang được chuyển hướng thành một file HTML tên là C:\temp\test.htm. Bạn có thể sử dụng Windows Explorer để cấp phát và mở file nhưng thay vào đó ta cũng có thể mở file mà không phải rời khỏi PowerShell. Chỉ cần nhập lệnh sau:

Invoke-Expression C:\temp\test.htm

Nếu quan sát hình dưới đây, ta sẽ thấy rằng lệnh này khởi chạy Internet Explorer và hiển thị file HTML mà chúng ta đã tạo ra. Hơn nữa, các báo cáo dưới dạng HTML trông khác rất nhiều so với báo cáo bên trên mặc dù cả hai lệnh đều sử dụng Get-VMMemory mà không có bất kỳ tham số phụ nào. Trên thực tế, nếu nhìn xuống cuối màn hình báo cáo, bạn sẽ thấy một thanh cuộn chỉ thị rằng còn nhiều dữ liệu được hiển thị hơn.

Những thông tin này có thể hữu ích để tạo ra một file CSV để có thể xem được bằng Excel dưới dạng bảng trong Excel hơn là một trang Web. May mắn là, PowerShell cũng có khả năng này. Câu lệnh mà ta sẽ sử dụng để thực hiện việc này gần giống với câu lệnh được dùng để tạo báo cáo dạng HTML. Tuy nhiên ở đây, thay vì sử dụng ConvertTo-HTML chúng ta đang sử dụng ConvertTo-CSV. Câu lệnh đầy đủ là:

Get-VMMemory | ConvertTo-CSV | Out-File C:\temp\test.csv

Sau khi file CSV được tạo, bạn có thể kích đúp vào file để mở bằng Excel. Tuy nhiên, nó sẽ không hiện ra chính xác thông tin. Để nhận đầy đủ và chính xác thông tin, hãy mở Excel trước, sau đó mới mở file. Excel sẽ khởi chạy Text Import Wizard. Thiết lập cho Wizard bắt đầu nhập file với Row 2 và thực hiện phân cách dữ liệu như hình bên dưới.

Tiếp theo, đặt tùy chọn phân tách dữ liệu là dấu phẩy. Sau đó kích vào Finish. Dữ liệu sẽ được nhập như hình dưới đây.

Như vậy, các bạn đã biết cách lấy thông tin dữ liệu về tình hình bộ nhớ máy ảo từ PowerShell. Ở bài tiếp theo, chúng ta sẽ tìm hiểu cách thay đổi bộ nhớ cấp phát cho các máy này.

Advertisements

Trả lời

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s