本篇**於群裡乙個人的問題,有沒有辦法讓ceph的磁碟不自動掛載,一般人的問題都是怎樣讓ceph能夠自動掛載,在centos 7 平台下 ceph jewel版本以後都是有自動掛載的處理的,這個我之前也寫過兩篇文章《ceph在centos7下乙個不容易發現的改變》和《ceph資料盤怎樣實現自動掛載》,來講述這個自動掛載的
這裡講下流程:
開機後 udev 匹配 95-ceph-osd.rules 規則,觸發 ceph-disk trigger,遍歷磁碟,匹配到磁碟的標記後就觸發了自動掛載為什麼要取消掛載?
也許一般都會想:不就是停掉osd,然後umount掉,檢查磁碟嗎
這個想法如果放在一般情況下都沒有問題,但是為什麼有這個需求就是有不一般的情況,這個我在很久前遇到過,所以對這個需求的場景比較清楚
在很久以前碰到過一次,機器啟動都是正常的,但是只要某個磁碟一掛載,機器就直接掛掉了,所以這個是不能讓它重啟機器自動掛載的,也許還有其他的情況,這裡總結成乙個簡單的需求就是不想它自動掛載
從上面的自啟動後的自動掛載流程裡面,我們可以知道這裡可以有兩個方案去解決這個問題,第一種是改變磁碟的標記,第二種就是改變udev的rule的規則匹配,這裡兩個方法都行,乙個是完全不動磁碟,乙個是動了磁碟的標記
這個因為曾經有一段時間看過udev相關的一些東西,所以處理起來還是比較簡單的,這裡順便把除錯過程也記錄下來
/lib/udev/rules.d/95-ceph-osd.rules這個檔案裡面就是集群自動掛載的觸發規則,所以在這裡我們在最開始匹配上我們需要遮蔽的盤,然後繞過內部的所有匹配規則,具體辦法就是
在這個檔案裡面第一行加上
kernel=="sdb1|sdb2", goto="not_auto_mount"在最後一行加上
label="not_auto_mount"驗證規則是否正確
udevadm test /sys/block/sdb/sdb1
我們先看下正常的可以掛載的碟符的觸發測試顯示
再看下遮蔽了後的規則是怎樣的
可以看到在加入遮蔽條件以後,就沒有觸發掛載了,這裡要注意,做遮蔽規則的時候需要把這個osd相關的盤都遮蔽,不然在觸發相關分割槽的時候可能順帶掛載起來了,上面的sdb1就是資料盤,sdb2就是bluestore的block盤
測試沒問題後就執行下
udevadm control --reload-rules
重啟後驗證是否自動掛載了
查詢磁碟的標記typecode,也就是id_part_entry_type這個屬性
[root@lab8106 ~]# blkid -o udev -p /dev/sdb1
id_fs_uuid=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
id_fs_uuid_enc=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
id_fs_type=xfs
id_fs_usage=filesystem
id_part_entry_scheme=gpt
id_part_entry_name=ceph\x20data
id_part_entry_uuid=7b321ca3-402c-4557-b121-887266a1e1b8
id_part_entry_type=4fbd7e29-9d25-41b8-afd0-062c0ceff05d
id_part_entry_number=1
id_part_entry_offset=2048
id_part_entry_size=204800
id_part_entry_disk=8:16
匹配到這個屬性就認為是集群的節點,可以掛載的,那麼我們先改變這個
[root@lab8106 ~]# /usr/sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff0f9 -- /dev/sdb
[root@lab8106 ~]# blkid -o udev -p /dev/sdb1
id_fs_uuid=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
id_fs_uuid_enc=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
id_fs_type=xfs
id_fs_usage=filesystem
id_part_entry_scheme=gpt
id_part_entry_name=ceph\x20data
id_part_entry_uuid=7b321ca3-402c-4557-b121-887266a1e1b8
id_part_entry_type=4fbd7e29-9d25-41b8-afd0-062c0ceff0f9
id_part_entry_number=1
id_part_entry_offset=2048
id_part_entry_size=204800
id_part_entry_disk=8:16
可以看到type的屬性已經被修改了
再次測試,可以看到已經不匹配了
如果需要恢復就執行
[root@lab8106 ~]# /usr/sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sdb
這裡同樣需要改掉相關的block盤的標記,否則一樣被關聯的掛載起來了
本篇用兩種方法來實現了ceph osd的碟符的不自動掛載,這個一般情況下都不會用到,比較特殊的情況遇到了再這麼處理就可以了,或者比較暴力的方法就是直接把掛載的匹配的規則全部取消掉,使用手動觸發掛載的方式也行,這個方法很多,能夠快速,簡單的滿足需求即可
此mount非彼mount,題圖無關
whywho
when
建立武漢-運維-磨渣
2017-09-07
ceph osd 自動掛載的N種情況
直接上乾貨 ceph自動掛載原理 系統啟動後,ceph 通過掃瞄所有磁碟及分割槽的 id part entry type 與自己main.py中寫死的osd ready 識別符號來判斷磁碟 及其分割槽 是否準備好自動掛載 journal block,osd 同是乙個道理 main.py中記載的狀態標...
談談怎樣防止Dedecms被掛馬的問題
dedecms是現下主流的建站程式之一,相信很多站長和我一樣選擇了它,它的優點我就不多說了。可是令很多站長頭疼的是,自己用dedecms建的站經常被人莫名其妙的掛馬,造成滿頁黑鏈,令人氣憤 更為嚴重的是,還有可能被搜尋引擎懲罰,於是辛辛苦苦建立的站,眼睜睜的看它權重下降,收錄減少,甚至被k。其實,我...
Fedora 10 取消某些分割槽的開機自動掛載
fedora 10 在啟動時會自動掛載所有分割槽,但是有些分割槽 比如windows系統分割槽 對innersea是沒有用的,如何設定它在開機不自動掛載呢?方法如下 修改 usr share hal fdi policy 10osvendor 20 storage methods.fdi 定位到在其...