针对版本: 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的分区位置了。
本文链接:https://zhusl.com/post/ceph-change-journal.html,参与评论 »
--EOF--
发表于 2019-07-18 10:08:00,并被添加「ceph」标签。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。更多说明 »
提醒:本文最后更新于 1975 天前,文中所描述的信息可能已发生改变,请谨慎使用。
专题「CEPH」的其它文章 »
- 在cephfs下快速统计目录大小和文件数量 (Jul 15, 2019)
- ceph百科 (Dec 06, 2017)
- ceph-jewel安装文档 (Dec 06, 2017)
Comments