ceph osd 自動掛載的N種情況

2022-08-14 07:24:12 字數 2603 閱讀 8027

直接上乾貨:

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

': ,

而我們磁碟分割槽的資訊如

#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:        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

newtable 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 :

怎樣禁止Ceph OSD的自動掛載

本篇 於群裡乙個人的問題,有沒有辦法讓ceph的磁碟不自動掛載,一般人的問題都是怎樣讓ceph能夠自動掛載,在centos 7 平台下 ceph jewel版本以後都是有自動掛載的處理的,這個我之前也寫過兩篇文章 ceph在centos7下乙個不容易發現的改變 和 ceph資料盤怎樣實現自動掛載 來...

Linux開機自動掛載儲存的兩種方式

登入伺服器,給檢視了下,發現確實是沒有自動載入,df h只能顯示本地硬碟的分割槽,fdisk l 還是能看到儲存空間,這說明這個伺服器連線儲存是木有問題的。輸入history grep mount,檢視所有mount記錄,最後一條為 mount dev emcpowerb1 oracle orada...

Linux開機自動掛載儲存的兩種方式

有兩種辦法 1 vi etc rc.d rc.local 進行檔案編輯,然後把mount 的命令放到 etc rc.d rc.local 裡面去,最後把 mount t nfs dl1 home users home users 這個命令寫進去。儲存退出就好了。2 修改 etc fstab文件 vi...