暂未分类暂未分类ceph扩展bluestore的db分区
zphj1987前言
在ceph 14版本里面才加入了bluefs-bdev-migrate,分区迁移相关的命令,那么在12版本里面其实也是可以扩展分区的
测试的版本
1 2
| [root@lab102 ceph-0] ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
|
操作方法
如果db分区之前有做独立独立分区,但是发现db的大小设置小了,想把这个db调大,或者是从ssd设备迁移到nvme的分区,那么可以通过dd命令来实现的
停止osd
1
| systemctl stop ceph-osd@0
|
替换分区
1 2 3
| dd if=/dev/sdb1 of=/dev/sda1 bs=64M ln -s /dev/sda1 /var/lib/ceph/osd/ceph-0/block.db chown ceph:ceph -R /var/lib/ceph/osd/ceph-0/*
|
把原来的db分区整体复制一份,注意后面的分区要大于或者等于/dev/sdb1这个原始的db分区,加上后面的bs,复制的速度会快很多
扩展db分区的大小,如果不使用扩展命令,显示的就是跟原始的分区大小是一致的
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@lab102 ceph-0] infering bluefs devices from bluestore path slot 0 /var/lib/ceph/osd/ceph-0//block.wal slot 1 /var/lib/ceph/osd/ceph-0//block.db slot 2 /var/lib/ceph/osd/ceph-0//block 0 : size 0x77300000 : own 0x[1000~772ff000] 1 : size 0x950200000 : own 0x[2000~737afe000] 2 : size 0x3a352400000 : own 0x[1bf08c00000~2540c00000] Expanding... 0 : no changes detected. Bypassed. 1 : expanding from 0x737b00000 to 0x950200000 1 : size label updated to 39998980096 2 : unable to expand. Bypassed.
|
检测是否使用了慢分区和检测db分区大小的命令
1 2 3 4 5 6 7 8 9 10 11 12
| [root@lab102 ~] "bluefs": { "gift_bytes": 0, "reclaim_bytes": 0, "db_total_bytes": 39998971904, "db_used_bytes": 2918178816, "wal_total_bytes": 1999630336, "wal_used_bytes": 223342592, "slow_total_bytes": 160000114688, "slow_used_bytes": 7261519872, "num_files": 181, "log_bytes": 178040832,
|
db_total_bytes是分区的大小
slow_used_bytes是使用了慢分区的大小
做下压缩
再次检查
1 2 3 4 5 6 7 8 9 10 11 12
| ceph daemon osd.0 perf dump|grep bluefs -A 10 "bluefs": { "gift_bytes": 0, "reclaim_bytes": 0, "db_total_bytes": 39998971904, "db_used_bytes": 10199490560, "wal_total_bytes": 1999630336, "wal_used_bytes": 82833408, "slow_total_bytes": 160000114688, "slow_used_bytes": 0, "num_files": 160, "log_bytes": 25575424,
|
可以看到上面的慢分区的数据都刷到新替换的快分区里面去了
###注意事项
替换的时候一定操作谨慎,一个个替换,确认数据没有问题再做相关的处理,比较安全的方式是下线osd,再新创建osd
总结
分区替换可以换一个大的盘
替换后需要compact才会把slow的数据刷掉