不重启修复/dev/sdx 磁盘乱序
磁盘热插拔过程中可能会有/dev/sdx名称乱序的问题,通过下面的方法可以在不重启节点的情况下删除并重新添加磁盘,更新磁盘设备名称。
删除设备
代码语言:javascript复制停OSD服务,释放被占用的磁盘资源,以停OSD1,释放其/dev/sdd为例
[root@demo cephuser]# mount -l
...
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdc1 on /var/lib/ceph/osd/ceph-0 type xfs (rw,noatime,nodiratime,attr2,inode64,logbsize=256k,noquota)
/dev/sdb4 on /var/lib/ceph/osd/ceph-2 type xfs (rw,noatime,nodiratime,attr2,inode64,logbsize=256k,noquota)
/dev/sdd1 on /var/lib/ceph/osd/ceph-1 type xfs (rw,noatime,nodiratime,attr2,inode64,logbsize=256k,noquota)
[root@demo cephuser]# systemctl stop ceph-osd@1
[root@demo cephuser]# systemctl disable ceph-osd@1
Removed symlink /etc/systemd/system/ceph-osd.target.wants/ceph-osd@1.service.
[root@demo cephuser]# umount /dev/sdd1
一定要确保已经释放了对应的磁盘资源才能执行后面的操作。
代码语言:javascript复制[root@demo cephuser]# cat /sys/block/sdd/device/state
running
[root@demo cephuser]# echo "offline" > /sys/block/sdd/device/state
[root@demo cephuser]# cat /sys/block/sdd/device/state
offline
[root@demo cephuser]# ls /dev/sd
sda sda1 sda2 sdb sdb1 sdb2 sdb3 sdb4 sdc sdc1 sdd sdd1
[root@demo cephuser]# echo "1" > /sys/block/sdd/device/delete
[root@demo cephuser]# ls /dev/sd
sda sda1 sda2 sdb sdb1 sdb2 sdb3 sdb4 sdc sdc1
重新添加
代码语言:javascript复制[root@demo cephuser]# ls /dev/sd
sda sda1 sda2 sdb sdb1 sdb2 sdb3 sdb4 sdc sdc1
[root@demo cephuser]# echo "- - -" | tee /sys/class/scsi_host/host5/scan
- - -
[root@demo cephuser]# ls /dev/sd
sda sda1 sda2 sdb sdb1 sdb2 sdb3 sdb4 sdc sdc1 sdd sdd1
无法确认具体的hostx名称的情况下,可以把对应的host都执行一下上面的命令,比如这里有5个host
代码语言:javascript复制[root@demo cephuser]# ls /sys/class/scsi_host/host
host0/ host1/ host2/ host3/ host4/ host5/
[root@demo cephuser]# for i in {0..5};do echo "- - -" | tee /sys/class/scsi_host/host${i}/scan;done
- - -
- - -
- - -
- - -
- - -
- - -