Difference between revisions of "KVM (简体中文)"

From ArchWiki
Jump to navigation Jump to search
(fixed i18n and categories)
(Follow the English Version Updates, translate and remove wrong formats and statements.)
 
(74 intermediate revisions by 20 users not shown)
Line 1: Line 1:
[[Category:Emulators (简体中文)]]
 
[[Category:HOWTOs (简体中文)]]
 
 
[[Category:简体中文]]
 
[[Category:简体中文]]
 +
[[Category:Virtualization (简体中文)]]
 +
[[Category:Kernel (简体中文)]]
 +
[[en:KVM]]
 +
[[it:KVM]]
 +
[[ja:KVM]]
 +
[[zh-hant:KVM]]
 +
{{Translateme (简体中文)|请完成更新后的翻译。}}
  
{{i18n_links_start}}
+
'''KVM'''(英文Kernel-based Virtual Machine的缩写)是内核内建的虚拟机。有点类似于 [[Xen]] ,但更追求更简便的运作,比如运行此虚拟机,仅需要加载相应的 {{Ic|kvm}} 模块即可后台待命。和 Xen 的完整模拟不同的是,KVM 需要芯片支持虚拟化技术(英特尔的 VT 扩展或者 AMD 的 AMD-V 扩展)。
{{i18n_entry|English|KVM}}
 
{{i18n_entry|简体中文|KVM (简体中文)}}
 
