Originally posted by caligula
View Post
Originally posted by caligula
View Post
I am not sure I follow you, but assuming we still discuss RAID1 like behavior here - usually a program will either execute a read() with a large buffer or a small buffer. BTRFS will NOT double sequential read speed unless you have multiple processes asking for the same data, at which point you rely on the process PID and the number of mirrors you have. You may be lucky or not depending on what PID's you get. There where patches trying to improve this based on congestion that I helped to test , but I don't think they where merged.
BTRFS also does not check integrity by comparing the same read from two disks. It first read off one disk and verifies that to a checksum. If that fails then BTRFS will try another copy which may be on a different disk (or even the same disk depending on what dataprofile you have chosen). This is not done "in the background", but transparently to the program trying to read some data. The read() will not return until the filesystem have either been able to return the correct data, restore it from a working copy (in which case BTRFS will also write out a extra good copy to restore the redundancy), or failed the operation completely.
BTRFS "RAID"-1 does NOT perform like RAID0 as this is a very different. It can achieve impressive speed if you have lots of processes reading from a larger array at the same time (one of the reason a 10 disk RAID-1 is not dumb). RAID0 is better for large sequential reads (video editing for example) and *may* not perform as well for many smaller reads.
Comment