直接上乾貨:
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/sdb2id_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後邊就是 nwarning: 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...