1. 程式人生 > >使用ceph的檔案儲存CephFS

使用ceph的檔案儲存CephFS

Ceph FS是一個支援POSIX介面的檔案系統,它使用 Ceph 儲存叢集來儲存資料。檔案系統對於客戶端來說可以方便的掛載到本地使用。Ceph FS構建在RADOS之上,繼承RADOS的容錯性和擴充套件性,支援冗餘副本和資料高可靠性。

注意:當前, CephFS 還缺乏健壯得像 ‘fsck’ 這樣的檢查和修復功能。儲存重要資料時需小心使用,因為災難恢復工具還沒開發完。

準備MDS元資料伺服器

Ceph 檔案系統要求 Ceph 儲存叢集內至少有一個 Ceph 元資料伺服器。

新增一個MDS很簡單,可參考ceph新增節點

建立Ceph檔案系統

一個 Ceph 檔案系統需要至少兩個 RADOS 儲存池,一個用於資料、一個用於元資料。配置這些儲存池時需考慮:
1、為元資料儲存池設定較高的副本水平,因為此儲存池丟失任何資料都會導致整個檔案系統失效。
2、為元資料儲存池分配低延時儲存器(像 SSD ),因為它會直接影響到客戶端的操作延時。

關於儲存池的管理可參考官網 儲存池

要用預設設定為檔案系統建立兩個儲存池,你可以用下列命令:
比如我們使用120個pg。cephfs_data和cephfs_metadata是兩個儲存池的名稱。

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128

建立好儲存池後,你就可以用 fs new 命令建立檔案系統了:

ceph fs new cephfs cephfs_metadata cephfs_data

cephfs是檔案系統的名稱。

使用下面的命令可以檢視建立的CephFS

ceph fs ls

檔案系統建立完畢後, MDS 伺服器就能達到 active 狀態了,比如在一個單 MDS 系統中,使用命令檢視

ceph mds stat

成功執行輸出如下:

[zzq@ceph4 osd]$ ceph osd pool create cephfs_data 128
pool 'cephfs_data' created
[zzq@ceph4 osd]$ ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created
[zzq@ceph4 osd]$ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 2
and data pool 1 [zzq@ceph4 osd]$ ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ] [zzq@ceph4 osd]$ [zzq@ceph4 osd]$ ceph mds stat e3: 1/1/1 up {0=ceph4=up:active} [zzq@ceph4 osd]$

掛載CephFS (客戶端節點執行)

要掛載 Ceph 檔案系統,如果你知道監視器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具來自動解析監視器 IP 地址。

假如我們有4個monitor監視器,ip分別為192.168.199.81,192.168.199.82,192.168.199.83,192.168.199.84。
則使用mount命令掛載到目錄/mycephfs,如下:

sudo mkdir /mycephfs
sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/  /mycephfs

Ceph v0.55 及後續版本預設開啟了 cephx 認證。
如果啟用了cephx認證的Ceph檔案系統,掛載時我們必須指定使用者名稱、金鑰。
secret在/etc/ceph/ceph.client.admin.keyring可以查到。

cat /etc/ceph/ceph.client.admin.keyring
sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs -o name=admin,secret=AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==

上述用法會把密碼遺留在 Bash 歷史裡,更安全的方法是從檔案讀密碼。例如:

sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret

正確輸出如下:

[zzq@localhost /]$ cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==
    caps mds = "allow"
    caps mon = "allow *"
    caps osd = "allow *"
[zzq@localhost /]$ sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs -o name=admin,secret=AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==
[sudo] password for zzq: 
[zzq@localhost /]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_localhost-lv_root
                       18G  2.2G   15G  14% /
tmpfs                 482M     0  482M   0% /dev/shm
/dev/sda1             477M   86M  362M  20% /boot
/dev/rbd0             3.9G  8.0M  3.8G   1% /cephAll
192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/
                       33G   14G   19G  41% /mycephfs
[zzq@localhost /]$ 

要解除安裝 Ceph 檔案系統,可以用 unmount 命令,例如:

sudo umount /mycephfs

可能遇到的問題

可能出現的錯誤
1.mount error 5 = Input/output error
2. mount error 22 = Invalid argument
第一個,首先先查mds服務是正常,不存在則新增
第二個,金鑰不正確,檢查金鑰

使用者空間掛載 CEPH 檔案系統 (客戶端伺服器執行)

Ceph v0.55 及後續版本預設開啟了 cephx 認證。

從使用者空間掛載Ceph 檔案系統前,確保客戶端主機有一份Ceph 配置副本、和具備 Ceph元資料伺服器能力的金鑰環。

在客戶端主機上,把監視器主機上的Ceph 配置檔案拷貝到客戶端伺服器的 /etc/ceph/目錄下。

sudo mkdir -p /etc/ceph
scp ceph1:/etc/ceph/ceph.client.admin.keyring /etc/ceph
scp ceph1:/etc/ceph/ceph.conf /etc/ceph

確保客戶端機器上的 Ceph 配置檔案和金鑰環都有合適的許可權位,如chmod 644 。

要把 Ceph 檔案系統掛載為使用者空間檔案系統,可以用 ceph-fuse 命令,例如:

sudo mkdir /home/zzq/cephfs
sudo ceph-fuse -m 192.168.199.81:6789 /home/zzq/cephfs

啟動時自動掛載

普通目錄

啟動時自動掛載需要把掛載資訊按下列格式新增到 /etc/fstab :

sudo vi  /etc/fstab

在末尾輸入內容如下:

192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs ceph  name=admin,secret=AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==,noatime    0       2

相關引數

 /etc/fstab下面分為6個欄位:
1、要掛載的裝置(可以使用LABEL、UUID、裝置檔案)
2、掛載點
3、檔案系統型別
4、掛載選項(defaults使用預設掛載選線,如需同時指明,則:defaults,acl)
5、轉儲頻率
  0:從不備份
  1:每天備份
  2:每隔一天備份
6、自檢次序
  0:不自檢
  1:首先自檢,通常只用於根檔案系統
  2:次級自檢

使用者目錄

要在使用者空間掛載 Ceph 檔案系統,按如下加入 /etc/fstab :

id=myuser,conf=/etc/ceph/ceph.conf  /mnt/ceph2  fuse.ceph defaults 0 0