1. 程式人生 > >Ceph 之 塊設備、文件系統、對象存儲的使用

Ceph 之 塊設備、文件系統、對象存儲的使用

ceph 塊設備/對象存儲/文件系統

技術分享圖片 技術分享圖片

上面左邊是我的個人微信,如需進一步溝通,請加微信。 右邊是我的公眾號“Openstack私有雲”,如有興趣,請關註。


繼上篇《Ceph 之 使用ceph-deploy部署ceph集群》,ceph集群搭建完成之後,接下來就是使用了,ceph集群可以提供給塊設備、文件系統、對象存儲 進行使用,其中塊設備的應用最成熟和廣泛,可以用在生產系統;對象存儲也很成熟,可以用在生產系統;文件系統據官網說還不是特別穩定,不建議在生產系統中使用。再重復一下環境:

環境:

系統centos7.4

ceph版本 ceph version 10.2.10

測試服務器為kvm虛擬機(openstack虛擬機)


服務器分配如下:


節點服務cluster network
ceph-1(admin-node)osd.{1,2,},mon.ceph-1eth0:192.168.1.161/24
ceph-2osd.{3,4},mon.ceph-2eth0:192.168.1.162/24
ceph-3osd.{5,6},mon.ceph-3eth0:192.168.1.163/24

節點服務cluster network
control03(client)ceph clienteth0:192.168.1.132/24

ceph每個節點在原來系統盤的基礎上增加2塊osd盤/dev/vdb 、/dev/vdc,集群共有6個osd進程,3個monitor進程。管理節點用作執行

ceph-deploy命令,使用ceph-1節點充當。

節點control03上面與ceph集群獨立作為ceph集群的使用者(client),同一個局域網,是另一個openstack的一個控制節點,這裏僅作測試用,與openstack沒有聯系。大家應該大概猜測到了後續我的思路是什麽,openstack可以使用外部ceph集群,只需要在部署的時候進行相應的配置修改,就能夠實現,這種架構我認為是一個不錯的選擇。


一、塊設備的使用

我是參照官網進行的操作,其中塊設備的操作網址:

http://docs.ceph.com/docs/master/start/quick-rbd/

邏輯還是很簡單,首先是將客戶端納入到ceph集群中,這裏有一個概念,就是客戶端和ceph集群可以分開的,也可以是合在一起的,一般較小規模的是合在一起,比如我的環境下面,3個node節點的ceph集群,直接3個節點就可以使用ceph集群,不需要重新ceph-deploy install和ceph-deploy admin 。具體步驟如下:

1、客戶端安裝。在客戶端節點上進行ceph-deploy install <client節點名>和ceph-deploy admin <client節點名>操作,如果在集群節點本身使用,可以跳過這一步;註意,在執行之前,雙方的/etc/hosts文件添加主機紀錄能夠解析雙方主機名稱,然後ssh密鑰拷貝,使ceph admin節點可以直接免密ssh登陸客戶端。

    ssh-copy-id <client節點名>
    ceph-deploy install <client節點名>
    ceph-deploy admin <client節點名>


2、創建pool池。在admin節點上(隨便哪一個,只要執行過ceph-deploy admin命令的節點即可)執行下面的命令:

    ceph osd pool create rbd 64 //其中rbd是pool的名稱
    註:官網上的命令是: rbd pool init <pool-name> , 在我的環境中rbd命令沒有pool子命令,應該是版本原因。

3、配置塊設備。在客戶端側創建image鏡像,映射鏡像到塊設備,格式化塊設備,mount塊設備,其中後面兩步和其他塊設備的使用一樣的。

a.創建image鏡像

    命令格式: #rbd create foo --size 4096 --image-feature layering [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
    rbd create foo --size 4096 --image-feature layering   //創建一個名字為foo的鏡像,如果沒有制定pool名稱,那麽默認是rbd

b.映射鏡像到塊設備

    命令格式:#rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
    rbd map foo //將foo鏡像映射到塊設備

c.格式化塊設備

    命令格式:mkfs.ext4 -m0 /dev/rbd/rbd/foo  //-m0 表示不保留空間為0
    mkfs.ext4 /dev/rbd/rbd/foo

d.mount塊設備

    mkdir /mnt/foo
    mount /dev/rbd/rbd/foo /mnt/foo
    cd /mnt/foo


二. 對象存儲的使用

和塊存儲一樣,首先是安裝客戶端,創建網關實例,在需要的情況下更改相關配置。

