I'm building a simple ZFS file server for the small business I work for. The server is a Dell Poweredge 840, with 1GB RAM. The OS (OpenSolaris 2009.06) is installed on one SATA drive, and there are three other SATA drives installed for storage: 1x1TB, 1x1.5TB, and 1x2TB. When I add the three drives to one raidz zpool, throughput isn't very good:
#zpool create -m /export/pool pool raidz c7d1 c8d0 c8d1
#zfs create pool/fs
#time dd if=/dev/zero of=/export/pool/fs/zerofile bs=1048576 count=1024
1024+0 records in
1024+0 records out
real 0m12.539s
user 0m0.002s
sys 0m0.435s
That's about 81.6 MB/s. That's not horrendous, but I tried creating a pool consisting of just one of those drives:
#zpool create -m /export/disk-c7d1 disk-c7d1 c7d1
#zfs create disk-c7d1/fs
#time dd if=/dev/zero of=/export/disk-c7d1/fs/zerofile bs=1048576 count=1024
1024+0 records in
1024+0 records out
real 0m21.251s
user 0m0.002s
sys 0m0.552s
Okay, 48.19 MB/s throughput for a sequential write to one drive? That seems pretty low. Especially when I format the drive as UFS and try that same write:
#newfs /dev/dsk/c7d1s2
#mount /dev/dsk/c7d1s2 /mnt/c7d1
# time dd if=/dev/zero of=/mnt/c7d1/zeroes bs=1048576 count=1024
1024+0 records in
1024+0 records out
real 0m10.372s
user 0m0.002s
sys 0m1.720s
That's almost twice the speed, 98.73 MB/s. That's much closer to what I'd expect out of these drives (though they're just cheap SATA drives).
What am I doing wrong here? I understand that there's overhead involved in writing parity data with RAIDZ, but making a pool from a single drive shouldn't halve throughput, should it? That seems pretty bad.
Thanks, everybody.
No comments:
Post a Comment