1. 说明
此文档操作方法适用于>=V13.2.5 ceph版本,部署模式为filestore,将每一块机械盘(LVM卷)对应一个OSD进程,并且journal日志放在ssd加速盘上。
2. 故障硬盘为SSD缓存盘(加速盘)
【思路】
缓存盘故障,需先删除机械盘对应的osd,再取消对应机械盘的cache关系,关机换盘后,重新创建cache逻辑卷与绑定cache-pool,创建osd。
【测试环境】
【处理步骤】
1、删除故障硬盘
登录故障缓存盘所在节点,将故障盘对应的osd down掉,并等待数据同步完成
# lsblk
# docker exec ceph-cmd ceph osd out osd.<ID>
# docker exec ceph-cmd daemon-stop target=osd.<ID>
# docker exec ceph-cmd ceph osd purge <id> --yes-i-really-mean-it
# docker exec ceph-cmd daemon-delete target=osd.<ID>
# docker exec ceph-cmd ceph-s
2、设置分布式存储数据不迁移
# cmd
# ceph osd set norecover
# ceph osd set nobackfill
# ceph osd set noout
3、移除故障OSD
示例: 故障缓存硬盘sda 卷组vg0 数据逻辑卷vg0/data_sdc vg0/data_sdd
# lvconvert --uncache vg0/data_sdc
# lvconvert --uncache vg0/data_sdd
# vgreduce /dev/vg0 /dev/sda3
# pvremove /dev/sda3
# fdisk /dev/sda 删除sda1 sda2 sda3这三个分区
4、关闭服务器,更新故障缓存盘(SSD)
5、开机进入RAID配置页面,将新硬盘做RAID0(若是JBOD直通,可忽略此步骤)
6、进入操作系统,检查所有磁盘监控状态,要求均能识别正常
7、格式化/dev/sda磁盘,并新建3个分区
sda1 10G
sda2 10G
sda3 剩余所有
8、创建cache/meta 逻辑卷,并绑定缓存池
# pvcreate /dev/sda3
# vgextend /dev/vg0 /dev/sda3
# lvcreate -n cache_sdc -L 210G vg0 /dev/sda3
# lvcreate -n meta_sdc -L 1G vg0 /dev/sda3
# lvcreate -n cache_sdd -L 210G vg0 /dev/sda3
# lvcreate -n meta_sdd -L 1G vg0 /dev/sda3
# lvconvert --type cache-pool --poolmetadata vg0/meta_sdc vg0/cache_sdc
# lvconvert --type cache --cachepool vg0/cache_sdc vg0/data_sdc --cachemode writeback
# lvconvert --type cache-pool --poolmetadata vg0/meta_sdd vg0/cache_sdd
# lvconvert --type cache --cachepool vg0/cache_sdd vg0/data_sdd --cachemode writeback
# lvs
# lsblk
9、添加osd
# docker exec ceph-cmd daemon-create host=ycc-xxx osd type=filestore disk=/dev/vg0/data_sdc journal=/dev/sda1
# docker exec ceph-cmd daemon-create host=ycc-xxx osd type=filestore disk=/dev/vg0/data_sdd journal=/dev/sda2
# docker exec -it ceph-cmd ceph -s
3. 故障硬盘为OSD 数据盘
【思路】
删除故障osd对应的lvm卷,关机更换故障硬盘,将新硬盘重新做RAID0,并从/dev/sda3或者/dev/sdb3中新建lvmcahe的cache、meta逻辑卷。从故障硬盘新建数据逻辑卷,并绑定lvm cache-pool,再添加osd到ceph集群。
【测试环境】
【处理步骤】
1、删除故障硬盘
登录故障osd所在计算点,删除故障机械盘对应osd
# docker exec ceph-cmd ceph osd out osd.<ID>
# docker exec ceph-cmd daemon-stop host=<host> target=osd.<ID>
# docker exec ceph-cmd ceph osd purge <id> --yes-i-really-mean-it
# docker exec ceph-cmd daemon-delete host=<host> target=osd.<ID>
2、设置分布式存储数据不迁移
# cmd
# ceph osd set norecover
# ceph osd set nobackfill
# ceph osd set noout
3、删除故障硬盘对应的lvm卷
示例: 故障硬盘sdc 卷组vg0 数据逻辑卷/dev/vg0/data_sdc
# lvremove -y /dev/vg0/data_sdc
# vgreduce vg0 /dev/sdc
# pvremove /dev/sdc
4、关闭服务器,更新故障缓存盘(SSD)
5、开机进入RAID配置页面,将新硬盘做RAID0(若是JBOD直通,可忽略此步骤)
6、进入操作系统,检查所有磁盘监控状态,要求均能识别正常
7、格式化/dev/sda磁盘,并配置lvmcache
# pvcreate /dev/sdc
# vgextend /dev/vg0 /dev/sdc
# lvcreate -l 100%FREE -n data_sdc /dev/vg0 /dev/sdc
# lvcreate -n cache_sdc -L 210G vg0 /dev/sda3
# lvcreate -n meta_sdc -L 1G vg0 /dev/sda3
# lvconvert --type cache-pool --poolmetadata vg0/meta_sdc vg0/cache_sdc
# lvconvert --type cache --cachepool vg0/cache_sdc vg0/data_sdc --cachemode writeback
# lvs
8、添加osd
# docker exec ceph-cmd daemon-create host=ycc-xxx osd type=filestore disk=/dev/vg0/data_sdc journal=/dev/sda1
# docker exec -it ceph-cmd ceph -s