Skip to main content

3.kvm命令行安装实例

qemu-img创建磁盘文件

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁盘格式必须为qcow2。

raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。所以有时候,我们需要将raw格式的磁盘转换成qcow2格式。

创建一个raw格式的磁盘文件

  • qemu-img:这是 QEMU 提供的一个命令行工具,用于创建、转换和修改虚拟机磁盘镜像。
  • qemu-img create file.img: 创建磁盘文件
  • qemu-img info file.img:查看文件信息
qemu-img create /kvm-vm/vmtest01.img 8G
Formatting '/kvm-vm/vmtest01.img', fmt=raw size=8589934592

#查看一下
ls -lh
总用量 3.0G
-rw-------. 1 qemu qemu  11G 9月  28 22:40 centos7-vm001.qcow2
-rw-r--r--. 1 qemu qemu 1.3G 9月  29 09:28 centos7-vm002.qcow2
drwx------. 2 root root  16K 9月  27 10:45 lost+found
-rw-r--r--. 1 root root 8.0G 9月  29 09:27 vmtest01.img

qemu-img info vmtest01.img
image: vmtest01.img
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: 0

虽然通过ls命令看到磁盘为8G,但是实际空间大小为0,所以通过qemu-img创建的磁盘为稀疏模式磁盘。

virt-install命令创建新虚拟机并安装好(或者通过virt-manager)

virt-install \
--name vmtest01 \
--vcpus 1 \
--ram 1024 \
--disk /kvm-vm/vmtest01.img,format=raw \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--os-type=linux \
--os-variant=centos7.0 \
--location=/iso/CentOS-7-x86_64-DVD-1611.iso
  • virt-install :命令行工具创建和启动一个虚拟机的命令。

  • --name vmtest01:指定虚拟机的名称为 "vmtest01"。

  • --vcpus 1:指定虚拟机的虚拟 CPU 数量为 1。

  • --ram 1024:指定虚拟机的内存大小为 1024 MB。

  • --disk /kvm-vm/vmtest01.img,format=raw

    • --disk 指定虚拟机的磁盘配置,/kvm-vm/vmtest01.img 是虚拟机的磁盘镜像文件路径。
    • format=raw 指定磁盘镜像文件的格式为 raw。
  • --network network=default:指定虚拟机连接到默认网络。

  • --graphics vnc,listen=0.0.0.0

    • --graphics vnc 指定使用 VNC 图形界面。
    • listen=0.0.0.0 表示监听所有网络接口,允许远程连接。
  • --noautoconsole:在创建虚拟机后不自动打开控制台。

  • --os-type=linux:指定虚拟机的操作系统类型为 Linux。

  • --os-variant=centos7.0:指定虚拟机的操作系统变种为 CentOS 7.0。

  • --location=/iso/CentOS-7-x86_64-DVD-1611.iso

  • --location 指定从一个镜像文件或 URL 安装操作系统。

  • /iso/CentOS-7-x86_64-DVD-1611.iso 是安装源的 ISO 镜像文件路径。

转换磁盘格式为qcow2

语法:

qemu-img convert -f source_filetype -O dest_filetype source_file dest_file:磁盘镜像格式转换

#转换磁盘文件
qemu-img convert -f raw -O qcow2 /mykvm/vms/vm2.raw /mykvm/vms/vm2.qcow2

ls -lh
总用量 5.5G
-rw-------. 1 qemu qemu  11G 9月  28 22:40 centos7-vm001.qcow2
-rw-r--r--. 1 qemu qemu 1.3G 9月  29 10:01 centos7-vm002.qcow2
drwx------. 2 root root  16K 9月  27 10:45 lost+found
-rw-r--r--. 1 root root 8.0G 9月  29 09:59 vmtest01.img
-rw-r--r--. 1 root root 1.3G 9月  29 10:01 vmtest01.qcow2


