最近,我在运行 ReadyNAS 312 系统时遇到问题mv
。似乎调用立即被阻止,也就是说,当我运行strace
它时,它似乎在执行很多操作之前就卡住了:
open("[...]", O_RDONLY|O_NOFOLLOW) = 3
fstat(3, {st_mode=S_IFREG|0666, st_size=287873154, ...}) = 0
open("[...]", O_WRONLY|O_CREAT|O_EXCL, 0600) = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
ioctl(4, BTRFS_IOC_CLONE^C^C^Z
[1] + 7789 suspended strace mv .
完整strace
输出位于 [0]。
相反,acp
可以正常工作(输出为 [1])。
虽然挂起,但根据其运行情况,mv
它确实使用了 100% 的 CPU :top
ps r -A
% ps r -A
PID TTY STAT TIME COMMAND
2490 ? R 0:45 [btrfs-transacti]
20257 pts/0 R+ 1:15 mv [...]
21097 pts/1 R+ 0:00 ps r -A
然而,如上所示,几秒钟后,进程 [btrfs-transacti] 加入其中(也使用 100% 的 CPU)。
的输出cat /proc/20257/status
是
% cat /proc/20257/status
Name: mv
State: R (running)
Tgid: 20257
Ngid: 0
Pid: 20257
PPid: 20254
TracerPid: 20254
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups: 0
NStgid: 20257
NSpid: 20257
NSpgid: 20254
NSsid: 4613
VmPeak: 24084 kB
VmSize: 24084 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 1616 kB
VmRSS: 1616 kB
VmData: 220 kB
VmStk: 136 kB
VmExe: 124 kB
VmLib: 2516 kB
VmPTE: 64 kB
VmPMD: 12 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/7915
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 308
nonvoluntary_ctxt_switches: 467
非自愿上下文切换的数量缓慢上升,而自愿上下文切换的数量保持不变。
磁盘系统是 Netgear 所称的 X-RAID,但它基本上是 RAID-1。内核是
% uname -a
Linux readynas312 4.1.30.x86_64.1 #1 SMP Thu Sep 22 16:30:32 PDT 2016 x86_64 GNU/Linux
如果我需要提供更多信息,请告诉我。
[0]https://gist.github.com/dinyar/6e32fae19d38fd66f942dd70ee6cda8c
[1]https://gist.github.com/dinyar/4c40ff7bc0fca986a1ea875287810928
答案1
我进行了一些搜索,并且相当确定我遇到了 [0] 中描述的错误。
[0]http://permalink.gmane.org/gmane.comp.file-systems.btrfs/46877