天天看點

cephfs用戶端挂載

Ceph 存儲介紹

Ceph 是一個開源的分布式存儲系統,包括對象存儲、塊裝置、檔案系統。它可靠性高、管理友善、伸縮性強,能夠輕松應對PB、EB級别資料。Ceph 存儲體系中,核心為 RADOS,它是一個高可用分布式對象存儲,該子產品負責對叢集衆多 OSD 的運作,保證存儲系統的可用性。同時該子產品通過 LIBRADOS 的公共庫對外提供存儲服務,如對象存儲、塊裝置存儲。

cephfs用戶端挂載

環境、軟體準備

要使用 Ceph 存儲體系中的塊裝置、檔案系統以及對象存儲,必須保證已完成 Ceph 存儲叢集的搭建,并且保證 Ceph 存儲叢集處于 active + clean 狀态。這裡搭建過程可以參考Centos7 Ceph 存儲叢集搭建 文章

Ceph 檔案系統

Ceph 檔案系統,我們一般稱為 cephfs。接下來我們示範一下如何建立一個 cephfs 檔案系統。注意:如果在新的節點上使用 cephfs 的話,需要通過 ceph-deploy 安裝 ceph 到該節點上,這裡就不在描述了,參照上邊塊裝置第一部分安裝即可。這裡我還是在 admin-node 上建立檔案系統。一個 Ceph 檔案系統需要至少兩個 RADOS 存儲池,一個用于資料、一個用于中繼資料。接下來,我們先建立兩個存儲池。

$ ceph osd pool create cephfs_data 64
pool 'cephfs_data' created
$ ceph osd pool create cephfs_metadata 64
pool 'cephfs_metadata' created

建立完畢,就可以用 fs new ... 指令建立檔案系統了。
$ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 11 and data pool 10
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

OK,cephfs 檔案系統已經建立完畢,接下來我們看下中繼資料 MDS 的狀态,看看是否為 active 狀态。

$ ceph mds stat
e2: 0/0/1 up
           

有兩種方式挂載,一種是使用核心驅動挂載,一種是使用者空間挂載。

核心驅動挂載

Ceph v0.55 及後續版本預設開啟了 cephx 認證,是以在挂載時,需要指明其密鑰,以便通過認證。這裡的密鑰環就是之前提到的 ceph.client.admin.keyring 檔案。

# 複制密鑰 key
$ cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQD/6ShariweMRAAkc1xN/H0ocAlpjp09z5blw==
    caps mds = "allow *"
    caps mon = "allow *"
    caps osd = "allow *"
# 建立挂載目錄
$ sudo mkdir /mnt/cephfs
# 挂載 cephfs 到該目錄,并指明使用者名和密鑰
$ sudo mount -t ceph 10.222.77.213:6789:/ /mnt/cephfs -o name=admin,secret=AQD/6ShariweMRAAkc1xN/H0ocAlpjp09z5blw==
           

不過這種方式,會把密鑰顯示留在了 Bash 指令裡面,我們可以更安全的方式從檔案讀取。

# 将密鑰 key 儲存到檔案中
$ sudo vim /etc/ceph/admin.secret
AQD/6ShariweMRAAkc1xN/H0ocAlpjp09z5blw==
$ sudo mount -t ceph 10.222.77.213:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret
           

很遺憾,執行報錯 mount error 5 = Input/output error .這就是上邊中繼資料 MDS 的狀态那裡出的問題。因為我們必須部署至少一個中繼資料伺服器才能使用 CephFS 檔案系統。接下來,我們就部署一個中繼資料伺服器 MDS。

# 在 ceph-deploy (admin-node) 節點上執行
$ ceph-deploy mds create admin node02 node03
           

建立成功,我們在看一下目前叢集 MDS 狀态。

$ ceph mds stat
e6: 1/1/1 up {0=node0=up:active}, 1 up:standby
           

ok 沒問題了。

$ df -h
...
10.222.77.213:6789:/   66G   33G   33G   50% /mnt/cephfs
           

這裡可以看到 cephfs 将兩個節點 node0 和 node1 容量合并了。(我的虛拟機 node02、node03 / 根目錄容量為 33 G,每個節點使用了 16G 左右。)

最後,我們在測試一下生成一個 1G 大檔案,看是否自動同步到 node0 和 node1 吧!

$ sudo dd if=/dev/zero of=testfs bs=1G count=1

記錄了1+0 的讀入

記錄了1+0 的寫出

1073741824位元組(1.1 GB)已複制,9.0857 秒,118 MB/秒

$ df -h
...
10.222.77.213:6789:/   66G   36G   30G   55% /mnt/cephfs
           

注意: 如需解除安裝 cephfs 檔案系統,可以使用 sudo umount /mnt/cephfs 即可。

設定開機自動挂載/etc/fstab,例如

10.100.101.82:6789,10.100.101.83:6789,10.100.101.84:6789:/    /data/WEBLOG/   ceph     name=admin,secret=AQC5GxxxxxxxxxxxIhtlf/qWNGF0ZtSrzg==,_netdev     0       0
mount -a
           
使用者空間挂載

安裝ceph-fuse

##添加yum源
cat /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-jewel/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
##添加epel-repository和Ceph存儲庫
sudo yum -y install epel-release
sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
yum -y install ceph-fuse
## 将ceph.conf和ceph.client.admin.keyring 拷貝到伺服器上進行使用者空間檔案系統挂載
cat ceph.client.admin.keyring
[client.admin]
        key = AQC5GwZbbwtcOhAAxxxWNGF0ZtSrzg==
        caps mds = "allow *"
        caps mon = "allow *"
        caps osd = "allow *"

cat /etc/ceph/ceph.conf 
[global]
fsid = b15d02d9-1595-4b75-8b51-4da7f2c3e2fd
mon_initial_members = beta-k8s-etcd-2, beta-k8s-etcd-3, beta-k8s-node-3
mon_host = xx
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 3
public network = 10.100.xx.0/24
mon_pg_warn_max_per_osd = 600
           
挂載
ceph-fuse -m  10.100.xx:6789,10.100.xx:6789,10.100.xx:6789 /mnt/
           
設定開機自動挂載/etc/fstab
id=admin /mnt/ fuse.ceph  defaults    0       0
mount -a