在SVN等工作负载上、初始卷上的FlexCache 操作速度较慢
适用场景
- ONTAP 9.5及更高版本
- FlexCache
- NFSv3
- NLM
- 具有只读NFS导出策略的FlexCache 缓存卷
问题描述
- NLM锁定将挂起、并在悬空重命名操作后排队等待
- 此工作负载是 一个SVN存储库、其托管的代码 与GIT的工作原理非常相似
- 重命名延迟时间较长、只需几秒或几十秒即可完成
- 注意: 重命名是主发生原因 、但任何修改文件系统的操作(写入、设置、删除等)都将对此进行发生原因
- 在
strace
Linux客户端上、可以将挂起的操作视为重命名 - 同时对同一文件进行多次访问、并执行初始卷修改操作和缓存卷读取操作
示例: 突出显示的是strace输出中的行、其中显示了NFS的挂起重命名导致的延迟问题描述
[ +0.001852] task:svn state:D stack: 0 pid:61131 ppid: 46494 flags:0x00000004 [ +0.000001] Call Trace: [ +0.000011] ? __rpc_wait_for_completion_task+0x30/0x30 [sunrpc] [ +0.000001] __schedule+0x3fa/0x740 [ +0.000007] ? __rpc_wait_for_completion_task+0x30/0x30 [sunrpc] [ +0.000000] schedule+0x4b/0xb0 [ +0.000006] rpc_wait_bit_killable+0x24/0xa0 [sunrpc] [ +0.000000] __wait_on_bit+0x6e/0xa0 [ +0.000011] out_of_line_wait_on_bit+0x8e/0xb0 [ +0.000001] ? init_wait_var_entry+0x50/0x50 [ +0.000005] __rpc_wait_for_completion_task+0x2d/0x30 [sunrpc] [ +0.000008] nfs_rename+0xbc/0x2e0 [nfs] [ +0.000005] vfs_rename+0x681/0x920 [ +0.000004] ? lookup_dcache+0x44/0x70 [ +0.000004] do_renameat2+0x494/0x530 [ +0.000004] ? do_renameat2+0x494/0x530 [ +0.000004] __x64_sys_rename+0x20/0x30 [ +0.000004] do_syscall_64+0x37/0x80 [ +0.000004] entry_SYSCALL_64_after_hwframe+0x44/0xa9
示例:
- SVN通过
current
将NLM锁定在名为的文件上来使用文件锁定功能来维护名为的文件(用于了解当前SVN repo版本)write-lock
- 以下是
vserver lock show
write-lock
文件的示例
Cluster::> vserver lock show -vserver svm0 -volume nfs -path /vol2/svn/write-lock -fields
bytelock-offset,client-address,bytelock-length,lock-state
vserver volume lif lif-id path lock-state bytelock-offset bytelock-length client-address
------- ------ ----- ------ -------------------- ---------- --------------- -------------------- --------------
svm0 nfs lif_1 1026 /vol2/svn/write-lock granted 0 18446744073709551615 10.1.2.3