Tentukan tamu mana yang berjalan pada tamu XEN: HVM atau PV

9

Saya bekerja dengan host Xen yang menginstal XenServer dari Citrix oleh seseorang. Dia sudah menginstal banyak tamu CentOS 5.2 di host. Saya ingin tahu bagaimana cara memeriksa tamu-tamu itu untuk mengetahui bahwa mereka adalah tipe PV atau tipe HVM?

Ha Son Hai
sumber

Jawaban:

10

Catatan singkat, sebenarnya ada 3 mode, bukan dua dalam hal driver yang digunakan:

  • HVM: kernel dan driver yang tidak dimodifikasi menggunakan perangkat emulasi perangkat
  • PV-HVM: kernel yang tidak dimodifikasi dengan disk dan driver jaringan paravirtualual (khusus Xen)
  • PV: kernel dan driver yang dimodifikasi

Untuk tamu Xen / DomU Anda dapat melakukan yang sangat mendasar unamedan lsmoddengan grep untuk membuat daftar modul yang digunakan:

uname -a
lsmod | grep xen

Jika uname -amencantumkan kernel dengan string "xen" di dalamnya, maka Anda memiliki kernel yang dimodifikasi dan kemungkinan adalah tamu PV, dan Anda akan melihat output dari lsmodperintah untuk mengonfirmasi. Jika Anda memiliki output dari grep on lsmodtetapi tidak ada tanda-tanda kernel yang dimodifikasi maka Anda adalah PV-HVM. Tanpa tanda-tanda baik, itu adalah HVM lurus.

Catatan: Secara umum Anda dapat melakukan lebih banyak dengan VM yang memiliki alat PV diinstal, sehingga bisa menjadi pointer yang cukup jelas, namun Anda dapat memalsukan keberadaan alat PV untuk memungkinkan menangguhkan / melanjutkan dll sehingga Anda tidak dapat mengandalkan itu pada umumnya .

Adam C
sumber
Terima kasih @Adam. Ini jawaban paling jelas yang saya temukan sejauh ini.
Ha Son Hai
10

Ada alternatif yang lebih baik untuk menganalisis uname -akeluaran dari dalam domain tamu. Anda sebaiknya memeriksa profil VM di hypervisor itu sendiri.

XL

Dengan toolstack XenLight saat ini untuk instalasi Xen mandiri, ini dapat dicapai dengan menjalankan xl list --longperintah:

# xl list
Name                   ID   Mem VCPUs      State   Time(s)
My-Virtual-Machine     42  1024     1     -b----    9001.0

# xl list -l 42
    or
# xl list --long My-Virtual-Machine

[
    {
        "domid": 6,
        "config": {
            "c_info": {
                "name": "My-Virtual-Machine",
                "uuid": "12345678-abcd-1234-abcd-12345678abcd",
                "type": "pv",
                ...
            },
            ...
        }
    }
]

Perhatikan typeitem di  c_infobagian - jika sama  "pv", ini berarti paravirtual.

XM

Dengan instalasi Xen mandiri yang lebih lama menggunakan xmtoolstack manajemen tradisional , semuanya serupa:

# xm list --long My-Virtual-Machine
(domain
    (domid 42)
    (name My-Virtual-Machine)
    (image
        (linux
            (kernel ...)
            ...
        )
    )
    ...
)

Perhatikan (linux)elemen di  (image)bagian - ini sesuai dengan  builderdirektif konfigurasi, di mana "linux" berarti "paravirtual" (bukan kernel sebenarnya), sementara "hvm" adalah singkatan dari "virtualisasi penuh".

XE

Dengan XenServer atau XCP alat Anda bisa menggunakan xe vm-list params=allperintah atau sesuatu yang sama.

virsh

Mungkin ada (atau telah) beberapa cara untuk mendapatkan informasi ini dari  libvirt toolstack, tetapi tidak saya ketahui.


Perhatikan bahwa, dimulai dengan Xen 4.5, mode paravirtual pada x86-64 memiliki dua rasa:

  • paravirtualization klasik (PV) yang mengandalkan sistem tamu untuk ditulis ulang dari menggunakan ring 0 menuju ring 1; karena AMD telah membuang ring 1 dan ring 2 di x86-64, Xen harus kembali ke manajemen berbasis perangkat lunak, yang bahkan lebih lambat dari HVM;
  • hardware-assisted paravirtualization (PVH), - jangan dikelirukan dengan  sepenuhnya tervirtualisasi dengan driver paravirtual (PV-on-HVM), - yang mengandalkan bantuan perangkat keras untuk menangani instruksi khusus dan tabel halaman memori, tetapi menggunakan teknik PV tradisional untuk yang lainnya , sehingga tidak ada perangkat keras yang ditiru dan kinerja mendekati pribumi tercapai seperti pada x86-32 yang baik.

Untuk memeriksa apakah host berjalan dengan PVH diaktifkan, seseorang dapat menggunakan xl info(walaupun metode ini tidak lebih baik dari memeriksa grub.cfg ):

# xl info | grep xen_commandline
xen_commandline        : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
                         ^^^^^

Untuk memeriksa apakah tamu tertentu berjalan dalam mode PVH ( pvh=1dalam file konfigurasi), sekali lagi, lihat xl list -l:

            "c_info":{
                "name": "My-Virtual-Machine",
                "type": "pv",
                "pvh": "True",
                ...
            },

Namun, dari perspektif administrasi, PVH seharusnya tidak berbeda dengan PV.

Anton Samsonov
sumber
Ini tidak berfungsi pada 4.4.1 karena tidak ada xmperintah tetapi xlyang memiliki keluaran berbeda. Tahu cara mendapatkan info di 4.4.1 XEN. Terima kasih.
Wakan Tanka
@WakanTanka Saat ini saya tidak memiliki akses ke server Xen yang berfungsi, tetapi menurut sampel keluaran yang ditemukan secara online pendekatannya pada dasarnya sama. Lihat jawaban yang diperbarui.
Anton Samsonov
Ini adalah pendekatan yang jauh lebih baik daripada jawaban @ AdamC, karena saya memiliki beberapa tamu PV ubuntu yang pasti PV menurut xl, dan belum menyebutkan xen dalam nama kernel atau modul kernel.
Nama Palsu
2
Ini membutuhkan akses ke hypervisor, bagaimana orang bisa tahu jika dia hanya memiliki akses ke tamu?
Tonin