我有两台连接 10Gbit 以太网的机器。让其中一个是 NFS 服务器,另一个是 NFs 客户端。
通过 TCP 测试网络速度,iperf
显示双向约 9.8 Gbit/s 的吞吐量,因此网络正常。
测试 NFS 服务器的磁盘性能:
dd if=/dev/zero of=/mnt/test/rnd2 count=1000000
Run Code Online (Sandbox Code Playgroud)
结果是 ~150 MBytes/s,因此磁盘可以正常写入。
服务器/etc/exports
是:
/mnt/test 192.168.1.0/24(rw,no_root_squash,insecure,sync,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)
客户端/mnt/test
使用以下选项将此共享安装到本地:
node02:~ # mount | grep nfs
192.168.1.101:/mnt/test on /mnt/test type nfs4 (rw,relatime,sync,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101)
Run Code Online (Sandbox Code Playgroud)
如果我尝试从 NFS 共享在客户端计算机上下载一个大文件 (~5Gb),我会获得~130-140 MBytes/s 的性能,接近服务器的本地磁盘性能,所以它是令人满意的。
但是,当我尝试将大文件上传到 NFS 共享时,上传开始时约为 1.5 Mbytes/s,缓慢增加到 18-20 Mbytes/s 并停止增加。有时,在实际开始上传之前共享“挂起”几分钟,即主机之间的流量接近于零,如果我执行ls /mnt/test
,它在一两分钟内不会返回。然后ls
命令返回并以最初的 1.5Mbit/s 速度开始上传。
当上传速度达到最大值(18-20 Mbytes/s)时,我运行iptraf-ng
并在网络接口上显示约 190 Mbit/s 的流量,因此网络不是这里的瓶颈,以及服务器的 HDD。
我试过的:
1. 在仅与 100Mbit 以太网 NIC …
在我的特殊情况下,我想remote-fs
在glusterfs
完全启动后启动单元。
我的系统文件:
glusterfs
目标:
node04:/usr/lib/systemd/system # cat glusterfsd.service
[Unit]
Description=GlusterFS brick processes (stopping only)
After=network.target glusterd.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes
ExecStop=/bin/sh -c "/bin/killall --wait glusterfsd || /bin/true"
ExecReload=/bin/sh -c "/bin/killall -HUP glusterfsd || /bin/true"
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
remote-fs
目标:
node04:/usr/lib/systemd/system # cat remote-fs.target
[Unit]
Description=Remote File Systems
Documentation=man:systemd.special(7)
Requires=glusterfsd.service
After=glusterfsd.service remote-fs-pre.target
DefaultDependencies=no
Conflicts=shutdown.target
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
好的,所有 Gluster 守护进程都成功启动,我想通过 NFS 挂载 Gluster 文件系统,但是 Gluster 的 NFS 共享不是在glusterfs.service
启动后立即准备好,而是在几秒钟后准备就绪,因此通常remote-fs
无法挂载它,即使是关于Requires
和After
指令。
我们来看看日志:
Apr 14 …
Run Code Online (Sandbox Code Playgroud)