ceph osd 自動掛載的N種情況


 

直接上干貨:

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/sdb2

ID_FS_UUID=f00b001c-9122-4b4a-b0da-fce7736e1bd1
ID_FS_UUID_ENC=f00b001c-9122-4b4a-b0da-fce7736e1bd1
ID_FS_TYPE=xfs
ID_FS_USAGE=filesystem
ID_PART_ENTRY_SCHEME=gpt
ID_PART_ENTRY_UUID=b5d5060f-4383-430c-8913-5ea9bee11127
ID_PART_ENTRY_TYPE=4fbd7e29-9d25-41b8-afd0-062c0ceff05d
ID_PART_ENTRY_NUMBER=2
ID_PART_ENTRY_OFFSET=62916608
ID_PART_ENTRY_SIZE=62914560
ID_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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM