真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

深入淺出分布式文件存儲系統(tǒng)之Ceph的實現(xiàn)

一、何為分布式文件文件系統(tǒng)
       分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點上,而是通過計算機網(wǎng)絡(luò)與節(jié)點相連,它的設(shè)計是基于客戶端/服務(wù)器模式。

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、馬鞍山網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為馬鞍山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

       深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

        如上圖所示,應(yīng)用服務(wù)器和文件服務(wù)器分別存在于網(wǎng)絡(luò)當(dāng)中,而這里的網(wǎng)絡(luò),可以是統(tǒng)一子網(wǎng),也可以是不同子網(wǎng)。服務(wù)器對文件的存取,均在網(wǎng)絡(luò)進行,這樣就可以突破常用存儲設(shè)備的容量限制。

二、常用分布式文件系統(tǒng)的介紹

        1、Lustre

         lustre是一個大規(guī)模的、安全可靠的,具備高可用性的集群文件系統(tǒng),它是由SUN公司開發(fā)和維護。該項目主要的目的就是開發(fā)下一代的集群文件系統(tǒng),可以支持超過10000個節(jié)點,數(shù)以PB的數(shù)量存儲系統(tǒng)。

        2、Hadoop

         hadoop不僅僅是一個用于存儲的分布式文件系統(tǒng),而其設(shè)計更是用來在由通用計算設(shè)備組成的大型集群上執(zhí)行分布式應(yīng)用的框架。目前主要應(yīng)用于大數(shù)據(jù)、區(qū)塊鏈等領(lǐng)域。

        3、FastDFS

         FastDFS是一個開源的分布式文件系統(tǒng),它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負(fù)載均衡的問題。特別適合以文件為載體的在線服務(wù), 如相冊網(wǎng)站,視頻網(wǎng)站等等。

        4、Ceph

         Ceph是一個具有高擴展、高可用、高性能、可以提供對象存儲、塊存儲、文件存儲的分布式文件系統(tǒng),它可以提供 PD 級別的存儲空間,理論上說,是無上限的。

三、Ceph 介紹

         Ceph是一個具有高擴展、高可用、高性能的分布式存儲系統(tǒng),根據(jù)場景劃分可以將Ceph分為對象存儲、塊設(shè)備存儲和文件系統(tǒng)服務(wù)。在虛擬化領(lǐng)域里,比較常用到的是Ceph的塊設(shè)備存儲,比如在OpenStack項目里,Ceph的塊設(shè)備存儲可以對接OpenStack的cinder后端存儲、Glance的鏡像存儲和虛擬機的數(shù)據(jù)存儲。比較直觀的是Ceph集群可以提供一個raw格式的塊存儲來作為虛擬機實例的硬盤。
         Ceph相比其它存儲的優(yōu)勢點在于它不單單是存儲,同時還充分利用了存儲節(jié)點上的計算能力,在存儲每一個數(shù)據(jù)時,都會通過計算得出該數(shù)據(jù)存儲的位置,盡量將數(shù)據(jù)分布均衡。同時由于Ceph本身的良好設(shè)計,采用了CRUSH算法、HASH環(huán)等方法,使得它不存在傳統(tǒng)的單點故障的問題,且隨著規(guī)模的擴大性能并不會受到影響。

