橋谷と申します。 ちょっと気になったので、いくつかテストしてみました。 /dev/hdbはマウントなどしていない「つながっているだけ」のHDDです。 ちょっと見にくいですが...
# uname -a Linux vdebian 2.6.18-6-686 #1 SMP Thu Nov 5 16:28:13 UTC 2009 i686 GNU/Linux # vmstat -d | egrep '^(disk| |hdb)' disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec hdb 43 17 473 4 0 0 0 0 0 0 disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec # dd if=/dev/hdb ibs=512 count=1 of=/dev/null 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.000149291 seconds, 3.4 MB/s # vmstat -d | egrep '^(disk| |hdb)' disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec hdb 44 20 505 4 0 0 0 0 0 0 disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sectorsを見ると分かるように、1セクタ指定のddでも実際には32セクタ読まれていま すね、やはり先読みが働いているようです。これに対して # dd if=/dev/hdb ibs=512 iflag=direct count=1 of=/dev/null 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.000153211 seconds, 3.3 MB/s # vmstat -d | egrep '^(disk| |hdb)' disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec hdb 45 20 506 4 0 0 0 0 0 0 disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec directフラグつきだと「正しく」1セクタ読まれているようです。 多分この場合はFreeBSDと大差ない速度の転送になるのではないかと思います。 # VirtualBoxはこのようなテストを手軽にできてよいですね。