目标系统为单SSD+多HDD,将多HDD创建为RAID5逻辑盘,然后使用FlashCache将SSD做为RAID5逻辑盘的缓存。
系统信息
OS
CentOS release 6.5 (Final) x86_64
CPU
8
Intel(R) Atom(TM) CPU C2750 @ 2.40GHz
MEMORY
4
TOTAL 16G
HDD
4
WDC WD4000FYYZ-0 4TB 7200转
/dev/sdc /dev/sdd /dev/sde /dev/sdf
SSD
1
INTEL SSDSC2BB30 300GB
/dev/sdb
卸载HDD及SSD盘
umount /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdb
确保系统重启后不会自动挂载这些盘。
将多HDD创建为RAID5逻辑盘
格式化HDD盘
parted /dev/sdc (parted) mklabel gpt (parted) unit TB (parted) mkpart primary 0.00TB 4.00TB (parted) print
其它HDD盘也做如上处理.
创建RAID5逻辑分区
mdadm --create /dev/md0 --level=raid5 --raid-devices=4 /dev/sd[c-f]1 parted /dev/md0 (parted) mklabel gpt (parted) unit TB (parted) mkpart primary 0.00TB 12.00TB (parted) print (parted) quit
保存RAID5配置
mdadm --detail --scan > /etc/mdadm.conf
安装Flashcache
wget https://github.com/facebook/flashcache/archive/stable_v3.1.3.zip -O flashcache_stable_v3.1.3.zip
unzip flashcache_stable_v3.1.3.zip
cd flashcache-stable_v3.1.3
make
make install
modprobe flashcache
创建Flashcache混合设备
flashcache_create -p around cachedev /dev/sdb /dev/md0p1 mkfs.ext4 /dev/mapper/cachedev
挂载Flashcache混合设备
mkdir /data mount /dev/mapper/cachedev /data
系统重启后需要重新创建并挂载Flashcache设备
flashcache_create -p around cachedev /dev/sdb /dev/md0p1 mount /dev/mapper/cachedev /data
注意:使用除 writethrough
和 writearound
以外的模式需要使用 flashcache_load
重新创建设备。
写入速度测试
循环创建60MiB大小的文件,测得的磁盘写入速度为 35.6MiB ,磁盘读取速度为 2.1MiB 。
读取速度测试
- 500并发120G文件每次读取32KB顺序读取
请求处理速度
2107
传输速度
132.35MiB/s
- 500并发500G文件每次读取32KB顺序读取
请求处理速度
1937
传输速度
61.09MiB
- 500并发1T文件每次读取32KB顺序读取
请求处理速度
1574
传输速度
49.64MiB/s
- 500并发120G文件每次读取64KB顺序读取
请求处理速度
5006
传输速度
157.88MiB/s
- 500并发500G文件每次读取64KB顺序读取
请求处理速度
897
传输速度
56.37MiB/s
- 500并发1T文件每次读取64KB顺序读取
请求处理速度
782
传输速度
49.10MiB/s
注意事项
重建(rebuild)
当一块盘坏掉后,如果配置了热备盘(Hot spare disk),会自动重建,请将坏盘换掉并配置成热备盘;\ 如果未配置热备盘,读性能会下降(坏盘中的数据需要全部通过计算重现),请将坏盘换掉系统会自动进行重建。
潜在的优化选项
- 开启SSD写Cache
禁用文件、目录访问时间戳
noatime,nodiratime
Write-Back
模式优化sysctl -w dev.flashcache.sdb+md0p1.dirty_thresh_pct=80
卸载Flashcache设备
umount /dev/mapper/cachedev dmsetup remove cachedev
Q&A
重新调整 Flashcache 选项会不会删除数据?
writethrough
、writearound
模式不会,其它的会。
相关参考
- 《Linux LVM逻辑卷管理详细介绍》
- 非常好的LVM入门文章
- 《Pick Your Pleasure: RAID-0 mdadm Striping or LVM Striping?》
- LVM与RAID-0的比较
- 《Creating Software RAID0 (Stripe) on ‘Two Devices’ Using ‘mdadm’ Tool in Linux – Part 2》
- 构建RAID-0教程
- 《在CentOS 6.1上配置 4TB硬盘+RAID1》
- 使用
parted
代替fdisk
对大于2TB的硬盘进行分区 - 《Software RAID - How to Optimize Software RAID on Linux using Mdadm》
- 优化RAID
- 《RAID5单盘故障读写分析》
- RAID5一块盘坏掉后的情形分析