iSCSI存储与NFS

问题重现

最初,存储和十台GPU工作站直接相连,这样的工作方式就造成了数据不同步的问题。即:在master上写的数据,在其余的worker上均不能同步显示出来,必须要在worker上重新挂载才能看到master上的数据。这样使用起来很不方便。

问题分析

iSCSI和NFS是两个不同的概念。iSCSI共享的是块设备,不是文件系统,而NFS是在多台机器上共享数据。因此,存储可以通过iSCSI连接多台服务器,每台服务器创建的文件都会被存在存储中,要想显示其他机器创建的内容,就需要重载存储,重新加载索引才行。因此,还是要安装NFS来保证文件在不同节点的同步显示。

解决方案

EMC通过光纤与路由相连,每个节点均使用千兆网线连接同一路由。
master节点连接外网,同时是cluster中的NFS+NIS server,其余worker节点为client。

首先,将iSCSI设备挂在到master上,接着在 /etc/fstab 中写入命令,使开机可以自动挂载

1. master:(IP=10.10.1.1, prefix=24)

# 挂载iSCSI
fdisk -l
## 创建挂载点
mkdir /data
mount /dev/mapper/mpatha
## 写入开机自动挂载
echo "/dev/mapper/mpatha /data xfs defaults,_netdev 0 0" > /etc/fstab

# 查看是否已经安装NFS服务,配置exports
rpm -qa | grep nfs
## 安装 NFS 服务器所需的软件包:
yum install -y nfs-utils
## 启动RPCBind(运行NIS后此服务已经运行,不需重启)
systemctl start rpcbind
systemctl enable rpcbind
## 启动NFS服务
systemctl start nfs
systemctl enable nfs
## 确定NFS服务启动成功
rpcinfo -p
## 网段共享NFS目录
echo"/data/ 10.10.1.0/24(rw,sync,no_root_squash,no_all_squash)" > /etc/exports
## 重启NFS服务,使其生效
systemctl restart nfs

2. worker(需要安装RPCBind,不用安装NFS)

# RPCBind
## 启动RPCBind
systemctl start rpcbind
systemctl enable rpcbind
# NFS
# 查看NFS目录是否可见
showmount -e 10.10.1.1
## 挂载到挂载点
mkdir /data
mount -t nfs 10.10.1.1:/data /data
## 设置开机自动挂载
echo "10.10.1.1:/data /data defaults 0 0" > /etc/fstab
## 查看是否挂载成功
df -h

解释

在master上,NFS通过/etc/exports分享出去,其中/data/是分享的路径,10.10.1.1是master IP。

ro只读权限,rw读写权限,sync数据同步写入内存硬盘;no_root_squash 访问共享目录时,用户如果是root权限,对共享目录也具有root权限(有安全隐患);
root_squash 如果访问共享目录是root的权限用户,对共享目录的权限会被压缩为nfsnobody用户的权;all_squash 不管你访问共享目录的用户是谁,都必须压缩为nfsnobody用户的权限。

另外,selinux和防火墙均可能会影响NFS,排查时注意。

发表评论