参考H3C UIS超融合一体机部件更换配置指导-5W126-新华三集团-H3C
更换硬盘前,需要先删除故障盘。
当故障硬盘的挂载路径丢失的情况下,在前台页面会无法删除,此情况下可以通过后台命令行删除。具体操作方法请根据所用版本参考UIS 6.0后台删除缓存分区方法、UIS 6.5版本后台删除缓存分区方法或UIS 7.0版本(被Scache加速的数据盘)后台删除缓存分区方法章节。
(1) 硬盘故障会,UIS主机硬盘状态会显示为异常。
(2) 在前台页面删除故障硬盘:确保存储的健康度是100%,单击异常硬盘的删除按钮,等待删除过程完成。
每次只能在一个节点操作。删除完一个节点的故障盘后,需等待数据平衡完毕,才能继续删除其他节点的故障盘。考虑到数据平衡需要一定时间,建议在备件到达现场之前提前一天完成此操作。
(1) 通过ssh方法登录到故障节点的后台,执行ceph osd tree命令,找到状态为down的osd编号,如图所示,故障的osd编号为1。
(2) 如果硬盘是带有journal或flashcache加速的数据盘,还需要找到对应的加速分区,待后续删除用。查询硬盘是否有journal或flashcache加速的方法请参考2.1.2 判断硬盘类型。
确认硬盘带有journal加速后,首先需要确定journal SSD上哪个分区是待更换硬盘对应的加速分区。
查询方法一(推荐):
a. 执行cat /var/lib/ceph/osd/ceph-x/journal_uuid命令(x为故障的osd号),找出待删除硬盘缓存分区的uuid。
b. 执行ll /dev/disk/by-partuuid/命令,查看所有磁盘分区对应的uuid。
c. 在步骤b的输出结果中找到和步骤a相同的,该磁盘分区即为需要删除的写缓存分区。例如:下图中,sdf6即为待更换硬盘sdb对应的写缓存分区。

查询方法二:
如果执行cat /var/lib/ceph/osd/ceph-x/journal_uuid命令查找不到,此时可以先对应出此台服务器上的其他活动的数据盘对应的写缓存分区,那么剩下没有对应关系的写缓存分区就是被删除的硬盘对应的写缓存分区了。
如下图所示,对应出osd.5的写缓存分区为sdf3,osd.8的写缓存分区为sdf4,osd.11的写缓存分区为sdf5,那么sdf上还剩下sdf1和sdf6,其中sdf1只有15M,是标识sdf为写缓存SSD的分区,因此sdf6就是被删除的硬盘的写缓存分区。

确认硬盘带有flashcache加速后,需要确定flashcache SSD上哪个分区是待更换硬盘对应的加速分区。
执行lsblk命令查看osd的挂载路径和软连接信息。例如下图中查询的osd.11对应的数据盘为sde,通过uuid比对,与sde下面的uuid相同的flashcache 加速分区为sdf8。
若使用此方法查询不到故障osd对应的uuid,则需要使用排除法,将所有正常的osd对应的flashcache加速分区找出来,那么剩下的加速分区则属于故障osd。
查询完毕之后,执行以下命令移除flashcache软连接。
umount /var/lib/ceph/osd/ceph-x//x为故障osd编号
dmsetup remove /dev/mapper/xxxx-xxxx-xxxx//xxxx-xxxx-xxxx为flashcache加速分区下的一长串uuid
(3) osd可能还有挂载残留,执行umount /var/lib/ceph/osd/ceph-x命令(其中x为osd编号,按照实际情况修改),取消挂载。如果执行此命令后提示“umount: /var/lib/ceph/osd/ceph-x: not mounted”,属于正常情况。
(4) 执行如下命令将osd删除。其中x为osd编号,按照实际情况修改,注意不要删错。
ceph osd crush remove osd.x
ceph auth del osd.x
ceph osd rm osd.x
(5) 将步骤2中查询到的加速SSD分区删除。
使用parted /dev/sdx和rm y命令(sdx为加速SSD的盘符,y为分区号,按实际情况修改),删除上文确认过的故障硬盘对应的读写缓存分区,如需要删除sdo2分区。