qemu-img info vmtest01.qcow2
image: vmtest01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 1.2G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
  • convert:表示执行转换操作。
  • -f raw:指定输入文件的格式为 raw(裸格式)。raw 格式是一种简单的、未经压缩的二进制格式,通常用于虚拟机的磁盘。
  • -O qcow2:指定输出文件的格式为 qcow2。qcow2 格式是 QEMU 支持的一种更高级的、支持快照和压缩的虚拟机磁盘格式。
  • /mykvm/vms/vm2.raw:指定输入文件的路径和文件名。在这里,是一个 raw 格式的磁盘镜像文件。
  • /mykvm/vms/vm2.qcow2:指定输出文件的路径和文件名。在这里,是将输入文件转换为 qcow2 格式后的文件。

直接创建一个qcow2格式的磁盘文件

qemu-img create -f qcow2 /kvm-vm/vmtest01.qcow2 20G

virt-install命令参数:

通用选项

  • -n NAME, --name=NAME :虚拟机名称
  • -r MEMORY, --ram=MEMORY :以MB为单位为客户端事件分配的内存
  • --vcpus=VCPUS :配置虚拟机的虚拟CPU(vcpu)数量,如:
    • --vcpus 5
    • --vcpus 5, maxcpus=10
    • --vcpus socket=2,cores=4,threads=2
  • --cpuset=CPUSET :Set which physical CPUs domain can use.
  • --cpu=CPU :CPU型号及功能,如:
    • --cpu coreduo,+x2apic
  • --description=DESCRIPTION :在生成的XML中保存的可读VM描述。
  • --security=SECURITY :设定域安全驱动器配置。
  • --numatune=NUMATUNE :为域进程调整NUMA策略。

