我目前正在努力解决一个通过 NFS 提供主目录的服务器速度极慢的问题,我无法找出问题的根源。它全部在 Nixos 上运行,但我认为这并不重要。
设置如下:我有一台戴尔服务器,配有 H330 RAID 卡和 3 块硬盘:一块用于系统 ( /sda
),两块 RAID 1 用于用户帐户 ( /sdc
)。它仅用于提供主目录。RAID/sdc1
磁盘的分区安装在 上/home/lan
,/sda1
并通过 NFS 导出。还有一个swap
分区在 上/sda2
。
看起来/etc/fstab
像:
/dev/sda1 / ext4 x-initrd.mount 0 1
/dev/sdc1 /home/lan ext4 defaults 0 2
并且 nfs 导出是
/home/lan 192.168.1.0/24(insecure,rw,async,no_subtree_check)
我还有最多 50 个客户端连接到此服务器,供学生使用。客户端的安装/home/lan
和登录是使用 LDAP 完成的。
看起来 NFS 部分没有问题,例如nfsstat
在服务器上运行:
Server rpc stats:
calls badcalls badfmt badauth badclnt
19836893 0 0 0 0
我认为问题出在磁盘配置上。特别是,服务器花费最多的时间用于写入/sda
,而不是/sdc
(这是 iostat 输出)
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 10,10 0,79 73,48 0,00 2004798 185360634 0
sdc 0,50 0,08 8,56 0,00 203605 21587308 0
并btop
确认/sda
使用量远超/sdc
。但我再说一遍,这台服务器上几乎没有运行 ,它只用于提供服务/home/lan
,因此基本上大部分读/写操作都应该视为/sdc
而不是/sda
。
有人知道哪里出了问题以及我该如何修复它吗?
PS:iostat -x 3 3
产量
Linux 6.1.31 (scribe) 26/09/2023 _x86_64_ (6 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0,05 0,00 0,05 0,78 0,00 99,12
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
sda 0,08 0,83 0,03 23,78 4,61 10,08 10,15 74,73 5,57 35,45 6,32 7,36 0,00 0,00 0,00 0,00 0,00 0,00 1,77 20,69 0,10 4,58
sdb 0,01 0,10 0,00 0,00 0,28 15,34 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
sdc 0,00 0,11 0,00 4,00 42,29 38,16 0,55 9,27 0,82 60,03 1,62 16,93 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,03
avg-cpu: %user %nice %system %iowait %steal %idle
0,06 0,00 0,17 2,33 0,00 97,45
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
sda 0,00 0,00 0,00 0,00 0,00 0,00 17,33 158,67 18,67 51,85 8,06 9,15 0,00 0,00 0,00 0,00 0,00 0,00 6,67 18,30 0,26 14,17
sdb 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
sdc 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
avg-cpu: %user %nice %system %iowait %steal %idle
0,11 0,00 0,17 4,28 0,00 95,44
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
sda 0,00 0,00 0,00 0,00 0,00 0,00 26,67 256,00 30,67 53,49 9,75 9,60 0,00 0,00 0,00 0,00 0,00 0,00 10,00 23,07 0,49 26,40
sdb 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
sdc 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
根据评论,我尝试了几种工具,例如iotop
(非常有用!)并阅读了 的输出journalctl
。我发现了第一个问题,OpenLDAP 的日志记录过多。我已将其删除,因为这部分工作正常。我现在只剩下...
sept. 29 11:44:43 scribe rpc.mountd[729895]: v4.2 client detached: 0x96b3573a65167ddb from "192.168.1.197:1005"
sept. 29 11:44:43 scribe rpc.mountd[725638]: v4.2 client detached: 0x96b3573a65167ddb from "192.168.1.197:1005"
sept. 29 11:44:43 scribe rpc.mountd[729900]: v4.2 client detached: 0x96b3573a65167ddb from "192.168.1.197:1005"
sept. 29 11:44:44 scribe rpc.mountd[729895]: v4.2 client attached: 0x96b3573c65167ddb from "192.168.1.197:1005"
sept. 29 11:44:44 scribe rpc.mountd[725638]: v4.2 client attached: 0x96b3573c65167ddb from "192.168.1.197:1005"
sept. 29 11:44:44 scribe rpc.mountd[729900]: v4.2 client attached: 0x96b3573c65167ddb from "192.168.1.197:1005"
sept. 29 11:44:45 scribe rpc.mountd[729895]: v4.2 client detached: 0x96b3573c65167ddb from "192.168.1.197:1005"
sept. 29 11:44:45 scribe rpc.mountd[729900]: v4.2 client detached: 0x96b3573c65167ddb from "192.168.1.197:1005"
sept. 29 11:44:45 scribe rpc.mountd[725638]: v4.2 client detached: 0x96b3573c65167ddb from "192.168.1.197:1005"
sept. 29 11:45:00 scribe rpc.mountd[729895]: v4.2 client attached: 0x96b3575765167ddb from "192.168.1.197:1005"
sept. 29 11:45:00 scribe rpc.mountd[729900]: v4.2 client attached: 0x96b3575765167ddb from "192.168.1.197:1005"
sept. 29 11:45:00 scribe rpc.mountd[725638]: v4.2 client attached: 0x96b3575765167ddb from "192.168.1.197:1005"
sept. 29 11:45:00 scribe rpc.mountd[729895]: v4.2 client detached: 0x96b3575765167ddb from "192.168.1.197:1005"
sept. 29 11:45:00 scribe rpc.mountd[729900]: v4.2 client detached: 0x96b3575765167ddb from "192.168.1.197:1005"
sept. 29 11:45:00 scribe rpc.mountd[725638]: v4.2 client detached: 0x96b3575765167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[729895]: v4.2 client attached: 0x96b3577265167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[725638]: v4.2 client attached: 0x96b3577265167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[729900]: v4.2 client attached: 0x96b3577265167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[729895]: v4.2 client attached: 0x96b3577465167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[729900]: v4.2 client attached: 0x96b3577465167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[729900]: v4.2 client detached: 0x96b3577265167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[729895]: v4.2 client detached: 0x96b3577265167ddb from "192.168.1.197:1005"
sept. 29 11:45:11 scribe rpc.mountd[725638]: v4.2 client detached: 0x96b3577265167ddb from "192.168.1.197:1005"
这是单个客户端的 journalctl 条目。我有 20 到 50 个这样的条目!但我不知道如何查找为什么有这么多的附加和分离,甚至不知道这是否正常。