如何知道CPU是否支持虛擬化技術(shù)(VT)
我們已經(jīng)知道如何檢查你的 Linux 操作系統(tǒng)是 32 位還是 64 位以及如何知道你的 Linux 系統(tǒng)是物理機(jī)還是虛擬機(jī)。今天,我們將學(xué)習(xí)另一個(gè)有用的話題 - 如何知道 CPU 是否支持虛擬化技術(shù) (VT)?在安裝虛擬化程序(如 VirtualBox 或 VMWare workstation)以在 Linux 系統(tǒng)上運(yùn)行虛擬機(jī)之前,你應(yīng)該首先驗(yàn)證這一點(diǎn)?,F(xiàn)在讓我們來(lái)看看你的電腦是否支持 VT。相信我,這真的很簡(jiǎn)單!
了解 CPU 是否支持虛擬化技術(shù) (VT)
我們可以通過(guò)幾種方法檢查 CPU 是否支持 VT。在這里我向你展示四種方法。
方法 1:使用 egrep 命令
egrep 是 grep 命令的變體之一,用于使用正則表達(dá)式搜索文本文件。為了本指南的目的,我們將 grep /cpu/procinfo/ 文件來(lái)確定 CPU 是否支持 VT。
要使用 egrep 命令查明你的CPU是否支持VT,請(qǐng)運(yùn)行:
$ egrep "(svm|vmx)" /proc/cpuinfo
示例輸出:
你將在輸出中看到 vmx(Intel-VT 技術(shù))或 svm (AMD-V 支持)。
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts[...]
由于輸出很長(zhǎng),你可能會(huì)發(fā)現(xiàn)很難在輸出中找到 vmx 或 svm。別擔(dān)心!你可以像下面那樣用顏色來(lái)區(qū)分這些術(shù)語(yǔ)。
$ egrep --color -i "svm|vmx" /proc/cpuinfo

如果你沒(méi)有看到任何輸出,這意味著你的系統(tǒng)不支持虛擬化。
請(qǐng)注意,cpuinfo 中的這些 CPU 標(biāo)志(vmx 或 svm)表示你的系統(tǒng)支持 VT。在某些 CPU 型號(hào)中,默認(rèn)情況下,可能會(huì)在 BIOS 中禁用 VT 支持。在這種情況下,你應(yīng)該檢查 BIOS 設(shè)置以啟用 VT 支持。
有關(guān) grep/egrep 命令的更多詳細(xì)信息,請(qǐng)參閱手冊(cè)頁(yè)。
$ man grep
方法 2: 使用 lscpu 命令
lscpu 命令用于顯示有關(guān) CPU 架構(gòu)的信息。它從 sysfs、/proc/cpuinfo 收集信息,并顯示主機(jī)系統(tǒng)的 CPU、線程、內(nèi)核、套接字和非統(tǒng)一內(nèi)存訪問(wèn) (NUMA) 節(jié)點(diǎn)的數(shù)量。
要確定是否啟用 VT 支持,只需運(yùn)行:
$ lscpu

有關(guān)更多詳細(xì)信息,請(qǐng)查看手冊(cè)頁(yè)。
$ man lscpu
方法 3:使用 cpu-checker 工具
cpu-checker 是另一個(gè)有用的工具,用于測(cè)試你的 CPU 是否支持虛擬化。就我在網(wǎng)上搜索得到的,該程序僅適用于基于 Ubuntu 的系統(tǒng)。要安裝它,請(qǐng)運(yùn)行:
$ sudo apt-get install cpu-checker
安裝 cpu-checker 包之后,運(yùn)行以下命令來(lái)檢查是否啟用 VT 支持:
$ sudo kvm-ok
如果您的 CPU 支持 VT,你將得到以下輸出:
INFO: /dev/kvm existsKVM acceleration can be used
如果你的 CPU 不支持 VT,你會(huì)看到如下的輸出。
INFO: Your CPU does not support KVM extensionsKVM acceleration can NOT be used
方法 4:使用 virt-host-validate 工具
該工具專門用于基于 RHEL 的發(fā)行版,如 CentOS 和 Scientific Linux。 libvirt-client 包提供 virt-host-validate 二進(jìn)制文件。所以你需要安裝 libvert-client 包來(lái)使用這個(gè)工具。
$ sudo yum install libvirt-client
現(xiàn)在,運(yùn)行 virt-host-validate 命令來(lái)確定基于 RHEL 的系統(tǒng)中是否啟用了 VT。
$ sudo virt-host-validate
如果所有的結(jié)果是 pass,那么你的系統(tǒng)支持 VT。
QEMU: Checking for hardware virtualization : PASSQEMU: Checking if device /dev/vhost-net exists : PASSQEMU: Checking if device /dev/net/tun exists : PASSQEMU: Checking for cgroup 'memory' controller support : PASSQEMU: Checking for cgroup 'memory' controller mount-point : PASSQEMU: Checking for cgroup 'cpu' controller support : PASSQEMU: Checking for cgroup 'cpu' controller mount-point : PASSQEMU: Checking for cgroup 'cpuacct' controller support : PASSQEMU: Checking for cgroup 'cpuacct' controller mount-point : PASSQEMU: Checking for cgroup 'cpuset' controller support : PASSQEMU: Checking for cgroup 'cpuset' controller mount-point : PASSQEMU: Checking for cgroup 'devices' controller support : PASSQEMU: Checking for cgroup 'devices' controller mount-point : PASSQEMU: Checking for cgroup 'blkio' controller support : PASSQEMU: Checking for cgroup 'blkio' controller mount-point : PASSQEMU: Checking for device assignment IOMMU support : PASSLXC: Checking for Linux >= 2.6.26 : PASSLXC: Checking for namespace ipc : PASSLXC: Checking for namespace mnt : PASSLXC: Checking for namespace pid : PASSLXC: Checking for namespace uts : PASSLXC: Checking for namespace net : PASSLXC: Checking for namespace user : PASSLXC: Checking for cgroup 'memory' controller support : PASSLXC: Checking for cgroup 'memory' controller mount-point : PASSLXC: Checking for cgroup 'cpu' controller support : PASSLXC: Checking for cgroup 'cpu' controller mount-point : PASSLXC: Checking for cgroup 'cpuacct' controller support : PASSLXC: Checking for cgroup 'cpuacct' controller mount-point : PASSLXC: Checking for cgroup 'cpuset' controller support : PASSLXC: Checking for cgroup 'cpuset' controller mount-point : PASSLXC: Checking for cgroup 'devices' controller support : PASSLXC: Checking for cgroup 'devices' controller mount-point : PASSLXC: Checking for cgroup 'blkio' controller support : PASSLXC: Checking for cgroup 'blkio' controller mount-point : PASS
如果你的系統(tǒng)不支持 VT,你會(huì)看到下面的輸出。
QEMU: Checking for hardware virtualization : FAIL (Only emulated CPUs are available, performance will be significantly limited)[...]
就是這樣了。在本文中,我們討論了確定 CPU 是否支持 VT 的不同方法。如你所見(jiàn),這很簡(jiǎn)單。希望這個(gè)有用。還有更多好的東西。敬請(qǐng)關(guān)注!
干杯!

















