1. 程式人生 > >分布式存儲ceph

分布式存儲ceph

簡介 inux gpt dem tro ref 配置 osd spool

分布式存儲ceph

準備:

client50、node51、node52、node53為虛擬機
client50:192.168.4.50  做客戶機,做成NTP服務器 ,其他主機以50為NTP
            //  echo “allow 192.168.4.0/24’ > /etc/chrony.conf
node51:192.168.4.51   加三塊10G的硬盤
node52:192.168.4.52   加三塊10G的硬盤
node53:192.168.4.53   加三塊10G的硬盤
node54:192.168.4.54
搭建源:真機共享mount /iso/rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph
    /var/ftp/ceph/rhceph-2.0-rhel-7-x86_64/MON/
    /var/ftp/ceph/rhceph-2.0-rhel-7-x86_64/OSD/
     /var/ftp/ceph/rhceph-2.0-rhel-7-x86_64/Tools/
cat /etc/hosts   //書寫hosts文件,每臺主機都要有這個配置
    192.168.4.50 client50
    192.168.4.51 node51
    192.168.4.52 node52
    192.168.4.53 node53
#       pscp.pssh 
node51:無密碼連接 client50、node51、node52、node53
ssh-keygen -f /root/.ssh/id_rsa -N ‘’  //非交互式生成密鑰對
將公鑰發給其他主機及自己,實現ssh無密碼登陸
for i in 51 52 53; do ssh-copy-id 192.168.4.$i ; done

分布式文件系統

分布式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接再本地節點上,
而是通過計算機網絡與節點相連
分布式文件系統的設計基於客戶機/服務器(C/S)模式
常用分布式文件系統
    Lustre,Hadoop,FastDFS,Ceph,GlusterFS

Ceph簡介

    有官方(付費)的和開源的
    Ceph 是一個分布式文件系統
    具有高擴展、高可用、高性能的特點
    Ceph 可以提供對象存儲、塊存儲、文件系統存儲
    Ceph 可以提供PB級別的存儲空間(PB-->TB-->-->GB)
    軟件定義存儲(Software Defined Storage)作為存儲,行業的一大發展趨勢
    官網:http://docs.ceph.org/start/intro

Ceph 組件

    OSDs :存儲設備
    Monitors :集群監控組件
    MDSs :存放文件系統的元數據(對象存儲和塊存儲不需要該組件)
            元數據:文件的信息,大小,權限等,即如下信息
            drwxr-xr-x   2 root root    6 10月 11 10:37 /root/a.sh
    Client :ceph客戶端

實驗:

使用node51作為部署主機
     node51:
1.安裝部署軟件:
    yum -y install ceph-deploy   //安裝完成後使用ceph-deploy --help幫助
為部署工具創建目錄,存放密鑰與配置文件
    mkdir /root/ceph-cluster
    cd /root/ceph-cluster
2.創建Ceph集群
創建Ceph集群配置(所有節點都為mon)
    ceph-deploy new node51 node52 node53
給所有節點安裝Ceph軟件包
    ceph-deploy install node51 node52 node53
初始化所有節點的mon(監控程序)服務 (每一臺主機上都配置有/etchosts主機名解析)
    ceph-deploy  mon create-initial
3.創建OSD
-  所有節點準備磁盤分區(以node51為例,node52,node53也要這樣分區)
1)指定用那種分區模式
    parted /dev/vdb mklabel gpt
2)用這個盤的前50%的空間建一個分區,以1M為起點
    parted /dev/vdb mkpart primary 1M 50%
3)用這個盤的後50%的空間建一個分區
    parted /dev/vdb mkpart primary 50% 100%
4)將這兩個分區的所有者和所有組設置為ceph,給集群ceph管理權限
    chown ceph.ceph /dev/vdb1
    chown ceph.ceph /dev/vdb1
    echo ‘chown ceph.ceph /dev/vdb*‘ >> /etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local
註:這兩個分區用來做存儲服務器的日誌journal盤
- 初始化清空磁盤數據(僅在node51上進行管理操作)
    cd /root/ceph-cluster/      //必須再這個目錄下進行操作
    ceph-deploy disk zap node51:vdc node51:vdd
    ceph-deploy disk zap node52:vdc node52:vdd
    ceph-deploy disk zap node53:vdc node53:vdd
- 創建OSD存儲設備(僅在node51上進行管理操作)
    ceph-deploy osd create node51:vdc:/dev/vdb1 
    node51:vdd:/dev/vdb2
        >>Host node51 is now ready for osd use.
    ceph-deploy osd create node52:vdc:/dev/vdb1 node52:vdd:/dev/vdb2
        >>Host node52 is now ready for osd use.
    ceph-deploy osd create node53:vdc:/dev/vdb1 node53:vdd:/dev/vdb2
        >>Host node53 is now ready for osd use.

服務查看

Node51: 有關與ceph的服務
    [email protected]  [email protected]
    ceph-mds.target                    ceph-osd.target
    [email protected]          ceph-radosgw.target
    ceph-mon.target                     ceph.target
    [email protected]               
Node52: 有關與ceph的服務
    [email protected]  [email protected]
    [email protected]        ceph-osd.target
    ceph-mds.target                    ceph-radosgw.target
    [email protected]          ceph.target
    ceph-mon.target                  
Node53: 有關與ceph的服務
    [email protected]  [email protected]
    [email protected]        ceph-osd.target
    ceph-mds.target                    ceph-radosgw.target
    [email protected]          ceph.target
    ceph-mon.target                  