四、Ceph 構(gòu)成

         Ceph的核心構(gòu)成包括:Ceph OSD(對象存出設(shè)備)、Ceph Monitor(監(jiān)視器) 、Ceph MSD(元數(shù)據(jù)服務(wù)器)、Object、PG、RADOS、Libradio、CRUSH、RDB、RGW、CephFS

         OSD:全稱 Object Storage Device,真正存儲數(shù)據(jù)的組件,一般來說每塊參與存儲的磁盤都需要一個 OSD 進程,如果一臺服務(wù)器上又 10 塊硬盤,那么該服務(wù)器上就會有 10 個 OSD 進程。

         MON:MON通過保存一系列集群狀態(tài) map 來監(jiān)視集群的組件,使用 map 保存集群的狀態(tài),為了防止單點故障,因此 monitor 的服務(wù)器需要奇數(shù)臺(大于等于 3 臺),如果出現(xiàn)意見分歧,采用投票機制,少數(shù)服從多數(shù)。

         MDS:全稱 Ceph Metadata Server,元數(shù)據(jù)服務(wù)器,只有 Ceph FS 需要它。

         Object:Ceph 最底層的存儲單元是 Object 對象,每個 Object 包含元數(shù)據(jù)和原始數(shù)據(jù)。

         PG:全稱 Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配數(shù)據(jù)和定位數(shù)據(jù)。

         RADOS:全稱Reliable Autonomic Distributed Object Store,是Ceph集群的精華,可靠自主分布式對象存儲,它是 Ceph 存儲的基礎(chǔ),保證一切都以對象形式存儲。

         Libradio:Librados是Rados提供庫,因為RADOS是協(xié)議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前僅提供PHP、Ruby、Java、Python、C和C++支持。

         CRUSH:是Ceph使用的數(shù)據(jù)分布算法,類似一致性哈希,讓數(shù)據(jù)分配到預(yù)期的地方。

         RBD:全稱 RADOS block device,它是 RADOS 塊設(shè)備,對外提供塊存儲服務(wù)。

         RGW:全稱 RADOS gateway,RADOS網(wǎng)關(guān),提供對象存儲,接口與 S3 和 Swift 兼容。

        CephFS:提供文件系統(tǒng)級別的存儲。

