对NFS存储问题进行故障排除
介绍
要将NFS存储域连接到oVirt环境,必须以特定方式配置NFS导出。此页面旨在概述配置NFS导出的核心要求,并帮助解决首次尝试将NFS存储域附加到oVirt环境时遇到的问题。
权限
原则上,用户vdsm(具有uid 36和gid 36)必须具有对所有NFS导出的读取和写入权限。但是,系统管理程序主机上的某些守护程序(例如sanlock)使用其他uid,但也需要访问该目录。因此,所有传入的NFS请求都必须映射到上述uid和gid。需要两个步骤来确保此映射:
- 更改导出目录的所有权,将directory_name替换为目录名:
#chown 36:36 directory_name
- 在/ etc / exports中的export上添加rw选项。
#/ exports / directory_name *(rw)
- 设置导出目录的权限,用目录名替换directory_name:
#chmod 0755目录名
- NFS服务器必须实际上正在运行。
一种。确保nfs和rpcbind服务在NFS服务器上运行,b。确保** showmount -e ****显示预期出口。
SELinux
- 确保selinux不干扰NFS访问。
eb子-a | grep virt_use_nfs应该显示virt_use_nfs –>亮,如果没有,请执行setsebool virt_use_nfs 1来允许VM的NFS访问 |
-
- 也可以使用“ setsebool -P virt_use_nfs 1”来使该设置在重启后保持不变。
明确测试oVirt是否已准备好使用NFS导出的最简单方法是:
- 如果尚不存在,请在ovirt-engine主机上使用uid 36创建vdsm用户。
- 使用su更改为vdsm用户-vdsm -s / bin / bash
- 尝试使用以下命令格式将导出安装在临时目录(例如,/ tmpmnt)上:/ usr / bin / sudo -n / bin / mount -t nfs -o soft,nosharecache,timeo = 600,retrans = 6 ,nfsvers = 3 服务器名:/导出路径 / tmpmnt
- 如果安装成功,则尝试通过touch命令在其中创建文件,即touch / tmpmnt / tempfile
ISO域
待办事项:更新到当前版本
该发动机设置命令可以选择创建一个ISO域和导出。
- 在oVirt 3.3之前,它始终会导出到整个网络。
- 在3.4中,它提示用户输入ACL,默认值仍然是整个网络。
- 在3.5中,它仍然提示用户,但默认值已更改为仅允许访问本地计算机。
ACL的格式只是/ etc / exports的格式-有关详细信息,请参见exports(5)手册页。一些简单的例子:
- 要允许访问3个主机host1,host2和host3,请输入:host1(rw)host2(rw)host3(rw)
- 要允许访问整个Internet,请输入:*(rw)
如果使用最后一个示例,则必须确保采用其他方法(例如防火墙)来保护ISO域。配置此选项时,还应考虑保护ISO域免受可能要在主机上运行的不受信任的来宾的影响。
nfs检查程序
现在可以使用新的nfs-check脚本来测试oVirt是否已准备好使用NFS导出:
- nfs-check.py是一个Python脚本,用于验证要与oVirt项目一起使用的nfs目标。一些操作包括:挂载nfs目标,将文件创建为vdsm:kvm,然后将其删除。
- nfs-check.py可在vdsm源的vdsm / contrib /目录中找到
- 通过\ 1在节点上运行它
$ git clone http://gerrit.ovirt.org/p/vdsm.git $ cd vdsm / contrib $ python nfs-check.py myNFSServer:/ nfsTarget
设置NFS服务器
Debian挤压
TODO:更新到当前的Debian
#> groupadd kvm -g 36
#> useradd vdsm -u 36 -g kvm
# mkdir /storage
#> chmod 0755 /storage
#> chown 36:36 /storage/
#> cat /etc/exports
/storage *(rw)
#>/etc/init.d/nfs-kernel-server restart
Fedora 26或更高
#> groupadd kvm -g 36
#> useradd vdsm -u 36 -g kvm
# mkdir /storage
# chmod 0755 /storage
# chown 36:36 /storage/
# yum -y install nfs-utils
# cat /etc/exports
/storage *(rw)
# systemctl start rpcbind.service
# systemctl start nfs-server.service
# Relevant only for NFS v3
# systemctl start nfs-lock.service
# systemctl enable rpcbind.service
# systemctl enable nfs-server.service
# Relevant only for NFS v3
# systemctl enable nfs-lock.service
基于RHEL7的发行版
#> groupadd kvm -g 36
#> useradd vdsm -u 36 -g kvm
# mkdir /storage
# chmod 0755 /storage
# chown 36:36 /storage/
# cat /etc/exports
/storage *(rw)
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
已知问题的解决方法
TODO:较新的受支持版本的更新
NFS锁定
通常,任何发行版的NFS服务器都可以直接使用。使用较旧的NFS服务器或在Internet上遵循不同的调整建议可能会导致配置错误,从而导致锁定/冻结/死机。经验法则是始终确保服务器的tcp窗口大小参数大于虚拟机管理程序主机的wsize和rsize挂载选项。例如,使用Fedora 19作为管理程序节点,这些参数设置为1 MB。
# df
...
10.10.30.253:/var/nas3/ovirt on /rhev/data-center/mnt/10.10.30.253:_var_nas3_ovirt type nfs (...,rsize=1048576,wsize=1048576,...)
...
在这种情况下,最好在/etc/sysctl.conf中将NFS服务器上的tcp窗口参数设置为至少4 MB。
# cat /etc/sysctl.conf
net.ipv4.tcp_mem=4096 65536 4194304
net.ipv4.tcp_rmem=4096 65536 4194304
net.ipv4.tcp_wmem=4096 65536 4194304
net.core.rmem_max=8388608
net.core.wmem_max=8388608
要为正在运行的服务器激活这些设置,请使用
# sysctl -p