本文介绍在linux系统上安装及使用Libguestfs Tools在KVM管理程序上安装VM虚拟磁盘的方法。
前言
我已经在Vanilla KVM管理程序上管理了一些虚拟机一段时间了,假设你有一个要在虚拟机管理程序上安装虚拟磁盘的虚拟机,那么如何处理它?例如,重置root密码(在RHEL 8系统中重置root密码的方法),检查某些文件,或者VM可能已被盗用,并且你希望在不将VM置于运行模式的情况下对攻击源执行更多分析。
在我的设置中,我有一台安装了KVM并运行许多虚拟机的CentOS 7服务器,要能够安装VM虚拟磁盘,你需要安装Libguestfs,它是一组用于访问和修改虚拟机(VM)磁盘映像的工具,你可以用它来:
查看和编辑来宾内的文件、脚本更改为VM、监控磁盘使用/免费统计创造客人、P2V、V2V、执行备份。
在linux系统上安装libguestfs的方法
1、在CentOS上安装libguestfs
要在CentOS服务器上安装libguestfs,请运行以下命令:
sudo yum -y install libguestfs-tools
2、在Ubuntu/Debian上安装libguestfs
请运行以下命令:
sudo apt-get -y install libguestfs-tools
3、在Arch Linux上安装libguestfs
对于Arch Linux,使用以下命令从AUR安装libguestfs:
yaourt -S libguestfs
使用libguestfs在KVM上安装虚拟磁盘
现在你已经安装了libguestfs工具,你可以使用它安装VM的虚拟磁盘,建议在安装之前关闭VM,写入正在运行的虚拟机的磁盘可能会导致磁盘损坏,建议你使用只读访问权限,或者如果guest虚拟机正在运行guestfsd守护程序,则指定实时访问,在大多数libguestfs工具中,这些选项分别是-ro或-live。
首先检查你的活动VM:
sudo virsh list
关闭有问题的VM:
sudo virsh shutdown <domain-name or ID>
然后挂载磁盘:
sudo guestmount -d <domain> -i /mnt/
例:
sudo guestmount -d centos7 -i /mnt/
确认安装成功:
# df -hT | egrep "/mnt"
/dev/fuse fuse 20G 3.9G 16G 20% /mnt
使用选项的说明:
-d |–domain:从libvirt guest添加磁盘
-i |–inspector:自动挂载文件系统
以下是可以与guestmount命令一起使用的完整选项列表,这可以运行以下命令获得:
$ guestmount --help
附:所有guestmount选项的说明
-a |--add image - >添加图片
-c|--connect uri - >为-d选项指定libvirt URI
--dir-cache-timeout - >设置readdir缓存超时(默认为5秒)
-d |--domain - >从libvirt guest添加磁盘
--echo-keys - >不要为密码关闭回声
--fd=FD- > mountpoint准备就绪时写入管道FD
--format[=raw|..] - >强制-a选项的磁盘格式
--fuse-help - >显示额外的FUSE选项
-i |--inspector - >自动挂载文件系统
--help - >显示帮助信息并退出
--keys-from-stdin - >从stdin读取密码
--live - >连接到实时虚拟机
-m |--mount dev[:mnt[:opts[:fstype]] - >在mnt上挂载dev(如果省略,/)
--no-fork - >不要守护进程
-n |--no-sync - >不要自动同步
-o |--option - > opt将额外选项传递给FUSE
--pid-file - > filename将PID写入filename
-r |--ro - >挂载只读
--seLinux - >对于后退compat只做什么都不做
-v |--verbose - >详细消息
-V |--version - >显示版本并退出
-w |--rw - >挂载读写
-x |--trace - >跟踪guest虚拟机API调用
挂载运行VM虚拟磁盘
对于正在运行的VM,你必须将其挂载为-ro或使用-live标志:
sudo guestmount --ro -d <domain> -i /mnt/
重置root密码示例
我将向你展示如何使用已安装的虚拟磁盘重置root密码,我们将使用chroot命令(linux系统中的chroot简介),它是用于运行具有特殊根目录的命令或交互式shell的工具:
sudo chroot /mnt
passwd
完成后设置密码并卸载磁盘:
sudo guestunmount /mnt
启动VM并测试是否可以使用设置的密码进行身份验证:
sudo virsh start <domain>
卸载虚拟磁盘
如果你已完成安装的磁盘,请通过运行命令卸载它:
$ sudo guestunmount mountpoint
例如:
$ sudo guestunmount /mnt
- 1 玩客云刷armbian架设nginx php mysql 及可道私有云总结
- 2 centos安装好mysql但是无法启动问题(Job for mysqld.service failed because the control process exited with error code.)
- 3 Ubuntu缺少libncurses.so.5的解决办法
- 4 Grafana之Gauge和Bar Gauge使用(第十一篇)
- 5 df空间占用已满,但du查看home目录空间占用却很少
- 6 RHEL 8 安装 Oracle 19c 提示缺少 libnsl.so.1
- 7 vim.fault.GenericVmConfigFault
- 8 cron: can’t lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable
- 9 行 1: 未预期的符号 `newline' 附近有语法错误
- 10 CentOS 7.7 yum方式安装配置Zabbix 4.0 LTS详解(二)
精彩评论