Raid
mv 在 btrfs 文件系統上無限期掛起
mv
我最近開始在我的 ReadyNAS 312 系統上執行時遇到問題。似乎呼叫立即阻塞,即當我在它上面執行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 $$. 相反,一個
cp
沒有問題的作品(輸出在$$ 1 $$). 雖然
mv
掛起,但top
根據ps r -A
它的執行情況,它確實使用了 100% 的 CPU:% 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
我搜尋了更多,我相當確定我遇到了中描述的錯誤
$$ 0 $$. $$ 0 $$ http://permalink.gmane.org/gmane.comp.file-systems.btrfs/46877