没事学学KVM(五)虚拟机基础管理
1、今天学习一下KVM的开机自启功能。开机启动,即随宿主机启动而启动
virsh autostart vm-name
开机自启的前提是libvirt功能也是开机启动的;systemctl enable libvirtd
[root@KVM03-10 ~]# virsh autostart test-kvm
Domain test-kvm marked as autostarted
[root@KVM03-10 ~]# systemctl restart libvirtd
[root@KVM03-10 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 test-kvm running
该命令会在/etc/libvirt/qemu/目录下增加一个autostart文件
1 2 3 4 5 6 7 | [root@KVM03-10 ~]# cd /etc/libvirt/qemu/ [root@KVM03-10 qemu]# ll total 8 drwxr-xr-x. 2 root root 26 Aug 31 21:52 autostart drwx------. 3 root root 42 Aug 26 09:58 networks -rw-------. 1 root root 4227 Aug 30 21:57 test-kvm.xml [root@KVM03-10 qemu]# ll |
1 2 3 4 | [root@KVM03-10 qemu]# cd autostart/ [root@KVM03-10 autostart]# ll total 0 lrwxrwxrwx. 1 root root 30 Aug 31 21:52 test-kvm.xml -> /etc/libvirt/qemu/test-kvm.xml |
实际上这个autostart目录下方的就是一个需要进行开机启动的虚机配置文件的软链接,链接到虚机真正的配置文件。从逻辑上说,当系统启动了libvirt功能后,就会在autostart目录下查询,如果有对应内容,则对启动相应的虚机。
取消开机自启 virsh autostart --disable vm-name
2、console登陆控制虚拟机
宿主机开启libvirt服务后,会在网卡中增加virbr网卡,该地址作为虚机网卡地址的网关;
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 52:54:00:87:f8:b7 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52:54:00:87:f8:b7 brd ff:ff:ff:ff:ff:ff 5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 1000 link/ether fe:54:00:db:81:f8 brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fedb:81f8/64 scope link valid_lft forever preferred_lft forever [root@KVM03-10 qemu]# ssh 192.168.122.63 The authenticity of host '192.168.122.63 (192.168.122.63)' can't be established. ECDSA key fingerprint is 99:72:f9:54:f3:45:a8:52:bd:52:01:81:9f:30:ee:2a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.122.63' (ECDSA) to the list of known hosts. root@192.168.122.63's password: Last login: Mon Aug 31 22:10:10 2020 [root@localhost ~]#
想要通过virsh console连接虚拟机,需要修改虚机的内核参数,
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
对比修改前后两个文件的差异发现
[root@localhost home]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8" [root@localhost home]# [root@localhost home]# diff /etc/grub2.cfg /home/grub grub2.cfg.bak grub.cfg.bak [root@localhost home]# diff /etc/grub2.cfg /home/grub.cfg.bak 99c99 < linux16 /boot/vmlinuz-3.10.0-514.el7.x86_64 root=UUID=4a965762-42e0-4cc0-8f36-57f9f7ae82f6 ro rhgb quiet LANG=en_SG.UTF-8 console=ttyS0,115200n8 --- > linux16 /boot/vmlinuz-3.10.0-514.el7.x86_64 root=UUID=4a965762-42e0-4cc0-8f36-57f9f7ae82f6 ro rhgb quiet LANG=en_SG.UTF-8 113c113 < linux16 /boot/vmlinuz-0-rescue-a9c5fb0f9f5f4f0b87ca06f4b6dfc62c root=UUID=4a965762-42e0-4cc0-8f36-57f9f7ae82f6 ro rhgb quiet console=ttyS0,115200n8 --- > linux16 /boot/vmlinuz-0-rescue-a9c5fb0f9f5f4f0b87ca06f4b6dfc62c root=UUID=4a965762-42e0-4cc0-8f36-57f9f7ae82f6 ro rhgb quiet [root@localhost home]#
修改完内核参数后,需要对系统进行重启,重启完成后即可在宿主机上通过virsh console vm-name登陆虚拟机;
[root@KVM03-10 qemu]# virsh list --all
Id Name State
----------------------------------------------------
1 test-kvm running
[root@KVM03-10 qemu]# virsh console test-kvm
Connected to domain test-kvm
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
localhost login: root
Password:
Last login: Mon Aug 31 22:24:43 from gateway
[root@localhost ~]#
[root@localhost ~]# who
root ttyS0 2020-08-31 22:38
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言