1.安裝客戶端。在admin端執行:

    命令格式:#ceph-deploy install --rgw <client-node> [<client-node> ...]
    ceph-deploy install --rgw control03

2.創建網關實例。在admin端執行:

    ceph-deploy rgw create <client-node>
    ceph-deploy rgw create control03
    註意,實例rgw默認的端口是7480 ,如果需要更改端口,可以通過修改配置文件ceph.conf實現,具體詳見官網:http://docs.ceph.com/docs/master/start/quick-rgw/

3.使用對象存儲網關。

ceph對象存儲網關為應用提供 RESTful 類型的對象存儲接口,其接口方式支持 S3(兼容 Amazon S3 RESTful API) 和 Swift(兼容 OpenStack Swift API) 兩種類型。其中swift場景,比如可以在openstack中直接使用ceph對象存儲網關作為swift的存儲。這裏不做詳細記錄。


三.文件系統的使用

Ceph FS是一個支持POSIX接口的文件系統。文件系統對於客戶端來說可以方便的掛載到本地使用。Ceph FS構建在RADOS之上,繼承RADOS的容錯性和擴展性,支持冗余副本和數據高可靠性。


MDS

MDS(Metadata Server)即元數據Server主要負責Ceph FS集群中文件和目錄的管理。 元數據主要記錄數據的屬性,如文件存儲位置、大小、存儲時間等,同時負責文件查找、文件記錄、存儲位置記錄、訪問授權等。


MDS與ceph-mon和ceph-osd類似也是一個Daemon進程,可以像MON和OSD一樣在多節點部署實現冗余。MDS進程可以被配置為活躍或者被動狀態,活躍的MDS為主MDS,其他的MDS處於備用狀態,當主MDS節點故障時,備用MDS節點會接管其工作並被提升為主節點。


MDS部署

在admin節點(ceph-1)運行ceph-deploy命令部署mds到control03上:

    命令格式:#ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]
    ceph-deploy mds create control03

創建CephFS

CephFS需要使用兩個Pool來分別存儲數據和元數據,下面我們分別創建fs_data和fs_metadata兩個Pool。設置pg_num為128:

    ceph osd pool create fs_data 128
    ceph osd pool create fs_metadata 128
    ceph osd lspools
    以上命令可以在隨便一個有admin權限的節點運行,即可以在ceph-1上也可以在contro03上執行,因為這2個節點都執行過ceph-deploy admin命令。


接下來創建一個CephFS:

    ceph fs new cephfs fs_metadata fs_data


使用下面的命令可以查看創建的CephFS:

    ceph fs ls
    name: cephfs, metadata pool: fs_metadata, data pools: [fs_data ]


掛載CephFS

客戶端訪問Ceph FS有兩種方式:

Kernel內核驅動:Linux內核從2.6.34版本開始加入對CephFS的原聲支持

Ceph FS FUSE: FUSE即Filesystem in Userspace

因為我們的系統內核版本滿足要求,所以我們以Kernel驅動方式掛載前面創建的那個CephFS:


    mkdir /mnt/mycephfs
    mount -t ceph 192.168.1.161:6789,192.168.1.162:6789,192.168.1.163:6789:/ /mnt/mycephfs -o name=admin,secret=AQDVMQZbVNKEHhAAn0bzjYQpAgP5W1gKwtnthw==
    註:上面的secret是ceph admin的密鑰,在文件/etc/ceph/ceph.client.admin.keyring中;如果集群中有多個文件系統,可以通過參數 -o mds_namespace=myfs 專門指定。
    df -h
    Filesystem                                                  Size  Used Avail Use% Mounted on
    192.168.1.161:6789,192.168.1.162:6789,192.168.1.163:6789:/  210G  496M  210G   1% /mnt/mycephfs


卸載Ceph文件系統:

    umount /mnt/mycephfs

總結:

集群服務器和客戶端服務器可以分開也可以復用,總的來說使用ceph-deploy部署工具可以非常方便的部署塊設備/對象存儲/文件系統客戶端程序及相關配置,概念上也比較清晰。

進一步的,可以通過部署獨立的ceph集群給openstack使用,這樣openstack本身部署的時候不要啟用ceph,在使用塊設備/對象存儲的相關組建上配置使用外部ceph集群,可以有更靈活的架構選擇,比如塊設備使用一個快速固態硬盤存儲池,對象存儲使用慢速硬盤存儲池,這樣對隔離故障域也很有好處。


Ceph 之 塊設備、文件系統、對象存儲的使用