ceph-手动更换osd的journal分区

针对版本: 10.2.11

高版本使用bulestore的来说,修改方式也应该类似,只不过journal换成了wal

操作目的

ceph日常使用过程中,一般都会采用一块ssd对应多块hdd,ssd上就需要创建多个journal分区,使用中如果osd出现故障可以直接执行提除osd步骤,然后新建osd(ceph -disk命令)添加到集群,但是journal分区会一直在ssd的磁盘上按顺序往后创建,ssd容量较小或osd更换次数较多后,之前osd使用的journal能否再次给新添加的osd使用呢,带着这个问题,查阅了相关资料,记录一次手动更换现有osd的journal分区,并指定ssd磁盘上的某一个分区,过程如下:

journal磁盘分区显示

作为ssd的journal分区的磁盘上的分区表是这样的(gpt分区需要使用parted命令):

[root@node1 ceph-4]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model: ATA INTEL SSDSC2KB96 (scsi)
Disk /dev/sdb: 960GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name          Flags
 1      1049kB  21.0GB  21.0GB               ceph journal
 2      21.0GB  41.9GB  21.0GB               ceph journal
 3      41.9GB  61.9GB  20.0GB               ceph journal
 4      61.9GB  82.9GB  21.0GB               ceph journal

ceph-disk list显示

ceph-disk 命令查看当前机器上的磁盘显示情况:

说明:

osd2:(data:sde1,journal:sdb1)

osd3:(data:sdf1, journal:sdb2)

[root@node2 ~]# ceph-disk list
/dev/dm-0 other, xfs, mounted on /
/dev/dm-1 other, swap
/dev/sda :
 /dev/sda2 other, LVM2_member
 /dev/sda1 other, xfs, mounted on /boot
/dev/sdb :
 /dev/sdb1 ceph journal, for /dev/sde1
 /dev/sdb2 ceph journal, for /dev/sdf1
/dev/sdc other, unknown
/dev/sdd other, unknown
/dev/sde :
 /dev/sde1 ceph data, active, cluster ceph, osd.2, journal /dev/sdb1
/dev/sdf :
 /dev/sdf1 ceph data, active, cluster ceph, osd.3, journal /dev/sdb2

现在更换上面osd3的journal分区到一个新的分区:

创建新的journal分区

使用parted命令在sdb盘上手动创建分区,只需要指定分区名字即可:

parted /dev/sdb
(parted) print                                                            
Model: ATA INTEL SSDSC2KB96 (scsi)
Disk /dev/sdb: 960GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name          Flags
 1      1049kB  21.0GB  21.0GB               ceph journal
 2      21.0GB  41.9GB  21.0GB               ceph journal

(parted) mkpart 'ceph journal'  41.9GB   62.9GB                            
(parted) print
Model: ATA INTEL SSDSC2KB96 (scsi)
Disk /dev/sdb: 960GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name          Flags
 1      1049kB  21.0GB  21.0GB               ceph journal
 2      21.0GB  41.9GB  21.0GB               ceph journal
 3      41.9GB  62.9GB  21.0GB               ceph journal

这一步(mkpart ‘ceph journal’ 41.9GB 62.9GB )在sdb上创建了一个20GB的journal分区,名字就按ceph默认使用的命名了。

获取journal的uuid

查看该分区的uuid并记录一下(gpt格式的分区,软连接在by-partuuid目录下):

[root@node2 ~]# ll /dev/disk/by-partuuid/ -l
total 0
lrwxrwxrwx 1 root root 10 Jul 18 17:35 1da8badf-097c-4c22-a1da-f07bd3bf5699 -> ../../sdb3
lrwxrwxrwx 1 root root 10 Jul 18 17:35 32b1f441-8b0e-4524-824a-498bd3bf5660 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Jun 13 11:27 77001e8c-ae4a-4790-89c5-d93fec7ff815 -> ../../sdf1
lrwxrwxrwx 1 root root 10 Jul 18 17:35 ac83c123-815c-4a79-8aeb-e957c8f6703e -> ../../sdb1
lrwxrwxrwx 1 root root 10 Jun 13 11:27 e55ef960-bb58-462b-9a8b-438395af0836 -> ../../sde1

记录刚才创建的分区uuid是:1da8badf-097c-4c22-a1da-f07bd3bf5699

修改journal分区type code

在ceph中对data分区和journal分区都有特定的type code,目的是为了可以实现osd的自动挂载和journal软连接的自动创建:

osd的自动挂载参考:http://www.zphj1987.com/2018/03/23/parted-may-start-your-osd/

分区 code
journal 45b0969e-9b03-4f30-b4c6-b4b80ceff106
osd 4fbd7e29-9d25-41b8-afd0-062c0ceff05d

这里也修改一下刚才创建的分区,使用sgdisk命令,这个命令可以直接创建对应code的分区:

格式:/usr/sbin/sgdisk --change-name={第几个分区}:'ceph journal' --typecode={第几个分区}:45b0969e-9b03-4f30-b4c6-b4b80ceff106 -- /dev/sd{x}

/usr/sbin/sgdisk  --change-name=3:'ceph journal' --typecode=3:45b0969e-9b03-4f30-b4c6-b4b80ceff106  -- /dev/sdb

停止osd

刷新数据到osd,然后停止该osd:

ceph-osd -i 3 --flush-journal
systemctl stop ceph-osd@3

修改软连接

修改journal软连接:

cd  cd /var/lib/ceph/osd/ceph-3/

mv journal journal-bak
ln -s /dev/disk/by-partuuid/1da8badf-097c-4c22-a1da-f07bd3bf5699 /var/lib/ceph/osd/ceph-3/journal
echo 1da8badf-097c-4c22-a1da-f07bd3bf5699  > journal_uuid

修改分区权限

修改分区权限:

chown ceph:ceph  /dev/sdb3
chown ceph:ceph journal

初始化

初始化journal分区:

ceph-osd -i 3 --mkjournal
2019-07-18 16:42:04.205380 7fc57ff00ac0 -1 journal check: ondisk fsid acf3fc4d-0e69-4a4e-a031-e2024437f445 doesn't match expected 332e849b-2e86-401d-bfeb-85746a16dcff, invalid (someone else's?) journal
2019-07-18 16:42:04.209956 7fc57ff00ac0 -1 created new journal /var/lib/ceph/osd/ceph-3/journal for object store /var/lib/ceph/osd/ceph-3

启动osd

重新启动osd:

systemctl start ceph-osd@3

检查磁盘状态

查看ceph 磁盘信息:

[root@node2 ceph-3]# ceph-disk list
/dev/dm-0 other, xfs, mounted on /
/dev/dm-1 other, swap
/dev/sda :
 /dev/sda2 other, LVM2_member
 /dev/sda1 other, xfs, mounted on /boot
/dev/sdb :
 /dev/sdb3 other, journal, for /dev/sdf1
 /dev/sdb1 ceph journal, for /dev/sde1
 /dev/sdb2 ceph journal
/dev/sde :
 /dev/sde1 ceph data, active, cluster ceph, osd.2, journal /dev/sdb1
/dev/sdf :
 /dev/sdf1 ceph data, active, cluster ceph, osd.3, journal /dev/sdb3

到此journal已经更换成功,按此操作就可以根据实际需求进行调整journal的分区位置了。

本文链接:参与评论 »

--EOF--

专题「CEPH」的其它文章 »

Comments