部署ceph集群

>>安裝部署軟件ceph-deploy
>>創建Ceph集群
>>創建OSD存儲空間
>>查看ceph狀態,驗證

塊存儲

    單機塊設備:光盤、磁盤
    分布式塊存儲:ceph、cider
    Ceph塊設備也叫RADOS塊設備
        - RADOS block device:RBD
    Rbd驅動已經很好的集成在了linux內核中
    Rbd提供了企業功能。如快照、COW(Copy Online Write,寫時復制)克隆
    COW對源文件做寫操作時,舊數據會被復制到快照文件裏。當刪除文件或者對文件進行了內容的增加或者
減少,源文件發生了改變,舊的文件就會拷貝到快照裏
    Rbd還支持內存緩存,從而能夠大大提高性能

塊存儲集群

    鏡像池大小,基本存儲為60G,為node51、node52、node53做存儲磁盤的和
    查看存儲池(默認有一個rbd池)
ceph osd lspools
    0 rbd
創建鏡像, ##若不指定存儲池,默認屬於rbd存儲池
        rbd create demo-image --image-feature layering --size 10G
   //鏡像名為demo-image , --image-feature layering(創建鏡像的方式)
 默認在rbd默認的存儲池裏創建
rbd create rbd/image --image-feature layering --size 10G
   //rbd/image 指定在rbd池裏創建

查看鏡像

rbd info demo-image
    rbd image ‘demo-image‘:
        size 10240 MB in 2560 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.1052238e1f29
        format: 2
        features: layering
        flags: 

刪除鏡像

    rbd remove rbd/image
    rbd remove demo-image   //次出僅提供錯誤時的方法,不實際執行
縮小容量    //命令解釋,重置大小為1G 鏡像image 允許縮小
    rbd resize --size 1G image --allow-shrink 
擴大容量    //將容量擴大到2G
    rbd resize --size 2G image

集群內通過rbd訪問

1.node51本機使用,將鏡像映射為本地磁盤

    rbd map demo-image
    lsblk  //查看本地磁盤 
        rbd0   251:0    0   10G  0 disk

2.分區、格式化(分區名為/dev/rbd0p1)、掛載,與本地磁盤無異
3.將鏡像從本地磁盤中移除 //移除前需要將掛載從本機卸載掉

rbd unmap demo-image

集群外客戶機clinet50:通過rbd訪問

    1.安裝ceph-common軟件包
            yum -y install ceph-common.x86_64
    2.拷貝配置文件(指示儲存集群的位置)
            scp 192.168.4.51:/etc/ceph/ceph.conf /etc/ceph/
    3.拷貝連接接密鑰(獲取集群連接及使用的權限)
            scp 192.168.4.51:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
    4.查看集群鏡像
        `
        rbd list
                demo-image
                Image
        `
    5.鏡像映射到本地磁盤
        rbd map image
        lsblk 
    6.顯示本地影射
        rbd showmapped
            id pool image snap device    
            0  rbd  image -  /dev/rbd0 
    7.分區、格式化(分區名為/dev/rbd0p1)、掛載,與本地磁盤無異
    8.撤銷磁盤映射,將鏡像從本地磁盤中移除 //移除前需要將掛載從本機卸載掉
        rbd unmap demo-image
        rbd unmap /dev/rbd/rbd/demo-image  //兩種方法

創建鏡像快照

    快照使用COW技術,對大數據快照速度會很快
     COW對源文件做寫操作時,舊數據會被復制到快照文件裏
    快照:保存某一時刻的所有信息,以備以後恢復使用,創建初期不占用磁盤空間,每當源文件發生改變時,
                就把快照創建時的文件數據寫入快照,這時快照開始占用磁        盤空間,大小為發生改變的文件大小的和。

node51:
查看已有鏡像

    rbd list

查看鏡像快照:

    rbd snap ls image //暫時無顯示

創建快照(snap)

    rbd snap create image --snap image-snap1
    命令解釋:rbd 快照 create 鏡像名 --snap類型 快照名

再次查看鏡像快照

rbd snap ls image
        SNAPID NAME              SIZE 
                    4  image-snap1    2048 MB 

使用快照恢復數據

    rbd snap rollback image --snap image-snap1
    客戶機將鏡像卸載後再重新掛載即可恢復數據

刪除快照

    rbd snap rm image --snap image-snap1

快照克隆

  • 如果想從快照恢復出來一個新的鏡像,可以做克隆
  • 註意,克隆前,需要對快照進行<保護>操作
  • 被保護的快照無法刪除,取消保護
    快照保護:
    rbd snap protect image --snap image-snap1

    快照克隆

    rbd clone image --snap image-snap1 image-clone --image-feature layering

    克隆查看

    rbd info image-clone
    rbd image ‘image-clone‘:
        size 2048 MB in 512 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.108a2ae8944a
        format: 2
        features: layering
        flags: 
        parent: rbd/image@image-snap1
        overlap: 2048 MB

    利用克隆鏡像恢復數據

    rbd flatten image-clone

    取消保護:

    rbd snap unprotect image --snap image-snap1
    客戶端撤銷磁盤映射

    1.卸載掛載點
    2.查看rbd磁盤映射
    Rbd showmapped
    id pool image snap device
    0 rbd image - /dev/rbd0
    3.撤銷磁盤映射
    rbd unmap demo-image
    rbd unmap /dev/rbd/rbd/demo-image //兩種方法

分布式存儲ceph