Mit lokalen SSD möchte ich gerne die langsamen Festplatten mit der Performance aus den SSD schneller machen.
Angefangen habe ich mit einem bcache Setup.
Ich habe 4 SATA Festplatten:
2 SSD /dev/sdc und /dev/sdd als Raid Verbund zusammen gelegt md0
2 Harddisks dies als Raidverbund md1 zusammen gelegt jeweils als Raid 1.
Code: Select all
md0 : active raid1 sdd[1] sdc[0]
250058944 blocks super 1.0 [2/2] [UU]
bitmap: 1/2 pages [4KB], 65536KB chunk
md1 : active raid1 sdb[1] sda[0]
1953514432 blocks super 1.0 [2/2] [UU]
bitmap: 1/15 pages [4KB], 65536KB chunk
Code: Select all
bcache-super-show /dev/md1p3
sb.magic ok
sb.first_sector 8 [match]
sb.csum 585ec133c041edc9 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid 79029ea5-b54d-45ef-90bc-e28e15a0999f
dev.sectors_per_block 1
dev.sectors_per_bucket 0
dev.data.first_sector 16
dev.data.cache_mode 1 [writeback]
dev.data.cache_state 2 [dirty]
cset.uuid 53cda2af-878c-42d0-b929-f3eadca4e152
Code: Select all
bcache show
Unsupported super block version: 262146
Unsupported super block version: 576460752303423488
Unsupported super block version: 6222723607344775627
Unsupported super block version: 262146
Name Type State Bname AttachToDev
/dev/md0p1 3 (cache) active N/A N/A
/dev/md1p3 1 (data) dirty(running) bcache0 /dev/md0p1
Was mich sehr verwundert, dass die Schreibperformance nicht wirklich besser ist, als ohne.
Code: Select all
dd if=/dev/zero of=./test.dmp bs=512 count=10000000
10000000+0 Datensätze ein
10000000+0 Datensätze aus
5120000000 bytes (5,1 GB, 4,8 GiB) copied, 44,3855 s, 115 MB/s
Code: Select all
bcache-status
--- bcache ---
UUID 53cda2af-878c-42d0-b929-f3eadca4e152
Block Size 512 B
Bucket Size 512.00 KiB
Congested? False
Read Congestion 2.0ms
Write Congestion 20.0ms
Total Cache Size 200 GiB
Total Cache Used 8 GiB (4%)
Total Cache Unused 192 GiB (96%)
Evictable Cache 196 GiB (98%)
Replacement Policy [lru] fifo random
Cache Mode writethrough [writeback] writearound none
Total Hits 13472 (37%)
Total Misses 22450
Total Bypass Hits 3937 (%)
Total Bypass Misses 1557206
Total Bypassed 2 GiB
Vielleicht messe ich ja falsch?
Mit hdparm sieht es etwas anders aus:
Code: Select all
hdparm -Tt --direct /dev/bcache0p3
/dev/bcache0p3:
Timing O_DIRECT cached reads: 1398 MB in 2.00 seconds = 698.74 MB/sec
Timing O_DIRECT disk reads: 470 MB in 3.01 seconds = 156.18 MB/sec
static:~ # hdparm -Tt --direct /dev/md1
/dev/md1:
Timing O_DIRECT cached reads: 928 MB in 2.00 seconds = 463.70 MB/sec
Timing O_DIRECT disk reads: 404 MB in 3.01 seconds = 134.14 MB/sec
static:~ # hdparm -Tt --direct /dev/md0
/dev/md0:
Timing O_DIRECT cached reads: 870 MB in 2.00 seconds = 434.13 MB/sec
Timing O_DIRECT disk reads: 1132 MB in 3.00 seconds = 377.04 MB/sec
Ich habe jedenfalls nicht den Eindruck, dass der Writecache wirkt.
Und es steht die Frage im Raum, wär ein dm-cache nicht eventuell besser? LVM existiert ja ohnehin.