五、Ceph 部署

        1、Ceph拓?fù)浣Y(jié)構(gòu)

        深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

        2、服務(wù)器規(guī)劃

         深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

        3、服務(wù)器環(huán)境準(zhǔn)備

             a、配置主機名、IP地址解析,分別在 6 臺服務(wù)器中執(zhí)行以下命令:        

    [root@ceph-a ~]# echo -e "192.168.20.144 ceph-a" >> /etc/hosts
    [root@ceph-a ~]# echo -e "192.168.20.145 ceph-b" >> /etc/hosts
    [root@ceph-a ~]# echo -e "192.168.20.146 ceph-c" >> /etc/hosts
    [root@ceph-a ~]# echo -e "192.168.20.147 ceph-d" >> /etc/hosts
    [root@ceph-a ~]# echo -e "192.168.20.148 ceph-e" >> /etc/hosts
    [root@ceph-a ~]# echo -e "192.168.20.149 ceph-f" >> /etc/hosts

             b、配置免密登陸

               掃描服務(wù)器 A 到 F的密鑰,其目的主要是避免在進行 ssh 連接或者在后面執(zhí)行 ceph 類命令出現(xiàn) yes/no 的交互,在 Ceph-A 中執(zhí)行以下命令:

    [root@ceph-a ~]# for i in {a..f}; do ssh-keyscan ceph-$i >/root/.ssh/known_hosts; done

               如下圖:

               深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)              

               在 Ceph-A 生成私鑰,在 Ceph-A 中執(zhí)行以下命令:     

    [root@ceph-a ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''

               如圖:

               深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

               說明:-f 參數(shù)指定私鑰文件路徑, -N 參數(shù)聲明該過程為非交互式,也就是不用我們手動按回車鍵等

               將私鑰文件拷貝到 Ceph-B 到 Ceph-F 服務(wù)器中,執(zhí)行以下命令:             

    [root@ceph-a ~]# for i in {b..f}; do ssh-copy-id ceph-$i; done

             c、配置 NTP 網(wǎng)絡(luò)時間同步服務(wù)

               在 6 臺服務(wù)器中安裝 chrony 軟件包,在服務(wù)器 A 執(zhí)行以下命令即可:

    [root@ceph-a ~]# for i in {a..f}; do ssh ceph-$i yum -y install chrony ; done

               配置 Ceph-A 為 NTP 服務(wù)器:

    [root@ceph-a ~]# vim /etc/chrony.conf

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

             如圖,修改圖中的三個部分

             ①、注釋掉默認(rèn)的 NTP 服務(wù)器,添加國內(nèi)的 NTP 服務(wù)器,這里添加的是北京郵電大學(xué)的 NTP 服務(wù)器。

             ②、允許 192.168.20.0/24 網(wǎng)段進行時間同步。

             ③、本地時間服務(wù)器層級,取消注釋即可。

             配置 Ceph-B 到 Ceph-F 服務(wù)器通過 Ceph-A 進行時間同步

    [root@ceph-b ~]# vim /etc/chrony.conf

             深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

             如圖,將圖中紅框內(nèi)(也就是剛才配置的 Ceph-A)的 NTP 服務(wù)器添加進去即可,其他沒用的注釋。

             保存并退出,并將改配置文件復(fù)制到 Ceph-C 到 Ceph-F 中:       

     [root@ceph-b ~]# for i in {c..f}; do scp /etc/chrony.conf ceph-$i:/etc/; done

             重啟 Ceph-A 到 Ceph-F 的 chrony 服務(wù),在 Ceph-A 中執(zhí)行以下命令:

    [root@ceph-a ~]# for i in {a..f}; do ssh ceph-$i systemctl restart chronyd; done

             同步 Ceph-A 的時間

    [root@ceph-a ~]# ntpdate ntp.sjtu.edu.cn

             深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

             同步 Ceph-B 到 Ceph-F 的時間,在 Ceph-A 中執(zhí)行即可:           

    [root@ceph-a ~]# for i in {b..f}; do ssh ceph-$i ntpdate 192.168.20.144; done

             深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

        4、配置 yum 源

          之前我們有部署本地 yum 倉庫,這里,我們使用之前配置的 yum 倉庫。

          移除系統(tǒng)自帶的 repo 文件,編輯 /etc/yum.repos.d/localhost.repo 文件,將下面內(nèi)容添加到該文件中:

    [Centos-Base]
   name=Centos-Base-Ceph
   baseurl=http://192.168.20.138
   enable=1
   gpgcheck=1
   priority=2
   type=rpm-md
   gpgkey=http://192.168.20.138/ceph-key/release.asc

         清空元數(shù)據(jù)緩存并重建

     [root@ceph-a ~]# yum clean all
     [root@ceph-a ~]# yum makecache

        5、安裝 Ceph 服務(wù),這里將 Ceph-A 做為 admin 管理端

           a、在 Ceph-A 中安裝 ceph-deploy       

     [root@ceph-a ~]# yum -y install ceph-deploy

           b、在 Ceph-A 中創(chuàng)建 ceph 的工作目錄并進入

     [root@ceph-a ~]# mkdir /etc/ceph && cd /etc/ceph

           c、Ceph-A 到 Ceph-C 中創(chuàng)建集群節(jié)點配置文件,Ceph-D 到 Ceph-F 服務(wù)器暫有他用,以下操作,均不涉及在內(nèi)。         

     [root@ceph-a ~]# ceph-deploy new ceph-{a..c}

           如圖:

           深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

           d、在 Ceph-A 到 Ceph-C 三個節(jié)點中安裝 ceph 軟件包         

     [root@ceph-a ceph]# ceph-deploy install ceph-{a..c}

           如圖:

           深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

           e、初始化 mon 服務(wù)

     [root@ceph-a ceph]# ceph-deploy mon create-initial

           如圖:

           深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

           f、創(chuàng)建 OSD 設(shè)備

              在服務(wù)器規(guī)劃中,我們一共規(guī)劃了 4 塊硬盤,其中 sda 用作系統(tǒng)盤,那么還剩下 sdb、sdc、sdd 三塊硬盤,這里,我們將 sdb 硬盤做為日志盤,而 sdc 和 sdd 做為數(shù)據(jù)盤。

              ①、將 Ceph-A 到 Ceph-C 的 sdb 硬盤格式化為gpt格式               

     [root@ceph-a ~]# for i in {a..c}; do ssh ceph-$i parted /dev/sdb mklabel gpt; done

                  說明:如果這里這條命令有報錯,則需要把此命令拆分成下面兩條命令,然后分別到 Ceph-A、Ceph-B、Ceph-C中單獨執(zhí)行。

     parted /dev/sdb 
     mklabel gpt

              ②、給硬盤 sdb 創(chuàng)建分區(qū)

     [root@ceph-a ~]# for i in {a..c}; do ssh ceph-$i parted /dev/sdb mkpart primary 1M 50%; done
     [root@ceph-a ~]# for i in {a..c}; do ssh ceph-$i parted /dev/sdb mkpart primary 50% 100%; done

                  分區(qū)成功與否,可以使用 lsblk 命令進行查看:

         [root@ceph-a ~]# lsblk

                 如圖:

                 深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

              ③、為分區(qū) sdb1 和 sdb2 分配屬主屬組為 ceph            

        [root@ceph-a ~]# for i in {a..c}; do ssh ceph-$i chown ceph.ceph /dev/sdb?; done

                注意:此處有可能會出現(xiàn)下面的錯誤              

        [ceph-a][ERROR  ]admin_socket:exception getting command descriptions:[Errno 2]No such file or directory

                解決方案如下:

        編輯 ceph.conf ,在最下面加入如下行:
        public_network = 192.168.20.0/24
        保存并退出,再執(zhí)行以下命令,將配置文件覆蓋推送到三臺服務(wù)器節(jié)點:
        [root@ceph-a ceph]# ceph-deploy --overwrite-conf config push ceph-a ceph-b ceph-c

              ④、此時,我們可以查看一下 ceph 狀態(tài),使用命令 ceph health  或者 ceph -s           

        [root@ceph-a ceph]# ceph health

                正常情況下會輸出 HEALTH_OK ,如果不是,有可能會有以下情況

        ceph:health_warn clock skew detected on mon

                出現(xiàn)此錯誤,說明我們的服務(wù)器時間同步有問題,我們可以先進行時間同步               

        [root@ceph-a ~]# for i in {b..f}; do ssh ceph-$i ntpdate 192.168.20.144; done

                如果時間同步后,還是沒有解決,則使用以下解決辦法:

        [root@ceph-a ceph]# vim ceph.conf
        在global字段下添加:
        mon clock drift allowed = 2
        mon clock drift warn backoff = 30    
        2、向需要同步的 mon 節(jié)點推送配置文件:
        [root@ceph-a ceph]# ceph-deploy --overwrite-conf config push ceph-a ceph-b ceph-c
        這里是向Ceph-A、Ceph-B、Ceph-C推送,也可以后跟其它不連續(xù)節(jié)點
        3. 重啟 mon 服務(wù)(centos7環(huán)境下)
        [root@ceph-a ceph]# for i in {a..c}; do ssh ceph-$i systemctl restart ceph-mon.target; done
        4.驗證:
        [root@ceph-a ceph]# ceph health
        顯示 OK ,就說明正常了

                 使用 ceph -s 查看狀態(tài)時,也有可能會出現(xiàn)下面情況:

                 如圖:

                 深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

                 如圖紅框中所示,no active mgr,這種情況,需要我們手動創(chuàng)建管理進程,解決方案如下

     [root@ceph-a ceph]# ceph-deploy mgr create ceph-{a..c}

                 再次查看狀態(tài),如下圖

                 深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

                 發(fā)現(xiàn)變成了application not enabled on 1 pool(s),這種情況,我們要執(zhí)行

     [root@ceph-a ceph]# ceph osd pool application enable cephrbd image

                cephrbd:為我們手動創(chuàng)建的 pool

                image:為我們手動創(chuàng)建的鏡像

                再次查看狀態(tài)

                深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

                發(fā)現(xiàn)已經(jīng)變成 OK ,表示正常

              ⑤、初始化 sdc、sdd 硬盤,清空硬盤數(shù)據(jù)              

        [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy disk zap ceph-$i /dev/sdc; done
        [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy disk zap ceph-$i /dev/sdd; done

                如圖:

                深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

                注意:在 13.2.0 之前的版本中,應(yīng)使用以下命令:    

        [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy disk zap ceph-$i:/dev/sdc ceph-$i:/dev/sdd; done

                但是上面的命令在本例 13.2.2 版本不適合,否則,會有下面的報錯,這個坑,花了好長時間,才發(fā)現(xiàn)是命令格式錯誤(官方文檔也一樣,不是最新版的,很多地方并不適用于最新版)

                深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

              ⑥、創(chuàng)建 OSD 存儲空間,這里把 sdb1 做為 sdc 的日志盤,把 sdb2 做為 sdd 的日志盤

         [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 ceph-$i; done
         [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy osd create --data /dev/sdd --journal /dev/sdb2 ceph-$i; done

                  如圖:

                  深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

                  --data:指定數(shù)據(jù)盤

                  --journal:指定日志盤

                  此處也存在命令格式問題,如果是 13.2.0 之前的版本,則使用下面命令:               

         [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy osd create ceph-$i:sdc:/dev/sdb1; done
         [root@ceph-a ceph]# for i in {a..c}; do ceph-deploy osd create ceph-$i:sdc:/dev/sdb1; done

                 如果在本例中使用上面命令,則會報以下錯誤,如圖

                 深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

        經(jīng)過上述步驟,我們的 Ceph 算是安裝完成,下面,我們簡單的說下 Ceph 應(yīng)用,更詳細(xì)的應(yīng)用后期章節(jié)再進行解析。

六、使用 RBD(RADOS 塊設(shè)備)

        1、首先,我們了解一下 Ceph 的存儲方式,Ceph 共支持三種存儲方式:

           a、塊存儲,這也是使用最多的存儲方式。

           b、CephFS:這種存儲方式了解就行,不建議在生產(chǎn)環(huán)境中使用,因為還不夠成熟。

           c、對象存儲:該存儲方式也是了解就行,現(xiàn)階段還不夠成熟穩(wěn)定。僅支持 OpenStack Swift 和 Amazon S3 兩種接口,后期有需要,我們再講解。

        2、其次,我們了解一下什么是 ceph 塊存儲:      

           a、Ceph 塊設(shè)備也叫做 RADOS 設(shè)備,即:RADOS block device(RBD)。

           b、RBD 驅(qū)動已經(jīng)很好的集成在 Linux 內(nèi)核中。

           c、RBD 提供了企業(yè)功能,如快照、COW克隆等等。

           d、RBD 還支持內(nèi)存緩存,從而能夠大大提高性能。

           e、Linux 內(nèi)核可以直接房訪問 Ceph 塊存儲。

           f、KVM 可用借助于 librdb 訪問。

        3、使用 RBD

           ①、查看存儲池             

    [root@ceph-a ceph]# ceph osd lspools

             一般來說,都會有一個默認(rèn)的 0 號存儲池,但是呢,在小弟在這里查看的時候,卻沒有默認(rèn)的 0 號存儲池,不知道是不是官方已將其移除,還需后續(xù)繼續(xù)觀察。

           ②、創(chuàng)建 ceph OSD 存儲池             

    [root@ceph-a ~]# ceph osd pool create cephrbd 512

              如圖:

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

              這里,cephrbd 是存儲池的名稱。             

                   ● 通常在創(chuàng)建pool之前,需要覆蓋默認(rèn)的pg_num,官方推薦:

                   ● 若少于5個OSD, 設(shè)置 pg_num 為128。

                   ●5~10個OSD,設(shè)置 pg_num 為512。

                   ● 10~50個OSD,設(shè)置 pg_num 為4096。

                   ● 超過50個OSD,可以參考 pgcalc計算。

           ③、創(chuàng)建名為 image 的鏡像,大小為10G              

    [root@ceph-a ~]# rbd create cephrbd/image --image-feature layering --size 10G

              cephrbd/image:表示在存儲池 cephrbd 中創(chuàng)建 image 的鏡像

              --image-feature:該選項指定使用特性,不用全部開啟。我們的需求僅需要使用快照、分層存儲等特性,開啟layering即可

           ④、查看 cephrbd 存儲池中是否有鏡像存在             

    [root@ceph-a ~]# rbd ls cephrbd

              如圖:

                深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

           ⑤、查看鏡像信息         

    [root@ceph-a ~]# rbd info cephrbd/image

              如圖:

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

           ⑥、編寫 UDEV 規(guī)則,使得 sdb1和 sdb2 重啟后,屬組屬主任然是 ceph

       [root@ceph-a ~]# vim /etc/udev/rules.d/87-cephdisk.rules
       ACTION=="add",KERNEL=="sdb?",OWNER="ceph",GROUP="ceph"

              將規(guī)則拷貝到 Ceph-B 和 Ceph-C

       [root@ceph-a ~]# for i in {b..c}; do scp /etc/udev/rules.d/87-cephdisk.rules ceph-$i:/etc/udev/rules.d/; done

         4、鏡像操作

   ①、擴容容量

       [root@ceph-a ~]# rbd resize --size 15G cephrbd/image

              將 image 鏡像擴容到15G

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

   ②、縮小容量

       [root@ceph-a ~]# rbd resize --size 11G cephrbd/image --allow-shrink

               將image 鏡像容量縮小至11G

           深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)  

         ③、刪除鏡像

    [root@ceph-f ceph]# rbd rm cephrbd/demo-img

         5、使用 Ceph 客戶端

           在這里,我們將 Ceph-F 服務(wù)器做為 Ceph 客戶端,并將之前創(chuàng)建的鏡像 image 映射到 Ceph-F 做為磁盤使用。

           a、在 Ceph-F 安裝 Ceph 客戶端軟件

    [root@ceph-f ~]# yum -y install ceph-common

           b、將 Ceph-A 的 ceph.conf 和 ceph.client.admin.keyring 拷貝到 Ceph-F

    [root@ceph-a ceph]# scp ceph.c* ceph-f:/etc/ceph

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

              ceph.client.admin.keyring  是 client.admin 用戶的密鑰文件

           c、查看狀態(tài)

    [root@ceph-f ~]# ceph -s

深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

           d、映射鏡像到本地

    [root@ceph-f ceph]# rbd map cephrbd/image

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

          e、查看映射磁盤的信息

    [root@ceph-f ceph]# rbd showmapped

            深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

          f、格式化、掛載 /dev/rbd0

            ①、格式化 /dev/rbd0

    [root@ceph-f ceph]# mkfs.ext4 /dev/rbd0

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

            ②、將 /dev/rbd0 掛載到 /image,并添加開機自動掛載

    [root@ceph-f ceph]# mkdir /image
    [root@ceph-f ceph]# mount /dev/rbd0 /image
    [root@ceph-f ceph]# echo -e "/dev/rbd0 /image ext4 defaults 0 0" >> /etc/fstab

          g、往 /image 中寫入數(shù)據(jù),并查看數(shù)據(jù)是否寫入成功

    [root@ceph-f ceph]# echo "hello world" >/image/log.txt
    [root@ceph-f ceph]# cat /image/log.txt

          h、創(chuàng)建鏡像快照,為 image 鏡像創(chuàng)建 image-sn1 的快照

    [root@ceph-f ceph]# rbd snap create cephrbd/image --snap image-sn1

          i、查看 image 快照

    [root@ceph-f ceph]# rbd snap ls cephrbd/image

深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)            深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

          j、刪除鏡像快照          

    [root@ceph-f ceph]# rbd snap remove cephrbd/image@image-sn1

          k、鏡像快照操作

            ①、通過快照進行數(shù)據(jù)恢復(fù)

               刪除 /iamge/log.txt 文件

    [root@ceph-f ceph]# rm -rf /image/log.txt

               卸載掛載點

     [root@ceph-f ceph]# umount /dev/rbd0

              使用 image-sn1 還原快照

    [root@ceph-f ceph]# rbd snap rollback cephrbd/image --snap image-sn1

              再掛載 /dev/rbd0,查看文件是否存在

    [root@ceph-f ceph]# mount /dev/rbd0 /image
    [root@ceph-f ceph]# ll /image/

            ②、快照克隆

              如果你想從快照恢復(fù)出一個新的鏡像,則可以使用快照克隆

              注意:克隆前,需要對快照進行<保護>(protect)操作,被保護的快照無法刪除,取消保護(unprotect)

    [root@ceph-f ceph]# rbd snap protect cephrbd/image --snap image-sn1

              嘗試刪除剛才保護的快照

    [root@ceph-f ceph]# rbd snap remove cephrbd/image@image-sn1

              深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)             如上圖,快照無法刪除

             克隆 image-sn1 快照,克隆的名稱為 image-clone

    [root@ceph-f ceph]# rbd clone cephrbd/image --snap image-sn1 cephrbd/image-clone --image-feature layering

            查看克隆快照的狀態(tài)

    [root@ceph-f ceph]# rbd info cephrbd/image-clone

深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)            深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

            紅框中內(nèi)容說明是:池 cephrbd 的鏡像 image 的快照 image-sn1 的克隆

          ③、合并克隆文件

    [root@ceph-f ceph]# rbd flatten cephrbd/image-clone

             深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

            查看合并后的信息

    [root@ceph-f ceph]# rbd info cephrbd/image-clone

深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)            深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

            由上圖,我們發(fā)現(xiàn)它已經(jīng)變?yōu)橐粋€獨立的鏡像了

            查看 cephrbd 池中的鏡像

    [root@ceph-f ceph]# rbd ls cephrbd

深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)            深入淺出分布式文件存儲系統(tǒng)之 Ceph 的實現(xiàn)

          ④、取消映射

      [root@ceph-f ceph]# rbd unmap /dev/rbd/cephrbd/image

          關(guān)于 Ceph 更多的應(yīng)用,小弟會在后期文章中進行細(xì)述,今天,我們就到此結(jié)束。

          關(guān)于 Ceph 塊設(shè)備的應(yīng)用,請參閱小弟的另外一篇博文:https://blog.51cto.com/4746316/2330070

          關(guān)于 CephFS 文件系統(tǒng)的應(yīng)用,請參閱小弟的另外一篇博文:https://blog.51cto.com/4746316/2330186

          關(guān)于 Ceph 對象存儲,請參閱小弟的另外一篇博文:https://blog.51cto.com/4746316/2330455

七、Ceph 部署總結(jié)

       Ceph 的部署,總體來說還是比較簡單,雖然說,看似簡單,但是越簡單的東西,我們更加需要重視,因為我們認(rèn)為越簡單的地方,才是我們在日常運維中越容易踩坑的地方。就比如,上面部署過程中,遇到的幾個問題,就連官方文檔中都沒有體現(xiàn)出來,導(dǎo)致小弟在填坑時花了不少心思,但好歹還是找出問題所在了。


網(wǎng)站欄目:深入淺出分布式文件存儲系統(tǒng)之Ceph的實現(xiàn)
網(wǎng)頁鏈接:http://weahome.cn/article/jdhehi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部