**
以下使用centos8,内核4.18,验证不可行!!!
请将客户端和MDS切换到ubuntu,搭建过程不变,当前使用ubuntu18.04,默认内核4.15上验证成功。
**
随着网络和并行计算的迅猛发展,文件IO成为了限制系统整体性能的瓶颈。以前的nfs版本中,所有的客户端与一个服务器连接,所有的请求都必须由这个服务器处理,这不适应并行计算的环境。
Parallel NFS (pNFS)作为 NFS v4.1 标准的一部分,其架构提高了 NFS 的可扩展性,允许客户端直接将数据传送到保存文件的存储设备中,提高系统吞吐量问题。也就是说,当服务器也实现 pNFS 时,客户端也可以同时通过多个服务器访问数据,客户端读写文件的速率会得到显著提升。
目前它支持三种存储协议或布局:文件、对象和块。
pNFS客户端程序已经合并到Linus Torvalds的主线库中,但pNFS服务器端程序还没有。
2 环境准备
地址 | |
---|---|
iscsi服务端 | 192.168.96.14,192.168.96.244 |
MDS | 192.168.96.228 |
客户端 | 192.168.96.208 |
ubuntu服务端 | 192.168.96.211 |
ubuntu客户端 | 192.168.96.124 |
2.1 iscsi客户端软件安装
除了iscsi服务端的节点外,其它所有节点均需要安装iscsi客户端操作软件。
# centos下
yum install -y iscsi-initiator-utils
# ubuntu下
apt install open-iscsi
# 两者命令操作方式相同
2.2 iscsi服务端搭建
以96.14为例
# centos安装targetcli软件
yum install targetcli -y
# 具体搭建步骤参考
使用targetcli创建卷并设置客户端访问。
# 进入到targetcli的操作命令行
targetcli
# 找一块空的盘建立后端存储,这里以/dev/sdb为例
/backstores/block create my_block /dev/sdb
# 创建服务端
/iscsi create iqn.2024-06.com.example:volume
# 将存储后端与服务、卷关联
/iscsi/iqn.2024-06.com.example:volume/tpg1/luns create /backstores/block/my_block
然后得到除iscsi服务端节点外的 iSCSI Initiator 的名称。
然后在targetcli中与卷关联
# 将卷与96.228的iscsi initiator关联,以便客户端发现
/iscsi/iqn.2024-06.com.example:volume/tpg1/acls create iqn.1994-05.com.redhat:ad9e7f1bf9f
# 将卷与96.208的iscsi initiator关联,以便客户端发现
/iscsi/iqn.2024-06.com.example:volume/tpg1/acls create iqn.1994-05.com.redhat:dc651ec4d08b
# 退出即可,会自动保存
exit
另一服务端96.244同以上操作步骤搭建
/backstores/block create my_block1 /dev/sdc
/iscsi create iqn.2024-06.com.example:volume1
/iscsi/iqn.2024-06.com.example:volume1/tpg1/luns create /backstores/block/my_block1
/iscsi/iqn.2024-06.com.example:volume1/tpg1/acls create iqn.1994-05.com.redhat:ad9e7f1bf9f
/iscsi/iqn.2024-06.com.example:volume1/tpg1/acls create iqn.1994-05.com.redhat:dc651ec4d08b
mds配置
先连接iscsi设备
# 扫描链接
iscsiadm -m discovery -t st -p 192.168.96.14
iscsiadm -m discovery -t st -p 192.168.96.244
# 连接iscsi设备
iscsiadm -m node -p 192.168.96.14 --login
iscsiadm -m node -p 192.168.96.244 --login
# 查看已连接的设备
iscsiadm -m session -P 3 | grep -E 'Portal|Attached'
# 断开iscsi设备
# iscsiadm -m node -p 192.168.96.14 --logout
# iscsiadm -m node -p 192.168.96.244 --logout
查看设备
格式化成xfs并挂载设备
# 创建挂载点
mkdir -p /mnt/pnfs_export/dir{1,2}
ls /mnt/pnfs_export/
# 将已连接的iscsi设备格式化为xfs(本地文件系统xfs内部已有pnfs实现)
mkfs.xfs /dev/sda -f
mkfs.xfs /dev/sdb -f
# 挂载设备
mount /dev/sda /mnt/pnfs_export/dir1
mount /dev/sdb /mnt/pnfs_export/dir2
# 查看挂载
df -h
配置nfs服务
[root@fs_96_228 ~]# cat /etc/exports
/mnt/pnfs_export *(pnfs,rw,sync,fsid=0,no_root_squash,no_subtree_check)
/mnt/pnfs_export/dir1 *(pnfs,rw,sync,fsid=1,no_root_squash,no_subtree_check)
/mnt/pnfs_export/dir2 *(pnfs,rw,sync,fsid=2,no_root_squash,no_subtree_check)
配置客户端
先连接iscsi设备
# 扫描链接
iscsiadm -m discovery -t st -p 192.168.96.14
iscsiadm -m discovery -t st -p 192.168.96.244
# 连接iscsi设备
iscsiadm -m node -p 192.168.96.14 --login
iscsiadm -m node -p 192.168.96.244 --login
# 查看已连接的设备
iscsiadm -m session -P 3 | grep -E 'Portal|Attached'
# 断开iscsi设备
# iscsiadm -m node -p 192.168.96.14 --logout
# iscsiadm -m node -p 192.168.96.244 --logout
启动nfs-blkmap服务
systemctl status nfs-blkmap.service
modprobe blocklayoutdriver
systemctl start nfs-blkmap.service
systemctl status nfs-blkmap.service
挂载nfs
# 创建挂载点
mkdir -p /mnt/pnfs/dir{1,2}
ls /mnt/pnfs/
mount -t nfs4 192.168.96.228:/ /mnt/pnfs/
df -h
当访问dir1和dir2的时候会自动挂载
查看是否pnfs
使用centos客户端
cat /proc/self/mountstats | grep -E 'READ|WRITE|LAYOUT|pnfs'
此时dir1和dir2均为pnfs,并且为LAYOUT_SCSI,在结果中:
- LAYOUT 统计指示客户端和服务器使用 pNFS SCSI 操作的请求。
- READ 和 WRITE 统计指示客户端和服务器回退到 NFS 操作的请求。
拷贝一个文件到dir1中,cp直接卡死
但layout操作增加
换成ubutun后正常
cp一个文件后,LAYOUT操作数增加,且文件正常读取