Ceph 文件系統(四)


一、文件存儲系統介紹

Ceph文件系統提供了任何大小的符合posix標准的分布式文件系統,它使用Ceph RADOS存儲數據。要實現Ceph文件系統,您需要一個正在運行的Ceph存儲集群和至少一個Ceph元數據服務器(MDS)來管理其元數據並使其與數據分離,這有助於降低復雜性和提高可靠性。下圖描述了Ceph FS的架構視圖及其接口:

 libcephfs庫在支持其多個客戶機實現方面發揮着重要作用。它具有本機Linux內核驅動程序支持,因此客戶機可以使用本機文件系統安裝,例如,使用mount命令。它與SAMBA緊密集成,支持CIFS和SMB。 Ceph FS使用cephfuse模塊擴展到用戶空間(FUSE)中的文件系統。它還允許使用libcephfs庫與RADOS集群進行直接的應用程序交互。作為Hadoop HDFS的替代品, Ceph FS越來越受歡迎。

只有Ceph FS才需要Ceph MDS;其他存儲方法的塊和基於對象的存儲不需要MDS服務。 Ceph MDS作為一個守護進程運行,它允許客戶機掛載任意大小的POSIX文件系統。 MDS不直接向客戶端提供任何數據;數據服務僅由OSD完成。MDS提供了一個帶有智能緩存層的共享連貫文件系統,因此大大減少了讀寫操作。它將其優勢擴展到動態子樹分區,並為單個元數據提供單個MDS。

MDS不存儲本地數據,這在某些情況下非常有用。如果MDS守護程序死亡,我們可以在任何具有群集訪問權限的系統上重新啟動它。Metadata Server的守護程序配置為主動或被動。主MDS節點變為活動狀態,其余節點將進入待機狀態。在主MDS發生故障的情況下,第二個節點負責並被提升為活動狀態。為了更快地恢復,您可以指定備用節點應該跟隨其中一個活動節點,這將在內存中保留相同的數據以預先填充緩存。

客戶端我們一般有兩種方式,一種是 Linux 內核提供的,一種是 FUSE 客戶端,內核客戶端性能會好一些,而 FUSE 客戶端功能會強大些,比如強制配額。

二、部署cephfs

2.1 在ceph01節點使用 ceph-deploy 部署 cephfs

必須至少部署一個元數據服務器守護程序才能使用CephFS。

[cephadmin@ceph01 ~]$ cd my-cluster/
[cephadmin@ceph01 my-cluster]$ ceph-deploy mds create ceph01 ceph02 ceph03

 

2.2 創建ceph存儲池

Ceph文件系統至少需要兩個RADOS池,一個用於數據,一個用於元數據。在配置這些池時,可以考慮:

  • 為元數據池使用更高的復制級別,因為這個池中的任何數據丟失都可能使整個文件系統無法訪問。
  • 為元數據池使用低延遲存儲(如ssd),因為這將直接影響客戶機上文件系統操作的觀察延遲。
[cephadmin@ceph01 my-cluster]$ ceph osd pool create cephfs_data 128
[cephadmin@ceph01 my-cluster]$ ceph osd pool create cephfs_metadata 128

# 啟用文件系統
[cephadmin@ceph01 my-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data

 查看文件系統

[cephadmin@ceph01 my-cluster]$ ceph mds stat
cephfs-1/1/1 up  {0=ceph03=up:active}, 2 up:standby
[cephadmin@ceph01 my
-cluster]$ ceph osd pool ls ………… cephfs_data cephfs_metadata
[cephadmin@ceph01 my
-cluster]$ ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

2.3 創建用戶(可選,因為部署時,已經生成,我們最好再創建一個普通用戶)

[cephadmin@ceph01 my-cluster]$ ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow r, allow rw path=/' osd 'allow rw pool=cephfs_data' -o ceph.client.cephfs.keyring

2.4 查看生成的key

[cephadmin@ceph01 my-cluster]$ cat ceph.client.cephfs.keyring 
[client.cephfs]
        key = AQBjVUZeJMQKBRAAh1Lp7p7A0YdBnw7VeZPJtQ==

[cephadmin@ceph01 my-cluster]$ ceph auth get-key client.cephfs
AQBjVUZeJMQKBRAAh1Lp7p7A0YdBnw7VeZPJtQ==

三、通過內核驅動掛載Ceph FS

在Linux內核2.6.34和以后的版本中添加了對Ceph的支持。

3.1 在客戶端創建掛載目錄

[root@192-168-5-70 ~]# mkdir /mnt/cephfs

3.2 在客戶端進行掛載(方法1):

# secret為上面生成的key
[root@192-168-5-70 ~]# mount -t ceph 192.168.5.91:/ /mnt/cephfs -o name=cephfs,secret=AQBjVUZeJMQKBRAAh1Lp7p7A0YdBnw7VeZPJtQ== [root@192-168-5-70 ~]# df -h /mnt/cephfs/ Filesystem Size Used Avail Use% Mounted on 192.168.5.91:/ 8.4G 0 8.4G 0% /mnt/cephfs [root@192-168-5-70 ~]# umount /mnt/cephfs

# 使用多個mon進行掛載 [root@
192-168-5-70 ~]# mount -t ceph 192.168.5.91,192.168.5.92,192.168.5.93:/ /mnt/cephfs -o name=cephfs,secret=AQBjVUZeJMQKBRAAh1Lp7p7A0YdBnw7VeZPJtQ== [root@192-168-5-70 ~]# df -h /mnt/cephfs/ Filesystem Size Used Avail Use% Mounted on 192.168.5.91,192.168.5.92,192.168.5.93:/ 8.4G 0 8.4G 0% /mnt/cephfs

3.3 在客戶端不顯示key掛載(方法2):

