暂未分类暂未分类处理Ceph osd的journal的uuid问题
zphj1987前言
之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏移的问题
如果采用的是ceph自带的deploy去做分区的处理的时候,是调用的sgdisk去对磁盘做了一些处理的,然后deploy能够识别一些特殊的标记,然后去做了一些其他的工作,而自己分区的时候,是没有做这些标记的这样就可能会有其他的问题
我们看下如何在部署的时候就处理好journal的uuid的问题
实践
按常规流程部署OSD
准备测试的自分区磁盘
1 2 3 4 5
| dd if=/dev/zero of=/dev/sde bs=4M count=100; dd if=/dev/zero of=/dev/sdf bs=4M count=100; parted /dev/sde mklabel gpt; parted /dev/sdf mklabel gpt; parted /dev/sde mkpart primary 1 100%; parted /dev/sdf mkpart primary 1 100%
|
使用的sde1作为数据盘,使用sdf1作为ssd的独立分区的journal磁盘
我们线按照常规的步骤去部署下
做osd的prepare操作
1 2 3 4
| [root@lab8106 ceph]# ceph-deploy osd prepare lab8106:/dev/sde1:/dev/sdf1 ··· [lab8106][WARNIN] adjust_symlink: Creating symlink /var/lib/ceph/tmp/mnt.7HuS8k/journal -> /dev/sdf1 ···
|
做osd的activate操作
1 2 3 4 5 6
| [root@lab8106 ceph]# ceph-deploy osd activate lab8106:/dev/sde1:/dev/sdf ··· [lab8106][WARNIN] ceph_disk.main.Error: Error: ['ceph-osd', '--cluster', 'ceph', '--mkfs', '--mkkey', '-i', '7', '--monmap', '/var/lib/ceph/tmp/mnt.yOP4gv/activate.monmap', '--osd-data', '/var/lib/ceph/tmp/mnt.yOP4gv', '--osd-journal', '/var/lib/ceph/tmp/mnt.yOP4gv/journal', '--osd-uuid', '5c59284b-8d82-4cc6-b566-8b102dc25568', '--keyring', '/var/lib/ceph/tmp/mnt.yOP4gv/keyring', '--setuser', 'ceph', '--setgroup', 'ceph'] failed : 2016-12-26 13:11:54.211543 7f585e926800 -1 filestore(/var/lib/ceph/tmp/mnt.yOP4gv) mkjournal error creating journal on /var/lib/ceph/tmp/mnt.yOP4gv/journal: (13) Permission denied [lab8106][WARNIN] 2016-12-26 13:11:54.211564 7f585e926800 -1 OSD::mkfs: ObjectStore::mkfs failed with error -13 [lab8106][WARNIN] 2016-12-26 13:11:54.211616 7f585e926800 -1 ** ERROR: error creating empty object store in /var/lib/ceph/tmp/mnt.yOP4gv: (13) Permission denied ···
|
可以看到提示的是权限不足,我们检查下权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [root@lab8106 ceph]# mount /dev/sde1 /mnt [root@lab8106 ceph]# ll /mnt/ total 32 -rw-r--r-- 1 root root 193 Dec 26 13:11 activate.monmap -rw-r--r-- 1 ceph ceph 37 Dec 26 13:11 ceph_fsid drwxr-xr-x 3 ceph ceph 37 Dec 26 13:11 current -rw-r--r-- 1 ceph ceph 37 Dec 26 13:11 fsid lrwxrwxrwx 1 ceph ceph 9 Dec 26 13:11 journal -> /dev/sdf1 -rw-r--r-- 1 ceph ceph 37 Dec 26 13:11 journal_uuid -rw-r--r-- 1 ceph ceph 21 Dec 26 13:11 magic -rw-r--r-- 1 ceph ceph 4 Dec 26 13:11 store_version -rw-r--r-- 1 ceph ceph 53 Dec 26 13:11 superblock -rw-r--r-- 1 ceph ceph 2 Dec 26 13:11 whoami [root@lab8106 ceph]# ll /dev/sdf1 brw-rw---- 1 root disk 8, 81 Dec 26 13:03 /dev/sdf1
|
创建sdf1的journal的时候权限有问题,我们给下磁盘权限
1 2
| [root@lab8106 ceph]# chown ceph:ceph /dev/sdf1 [root@lab8106 ceph]# ceph-deploy osd activate lab8106:/dev/sde1:/dev/sdf1
|
可以看到成功了
检查下osd的目录:
1 2 3 4 5 6 7 8
| [root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-7 total 56 -rw-r--r-- 1 root root 193 Dec 26 13:15 activate.monmap -rw-r--r-- 1 ceph ceph 3 Dec 26 13:15 active -rw-r--r-- 1 ceph ceph 37 Dec 26 13:11 ceph_fsid drwxr-xr-x 166 ceph ceph 4096 Dec 26 13:16 current -rw-r--r-- 1 ceph ceph 37 Dec 26 13:11 fsid lrwxrwxrwx 1 ceph ceph 9 Dec 26 13:11 journal -> /dev/sdf1
|
可以看到journal链接到了/dev/sdf1,这次的部署是成功了,但是这里就有个问题,如果下次重启的时候,sdf1不是sdf1盘符变了,那么问题就会产生了,osd可能就无法启动了
优化下部署流程
这里是优化后的流程,解决上面的问题的
准备测试的自分区磁盘
1 2 3 4 5 6
| dd if=/dev/zero of=/dev/sde bs=4M count=100; dd if=/dev/zero of=/dev/sdf bs=4M count=100; parted /dev/sde mklabel gpt; parted /dev/sdf mklabel gpt; parted /dev/sde mkpart primary 1 100%; parted /dev/sdf mkpart primary 1 100%
|
给jounral盘做一个标记(特殊标记,下面的字符串不要变动固定写法)
1
| /usr/sbin/sgdisk --change-name=1:'ceph journal' --typecode=1:45b0969e-9b03-4f30-b4c6-b4b80ceff106 -- /dev/sdf
|
给数据盘做一个标记(特殊标记,下面的字符串不要变动固定写法)
1
| /usr/sbin/sgdisk --change-name=1:'ceph data' --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sde
|
检查下当前的分区标记情况
1 2 3 4 5
| [root@lab8106 ~]# ceph-disk list /dev/sde : /dev/sde1 ceph data, unprepared /dev/sdf : /dev/sdf1 ceph journal
|
做osd的prepare操作
1 2
| ceph-deploy osd prepare lab8106:/dev/sde1:/dev/sdf1 ceph-deploy osd activate lab8106:/dev/sde1:/dev/sdf1
|
再次检查下当前的分区标记情况
1 2 3 4 5 6
| [root@lab8106 ceph]# ceph-disk list ··· /dev/sde : /dev/sde1 ceph data, active, cluster ceph, osd.8, journal /dev/sdf1 /dev/sdf : /dev/sdf1 ceph journal, for /dev/sde1
|
查看jounral的数据
1 2 3 4 5 6 7 8 9
| [root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-8 total 56 -rw-r--r-- 1 root root 193 Dec 26 13:26 activate.monmap -rw-r--r-- 1 ceph ceph 3 Dec 26 13:26 active -rw-r--r-- 1 ceph ceph 37 Dec 26 13:25 ceph_fsid drwxr-xr-x 164 ceph ceph 4096 Dec 26 13:26 current -rw-r--r-- 1 ceph ceph 37 Dec 26 13:25 fsid lrwxrwxrwx 1 ceph ceph 58 Dec 26 13:25 journal -> /dev/disk/by-partuuid/cd72d6e8-07d0-4cd3-8c6b-a33d624cae36 ···
|
可以看到已经正确的链接了,并且部署过程中也没有了上面的需要进行权限的处理,这个是deploy工具在中间帮做了
总结
处理的核心在于做的那两个标记,其他的就交给deploy工具自己处理就行了,如果有兴趣可以深入研究,没兴趣的话,就安装上面说的方法进行处理就行