On 06/20/2012 10:59 AM, Phil Frost wrote:
On 06/20/2012 10:43 AM, Shaun Thomas wrote:
"Unfortunately device mapper (LVM) might not support barriers."
Further, the fsync() latency I observed running ext4 on MD and LVM
(but not DRBD devices) empirically suggest that barriers are working
for DRBD's underlying block device, at least given my understanding
that working barriers are required for a fsync() that really does
flush to non-volatile storage.
Just to check my sanity further, I just did a test of a DRBD device
directly on a partition of a SATA drive. No LVM, no MD; just a plain
SATA drive and DRBD. I reached the same conclusion, DRBD is not
observing fsync(), O_SYNC, etc., and it's not for lack of support on the
underlying device. Can anyone reproduce?
pfrost@storage02:/mnt/synctest$ cat /etc/drbd.d/test.res
resource test {
device minor 1;
net {
shared-secret
BTawM41lfw8L0RTKBXhOiGK4lWb6dZTqJGNaGJJwF0pCfNhasdfhB5qjBjgZL4O;
}
on storage01 {
disk /dev/sda2;
meta-disk internal;
address 10.0.0.7:7790;
}
on storage02 {
disk /dev/sda2;
meta-disk internal;
address 10.0.0.9:7790;
}
}
pfrost@storage02:~$ sudo drbdadm -- --overwrite-data-of-peer primary test
pfrost@storage02:~$ sudo mkfs -t ext4 /dev/drbd/by-res/test
pfrost@storage02:~$ sudo mount /dev/drbd/by-res/test -o barrier=1 -t
ext4 /mnt/synctest/
pfrost@storage02:~$ cd /mnt/synctest/
pfrost@storage02:/mnt/synctest$ sudo ~/test_fsync -f ./test_fsync
Simple write timing:
write 0.002742
Compare fsync times on write() and non-write() descriptor:
If the times are similar, fsync() can sync data written
on a different descriptor.
write, fsync, close 0.196210
write, close, fsync 0.175143
Compare one o_sync write to two:
one 16k o_sync write 0.175284
two 8k o_sync writes 0.300499
Compare file sync methods with one 8k write:
(o_dsync unavailable)
open o_sync, write 0.157953
write, fdatasync 0.167023
write, fsync 0.169357
Compare file sync methods with two 8k writes:
(o_dsync unavailable)
open o_sync, write 0.300676
write, fdatasync 0.182892
write, fsync 0.184106
pfrost@storage02:/mnt/synctest$ cd ..
pfrost@storage02:/mnt$ sudo umount synctest/
pfrost@storage02:/mnt$ sudo drbdadm down test
pfrost@storage02:/mnt$ sudo mkfs -t ext4 /dev/sda2
pfrost@storage02:/mnt$ cd /mnt/synctest/
pfrost@storage02:/mnt/synctest$ sudo ~/test_fsync -f ./test_fsync
Simple write timing:
write 0.002765
Compare fsync times on write() and non-write() descriptor:
If the times are similar, fsync() can sync data written
on a different descriptor.
write, fsync, close 8.561847
write, close, fsync 8.490528
Compare one o_sync write to two:
one 16k o_sync write 8.365526
two 8k o_sync writes 20.089010
Compare file sync methods with one 8k write:
(o_dsync unavailable)
open o_sync, write 8.390429
write, fdatasync 8.407142
write, fsync 8.540648
Compare file sync methods with two 8k writes:
(o_dsync unavailable)
open o_sync, write 16.739327
write, fdatasync 8.423901
write, fsync 8.515552
_______________________________________________
drbd-user mailing list
drbd-user@lists.linbit.com
http://lists.linbit.com/mailman/listinfo/drbd-user