[root@192-168-5-70 ~]# umount /mnt/cephfs
[root@192-168-5-70 ~]# mkdir /etc/ceph
[root@192-168-5-70 ~]# echo 'AQBjVUZeJMQKBRAAh1Lp7p7A0YdBnw7VeZPJtQ==' > /etc/ceph/cephfskey 

# 把key使用文件的方式進行掛載,端口默認為6789可以省略不寫 [root@
192-168-5-70 ~]# mount -t ceph 192.168.5.91:6789:/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey [root@192-168-5-70 ~]# df -h /mnt/cephfs/ Filesystem Size Used Avail Use% Mounted on 192.168.5.91:6789:/ 8.4G 0 8.4G 0% /mnt/cephfs

3.4 設置開機自動進行掛載

[root@192-168-5-70 ~]# echo '192.168.5.91:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0' >> /etc/fstab 

# 測試寫入數據
[root@192-168-5-70 ~]# umount /mnt/cephfs
[root@192-168-5-70 ~]# mount /mnt/cephfs
[root@192-168-5-70 ~]# dd if=/dev/zero of=/mnt/cephfs/file1 bs=1M count=1024

四、通過 FUSE 掛載 Ceph FS

Ceph文件系統由LINUX內核本地支持;但是,如果您的主機在較低的內核版本上運行,或者您有任何應用程序依賴項,您總是可以使用FUSE客戶端讓Ceph掛載Ceph FS。

4.1 安裝ceph-fuse

[root@192-168-5-70 ~]# cat /etc/yum.repos.d/ceph.repo 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
gpgcheck=0
[root@192-168-5-70 ~]# yum install ceph-fuse -y

4.2 把服務端生成的key文件拷貝到客戶端

[cephadmin@ceph01 ~]$ scp my-cluster/ceph.client.cephfs.keyring root@192.168.5.70:/etc/ceph/

4.3 ceph-fuse進行掛載

# 先取消之前的掛載
[root@192-168-5-70 ~]# umount /mnt/cephfs
[root@192-168-5-70 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  2.2G   48G   5% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   17M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/rbd0       4.0G  233M  3.8G   6% /mnt/ceph-disk1
/dev/rbd2       2.0G   33M  2.0G   2% /mnt/ceph-disk2
tmpfs           799M     0  799M   0% /run/user/0

# 進行掛載
[root@192-168-5-70 ~]# ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m 192.168.5.91:6789 /mnt/cephfs/ 
2020-02-14 16:38:42.460 7f0bed64fc00 -1 init, newargv = 0x55a6a780bd40 newargc=7ceph-fuse[388766]: starting ceph client

ceph-fuse[388766]: starting fuse
[root@192-168-5-70 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  2.2G   48G   5% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   17M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/rbd0       4.0G  233M  3.8G   6% /mnt/ceph-disk1
/dev/rbd2       2.0G   33M  2.0G   2% /mnt/ceph-disk2
tmpfs           799M     0  799M   0% /run/user/0
ceph-fuse       8.3G  1.0G  7.3G  13% /mnt/cephfs

4.4 設置開機自動掛載

[root@192-168-5-70 ~]# vim /etc/ceph/ceph.conf 
[global]
mon_host = 192.168.5.91,192.168.5.92,192.168.5.93

[root@192-168-5-70 ~]# vim /etc/fstab 
none /mnt/cephfs fuse.ceph ceph.id=cephfs,_netdev,defaults 0 0

五、Ceph配額管理

CephFS允許在系統中的任何目錄上設置配額。配額可以限制 目錄層次結構中該點下面的字節數或文件數。

5.1 限制

  • CephFS配額 依賴 於正在掛載文件系統的 客戶端 的合作,以在達到限制時停止寫入,不應依賴配額來防止在客戶端完全不受信任的環境中寫入。
  • 配額是不精確的。寫入文件系統的進程將在達到配額限制后的短時間內停止。它們將不可避免地被允許在配置的限制上寫入一些數據。他們能夠走多遠的配額主要 取決於時間量 ,而不是數據量。一般來說,編寫者將在超過配置限制的十秒內停止 。
  • 配額在 內核客戶端4.17 及更高版本中實現。 用戶空間客戶端(libcephfs,ceph-fuse)支持配額。Linux內核客戶端> = 4.17支持CephFS配額,但僅限於 mimic+ 集群 。內核客戶端(甚至是最新版本)將無法處理舊群集上的配額,即使它們可能能夠設置配額擴展屬性。

5.2 先拷貝管理員權限的key

[cephadmin@ceph01 ~]$ scp my-cluster/ceph.client.admin.keyring root@192.168.5.70:/etc/ceph/

5.3 重新進行客戶端掛載

[root@192-168-5-70 ~]# ceph-fuse --keyring /etc/ceph/ceph.client.admin.keyring --name client.admin -m 192.168.5.91:6789 /mnt/cephfs/

5.4 設置配額文件最大容量100MB,文件數量不大於3

[root@192-168-5-70 ~]# yum install attr -y
[root@192-168-5-70 ~]# cd /mnt/cephfs/
[root@192-168-5-70 cephfs]# mkdir quotadir
[root@192-168-5-70 cephfs]# setfattr -n ceph.quota.max_bytes -v 100000000 quotadir
[root@192-168-5-70 cephfs]# setfattr -n ceph.quota.max_files -v 3 quotadir

5.5 顯示配額

[root@192-168-5-70 cephfs]# getfattr -n ceph.quota.max_bytes quotadir
# file: quotadir
ceph.quota.max_bytes="100000000"

[root@192-168-5-70 cephfs]# getfattr -n ceph.quota.max_files quotadir    
# file: quotadir
ceph.quota.max_files="3"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM