NFS作为一种网络文件系统,近些年随着云计算的发展也变得越来越受欢迎。因为云环境下会部署大量的虚拟机,而在物理机发生故障的时候,云服务商必须要保障虚拟机的安全性,即不能因为物理机的故障就停止虚拟机。这对于客户来说是零容忍的。这就要求在物理机发生问题的时候,云服务商可以在很短的时间内把虚拟机迁移到另一台物理机上,这也就是虚拟机的动态迁移。
经过一段时间的学习,就利用virt-manager来创建一台虚拟机:
硬件:
物理机1:223.129.0.132 源主机
物理机2:223.129.0.130 目的主机
物理机3:223.129.0.239 NFS 服务器
系统:CentOS 7
首先我们需要在物理机3部署NFS服务器并设置共享目录一般的Linux都已经安装了。这里假设已经安装好了nfs(具体如何安装并非本文重点)
1、编辑/etc/exports文件


这是nfs共享出的目录,可以看到这里有两部分,前面一部分是目录,后面一部分是权限(rw为读写,sync为同步,no_root_squash为开放root权限)
注意这里的目录已经存在且后面的参数不能写错,否则服务会无法启动
2、重启nfs服务


这时候可以查看下nfs导出的目录

可以看到这三个目录已经被导出,那么剩下的就是配置客户机了。
3、挂载共享目录


同理对/home/images目录进行挂载,注意这里只是暂时的挂载,重启之后就失效,如果永久挂载就需要修改/etc/fstab文件,但是这毕竟不是本地的一块硬盘,假如网络不通的情况下重启,那么很有可能重启不成功,所以这里建议手动挂载。
之后查看挂在情况:


可以看到已经正确挂载。
4、virt-manager添加存储池


点击详情


点击+,添加存储池,注意Type选择NFS,然后这里name我们设置为NFSfile,下一步


点击完成


可以看到已经把NFS服务器上的image共享目录挂载成功。同理挂载/home/iso文件夹。
那么这两个目录我们一个作为镜像原始文件夹,一个作为虚拟机硬盘(镜像)所在。但是假如我们直接使用ISO文件创建虚拟机,其分配的虚拟机硬盘空间存储位置默认就在/var/lib/libvirt/images,而此目录我们没有共享,所以会出错。所以我们就先在NFSFile存储池分配一个卷作为虚拟机存储位置


然后我们就可以创建虚拟机了
但是注意在选择镜像的时候要选择我们在iso存储池中的镜像


还有一个就是在分配存储的时候要选择我们前面创建的存储镜像


剩下的就是正常的创建虚拟机的流程了,这里就不在赘述,不过可能会让多次输入NFS服务器的密码。

这是刚创建好的虚拟机。。
其实这里的本质就是镜像存储在网络,其他的并无本质区别。