Samsung 983ZET 480GB和Intel Optane AIC 280GB(傲腾) FIO 4k对比
机器配置:E5-2680v2*1 / 64GB内存 / Samsung 870 EVO系统盘,均在运行ceph,生产环境下有一定负荷但不在繁忙。2个卡式NVME也都已经作为CEPH WAL/DB/BCACHE拉了一些HDD了,其中三星的带了4-5个HDD,傲腾1-2个,我拿了一个分区来做测试。数据:
机器配置:E5-2680v2*1 / 64GB内存 / Samsung 870 EVO系统盘,均在运行ceph,生产环境下有一定负荷但不在繁忙。2个卡式NVME也都已经作为CEPH WAL/DB/BCACHE拉了一些HDD了,其中三星的带了4-5个HDD,傲腾1-2个,我拿了一个分区来做测试。数据:
查看新插入的HDD Slot Number编号:
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL -NoLog|egrep "Enclosure Device ID|Slot Number|Device Id|Firmware state"
确认是3以后创建RAID0:
/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[32:3] WB Direct -a0
刚把ceph osd重建,为osd WAL/DB分配ssd专门的分区,同时也应用了bcache。想测试下不同bcache缓存模式下对性能的影响情况。
4个节点,节点配置:E5-2650/ 32GB内存 / 4*4TB ST4000NM0035 128MB缓存 + 三星zet983 480GB + 三星pro 500GB系统盘;zet983为每个hdd分配35GB DB分区、4GB WAL分区、50GB BCACHE分区。
我原来CEPH集群的OSD是默认方式创建的,即“ceph-deploy osd create ceph-node-1 --data /dev/bcache0”,因为性能遇到瓶颈,为了充分榨干nvme aic ssd,决定重建osd把WAL/DB分区放到nvme aic ssd上。目前社区和官方说只有重建方式,ceph允许同时存在2种不同的osd,所以可以平滑的过度。
我有4个节点,所以我每次重建4个osd,重建osd数量应保持在总数20%左右,不应一次性操作太多。
为了提高CEPH HDD的性能,我买了Samsung 983ZET用来做Bcache缓存盘。
4个CEPH节点,每个节点OSD配置:4x4TB HDD,Samsung 983ZET一拖四用作Bcache缓存盘。1500个左右VM,平时负荷差不多23MiB/s wr | 1.5k op/s上下wr,rbd上的VM 60以上线程并发写入时经常有500ms以上的io延迟,偶尔延迟达到1000ms以上,如果更高并发写入时有时候甚至超过10000ms延迟,使用影响很大,但是并发读的却非常低的延迟一般保持在0ms,偶尔上个几十ms。
首先停止故障osd运行:
# ceph osd out osd.4
# systemctl stop ceph-osd@4.service
解除bcache绑定(停用前端缓存),假设故障osd是建立在bcache1上,缓存盘的cset-uuid为805bc5f1-36e9-4685-a86a-3ea8c03f1172,我osd只是偶尔出现错误即将故障,而不是不能识盘,所以正常解除绑定清理脏数据:
# echo 805bc5f1-36e9-4685-a86a-3ea8c03f1172 > /sys/block/bcache1/bcache/detach
下午收到故障警报,有个ceph节点osd故障。故障osd建立在节点bcache2分区上,但是这分区不见了,bcache2是一个RAID0的前端缓存分区。
通过MegaRAID检查RAID硬盘状态,发现有个RAID0下的硬盘变成外来设备了:
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL -NoLog|grep "Firmware state"
Firmware state: Unconfigured(good), Spun Up
也就是没有RAID信息列阵不识别这个盘了,也许是高负荷下掉盘又恢复后无法识别了?但起码盘还能识到,也就是说可能盘还没坏,可以尝试RAID导入一下外来配置:
如果CEPH已经使用Bcache缓存加速了OSD,使用未加速的OSD也需要应用Bcache缓存加速,则可以参考下文连贯操作记录,如有出错请留言。
[root@ceph-node-1 ceph-admin-node]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 447.1G 0 disk
├─bcache0 252:0 0 3.7T 0 disk
│ └─ceph--60bcd20c--264c--489b--8315--6b3fe7d9753b-osd--block--40eedca5--3120--416a--a021--b1dceaa15815 253:1 0 3.7T 0 lvm
└─bcache1 252:128 0 3.7T 0 disk
└─ceph--f67b425f--a786--42db--8ee7--d0dad6fb2ba4-osd--block--949401de--81d5--477c--8f22--b8c01e671d58 253:2 0 3.7T 0 lvm
sdd 8:48 0 3.7T 0 disk
sdb 8:16 0 3.7T 0 disk
└─bcache0 252:0 0 3.7T 0 disk
└─ceph--60bcd20c--264c--489b--8315--6b3fe7d9753b-osd--block--40eedca5--3120--416a--a021--b1dceaa15815 253:1 0 3.7T 0 lvm
sde 8:64 0 3.7T 0 disk
sdc 8:32 0 3.7T 0 disk
└─bcache1 252:128 0 3.7T 0 disk
└─ceph--f67b425f--a786--42db--8ee7--d0dad6fb2ba4-osd--block--949401de--81d5--477c--8f22--b8c01e671d58 253:2 0 3.7T 0 lvm
sda 8:0 0 232.4G 0 disk
├─sda2 8:2 0 231.9G 0 part
│ └─centos-root 253:0 0 231.9G 0 lvm /
└─sda1 8:1 0 512M 0 part /boot
1 加载系统的bcache模块:
lsmod | grep bcache
modprobe bcache
2 如果出现错误:
modprobe: FATAL: Module bcache not found.
则需要升级内核:https://www.cnweed.com/archives/4311/
因为bcache在kernel 3.10版本才进入主线,所以我们要保证CentOS的内核版本大于3.10
3 编译安装
yum install -y git gcc-c++ pkgconfig libblkid-devel
git clone https://evilpiepirate.org/git/bcache-tools.git
cd bcache-tools/
make
make install