(6) 确认分区是否已经删除

(7) 删除完毕后,刷新管理界面查看,确认该故障盘已经消失,并等待集群健康度恢复100%。
(1) 取消故障硬盘的挂载。
a. 通过ssh方法登录到该节点,执行ceph osd tree命令,查看故障的osd(如图中osd 7)。
b. 执行mount命令查看该osd的挂载信息。
c. 执行umount命令,取消被拔硬盘的挂载(图中以osd 7为例)。
(2) 执行如下命令,将故障osd删除,其中x为osd编号,按照实际情况修改,注意不要删错。
ceph osd crush remove osd.x
ceph auth del osd.x
ceph osd rm osd.x
(3) 删除flashcache标识码和缓存盘上的缓存分区
a. 确认被故障盘的flashcahe 标识码。
若系统下已没有了故障盘的盘符,则可以执行lsblk | grep “缓存盘的flashcahce标识码”命令。结果只有1条记录的,则说明该flashcahce标识码为故障硬盘的flashcahce标识码,而唯一被挂载的分区为故障盘对应的读缓存分区。
执行lsblk命令,查看缓存盘下flashcache的标识码。(如下图所示,两个SSD缓存盘sdk、sdj)。
执行lsblk |grep “flashcache标识码”命令,只有一条记录的即为被拔掉硬盘的flashcache分区的标识码,图中e3abd762-ad2e-4221-b6d6-e9a29b6eae82标识码即为故障盘对应的标识码,而对应的sdk2分区为故障盘对应的读缓存分区。
b. 使用命令ls /proc/sys/dev/flashcache命令,查看是否有残留的flashhcahde信息,如果有则删除。否则则跳过下一步。
执行ls /proc/sys/dev/flashcache |grep “flashcache标识码”命令,查找flashcache信息。
c. 执行如下命令,移除该硬盘上的flashcache信息。
[root@node127 ~]# sysctl -w dev.flashcache.f28c1e04-cf71-4853-b628-8017db519b4a+e3abd762-ad2e-4221-b6d6-e9a29b6eae82.fast_remove=1
[root@node127 ~]# dmsetup remove e3abd762-ad2e-4221-b6d6-e9a29b6eae82
d. 执行parted /dev/sdk -s rm 2命令,删除对应缓存盘的分区。
e. 检查缓存盘信息是否被删除干净。
执行lsblk命令,查看对应的缓存盘,(图中sdk的第二个分区已经被删除)
(1) 取消故障硬盘的挂载。
a. SSH登录到该节点,执行ceph osd tree命令,查看故障的osd(如图中osd 7)。
b. 执行mount命令,查看该osd的挂载信息。
(2) 清除异常磁盘的残留osd信息。
[root@node127 ~]# umount /var/lib/ceph/osd/ceph-7 //删除osd 7
· 如果原磁盘异常之后,挂载也自动消失,可以不执行umount操作。
· 后台删除OSD的残留信息,会更新osdmap表,触发数据均衡。删除之后需要赶紧将新盘加回集群。
[root@node127 ~]# ceph osd crush remove osd.7
removed item names "osd.7" from crush map
[root@node127 ~]# ceph auth del osd.7
updated
[root@node127 ~]# ceph osd rm osd.7
removed osd.7
(3) 找到异常磁盘的残留缓存加速分区。
UIS 7.0使用的是用户态的scache加速,与之前版本的内核态flashcache识别和删除缓存分区差异比较大。
方法一:如图9所示,请依次执行如下命令,查询异常OSD对应的缓存分区。本例中故障盘对应的缓存分区为sdl5、sdl6、sdl7。
ll /var/lib/ceph/osd-cache-config/ceph-x
cd /var/lib/ceph/osd-cache-config/ceph-x
cat block.db_uuid
cat block.wal_uuid
cat fcache_uuid
如果当前使用的是老版本升级而来的环境,则仅需执行cat fcache_uuid这一条命令。删除缓存盘对应的分区时,也仅需要删除一个缓存分区。
方法二
a. 缓存分区没有记录对应OSD的uuid。需要根据当前正常的OSD的缓存分区,反向排查找到异常磁盘的缓存分区。通过lsblk命令查看缓存盘盘符,本例中缓存盘盘符为sdl,该缓存盘共存在1~5五个分区。。
b. 执行for i in `cat /var/lib/ceph/osd/ceph-*/fcache_uuid`; do ll /dev/disk/by-partuuid/ | grep $i ; done命令,查询缓存分区信息,执行结果如下所示。
c. 根据该结果对比所有的缓存盘分区,该命令没有显示的非分区1的缓存分区也就是异常磁盘对应的分区。
(4) 删除异常磁盘的残留缓存加速分区。根据上一步反向排查找到的缓存分区(例如/dev/sdl2),删除osd.7对应的缓存分区。
执行sudo parted /dev/sdl -s rm 2命令,删除对应缓存盘的分区。
执行partprobe命令,更新磁盘分区信息。
sudo parted /dev/sdl -s rm 2命令中的数字2代表要删除的分区编号,对于NVMe磁盘,其分区名前带有字母p(例如nvme0n1p1),此处注意请不要在命令中分区编号前加p。
(5) block.wal_uuid以及block.db_uuid对应的缓存分区,也需要对应处理。
如果磁盘已经被拔出或者异常,该挂载目录可能无法访问,需要反向通过已存在OSD的编号,找到异常磁盘对应的缓存分区。(E3322版本已经优化修改,就算磁盘异常也可以直接查询到异常磁盘的缓存分区ID),方法如下:通过3个命令依次查询该节点正常磁盘对应的缓存分区信息,
for i in `cat /var/lib/ceph/osd/ceph-*/fcache_uuid`; do ll /dev/disk/by-partuuid/ | grep $i ; done;
for i in `cat /var/lib/ceph/osd/ceph-*/block.wal_uuid`; do ll /dev/disk/by-partuuid/ | grep $i ; done;
for i in `cat /var/lib/ceph/osd/ceph-*/block.db_uuid `; do ll /dev/disk/by-partuuid/ | grep $i ; done;
上述结果和lsblk 查询所有的缓存分区的分区进行对比,没有显示的非分区1的缓存分区就是异常缓存盘对应的分区。
将新插入的数据盘加入集群前,若服务器控制器是RAID卡,请确保磁盘加入集群前已配置RAID0(磁盘是NVMe盘时禁止对其做RAID);若服务器配置的是HBA卡,请确保磁盘加入集群前已开启JBOD。若未进行相关配置,请手动去配置RAID0或开启JBOD。
PMC阵列卡或HP SSA阵列卡
(1) 若故障盘已经亮橙灯,则直接插拔即可。
(2) 若故障盘未亮灯,可以在管理界面单击磁盘右侧点灯按钮点亮硬盘灯。若单击按钮无法点亮硬盘灯,请联系技术支持处理。
(3) 拔下故障盘,换上新盘。
(4) 更换完毕后,界面上会出现一块“未配置”状态的新盘。单击右侧“配置”按钮,将其加入集群。若此步骤执行失败,请联系技术支持进行处理。
LSI阵列卡
(5) 若故障盘已经亮橙灯,则直接插拔即可。
(6) 若故障盘未亮灯,可以在管理界面单击磁盘右侧点灯按钮点亮硬盘灯。
(7) 拔下故障盘,换上新盘。
(8) 清除缓存残留数据。执行/opt/MegaRAID/storcli/storcli64 /cN show preservedcache(N代表阵列卡编号,按实际情况修改)命令,获取残留缓存所属的逻辑阵列编号,如图表示残留缓存属于逻辑阵列1。
(9) 然后执行/opt/MegaRAID/storcli/storcli64 /cN /vx delete preservedcache(N代表阵列卡编号,x为上一条命令查询到的逻辑阵列编号,按实际情况修改)命令清除残留数据。
(10) 更换完毕后,界面上会出现一块状态为“未配置”的新磁盘。单击右侧<配置>按钮,将其加入集群。
在某些情况下,例如硬盘池中仅由三个SSD数据盘组成时,由于元数据池副本数的限制,无法删除硬盘,所以不能直接进行换盘操作。需要先在UIS-ONEStor的后台修改元数据池的副本数,再进行换盘操作,更换完成后需要再将元数据池副本数恢复。
以下操作需要在ONEStor管理节点上执行,首先要确定当前双机环境的ONEStor Handy VIP地址, handy VIP可以通过前台界面进行查看,如下:
(1) 通过UIS-ONEStor Handy VIP登录ONEStor管理节点后台。
(2) 修改存储集群限制:UIS初始化存储集群里如果配置的是3副本,则此时需要修改为2副本,修改为2副本后,即可将硬盘池中的硬盘进行更换。
a. 执行以下命令,调整最小副本数。
ceph osd pool set 池名 min_size 需要调整的最小副本数
· 在线改小副本数时,如果副本数和最小副本数一致,此时如出现OSD故障,会造成完好的PG分片数量小于最小副本数,导致PG不健康,业务中断。此时需要先调整最小副本数,再修改元数据池副本数(如果最小副本数修改为1,则有丢数据风险,请谨慎操作)。
· 修改元数据池副本数和最小副本数都会导致集群peering,但是不会一直卡住不变,这是正常现象。
b. 执行以下命令,查询数据池信息。
ceph osd pool ls detail
c. 执行以下命令,修改副本数,将需要更换硬盘的元数据池副本数修改为2,此处以修改pool_rbd数据池为例。
ceph osd pool set 池名 size 要调整的副本数
· 只有副本池才可以使用该命令进行副本数的修改。
· 调整副本数会导致集群进行数据重构,当调小副本数的时候还会导致OSD频繁进行数据删除,可能会造成业务性能下降等。
(3) 修改数据库。在UIS-ONEStor管理节点后台执行如下命令,在数据库表中修改数据池的副本数,以数据池pool1为例,修改方法如下:
su postgres
psql calamari
update op_cluster_pool set replicate_num="2" where pool_name="pool1";
update op_cluster_pool set size=2 where pool_name="pool1";
其中replicate_num="3"、size=3为需要修改的副本数,如下图所示。
(4) 更换硬盘。根据所使用的不同版本,参考相应的章节进行更换。
(5) 更换完成后,请参照步骤(1)-(3)将被修改的元数据池副本数进行还原。
参考2.3.3 5. 拔下故障盘,换上新盘进行操作。
journal 加速SSD故障后,原本它加速的所有OSD都会down(如果没有业务的情况下down会有延迟)。
(1) 执行ceph osd tree命令,定位down状态的OSD号,如图所示,osd.1和osd.2状态为down,进行记录。
(2) 执行ll /var/lib/ceph/osd/ceph-1命令,分别查看这些OSD的目录,可以看到软连接为红色,即为损坏状态。
(3) 手动创建SSD盘的第一个16M分区。
执行ceph-disk marktype --journal --dev /dev/sdx(其中sdx为新换上的SSD的盘符,按照实际情况修改)命令。
(4) 创建脚本文件,执行vim makejournalssd.sh命令,将以下内容写入脚本文件中。
#!/bin/bash
osds="1 2"
journal_disk=/dev/sdp
num=2
for osd_id in $osds ; do
journal_uuid=$(sudo cat /var/lib/ceph/osd/ceph-$osd_id/journal_uuid)
sgdisk --new=$num:0:+10240M --change-name=$num:"ceph journal" --partition-guid=$num:$journal_uuid --typecode=$num:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt $journal_disk
num=$(($num+1))
done
其中,osds=”1 2”这里的数字代表之前查询到的down掉的osd编号,journal_disk=/dev/sdp代表新换上的SSD的盘符,10240M为此前的journal SSD上每个分区的大小,按照实际情况修改。
(5) 创建完毕后,执行bash makejournalssd.sh命令,恢复journal SSD的分区。
(1) 需要在主机上创建脚本,执行vim addjournalssd.sh命令,将以下内容写入脚本文件中。
#!/bin/bash
osds="1 2"
journal_disk=/dev/sdp
num=1
for osd_id in $osds ; do
sudo ceph-osd --mkjournal -i $osd_id
sudo start ceph-osd id=$osd_id
num=$(($num+1))
done
其中osds=”1 2”这里的数字代表之前查询到的down掉的osd编号,journal_disk=/dev/sdp代表新换上的SSD的盘符,按照实际情况修改。
(2) 创建完毕后,执行bash addjournalssd.sh命令。完成后,执行ceph osd tree命令查询,down掉的osd均已恢复up且in的状态。等待数据迁移至平衡后,集群恢复健康。
(1) 执行lsblk命令,查看待更换的flashcache SSD盘分区下的16进制字符组成的软连接。
(2) 比较软连接,相同的则代表有对应关系。
如示例中硬盘sde,对应的读缓存分区为sdf8,且sde的挂载路径为/var/lib/ceph/osd/ceph-11,表示sde对应了osd.11。记录下这里的数据盘盘符及对应的osd编号。
如果flashcahce SSD在系统下已经无法查询到,则联系技术支持确认环境中的对应关系。
当flashcahce SSD故障后,所有被其加速的OSD均down。
(3) 执行ceph osd tree命令,找到down状态的osd号,如图为osd.1和osd.2,进行记录。正常情况下,这里查到的osd编号应该与上一步中找到的数据盘一一对应(例如sde对应osd.11)。
(4) 删除这些down掉的osd,具体方法参考2.3.3 1. 通过前台页面删除故障盘。
(5) 然后执行以下两条命令删除软连接:
umount /var/lib/ceph/osd/ceph-x//x为故障加速盘所加速的osd编号
dmsetup remove /dev/mapper/xxxx-xxxx-xxxx//xxxx-xxxx-xxxx为flashcache加速分区下的一长串uuid
参考2.3.3 5. 拔下故障盘,换上新盘进行操作。
如果管理平台页面中未出现“未配置”状态的磁盘,请先单击<校正磁盘信息>按钮,刷新完成后再进行操作。
(1) 将数据盘格式化。
(2) 执行ceph-disk zap /dev/sdx命令,格式化数据盘。
注意:sdx为2.3.5 1. 删除数据盘,并删除flashcache软连接中查找到的数据盘盘符,请严格按查找到的盘符操作,切勿写错。此命令会清除这块数据盘上的所有数据。
(3) 将数据盘重新加回集群。参考2.3.3 5. 拔下故障盘,换上新盘进行操作。
(1) 执行ceph osd tree命令查看故障的硬盘,发现被缓存盘加速的数据盘OSD 状态为DOWN。
(2) 删除数据盘对应的scache信息。反向查找异常磁盘对应的scache信息。
缓存盘异常更换新盘对应缓存盘的分区是空的,执行该步骤主要是再次确认信息。
异常缓存盘所在的节点后台执行如下命令:
for i in `cat /var/lib/ceph/osd/ceph-*/fcache_uuid`
do ll /dev/disk/by-partuuid/ | grep $i ; done
上述结果和lsblk查询所有的缓存分区的分区进行对比,没有显示的分区就是异常缓存盘对应的分区。
(3) umount对应的OSD目录,然后删除被缓存加速的数据盘osd的残留信息。
OSD的删除会造成集群性能下降,建议在离线的情况下进行。如果有在线拔插硬盘的需求,请及时联系总部评估对性能的影响!
#删除osd 7
[root@node127 ~]# umount /var/lib/ceph/osd/ceph-7
[root@node127 ~]# ceph osd crush remove osd.7
removed item names "osd.7" from crush map
[root@node127 ~]# ceph auth del osd.7
updated
[root@node127 ~]# ceph osd rm osd.7
removed osd.7
#删除osd 11
[root@node127 ~]# umount /var/lib/ceph/osd/ceph-11
[root@node127 ~]# ceph osd crush remove osd.11
removed item names "osd.11" from crush map
[root@node127 ~]# ceph auth del osd.11
updated
[root@node127 ~]# ceph osd rm osd.11
removed osd.11
(4) 格式化对应的数据盘,本例中osd.7和osd.11分别对应/dev/sdf和/dev/sdg。
[root@node127 ~]# ceph-disk zap /dev/sdf
[root@node127 ~]# ceph-disk zap /dev/sdg
参考2.3.3 5. 拔下故障盘,换上新盘进行操作。
部分场景新更换的磁盘会继承之前磁盘位的磁盘状态,不会直接显示新更换的处于“未配置”状态的新磁盘,此时可先单击<校正磁盘信息>按钮,校正磁盘信息,然后单击<同步磁盘>按钮同步刷新磁盘状态。
(1) 将数据盘重新加回集群。参考2.3.3 5. 拔下故障盘,换上新盘进行操作。
(2) 等待集群恢复平衡后,SSD硬盘即可更换成功。
(1) 使用ceph osd tree命令找到故障的硬盘(状态显示为down的磁盘即为故障磁盘)。
(2) 在Handy主节点后台执行如下命令删除故障的硬盘,其中被删除的数据盘是缓存盘对应的数据盘,缓存盘故障时,缓存盘对应的数据盘的状态也会显示为down,若无法确定缓存盘对应的数据盘请联系技术支持。
命令格式如下:
onestor host DISK_remove_force -d "{"host_name": "故障硬盘所在节点主机名", "disks": [{"id": "缓存盘CSD ID", "name": "缓存盘盘符名称"},{"id": "数据盘1 OSD ID", "name": "数据盘1盘符名称"},{"id": "数据盘2 OSD ID ", "name": "数据盘2盘符名称"},{"id": "数据盘n OSD ID ", "name": "数据盘n盘符名称"}]}"
命令示例:
onestor host DISK_remove_force -d "{"host_name": "node18", "disks": [{"id": "4", "name": "nvme0n1"},{"id": "8", "name": "sda"},{"id": "11", "name": "sdb"},{"id": "14", "name": "sdc"},{"id": "17", "name": "sdd"}]}"
(3) 再次执行ceph osd tree命令,确保故障磁盘已被删除。
参考拔下故障盘,换上新盘章节操作,更换损坏的缓存盘。
如果管理平台页面中未出现“未配置”状态的磁盘,请先单击<校正磁盘信息>按钮,刷新完成后再进行操作。
(1) 在UIS管理平台,将删除的数据盘和新更换的缓存盘加入硬盘池。
(2) 等待存储数据重构完成,恢复健康。
暂无评论
# 1. 卸载挂载(如有)
umount /dev/sdb1 # 替换为实际盘符
# 2. 注释fstab(防止开机挂载失败进救援模式)
sed -i '/\/dev\/sdb/d' /etc/fstab
# 3. 隔离节点(CVM界面操作)
# CVM → 资源池 → 主机 → 选中节点 → 维护模式 → 禁用调度
shutdown -h now。# 扫描磁盘
echo "- - -" > /sys/class/scsi_host/hostX/scan # hostX替换为RAID卡控制器号
lsblk # 确认新RAID0盘符(如/dev/sdb)
wipefs -af /dev/sdb # 清空分区表与文件系统
# GPT分区(>2TB必须)
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary 0% 100%
# 格式化(CVK默认ext4/xfs)
mkfs.ext4 /dev/sdb1
# 临时挂载
mount /dev/sdb1 /mnt/data
# 永久挂载(获取UUID)
blkid /dev/sdb1
echo "UUID=xxx /mnt/data ext4 defaults 0 0" >> /etc/fstab
mount -a # 验证
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论