博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ceph osd 自动挂载的N种情况
阅读量:5144 次
发布时间:2019-06-13

本文共 2378 字,大约阅读时间需要 7 分钟。

 

直接上干货:

ceph自动挂载原理

系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是否准备好自动挂载(journal ,block, osd 同是一个道理)

main.py中记载的状态标志

/usr/lib/python2.7/site-packages/ceph_disk/main.py'osd': {            'ready': '4fbd7e29-9d25-41b8-afd0-062c0ceff05d',            'tobe': '89c57f98-2fe5-4dc0-89c1-f3ad0ceff2be',        },

而我们磁盘分区的信息如

#blkid -o udev -p /dev/sdb2ID_FS_UUID=f00b001c-9122-4b4a-b0da-fce7736e1bd1ID_FS_UUID_ENC=f00b001c-9122-4b4a-b0da-fce7736e1bd1ID_FS_TYPE=xfsID_FS_USAGE=filesystemID_PART_ENTRY_SCHEME=gptID_PART_ENTRY_UUID=b5d5060f-4383-430c-8913-5ea9bee11127ID_PART_ENTRY_TYPE=4fbd7e29-9d25-41b8-afd0-062c0ceff05dID_PART_ENTRY_NUMBER=2ID_PART_ENTRY_OFFSET=62916608ID_PART_ENTRY_SIZE=62914560ID_PART_ENTRY_DISK=8:16

 当ceph判断分区的ID_PART_ENTRY_TYPE与写死再main.py中的read标识符相等,则采用ceph-disk启动自动挂过程,自动挂载与osd activate的过程基本一致

a.      调用sgdisk 使用—largest-new来使用磁盘最大可能空间。所以/dev/sdg会有一个分区sdg1,它使用所有的空间。

b.      格式化/dev/sdg1。这里对ceph-disk做了小的定制,默认使用了ext4分区格式,若磁盘已经做过分区及格式化则采用格式化的分区格式XFS

c.      将此分区mount到目录/var/lib/ceph/osd-n,然后再其中创建一个名为journal的link,指向/dev/disk/by-partuuid/c6422c03-d320-4633-b35d-4f43c6cdd9fa。至此,OSD的journal分区映射完成。最后umount。

d.      再次调用sgdisk,写入一个重要的参数,--typecode. Ceph-disk 使用一个特殊的UUID 作为创建OSD的typecode:

ID_PART_ENTRY_TYPE=4fbd7e29-9d25-41b8-afd0-062c0ceff05d;

新的OSD 数据分区的生成,触发udev event, 通过ceph udev rule,最终调用ceph-disk-udev,分析该分区的typecode,发现是OSD_UUID,即表明是ceph OSD的数据分区,于是触发ceph-disk activate /dev/sdb2

 

修改typecode 

如果分区的typecode不是ready标识符的字符,则开机不会自己自动挂载,如果我们想自动挂载,则需要修改typecode (想取消自动挂载可以修改typecode 为其他值)

此处我们使用到的是sgdisk  ,具体及其他用法可以查看sgdisk --help

 

修改typecode 

 sgdisk --help | grep typecode

  -t, --typecode=partnum:{hexcode|GUID}        change partition type code

具体操作为

#sgdisk -t 2:4fbd7e29-9d25-41b8-afd0-062c0ceff05d /dev/sdb     /其中想改第N分区-t后边就是 N    Warning: The kernel is still using the old partition table.The new table will be used at the next reboot.The operation has completed successfully

可以将所有磁盘分区的osd 均改了  

/usr/sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sdb      //磁盘分区序号(1,2,3)根据自己想改的自己定 

至此,修改typecode 后可以自动挂载 

另外:

sgdisk 常用命令

查看磁盘分区     sgdisk -i 1 /dev/sdb    /123同样是自己定的

查看整个磁盘     sgdisk -p /dev/sdc

修改分区名        sgdisk  -c 1:"ceph data" /dev/sdb 

清除数据            sgdisk -z /dev/vdd1

删除分区            sgdisk -d 1 /dev/sdb

 

 

reference :

https://www.cnblogs.com/gzxbkk/p/7727424.html

https://www.cnblogs.com/gzxbkk/p/7737421.html

转载于:https://www.cnblogs.com/freedom314/p/10650351.html

你可能感兴趣的文章
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
欲则不达
查看>>
盒子游戏
查看>>
Jmeter + Grafana搭建实时监控可视化
查看>>
uCGUI字符串显示过程分析和uCGUI字库的组建
查看>>
h5唤起app
查看>>
SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
01: socket模块
查看>>
mysql触发器
查看>>
淌淌淌
查看>>
web页面实现指定区域打印功能
查看>>
使用PHP拆分中文字符串的方法(收藏) 小节
查看>>
win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
查看>>
VMware环境和Window环境进行网络连接的问题
查看>>
macOS10.12允许所有来源设置
查看>>
C++有关 const & 内敛 & 友元&静态成员那些事
查看>>
函数积累
查看>>