Closed onlime closed 9 years ago
I forgot the add this additional information... We are getting the following messages on the receiving server's console once this deadlock happens:
INFO: task txg_sync:1280 blocked for more than 120 seconds.
@onlime could you post a back trace from the txg_sync thread. That should shed some light on what's going on. Also I wouldn't be surprised if your issue is already resolved in the 0.6.4 tag. The new tag compiles fine for kernels as old as 2.6.32 (to support older RHEL and SLES releases) so you should be able to upgrade.
@behlendorf Thanks a lot for giving us hope. As I was on vacation for 3 weeks, I put this on hold, asked Dietmar Maurer from ProxmoxVE to deploy ZoL 0.6.4, and waited for the next release of ProxmoxVE. He released ZoL 0.6.4.1 in pve-no-subscription (the testing repo of ProxmoxVE) on May 7th. I was able to upgrade our servers last Friday 2015-05-08. Since then, this zfs receive deadlock did not pop up any more. Great! We are even noticing a huge speedup on zfs send|receive after the upgrade from ZoL 0.6.3 to 0.6.4.1 - some zpools are syncing now 3 times faster. Keep up the good work! Best regards, Philip
@onlime that's great news, thanks for the update. You can probably attribute the improved send/resv performance to the following commit b738bc5a0f8ccd0281ed06831c34fbe31d2b2138 (if you're interested in that sort of thing!)
@behlendorf Sure, I was very much interested in the possible reason for this great performance boost. Thanks for the reference. I reconfirm the zfs recv deadlock did not show up any more. As 3 work days have now passed and this hickup didn't happen again on our production servers, I guess this problem is solved for good in 0.6.4.1. Cheers!
Hi there,
We are experiencing zfs send|receive deadlocks on two production servers with high load. Both servers are running Proxmox VE 3.4 with ZoL v0.6.3-1.2, ZFS RAID-1 with two SSD drives attached to LSI/Avago 9207-8i HBAs in each server.
System information:
Both systems are configured identically with the only exception CPUs:
We are running two OpenVZ containers on two separate ZFS filesystems:
In particular pve-222 (webserver) causes a lot of IO load during peak business hours. pve-111 (mailserver) may also generate high IO load from time to time. With the powerful SSDs underneath, IO is never a real issue, though.
We are replicating both ZFS file systems to the secondary host node, e.g. from hn4 to hn3, using ZREP which basically does simple zfs send|receive using the -I flag (sends all intermediary snapshots from the first snapshot to the second snapshot). If both OpenVZ containers are running on hn4 and none on hn3, replication always succeeds. Once we migrate pve-222 over to hn3, migration completes but as soon as we start the next replication (zfs send|receive), it hangs. Actually, zfs recv hangs on the destination side (in this case hn4).
I have tested the same thing with a third rpool/ROOT/pve-333 filesystem containing only a small OpenVZ container (< 1GB). I was able to replicate it perfectly well from one host node to the other, failover with ZREP worked in both directions and zfs send|receive never hung.
Syslog on hn4 upon hanging zfs receive process:
zfs recv process was in D state (uninterruptible sleep):
Stack trace of another case when the same thing happened in the other direction (hn4->hn3):
Could this be related to #1638 ? Is there any possibility, this is fixed in ZoL 0.6.4? We are aware you have released 0.6.4 yesterday and are very glad to hear these news. But as we are running Proxmox VE 3.4 with a non standard (non stock Debian) 2.6.32 kernel (Proxmox actually runs a RHEL kernel), it will probably not be easy to install ZoL 0.6.4 on these machines. Any advice greatly appreciated! We are struggling with this issue already for a long time and this zfs recv deadlock never happened on any other machines (we are running Proxmox VE 3.4 with ZFS RAID-1 and RAID-10 on 10+ more servers without any issues, even on two other servers with identical hardware setup).
Thanks! Best regards, Philip