安装方法选项

  • -c CDROM, --cdrom=CDROM :光驱安装介质
  • -l LOCATION, --location=LOCATION :安装源(例如:nfs:host:/path、http://host/path、ftp://host/path)
  • --pxe :使用 PXE 协议从网络引导
  • --import :在磁盘映像中构建客户机
  • --livecd :将光驱介质视为 Live CD
  • -x EXTRA, --extra-args=EXTRA :附加到使用--location引导的内核的参数
  • --os-type=DISTRO_TYPE :操作系统类型,'linux'、'unix'、'windows'
  • --os-variant=DISTRO_VARIANT :操作系统版本,如: 'fedora6','rhel5', 'solaris10', 'win2k'
  • --boot=BOOTOPTS :自选配置后安装引导顺序、菜单、永久kernel引导,等等。

存储配置

  • --disk=DISKOPTS :用各种选项指定存储。
    • --disk path=/my/existing/disk
    • --disk path=/my/new/disk,format=qcow2,size=5,sparse (单位GB)
    • --disk vol=poolname/volname,device=cdrom,bus=scsi,...
  • --nodisks :不要为该客户端设置任何磁盘。
  • --filesystem=FILESYSTEMS 将主机目录传递给虚拟机。例如:
    • --filesystem /my/source/dir,/dir/in/guest
    • --filesystem template_name,/,type=template

联网配置

  • -w NETWORK, --network=NETWORK:配置客户网络接口。
    • --network bridge=mybr0
    • --network network=my_libvirt_virtual_net
    • --network network=mynet,model=virtio,mac=00:11...
  • --nonetworks :不要为该客体创建网络接口。

图形配置

  • --graphics=GRAPHICS :配置虚拟机显示设置。例如:
    • --graphics vnc
    • --graphics spice,port=5901,tlsport=5902
    • --graphics none
    • --graphics vnc,password=foobar,port=5910,keymap=ja
  • --noautoconsole :不要自动尝试连接到客户端控制台

设备选项

  • --serial=SERIALS :配置虚拟机串口设备
  • --parallel=PARALLELS :配置虚拟机并口设备
  • --channel=CHANNELS :配置虚拟机沟通频道
  • --console=CONSOLES :配置虚拟机与主机之间的文本控制台连接
  • --host-device=HOSTDEVS :配置与客户相连的物理主机设备
  • --soundhw=SOUNDHW :配置客户声音设备仿真
  • --watchdog=WATCHDOG :配置虚拟机 watchdog 设备
  • --video=VIDEO :配置虚拟机视频硬件。
  • --smartcard=SMARTCARD :配置虚拟机智能卡设备。 例如:
    • --smartcard mode=passthrough
  • --redirdev=REDIRDEV :Configure a guest redirection device. 例如:
    • --redirdev usb,type=tcp,server=192.168.1.1:4000

虚拟化平台选项

  • -v, --hvm:客户端应该是一个全虚拟客户端
  • -p, --paravirt :这个客户端是一个半虚拟客户端
  • --container :This guest should be a container guest
  • --virt-type=HV_TYPE :要使用的管理程序名称(kvm、qemu、xen)
  • --arch=ARCH :模拟的 CPU 构架
  • --machine=MACHINE :The machine type to emulate
  • --noacpi :为全虚拟客户端禁用 ACPI(在 os-type/os-variant db 中覆盖数值)
  • -u UUID, --uuid=UUID :客户端 UUID。

其它选项

  • --autostart :引导主机时自动启动域。
  • --print-xml :输出所生成域的XML,而不是定义虚拟机。
  • --print-step=XMLSTEP :输出具体安装步骤
  • --noreboot :完成安装后不要引导虚拟机。
  • --wait=WAIT :要等待的时间(以分钟为单位)
  • --dry-run :完成安装步骤,但不要创建设备或者定义虚拟机。
  • --force :对任意应用程序提示强制回答‘yes’,终止其它提示
  • -q, --quiet :禁止无错误输出
  • --prompt :要求用户为模糊情况或者需要的选项输入
  • -d, --debug :输入故障排除信息

纯命令行安装kvm的操作系统

创建硬盘文件:

qemu-img create -f qcow2 /home/kvmos/centos6.9.qcow2 60G

安装虚拟机:

virt-install \
--name centos6.9 \
-r 2048 \
--vcpus=2 \
--location=/home/softs/iso/CentOS-6.9-x86_64-bin-DVD1.iso \
--network bridge=br0 \
--disk  --accelerate path=/home/kvmos/centos6.9.qcow2,size=60,format=qcow2,sparse \
--nographics -x 'console=ttyS0'

====vnc 安装=====

qemu-img create -f qcow2 /opt/kvm/hardisk/disk.img 60G 
virt-install \
--name user_1604 \
--ram 2048 \
--vcpus=2 \
--disk path=/home/kvmos/user_1604.qcow2,size=60,format=qcow2,sparse \
--accelerate \
--cdrom /home/softs/iso/ubuntu-16.04.4-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,port=5924, \
--noautoconsole  \
--network bridge=br0 \
--autostart

这时可通过远程设备,连接上vnc接口即可。

无法使用vrish console 登录虚拟机的解决方案

如果通过 vrish console 无法连接到服务器,可以使用vnc或者 ssh连接到服务器。

如果不支持virsh console 可以尝试以下方法

方法一

修改grub配置文件,在内核行加入console=ttyS0,重启即可

linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap console=ttyS0 LANG=en_US.UTF-8

或者使用如下命令,如果是CentOS7,需要在虚拟机里运行以下命令

grubby --update-kernel=ALL --args="console=ttyS0"

方法二

如果是ubuntu系统可以使用如下方法:

sudo systemctl enable [email protected]

sudo systemctl start [email protected]

virsh edit VPS-Domain
<graphics type='vnc' port='5901' autoport='no' listen='0.0.0.0' keymap='en-us'/>

在其中加入passwd的属性,更改为如下:

<graphics type='vnc' port='5901' autoport='no' listen='0.0.0.0' passwd='12345678' keymap='en-us'/>

其中passwd的位置可以随意。

https://edu.51cto.com/lecturer/9286589-c81.html

#刘世民

https://www.cnblogs.com/sammyliu/p/4543110.html