最近听说有一个cockpit能够管理vps很多东西,包括kvm
然后就打算整个cockpit+virtlib来玩玩

我的话我一般安装这两个:
cockpit 是本体;
cockpit-machines 是管理virtlib的;
cockpit-docker 是管理docker的;

确定好自己要装的东西,然后:

dnf install cockpit cockpit-machines cockpit-docker -y
systemctl enable cockpit
systemctl start cockpit
systemctl enable cockpit.service

接下来访问 http://你机器的ip或域名:9090 就可以看见登入页面了。
用户名密码就是你用来登入ssh的用户名和密码。

然后,参考这个教程,virtlib的安装就是

dnf install qemu-kvm python-virtinst libvirt libvirt-python libguestfs-tools bridge-utils virt-install -y

原来教程上是有个 virt-manager 的,但是因为我是在vps上装的,所以就不安装这个了。
等他嘟嘟嘟地安装完之后,先重启再用 lsmod | grep kvm 指令看看kvm模块有没有加载。
比如我的是

[[email protected] ~]# lsmod | grep kvm
kvmgt                  23638  0 
mdev                   20336  2 vfio_mdev,kvmgt
vfio                   32657  3 vfio_mdev,kvmgt,vfio_iommu_type1
kvm_intel             188644  0 
kvm                   621480  2 kvmgt,kvm_intel
irqbypass              13503  1 kvm

要是这个没有东西的话就要回去检查是不是哪里出了问题没有装上了。
如果没有问题的话就把服务启动一下

systemctl start libvirtd
systemctl enable libvirtd

现在应该就可以在cockpit里面开小鸡爽了。


因为我这台OVH的谜之分区,2tb的盘mount了在/home,
而KVM默认的 Storage Pool 在 /var/cache/libvirt,所以我得改去那个2t盘里
首先检查有没有 Storage Pool

[[email protected] virt]# virsh pool-list
 Name                 State      Autostart 
-------------------------------------------

没有,我就进行下一步,把 Storage Pool 改去/home/virt/storage

# virsh pool-define-as --name default --type dir --target /home/virt/storage
Pool default defined

# virsh pool-autostart default
Pool default marked as autostarted

# virsh pool-start default
Pool default started

# virsh pool-edit default
Pool default XML configuration not changed.

chk again:

# virsh pool-list
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       

这样子就OK了


启动VM的之后,cockpit弹了个提示,启动失败:

VM ctos failed to get installedshow less
ERROR internal error: process exited while connecting to monitor: 2019-10-14T13:27:42.018071Z qemu-kvm: -chardev pty,id=charserial0: Failed to create chardev Domain installation does not appear to have been successful. If it was, you can restart your domain by running: virsh --connect qemu:///system start ctos otherwise, please restart your installation.

解决方法是编辑 /etc/fstab ,找到有devpts的那一行,改成
devpts /dev/pts devpts gid=5,mode=620 0 0
然后init 6


update:
装的时候因为一顿xjb操作不知道搞了什么,
systemctl start cockpit启动cockpit的时候提示
Failed to start cockpit.service: Unit cockpit.service is masked.
然后解决方法是 systemctl unmask cockpit 然后再启动。

一些常用的virsh指令:

# 拔出一个光盘
virsh change-media ctos8_daily /home/virt/CentOS-8-x86_64-1905-dvd1.iso --eject

# 给vm增加内存
virsh edit ctos8_daily
# 然后找到 <memory unit='KiB'>6291456</memory>
# 和 <currentMemory unit='KiB'>6291456</currentMemory>
# 把里面的数字改成内存的大小(KB)

ref:
https://serverfault.com/questions/840519/how-to-change-the-default-storage-pool-from-libvirt
https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%AF%A6%E8%A7%A3.md
https://bugzilla.redhat.com/show_bug.cgi?id=1138502

标签: none