早些时候曾写过一篇博客《将XenServer系统盘上的未分配空间利用起来》,目的是想在XenServer配置一个NFS服务器,把常用ISO镜像共享出来,方便安装虚拟机,同时也把磁盘空间最大化利用起来。
目前安装的XenServer版本是7.4,默认NFS服务都安装了,只是没有启用,其他版本的XenServer暂时未一一测试。查看已安装的XenServer版本信息:
# cat /etc/redhat-release
XenServer release 7.4.0 (xenenterprise)
关于NFS的概念性的东西在这里就不在赘述了,百度上一大把,那么就直接进入启用XenServer的NFS服务流程。
一、rpcbind服务配置
查看rpcbind服务状态:
# systemctl status rpcbind.service
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
Drop-In: /etc/systemd/system/rpcbind.service.d
└─slice.conf
Active: inactive (dead)
显示rpcbind服务已启用,但服务未启动,那么先启动rpcbind服务:
# systemctl start rpcbind.service
再次查看rpcbind服务状态:
# systemctl status rpcbind.service
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
Drop-In: /etc/systemd/system/rpcbind.service.d
└─slice.conf
Active: active (running) since Sat 2018-05-26 20:26:01 CST; 3s ago
Process: 26334 ExecStart=/sbin/rpcbind -w ${RPCBIND_ARGS} (code=exited, status=0/SUCCESS)
Main PID: 26336 (rpcbind)
CGroup: /control.slice/rpcbind.service
└─26336 /sbin/rpcbind -w
查看rpcbind服务侦听的端口:
# netstat -lntup|grep rpcbind
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 26336/rpcbind
tcp6 0 0 :::111 :::* LISTEN 26336/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 26336/rpcbind
udp 0 0 0.0.0.0:646 0.0.0.0:* 26336/rpcbind
udp6 0 0 :::111 :::* 26336/rpcbind
udp6 0 0 :::646 :::* 26336/rpcbind
或:
lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 26336 rpc 6u IPv4 129212 0t0 UDP *:sunrpc
rpcbind 26336 rpc 8u IPv4 129214 0t0 TCP *:sunrpc (LISTEN)
rpcbind 26336 rpc 9u IPv6 129215 0t0 UDP *:sunrpc
rpcbind 26336 rpc 11u IPv6 129217 0t0 TCP *:sunrpc (LISTEN)
或:
# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
二、nfs-server服务配置
查看nfs-server服务状态
# systemctl status nfs-server.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: inactive (dead)
显示nfs-server服务在开机时未启动,即禁用状态。那么首先设置nfs服务开机启动:
# systemctl enable nfs-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
查看nfs-server服务是否开机启动:
# systemctl list-unit-files nfs-server.service
UNIT FILE STATE
nfs-server.service enabled
1 unit files listed.
启动和查看nfs-server服务
# systemctl start nfs-server.service
# systemctl status nfs-server.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since Sat 2018-05-26 20:52:45 CST; 24s ago
Process: 540 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 537 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 540 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
三、NFS共享设置
创建共享目录和设置共享权限:
# mkdir -p /nfs/iso
# chown -R nfsnobody.nfsnobody /nfs/iso/
NFS exports文件的配置格式如下:
NFS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)
关于NFS客户端地址的设置类型如下:
指定IP: 192.168.0.1
指定子网所有主机: 192.168.0.0/24
指定域名的主机: test.com
指定域名所有主机: *.test.com
所有主机: *
参数说明如下:
ro:目录只读
rw:目录读写
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
no_all_squash:与all_squash取反(默认设置)
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
no_root_squash:与rootsquash取反
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户
设置共享:
# vi /etc/exports
然后追加:
/nfs/iso 192.168.100.0/24(rw,sync,all_squash)
重新加载NFS配置:
# exportfs -rv
exporting 192.168.100.0/24:/nfs/iso
查看NFS服务器挂载情况:
# showmount -e 192.168.100.10
Export list for 192.168.100.10:
/nfs/iso 192.168.100.0/24
最后要注意防火墙端口设置。
四、上传ISO文件到XenServer共享目录
首先在XenServer上安装“lrzsz”文件上传下载组件,然后使用rz命令上传ISO镜像,注意ISO镜像文件名中不能包含中文字符,否则XenCenter中无法扫描到该ISO镜像。
# yum -y --enablerepo=base install lrzsz
# rz
五、XenCenter中使用NFS共享ISO库
1. 新建SR
2. 选择新建的存储类型,这里选NFS ISO:
3. 设置存储名称:
4. 设置存储路径,即NFS共享路径。注意这里的路径中的服务器地址使用的是域名,需要事先在本机host配置中添加一条域名解析记录:
5. 刚创建的ISO库中已经可以看到刚上传的镜像文件了: