本文介绍在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
相关主题 |