wordpress前臺打開慢手機端關(guān)鍵詞排名優(yōu)化軟件
文章目錄
- 1.Cephfs文件系統(tǒng)簡介
- 2.Cephfs文件系統(tǒng)細節(jié)介紹
- 2.1.Cephfs文件系統(tǒng)多客戶端隔離掛載
- 2.2.Ceph集群中多個Cephfs如何單獨使用
- 3.掛載多個Cephfs文件系統(tǒng)
- 4.Cephfs文件系統(tǒng)多客戶端隔離掛載實戰(zhàn)
- 4.1.創(chuàng)建一個Cephfs文件系統(tǒng)
- 4.2.將Cephfs文件系統(tǒng)掛載到本地路徑
- 4.3.在Cephfs文件文件系統(tǒng)中創(chuàng)建多個目錄
- 4.4.查看Cephfs文件系統(tǒng)的狀態(tài)
- 4.5.客戶端分別掛載不同的Cephfs文件系統(tǒng)中的子目錄
- 5.卸載MDS的方法
- 6.小插曲
1.Cephfs文件系統(tǒng)簡介
Cephfs文件系統(tǒng)至少需要一個MDS(Metadata Server組件)來存儲文件系統(tǒng)的元數(shù)據(jù)信息,因此在使用Cephfs文件存儲之前,首先要在集群中部署MDS組件,我們希望Cephfs文件存儲具備高可用性,所以MDS組件一般都會在集群中部署多個,大多數(shù)情況下都是三個MDS組件。
Cephfs支持用戶級別和內(nèi)核級別的掛載使用,可擴展性極高,并且可以同時讓多個Client客戶端進行讀寫。
一個Cephfs文件系統(tǒng)至少需要兩個Librados存儲池,也就是Pool資源池,一個為data,存儲具體落盤的數(shù)據(jù),一個為metadata,存儲數(shù)據(jù)文件的元數(shù)據(jù)信息。
建議為metadata的Pool資源池設置較高級別的副本數(shù),因為metadata資源池損壞就會導致整個文件系統(tǒng)不可用,另外metadata的資源池要使用低延時的存儲,例如SSD類型的磁盤,metadata會直接影響客戶端的響應速度。
Cephfs文件系統(tǒng)正確使用姿勢:
首次創(chuàng)建完Cephfs文件系統(tǒng)后,將其掛載到本地的一個路徑中,然后在路徑中創(chuàng)建出多個子級目錄,客戶端使用時掛載特定的子級目錄。
這樣做的好處是:既可以看到所有客戶端在Cephfs文件系統(tǒng)中存儲的數(shù)據(jù),又可以讓多個客戶端之間實現(xiàn)數(shù)據(jù)的隔離存儲。
2.Cephfs文件系統(tǒng)細節(jié)介紹
2.1.Cephfs文件系統(tǒng)多客戶端隔離掛載
在Ceph集群中創(chuàng)建的Cephfs文件系統(tǒng),其實是一個Volume,也就是一個空盤,只有一個/路徑,這也是大多數(shù)直接掛載/的一個原因。
如果集群中只有一個Cephfs文件系統(tǒng),在使用mount掛載時,無需指定使用哪個Cephfs文件系統(tǒng),直接就是將這個Cephfs文件系統(tǒng)的/目錄掛載到指定的路徑中,就可以使用這個Cephfs文件系統(tǒng)進行存儲了。
如下圖所示:Ceph集群中只有一個Cephfs文件系統(tǒng),也沒有在文件系統(tǒng)中創(chuàng)建任何目錄,因此直接掛載的/目錄
我們可以把Cephfs文件系統(tǒng)理解成一個空的父級目錄,一開始并沒有任何的文件系統(tǒng),在使用這個文件系統(tǒng)之前,先將Cephfs掛載到本地的一個路徑中,在里面為不同的客戶端創(chuàng)建出不同的目錄,然后由客戶端掛載時指定要掛載的目錄,實現(xiàn)多客戶端之間的數(shù)據(jù)隔離。
如下圖所示:就是在Cephfs文件系統(tǒng)中為不同的客戶端創(chuàng)建了不同的存儲目錄,然后由客戶端進行掛載,實現(xiàn)數(shù)據(jù)上的邏輯隔離。
2.2.Ceph集群中多個Cephfs如何單獨使用
一個Ceph集群中不可能只有一個Cephfs文件系統(tǒng),那么如何指定客戶端使用哪一個Cephfs呢?其實很簡單,mount掛載命令中有個參數(shù)可以指定客戶端使用哪一個Cephfs。
掛載非默認FS,以防集群有多個FS
mount -t ceph :/ /mnt/ mycephfs2 -o fs=mycephfs2或者mount -t ceph :/ /mnt/ mycephfs2 -o mds_namespace=mycephfs2 # 此選項名稱已棄用。
官網(wǎng)是如上這么寫的,但是我在使用的時候發(fā)現(xiàn)fs=這個參數(shù)是不支持的,只有mds_namespace=參數(shù)是支持的
3.掛載多個Cephfs文件系統(tǒng)
使用mount命令的mds_namespace參數(shù)就可以指定要掛載的Cephfs文件系統(tǒng)
[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/nginx_conf /nginx_conf/ -o name=admin,mds_namespace=kubernetes_cephfs[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/prometheus_data /prometheus_data/ -o name=admin,mds_namespace=kubernetes_cephfs
執(zhí)行mount命令也可以看到掛載的詳情。
192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/nginx_conf on /nginx_conf type ceph (rw,relatime,name=admin,secret=<hidden>,acl,mds_namespace=kubernetes_cephfs,wsize=16777216)
192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/prometheus_data on /prometheus_data type ceph (rw,relatime,name=admin,secret=<hidden>,acl,mds_namespace=kubernetes_cephfs,wsize=16777216)
4.Cephfs文件系統(tǒng)多客戶端隔離掛載實戰(zhàn)
創(chuàng)建一個Cephfs文件系統(tǒng),然后將文件系統(tǒng)掛載到本地的一個路徑上,
4.1.創(chuàng)建一個Cephfs文件系統(tǒng)
1)首先創(chuàng)建Cephfs依賴的數(shù)據(jù)池和元數(shù)據(jù)池
[root@ceph-node-1 ~]# ceph osd pool create kubernetes_cephfs_data 16 16
pool 'kubernetes_cephfs_data' created
[root@ceph-node-1 ~]# ceph osd pool create kubernetes_cephfs_metadata 16 16
pool 'kubernetes_cephfs_metadata' created
2)創(chuàng)建一個Cephfs文件系統(tǒng)
[root@ceph-node-1 ~]# ceph fs new kubernetes_cephfs kubernetes_cephfs_metadata kubernetes_cephfs_data
new fs with metadata pool 14 and data pool 13
3)查看創(chuàng)建的Cephfs文件系統(tǒng)
[root@ceph-node-1 ~]# ceph fs ls
name: kubernetes_cephfs, metadata pool: kubernetes_cephfs_metadata, data pools: [kubernetes_cephfs_data ]
4.2.將Cephfs文件系統(tǒng)掛載到本地路徑
使用mount命令時,指定mds_namespace參數(shù)掛載特定的Cephfs文件系統(tǒng)。
[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/ /kubernetes_cephfs/ -o name=admin,mds_namespace=kubernetes_cephfs
4.3.在Cephfs文件文件系統(tǒng)中創(chuàng)建多個目錄
創(chuàng)建出多個目錄為不同的客戶端提供存儲。
[root@ceph-node-1 ~]# mkdir /kubernetes_cephfs/{zabbix_data,prometheus_data,nginx_conf}
[root@ceph-node-1 ~]# ll /kubernetes_cephfs/
總用量 0
drwxr-xr-x 1 root root 0 4月 16 10:02 nginx_conf
drwxr-xr-x 1 root root 0 4月 16 10:02 prometheus_data
drwxr-xr-x 1 root root 0 4月 16 10:02 zabbix_data
4.4.查看Cephfs文件系統(tǒng)的狀態(tài)
當前還沒有任何數(shù)據(jù)寫入。
[root@ceph-node-1 ~]# ceph fs status kubernetes_cephfs
kubernetes_cephfs - 0 clients
=================
+------+--------+-------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+-------------+---------------+-------+-------+
| 0 | active | ceph-node-2 | Reqs: 0 /s | 0 | 0 |
+------+--------+-------------+---------------+-------+-------+
+----------------------------+----------+-------+-------+
| Pool | type | used | avail |
+----------------------------+----------+-------+-------+
| kubernetes_cephfs_metadata | metadata | 1728k | 17.9G |
| kubernetes_cephfs_data | data | 0 | 17.9G |
+----------------------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
| ceph-node-1 |
+-------------+
+-----------------------------------------------------------------------------------+-------------+
| version | daemons |
+-----------------------------------------------------------------------------------+-------------+
| None | ceph-node-2 |
| ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable) | ceph-node-1 |
+-----------------------------------------------------------------------------------+-------------+
4.5.客戶端分別掛載不同的Cephfs文件系統(tǒng)中的子目錄
1)客戶端掛載文件系統(tǒng)中不同的目錄
1.創(chuàng)建掛載點
[root@ceph-node-1 ~]# mkdir /nginx_conf
[root@ceph-node-1 ~]# mkdir /prometheus_data2.掛載Cephfs文件系統(tǒng)中不同的子目錄
[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/nginx_conf /nginx_conf/ -o name=admin,mds_namespace=kubernetes_cephfs
[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/prometheus_data /prometheus_data/ -o name=admin,mds_namespace=kubernetes_cephfs
2)查看掛載的信息
不同的客戶端掛載了Cephfs文件系統(tǒng)中不同的子目錄,實現(xiàn)數(shù)據(jù)上的隔離存儲。
3)寫入數(shù)據(jù)驗證數(shù)據(jù)的隔離性
每個客戶端都在自己的掛載點寫入數(shù)據(jù)。
#nginx客戶端
[root@ceph-node-1 ~]# touch /nginx_conf/file{1..5}.txt#prometheus客戶端
[root@ceph-node-1 ~]# cp rbd-storage.img /prometheus_data/
在總的Cephfs文件存儲中查看子目錄的數(shù)據(jù)。
[root@ceph-node-1 ~]# tree /kubernetes_cephfs/
/kubernetes_cephfs/
├── nginx_conf
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ ├── file4.txt
│ └── file5.txt
├── prometheus_data
│ └── rbd-storage.img
└── zabbix_data3 directories, 6 files
查看Cephfs文件系統(tǒng)的狀態(tài),此時數(shù)據(jù)就有了變化。
[root@ceph-node-1 ~]# ceph fs status kubernetes_cephfs
kubernetes_cephfs - 0 clients
=================
+------+--------+-------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+-------------+---------------+-------+-------+
| 0 | active | ceph-node-2 | Reqs: 0 /s | 0 | 0 |
+------+--------+-------------+---------------+-------+-------+
+----------------------------+----------+-------+-------+
| Pool | type | used | avail |
+----------------------------+----------+-------+-------+
| kubernetes_cephfs_metadata | metadata | 1920k | 17.8G |
| kubernetes_cephfs_data | data | 215M | 17.8G |
+----------------------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
| ceph-node-1 |
+-------------+
+-----------------------------------------------------------------------------------+-------------+
| version | daemons |
+-----------------------------------------------------------------------------------+-------------+
| None | ceph-node-2 |
| ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable) | ceph-node-1 |
+-----------------------------------------------------------------------------------+-------------+
5.卸載MDS的方法
1:(可選)創(chuàng)建一個新的MDS將要被移除的MDS,如果在刪除MDS之后沒有替代MDS可以接管,則文件系統(tǒng)將對客戶端不可用,如果不希望這樣做,請在刪除要脫機的元數(shù)據(jù)服務器之前考慮添加元數(shù)據(jù)服務器
2:停止MDS服務
systemctl stop ceph-mds@${id}
MDS將自動通知mon它已關(guān)閉,這使mon能夠?qū)⒐收纤查g切換到可用的備用數(shù)據(jù)庫(如果存在)。無需使用管理命令來實現(xiàn)此故障轉(zhuǎn)移,例如通過使用ceph mds fail mds.${id}
3:刪除/var/lib/ceph/mds/ceph-${id}目錄
rm -rf /var/lib/ceph/mds/ceph-${id}
注意:卸載掉集群中所有的MDS后,Cephfs文件系統(tǒng)將不可用,再次部署完MDS后,需要將所有的cephfs以及對應的Pool資源池刪掉,否則集群就會有問題。
6.小插曲
如果一臺機器中掛載了兩個Cephfs,雖然是兩個不通的Cephfs文件系統(tǒng),但是都掛載的是/目錄。
此時使用df目錄查看掛載信息時,只會顯示第一個掛載的Cephfs文件系統(tǒng)。