Ceph的OSD的分区表恢复
对于误操作造成的事故是比较多的,ceph中对于新手更是如此。老手也会敲错啊。
1.实验
估计破坏环境,已达到实验的目的。
1.1查看正常分区信息
破坏之前先查看ceph OSD分区
[root@ceph-osd1 ~]# ceph-disk list /dev/dm-0 other, xfs, mounted on / /dev/dm-1 swap, swap /dev/sda : /dev/sda2 other, LVM2_member /dev/sda1 other, xfs, mounted on /boot /dev/sdb : /dev/sdb2 ceph journal, for /dev/sdb1 /dev/sdb1 ceph data, active, cluster ceph, osd.0, journal /dev/sdb2 /dev/sdc : /dev/sdc2 ceph journal, for /dev/sdc1 /dev/sdc1 ceph data, active, cluster ceph, osd.1, journal /dev/sdc2 /dev/sdd : /dev/sdd2 ceph journal, for /dev/sdd1 /dev/sdd1 ceph data, active, cluster ceph, osd.2, journal /dev/sdd2 /dev/sr0 other, unknown
可以看到,每个磁盘被分为两个分区分别存data和journal日志
1.2查看具体某个分区情况
[root@ceph-osd1 ~]# parted -s /dev/sdb print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 2 1049kB 10.7GB 10.7GB ceph journal 1 10.7GB 53.7GB 42.9GB xfs ceph data
共50G,10G用于存储journal日志,40G用于存储data
1.3破坏环境
那么就破坏/dev/sdb分区了。从上面可以看到对应osd.0对应的是/dev/sdb。
至于破坏方法随便,这里是用ceph自带的。
[root@ceph-mon1 ceph-cluster]# ceph-deploy disk zap ceph-osd1:/dev/sdb [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf ...... [ceph-osd1][DEBUG ] other utilities. [ceph-osd1][DEBUG ] Creating new GPT entries. [ceph-osd1][DEBUG ] Warning: The kernel is still using the old partition table. [ceph-osd1][DEBUG ] The new table will be used at the next reboot. [ceph-osd1][DEBUG ] The operation has completed successfully.
主机名:分区
1.3.1查看分区信息
[root@ceph-osd1 XinFusion]# parted -s /dev/sdb print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags
已经没有分区信息了。
[root@ceph-osd1 XinFusion]# ceph-disk list /dev/dm-0 other, xfs, mounted on / /dev/dm-1 swap, swap /dev/sda : /dev/sda2 other, LVM2_member /dev/sda1 other, xfs, mounted on /boot /dev/sdb : /dev/sdb2 other /dev/sdb1 other, xfs, mounted on /var/lib/ceph/osd/ceph-0 /dev/sdc : /dev/sdc2 ceph journal, for /dev/sdc1 /dev/sdc1 ceph data, active, cluster ceph, osd.1, journal /dev/sdc2 /dev/sdd : /dev/sdd2 ceph journal, for /dev/sdd1 /dev/sdd1 ceph data, active, cluster ceph, osd.2, journal /dev/sdd2 /dev/sr0 other, unknown
可以看到分区信息都没有了。
#即使这个OSD还在使用,但是还是被破坏了。
[root@ceph-osd1 XinFusion]# ll /var/lib/ceph/osd/ceph-0/journal lrwxrwxrwx 1 ceph ceph 58 Nov 8 05:47 /var/lib/ceph/osd/ceph-0/journal -> /dev/disk/by-partuuid/f1048fd2-60b8-41af-b13d-36aac58663fb
可以看到上面的连接已经变红了,而且一闪一闪的。了解linux都清楚
2.恢复分区
正常处理方法就是删除节点,然后添加节点就可以了。但是会造成大量的数据迁移,所以这里肯定不是这个方法。
2.1关闭迁移
[root@ceph-osd1 XinFusion]# ceph osd set noout set noout
2.2停止OSD
[root@ceph-osd1 XinFusion]# systemctl stop ceph-osd@0
2.3查看正常OSD分区信息
这里为什么要参考其他OSD的信息,主要是因为同一个ceph集群中,每个分区大小都是相同的。
记住下面的数值,print的时候是加了unit s这个是要精确的值的,下面的创建会用到的
[root@ceph-osd2 ~]# parted -s /dev/sdc unit s print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdc: 104857600s Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 2 2048s 20973567s 20971520s ceph journal 1 20973568s 104857566s 83883999s xfs ceph data
2.4恢复分区
--下面的数据就是参考其他OSD的分区信息
[root@ceph-osd1 ~]# parted -s /dev/sdb mkpart data 20973568s 104857566s [root@ceph-osd1 ~]# parted -s /dev/sdb mkpart journal 2048s 20973567s
2.5再次查看该OSD分区信息
[root@ceph-osd1 ~]# parted -s /dev/sdb print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 2 1049kB 10.7GB 10.7GB journal 1 10.7GB 53.7GB 42.9GB xfs data
可以看到分区已经有了。
2.6.重新挂载看看
[root@ceph-osd1 ~]# umount /var/lib/ceph/osd/ceph-0 [root@ceph-osd1 ~]# partprobe [root@ceph-osd1 ~]# mount /dev/sdb1 /var/lib/ceph/osd/ceph-0
挂载没有问题
2.7.删除掉journal的链接文件
[root@ceph-osd1 ~]# rm -rf /var/lib/ceph/osd/ceph-0/journal
2.8.重新创建journal相关的东西
[root@ceph-osd1 ~]# ceph-osd -i 0 --osd-journal=/dev/sdb2 --mkjournal 2016-11-25 05:03:10.216469 7f9f50c6e800 -1 created new journal /dev/sdb2 for object store /var/lib/ceph/osd/ceph-0
[root@ceph-osd1 ~]# ln -s /dev/disk/by-partuuid/ac4614f6-af53-436c-89b6-882b7b17fc37 /var/lib/ceph/osd/ceph-0/journal
注意:journal -> /dev/sdb2,由于设备名可能会变。所以要改成绑定uuid
[root@ceph-osd1 ~]# chown ceph:ceph /var/lib/ceph/osd/ceph-0/journal [root@ceph-osd1 ~]# ll /var/lib/ceph/osd/ceph-0/journal lrwxrwxrwx 1 root root 58 Nov 25 06:12 /var/lib/ceph/osd/ceph-0/journal -> /dev/disk/by-partuuid/ac4614f6-af53-436c-89b6-882b7b17fc37
#查看sdb2对应的uuid
[root@ceph-osd1 ~]# ll /dev/disk/by-partuuid/ total 0 lrwxrwxrwx 1 root root 10 Nov 25 05:00 0ff87382-4343-4213-bcf0-2385059b9865 -> ../../sdc1 lrwxrwxrwx 1 root root 10 Nov 25 05:00 7e57032f-2f3d-4303-9929-57c904c7fc94 -> ../../sdc2 lrwxrwxrwx 1 root root 10 Nov 25 05:00 8f8df7a9-aeee-4264-9d34-19573667e457 -> ../../sdd2 lrwxrwxrwx 1 root root 10 Nov 25 05:00 ac4614f6-af53-436c-89b6-882b7b17fc37 -> ../../sdb2 lrwxrwxrwx 1 root root 10 Nov 25 05:00 c48e6ef9-3074-4375-a8ea-4311d039fcbe -> ../../sdb1 lrwxrwxrwx 1 root root 10 Nov 25 05:00 d256d2da-1b4c-4107-9839-17552d9b7645 -> ../../sdd1
2..9启动OSD
[root@ceph-osd1 XinFusion]#systemctl start ceph-osd@0
3.查看集群状态
[root@ceph-osd1 XinFusion]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -2 0.49988 root root-sata -4 0.14996 host ceph-1-sata 0 0.04999 osd.0 up 1.00000 1.00000 1 0.04999 osd.1 up 1.00000 1.00000 2 0.04999 osd.2 up 1.00000 1.00000 -5 0.14996 host ceph-2-sata 3 0.04999 osd.3 up 1.00000 1.00000 4 0.04999 osd.4 up 1.00000 1.00000 5 0.04999 osd.5 up 1.00000 1.00000 -6 0.14996 host ceph-3-sata 6 0.04999 osd.6 up 1.00000 1.00000 7 0.04999 osd.7 up 1.00000 1.00000 8 0.04999 osd.8 up 1.00000 1.00000 -10 0.04999 host ceph-4-sata 9 0.04999 osd.9 down 0 1.00000 -1 0 root default
[root@ceph-osd1 XinFusion]# ceph -s cluster 21ed0f42-69d2-450c-babf-b1a44c1b82e4 health HEALTH_WARN noout,sortbitwise flag(s) set monmap e6: 3 mons at {ceph-osd1=192.168.1.141:6789/0,ceph-osd2=192.168.1.142:6789/0,ceph-osd3=192.168.1.143:6789/0} election epoch 56, quorum 0,1,2 ceph-osd1,ceph-osd2,ceph-osd3 osdmap e650: 10 osds: 9 up, 9 in flags noout,sortbitwise pgmap v526148: 512 pgs, 2 pools, 14369 bytes data, 18 objects 449 MB used, 359 GB / 359 GB avail 512 active+clean
可以看到恢复正常了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Ceph