{{i18n_links_end}}
 
  
'''KVM''', Kernel-based Virtual Machine, is a hypervisor built right into the 2.6 kernel for kernels later than 2.6.20. It is similar to Xen in purpose but much simpler to get running.  To start using the hypervisor, just load the appropriate kvm modules and the hypervisor is up. As with Xen's full virtualization, in order for KVM to work, you must have a processor that supports Intel's VT extensions or AMD's Pacifica extensions.
+
在KVM中,可以运行各种未更改的GNU/Linux, Windows 或任何其他系统镜像。(请看[http://www.linux-kvm.org/page/Guest_Support_Status 客户机支持状态]),每个虚拟机都可提供独享的虚拟硬件:网卡,硬盘,显卡等。请看 [http://www.linux-kvm.org/page/HOWTO KVM Howto]
  
Using KVM, one can run multiple virtual machines running unmodified Linux, Windows or any other system images. (See [http://www.linux-kvm.org/page/Guest_Support_Status Guest Support Status]) Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc. See [http://www.linux-kvm.org/page/HOWTO KVM Howto]
+
KVM, Xen, VMware, 和 QEMU 的不同,请看这里[http://www.linux-kvm.org/page/FAQ#What_is_the_difference_between_kvm_and_Xen.3F KVM FAQ].
  
Differences among the kvm, xen, vmware, and qemu can be found from [http://www.linux-kvm.org/page/FAQ#What_is_the_difference_between_kvm_and_Xen.3F KVM FAQ].
+
== 检查是否支持KVM ==
  
=== 获取软件包 ===
+
=== 硬件支持 ===
  
Arch 内核 2.6.22 或更新版本现在提供合适的KVM模块.
+
KVM需要虚拟机宿主(host)的处理器带有虚拟化支持(对于Intel处理器来说是VT-x,对于AMD处理器来说是AMD-V)。你可以通过以下命令来检查你的处理器是否支持虚拟化:
你可以使用下面命令来检查你的内核版本是否支持KVM :
+
$ LC_ALL=C lscpu | grep Virtualization
<pre>
+
或者:
modprobe -l kvm*
+
$ grep -E --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo
</pre>
+
如果运行后没有显示,那么你的处理器'''不'''支持硬件虚拟化,你'''不能'''使用KVM。
KVM also requires a modified QEMU (the kvm package in the EXTRA repository, providing the qemu-kvm) to launch and manage virtual machines. Or, you can choose to install qemu >= 0.9.0, which conflicts with the kvm packge, and now provides a qemu-kvm executable (qemu --enable-kvm) that take advantage of this technology.
 
pacman -Sy kernel26 kvm
 
or
 
pacman -Sy kernel26 qemu
 
  
=== Setup kernel modules ===
+
{{注意|您可能需要在BIOS中启用虚拟化支持}}
  
You could check if your computer support hardware acceleration with this command (must return something on screen) :
+
=== 内核支持 ===
<pre>
 
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
 
</pre>
 
  
Firstly, you need to add your user into the kvm group to use the /dev/kvm device.
+
Arch Linux的内核提供了相应的[[Kernel_modules (简体中文)|内核模块]]来支持KVM。
<pre>
 
gpasswd -a <Your_Login_Name> kvm
 
</pre>
 
  
Secondly, modprobe ''kvm'' and ''kvm-intel'' modules if you have Intel extensions.
+
* 你可以通过以下命令来检查你的内核是否已经包含了支持虚拟化所必须的模块({{ic|kvm}}及{{ic|kvm_amd}}与{{ic|kvm_intel}}这两者中的任意一个):
<pre>
+
$ zgrep CONFIG_KVM /proc/config.gz
modprobe kvm
+
如果模块设置不为 {{ic|y}}或{{ic|m}},则该模块''''''可用
modprobe kvm-intel
 
</pre>
 
Or modprobe ''kvm'' and ''kvm-amd'' modules if you have AMD extensions.
 
<pre>
 
modprobe kvm
 
modprobe kvm-amd
 
</pre>
 
If modprobing kvm succedes, but modprobing kvm-intel or kvm-amd fails (but /proc/cpuinfo claims that VT is supported), check your bios settings. Some vendors (especially laptop vendors) disable VT by default.
 
  
If you want these modules to persist, add them to ''rc.conf''
+
* 然后确认这些内核模块是否已自动加载:
 +
$ lsmod | grep kvm
 +
如果运行后没有显示,那么需要[[Kernel modules (简体中文)#手动加载卸载|手动加载]]这些模块。
  
=== Using KVM as a non-root user ===
+
== 准虚拟化(使用VIRTIO) ==
By default the /dev/kvm device is owned by root:root and is not accessible by other users. To enable a user to invoke qemu-kvm without root
 
privileges, add them to the kvm group then add a udev rule to change the permissions of /dev/kvm when it is created.
 
<pre>
 
groupadd kvm
 
usermod -aG kvm <the users' username>
 
cat >>/etc/udev/rules.d/65-kvm.rules <<EOF
 
KERNEL=="kvm", NAME="%k", GROUP="kvm", MODE="0660"
 
EOF
 
modprobe -r kvm-intel  # or kvm-amd if using that hardware
 
modprobe kvm-intel
 
</pre>
 
It is necessary to for the user to log out before any group membership changes will take effect. /dev/kvm will be recreated with read-write
 
privileges for members of group kvm.
 
  
=== 如何使用KVM ===
+
准虚拟化为客户机提供了一种使用主机上设备的快速有效的通信方式。KVM使用Virtio API作为虚拟机管理程序和客户机之间的连接层,为虚拟机提供准虚拟化设备(亦称Virtio设备)。
# 创建一个操作系统镜像 <pre>$ qemu-img create -f qcow2 <Image_Name> <size></pre>
+
所有Virtio设备都包括两部分:主机设备和客户机驱动程序。
# 安装操作系统 <br> A CD/DVD image (ISO files) can be used for the installation. <pre>$ qemu-kvm -hda <Image_Name> -m 512 -cdrom </Path/to/the/ISO/Image> -boot d -vga std</pre>
 
# 运行系统 <pre>$ qemu-kvm -hda <Image_Name> -m 512 -vga std</pre>
 
Note: The default memory of KVM is 128M, if not provide "-m".
 
  
See '''[[QEMU]]''' for all informations, and the ''Using the Kernel-based Virtual Machine'' section.
+
=== 内核支持 ===
  
=== Easy to Use for New User ===
+
* 用以下命令检查VIRTIO模块是否可用:
If the qemu package has been installed, you can use an GUI tool, such as qtemu, to manage your virtual machine (you need to change "qemu" in the configure item"QEMU start command" to "qemu-kvm" / "qemu-system-x86_64").
+
$ zgrep VIRTIO /proc/config.gz
 +
 
 +
* 检查VIRTIO模块是否已经自动加载:
 +
$ lsmod | grep virtio
 +
 
 +
如果运行后没有显示,那么需要[[Kernel modules (简体中文)#手动加载卸载|手动加载]]这些模块。
 +
 
 +
{{Tip|
 +
如果 {{Ic|kvm_intel}} 或 {{Ic|kvm_amd}} 加载失败但是{{Ic|kvm}} 加载成功, ({{ic|lscpu}}可检查硬件支持情况)检查你的BIOS设置。一些品牌机 (尤其时笔记本电脑) 默认关闭了这个功能,请确保是否是硬件支持该功能,但在BIOS中它被关闭了,在{{Ic|dmesg}}的提示信息中会展示出相关的警告信息。}}
 +
 
 +
=== 准虚拟化设备列表 ===
 +
 
 +
* 网络设备 (virtio-net)
 +
* 硬盘设备 (virtio-blk)
 +
* 控制器设备 (virtio-scsi)
 +
* 串口设备 (virtio-serial)
 +
* 气球设备 (virtio-balloon)
 +
 
 +
== 如何使用KVM ==
 +
 
 +
请参考[[QEMU (简体中文)|QEMU]]条目。
 +
 
 +
== 小贴士与小技巧 ==
 +
 
 +
{{注意|请参考[[QEMU#Tips and tricks]]和[[QEMU#Troubleshooting]]词条获取更多相关技巧。}}
 +
 
 +
=== 嵌套虚拟化 ===
 +
 
 +
在宿主机启用{{ic|kvm_intel}}模块的嵌套虚拟化功能:
 +
# modprobe -r kvm_intel
 +
# modprobe kvm_intel nested=1
 +
 
 +
使嵌套虚拟化永久生效(请参考[[Kernel modules#Setting module options]]):
 +
{{hc|/etc/modprobe.d/modprobe.conf|<nowiki>
 +
options kvm_intel nested=1
 +
</nowiki>}}
 +
 
 +
检验嵌套虚拟化功能是否已被激活: 
 +
{{hc|<nowiki>$ systool -m kvm_intel -v | grep nested</nowiki>|<nowiki>
 +
    nested              = "Y"
 +
</nowiki>}}
 +
 
 +
使用以下命令来运行guest虚拟机:
 +
$ qemu-system-x86_64 -enable-kvm -cpu host
 +
 
 +
启动虚拟机并检查是否有vmx标志:
 +
$ grep vmx /proc/cpuinfo

Latest revision as of 07:18, 16 February 2019

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: 请完成更新后的翻译。

KVM(英文Kernel-based Virtual Machine的缩写)是内核内建的虚拟机。有点类似于 Xen ,但更追求更简便的运作,比如运行此虚拟机,仅需要加载相应的 kvm 模块即可后台待命。和 Xen 的完整模拟不同的是,KVM 需要芯片支持虚拟化技术(英特尔的 VT 扩展或者 AMD 的 AMD-V 扩展)。

在KVM中,可以运行各种未更改的GNU/Linux, Windows 或任何其他系统镜像。(请看客户机支持状态),每个虚拟机都可提供独享的虚拟硬件:网卡,硬盘,显卡等。请看 KVM Howto

KVM, Xen, VMware, 和 QEMU 的不同,请看这里KVM FAQ.

检查是否支持KVM

硬件支持

KVM需要虚拟机宿主(host)的处理器带有虚拟化支持(对于Intel处理器来说是VT-x,对于AMD处理器来说是AMD-V)。你可以通过以下命令来检查你的处理器是否支持虚拟化:

$ LC_ALL=C lscpu | grep Virtualization

或者: $ grep -E --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo 如果运行后没有显示,那么你的处理器支持硬件虚拟化,你不能使用KVM。

注意: 您可能需要在BIOS中启用虚拟化支持

内核支持

Arch Linux的内核提供了相应的内核模块来支持KVM。

  • 你可以通过以下命令来检查你的内核是否已经包含了支持虚拟化所必须的模块(kvmkvm_amdkvm_intel这两者中的任意一个):
$ zgrep CONFIG_KVM /proc/config.gz

如果模块设置不为 ym,则该模块可用

  • 然后确认这些内核模块是否已自动加载:
$ lsmod | grep kvm

如果运行后没有显示,那么需要手动加载这些模块。

准虚拟化(使用VIRTIO)

准虚拟化为客户机提供了一种使用主机上设备的快速有效的通信方式。KVM使用Virtio API作为虚拟机管理程序和客户机之间的连接层,为虚拟机提供准虚拟化设备(亦称Virtio设备)。 所有Virtio设备都包括两部分:主机设备和客户机驱动程序。

内核支持

  • 用以下命令检查VIRTIO模块是否可用:
$ zgrep VIRTIO /proc/config.gz
  • 检查VIRTIO模块是否已经自动加载:
$ lsmod | grep virtio

如果运行后没有显示,那么需要手动加载这些模块。

Tip: 如果 kvm_intelkvm_amd 加载失败但是kvm 加载成功, (lscpu可检查硬件支持情况)检查你的BIOS设置。一些品牌机 (尤其时笔记本电脑) 默认关闭了这个功能,请确保是否是硬件支持该功能,但在BIOS中它被关闭了,在dmesg的提示信息中会展示出相关的警告信息。

准虚拟化设备列表

  • 网络设备 (virtio-net)
  • 硬盘设备 (virtio-blk)
  • 控制器设备 (virtio-scsi)
  • 串口设备 (virtio-serial)
  • 气球设备 (virtio-balloon)

如何使用KVM

请参考QEMU条目。

小贴士与小技巧

注意: 请参考QEMU#Tips and tricksQEMU#Troubleshooting词条获取更多相关技巧。

嵌套虚拟化

在宿主机启用kvm_intel模块的嵌套虚拟化功能:

# modprobe -r kvm_intel
# modprobe kvm_intel nested=1

使嵌套虚拟化永久生效(请参考Kernel modules#Setting module options):

/etc/modprobe.d/modprobe.conf
options kvm_intel nested=1

检验嵌套虚拟化功能是否已被激活:

$ systool -m kvm_intel -v | grep nested
    nested              = "Y"

使用以下命令来运行guest虚拟机:

$ qemu-system-x86_64 -enable-kvm -cpu host

启动虚拟机并检查是否有vmx标志:

$ grep vmx /proc/cpuinfo