日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

企业分布式存储

發(fā)布時(shí)間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 企业分布式存储 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分布存儲(chǔ)

1.分布存儲(chǔ)概述

1.1 存儲(chǔ)分類:

  • 開(kāi)源與商業(yè):
  • 商業(yè)存儲(chǔ): 一套硬件設(shè)備40w左右 (商業(yè)解決方案-EMC、NetAPP、戴爾、華為、浪潮)
  • 開(kāi)源存儲(chǔ):前期準(zhǔn)備(服務(wù)器,穩(wěn)定性,可用性,后期維護(hù)成本、人員、設(shè)備維護(hù),分布式存儲(chǔ):Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS)
    • 單機(jī)存儲(chǔ):

    SCSI/SAS/USB/PCI-E、SSD/NVME(提升性能)

    • 網(wǎng)絡(luò)存儲(chǔ)(帶文件系統(tǒng)):

    NFS/Samba/NAS

    SAN:SAN(Storage Area Network,存儲(chǔ)區(qū)域網(wǎng)絡(luò))

    **SAN存儲(chǔ)設(shè)備通過(guò)光纖連接,而NAS存儲(chǔ)設(shè)備通過(guò)TCP/IP連接。**由于這個(gè)原因,SAN通常用于高級(jí)解決方案,而NAS解決方案更易于家庭用戶或小型企業(yè)使用。為了通過(guò)SAN連接,設(shè)備必須能夠使用SCSI光纖通道。相比之下,NAS比較簡(jiǎn)單,任何東西都可以通過(guò)以太網(wǎng)連接到NAS解決

    單機(jī)磁盤(pán)的空間問(wèn)題、IO 問(wèn)題、高可用問(wèn)題

    服務(wù)分為讀數(shù)據(jù)和寫(xiě)數(shù)據(jù),讀可以在任何一個(gè)節(jié)點(diǎn)讀,但是寫(xiě)只能寫(xiě)在特定的節(jié)點(diǎn),如 Redis 的 master、zookeeper 的 leader、MySQL 的 master 等場(chǎng)景。

    1.2數(shù)據(jù)分類及存儲(chǔ)分類:

    數(shù)據(jù)分為元數(shù)據(jù)和數(shù)據(jù):

    • 數(shù)據(jù):實(shí)際數(shù)據(jù)

    • 元數(shù)據(jù) :元數(shù)據(jù)即是文件的屬性信息(文件名、權(quán)限(屬主、屬組)、大小、更新時(shí)間等),

    分布式存儲(chǔ)的實(shí)現(xiàn):

    有一種路由機(jī)制,即當(dāng)客戶端或者應(yīng)用程序產(chǎn)生的客戶端數(shù)據(jù)被寫(xiě)入到分布式存儲(chǔ)系統(tǒng)

    的時(shí)候,會(huì)有一個(gè)服務(wù)(NameNode)提供文件元數(shù)據(jù)的路由功能,即告訴應(yīng)用程序去哪個(gè)服

    務(wù)器去請(qǐng)求文件內(nèi)容,然后再有(DataNode)提供數(shù)據(jù)的讀寫(xiě)請(qǐng)求及數(shù)據(jù)的高可用功能。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-WK2YnPoZ-1640169458466)(企業(yè)存儲(chǔ).assets/image-20211213165030762.png)]

    ? 圖一傳統(tǒng)式

    1.3 存儲(chǔ)方式

    • 塊存儲(chǔ):需要格式化,將文件直接保存到磁盤(pán)上。

    • 文件存儲(chǔ):提供數(shù)據(jù)存儲(chǔ)的接口,是由操作系統(tǒng)針對(duì)塊存儲(chǔ)的應(yīng)用,即由操作系統(tǒng)提供存儲(chǔ)

      接口,應(yīng)用程序通過(guò)調(diào)用操作系統(tǒng)將文件保存到塊存儲(chǔ)進(jìn)行持久化。

    • 對(duì)象存儲(chǔ):也稱為基于對(duì)象的存儲(chǔ),其中的文件被拆分成多個(gè)部分并散布在多個(gè)存儲(chǔ)服務(wù)器,

      在對(duì)象存儲(chǔ)中,數(shù)據(jù)會(huì)被分解為稱為“對(duì)象”的離散單元,并保存在單個(gè)存儲(chǔ)庫(kù)中,而不是

      作為文件夾中的文件或服務(wù)器上的塊來(lái)保存,對(duì)象存儲(chǔ)需要一個(gè)簡(jiǎn)單的 HTTP 應(yīng)用編程接

      口 (API),以供大多數(shù)客戶端(各種語(yǔ)言)使用。

    Ceph 是一個(gè)開(kāi)源的分布式存儲(chǔ)系統(tǒng),包括對(duì)象存儲(chǔ)、塊設(shè)備、文件系統(tǒng)

    ceph 是一個(gè)對(duì)象(object)式存儲(chǔ)系統(tǒng),它把每一個(gè)待管理的數(shù)據(jù)流(文件等數(shù)據(jù))切分為一到多

    個(gè)固定大小(默認(rèn) 4 兆)的對(duì)象數(shù)據(jù),并以其為原子單元(原子是構(gòu)成元素的最小單元)完成數(shù)

    據(jù)的讀寫(xiě)。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-Ev18PEmy-1640169458467)(企業(yè)存儲(chǔ).assets/image-20211213233119404.png)]

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-LPJRUJo9-1640169458468)(企業(yè)存儲(chǔ).assets/image-20211213234004529.png)]

    2 Ceph 簡(jiǎn)介

    Ceph 是一個(gè)開(kāi)源的分布式存儲(chǔ)系統(tǒng),包括對(duì)象存儲(chǔ)、塊設(shè)備、文件系統(tǒng)

    ceph 是一個(gè)對(duì)象(object)式存儲(chǔ)系統(tǒng),它把每一個(gè)待管理的數(shù)據(jù)流(文件等數(shù)據(jù))切分為一到多

    個(gè)固定大小(默認(rèn) 4 兆)的對(duì)象數(shù)據(jù),并以其為原子單元(原子是構(gòu)成元素的最小單元)完成數(shù)

    據(jù)的讀寫(xiě)。

    對(duì)象數(shù)據(jù)的底層存儲(chǔ)服務(wù)是由多個(gè)存儲(chǔ)主機(jī)(host)組成的存儲(chǔ)集群,該集群也被稱之為

    RADOS(reliable automatic distributed object store)存儲(chǔ)集群,即可靠的、自動(dòng)化的、分布式的

    對(duì)象存儲(chǔ)系統(tǒng)。

    2.1ceph的構(gòu)成

    • Pool:存儲(chǔ)池、分區(qū),存儲(chǔ)池的大小取決于底層的存儲(chǔ)空間。

    • PG(placement group):一個(gè) pool 內(nèi)部可以有多個(gè) PG 存在,pool 和 PG 都是抽象的邏輯概念,一個(gè) pool 中有多少個(gè) PG 可以通過(guò)公式計(jì)算。

    • OSD(Object Storage Daemon):每一塊磁盤(pán)叫做 osd,多個(gè) osd 組成一個(gè)主機(jī)

    • librados 是 RADOS 存儲(chǔ)集群的 API,支持 C/C++/JAVA/python/ruby/php 等編程語(yǔ)言客戶端調(diào)用。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-e7l63hZV-1640169458468)(企業(yè)存儲(chǔ).assets/image-20211214001117468.png)]

    存儲(chǔ)池要先創(chuàng)建才能往 ceph 保存數(shù)據(jù),文件在向 ceph 保存之前要先進(jìn)行一致性 hash 計(jì)算,

    計(jì)算后會(huì)把文件保存在某個(gè)對(duì)應(yīng)的 PG 的,某個(gè)文件一定屬于某個(gè) pool 的 PG,在通過(guò) PG

    保存在 OSD 上。

    數(shù)據(jù)對(duì)象在寫(xiě)到主 OSD 之后再同步到從 OSD 以實(shí)現(xiàn)數(shù)據(jù)的高可用。

    存儲(chǔ)過(guò)程:

    第一步:把文件對(duì)象映射給 PG

    第二步: 把文件對(duì)象映射到OSD,

    第三步:通過(guò) OSD 寫(xiě)入到硬盤(pán)

    監(jiān)視器 mon 維護(hù) OSD 和 PG 的集群狀態(tài),

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-t8kR3F3l-1640169458469)(企業(yè)存儲(chǔ).assets/image-20211214002218870.png)]

    2.2 ceph 集群基礎(chǔ):

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-uljycOht-1640169458469)(企業(yè)存儲(chǔ).assets/image-20211214002430009.png)]

    一個(gè) ceph 集群的組成部分:

  • 若干的 Ceph OSD(對(duì)象存儲(chǔ)守護(hù)程序) 實(shí)際的服務(wù)器
  • 兩個(gè)或以上的 Ceph 管理器 managers,運(yùn)行 Ceph 文件系統(tǒng)客戶端時(shí),還需要高可用的 Ceph Metadata Server(文件系統(tǒng)元數(shù)據(jù)服務(wù)器)。負(fù)責(zé)跟蹤運(yùn)行時(shí)指標(biāo)和 Ceph 集群的當(dāng)前狀態(tài),包括存儲(chǔ)利用率,當(dāng)前性能 指標(biāo)和系統(tǒng)負(fù)載等。 可以兼容普羅米修斯
  • RADOS cluster:由多臺(tái) host 存儲(chǔ)服務(wù)器組成的 ceph 集群。 RADOS (Reliable, Autonomic Distributed Object Store) 是Ceph的核心之一,作為Ceph分布式文件系統(tǒng)的一個(gè)子項(xiàng)目,特別為Ceph的需求設(shè)計(jì),能夠在動(dòng)態(tài)變化和異質(zhì)結(jié)構(gòu)的存儲(chǔ)設(shè)備機(jī)群之上提供一種穩(wěn)定、可擴(kuò)展、高性能的單一邏輯對(duì)象(Object)存儲(chǔ)接口和能夠?qū)崿F(xiàn)節(jié)點(diǎn)的自適應(yīng)和自管理的存儲(chǔ)系統(tǒng)
  • OSD(Object Storage Daemon):每臺(tái)存儲(chǔ)服務(wù)器的磁盤(pán)組成的存儲(chǔ)空間
  • Mon(Monitor):ceph 的監(jiān)視器,維護(hù) OSD 和 PG 的集群狀態(tài),一個(gè) ceph 集群至少要有一個(gè)mon,可以是一三五七等等這樣的奇數(shù)個(gè)。
  • 2.2.1 Monitor(ceph-mon):ceph 監(jiān)視器

    在一個(gè)主機(jī)上運(yùn)行的一個(gè)守護(hù)進(jìn)程,用于維護(hù)集群狀態(tài)映射(maintains maps of the cluster state),比如 ceph 集群中有多少存儲(chǔ)池、每個(gè)存儲(chǔ)池有多少 PG 以及存儲(chǔ)池和 PG 的映 射關(guān)系等, monitor map, manager map, the OSD map, the MDS map, and the CRUSH map,這 些映射是 Ceph 守護(hù)程序相互協(xié)調(diào)所需的關(guān)鍵群集狀態(tài),此外監(jiān)視器還負(fù)責(zé)管理守護(hù)程序和 客戶端之間的身份驗(yàn)證(認(rèn)證使用 cephX 協(xié)議)。通常至少需要三個(gè)監(jiān)視器才能實(shí)現(xiàn)冗余和高 可用性

    2.2.2 Managers(ceph-mgr)的功能:

    在一個(gè)主機(jī)上運(yùn)行的一個(gè)守護(hù)進(jìn)程,Ceph Manager 守護(hù)程序(ceph-mgr)負(fù)責(zé)跟蹤運(yùn) 行時(shí)指標(biāo)和 Ceph 集群的當(dāng)前狀態(tài),包括存儲(chǔ)利用率,當(dāng)前性能指標(biāo)和系統(tǒng)負(fù)載。Ceph Manager 守護(hù)程序還托管基于python 的模塊來(lái)管理和公開(kāi) Ceph 集群信息,包括基于 Web 的 Ceph 儀表板和 REST API。高可用性通常至少需要兩個(gè)管理器。

    2.2.3 Ceph OSDs(對(duì)象存儲(chǔ)守護(hù)程序 ceph-osd):

    提供存儲(chǔ)數(shù)據(jù),一個(gè)磁盤(pán)就是一個(gè) OSD,因此一個(gè)服務(wù)器的 OSD 不能超過(guò)磁盤(pán)的總數(shù), OSD 用于處理 ceph 集群數(shù)據(jù)復(fù)制,恢復(fù),重新平衡,并通過(guò)檢查其他 Ceph OSD 守護(hù)程序的 心跳來(lái)向 Ceph 監(jiān)視器和管理器提供一些監(jiān)視信息。通常至少需要 3 個(gè) Ceph OSD 才能實(shí)現(xiàn) 冗余和高可用性。

    2.2.4 MDS(ceph 元數(shù)據(jù)服務(wù)器,ceph-mds):

    代表 ceph文件系統(tǒng)(NFS/CIFS)存儲(chǔ)元數(shù)據(jù),(即 Ceph塊設(shè)備和 Ceph對(duì)象存儲(chǔ)不使用 MDS)

    2.2.5 Ceph 的管理節(jié)點(diǎn):

    1.ceph 的常用管理接口是一組命令行工具程序,例如 rados、ceph、rbd 等命令,ceph 管理

    員可以從某個(gè)特定的 ceph-mon 節(jié)點(diǎn)執(zhí)行管理操作

  • 推薦使用部署專用的管理節(jié)點(diǎn)對(duì) ceph 進(jìn)行配置管理、升級(jí)與后期維護(hù),方便后期權(quán)限管
  • 理,管理節(jié)點(diǎn)的權(quán)限只對(duì)管理人員開(kāi)放,可以避免一些不必要的誤操作的發(fā)生。

    2.3 元數(shù)據(jù)的保存方式

    Ceph 對(duì)象數(shù)據(jù)的元數(shù)據(jù)信息放在哪里呢? 對(duì)象數(shù)據(jù)的元數(shù)據(jù)以 key-value 的形式存在, 在RADOS 中有兩種實(shí)現(xiàn):xattrs 和 omap:

    ceph 可選后端支持多種存儲(chǔ)引擎,比如 filestore,kvstore,memstore,目前是以 kvstore 的 形式存儲(chǔ)對(duì)象數(shù)據(jù)的元數(shù)據(jù)信息。

    2.3.1: xattr 擴(kuò)展屬性

    是將元數(shù)據(jù)保存在對(duì)象對(duì)應(yīng)文件數(shù)據(jù)中并保存到系統(tǒng)磁盤(pán)上,這要求支持對(duì)象存儲(chǔ)的 本地文件系統(tǒng)(一般是 XFS)支持?jǐn)U展屬性。元數(shù)據(jù)和數(shù)據(jù)放一起

    2.3.2 omap(object map 對(duì)象映射):

    omap:是 object map 的簡(jiǎn)稱,是將元數(shù)據(jù)保存在本地文件系統(tǒng)之外的獨(dú)立 key-value 存儲(chǔ) 系統(tǒng)中,在使用 filestore 時(shí)是 leveldb,在使用 bluestore 時(shí)是 rocksdb,由于 filestore 存 在功能問(wèn)題(需要將磁盤(pán)格式化為 XFS 格式)及元數(shù)據(jù)高可用問(wèn)題等問(wèn)題,因此在目前 ceph 主要使用 bluestore。

    2.3.2.1 filestoreleveldb

    ceph 早期基于 filestore 使用 google 的 levelDB 保存對(duì)象的元數(shù)據(jù),LevelDb 是一個(gè)持久化存 儲(chǔ)的 KV 系統(tǒng),和 Redis 這種內(nèi)存型的 KV 系統(tǒng)不同,LevelDb 不會(huì)像 Redis 一樣將數(shù)據(jù)放在內(nèi)存從而占用大量的內(nèi)存空間,而是將大部分?jǐn)?shù)據(jù)存儲(chǔ)到磁盤(pán)上,但是需要把磁盤(pán)上的 levelDB 空間格式化為文件系統(tǒng)(XFS).

    FileStore 將數(shù)據(jù)保存到與 Posix 兼容的文件系統(tǒng)(例如 Btrfs、XFS、Ext4)。在 Ceph 后端使用傳 統(tǒng)的 Linux 文件系統(tǒng)盡管提供了一些好處,但也有代價(jià),如性能、 對(duì)象屬性與磁盤(pán)本地文 件系統(tǒng)屬性匹配存在限制等

    filestore 數(shù)據(jù)寫(xiě)入的過(guò)程

    1. 先把要寫(xiě)入的數(shù)據(jù)全部封裝成一個(gè)事務(wù),其整理作為一條日志,寫(xiě)入日志磁盤(pán)(一般把 日志放在 ssd 上提高性 能),這個(gè)過(guò)程叫日志的提交(journalsubmit)。2. 把數(shù)據(jù)寫(xiě)入對(duì)象文件的磁盤(pán)中(也就是 OSD 的磁盤(pán)中),這個(gè)過(guò)程叫日志的應(yīng)用(journal apply)。這個(gè)過(guò)程不一定寫(xiě)入磁盤(pán),有可能緩存在本地文件系統(tǒng)的 page cache 中。 當(dāng)系統(tǒng)在日志提交的過(guò)程中出錯(cuò),系統(tǒng)重啟后,直接丟棄不完整的日志條目,該條日志對(duì)應(yīng) 的實(shí)際對(duì)象數(shù)據(jù)并沒(méi)有修改,數(shù)據(jù)保證了一致性。當(dāng)日志在應(yīng)用過(guò)程中出錯(cuò),由于日志已寫(xiě) 入到磁盤(pán)中,系統(tǒng)重啟后,重放(replay)日志,這樣保證新數(shù)據(jù)重新完整的寫(xiě)入,保證了 數(shù)據(jù)的一致性

    filestore 日志的三個(gè)階段

    日志的提交(journal submit):日志寫(xiě)入日志磁盤(pán)。 日志的應(yīng)用(journal apply):日志對(duì)應(yīng)的修改更新到對(duì)象的磁盤(pán)文件中。這個(gè)過(guò)程不一定寫(xiě)入 磁盤(pán),有可能緩存在本地文件系統(tǒng)的 page cache 中。 日志的同步(journal sync 或者 journal commit):確定日志對(duì)應(yīng)的修改操作已經(jīng)刷到磁盤(pán) 中
    2.3.2.2 bluestore rocksdb

    由于 levelDB 依然需要需要磁盤(pán)文件系統(tǒng)的支持,后期 facebok 對(duì) levelDB 進(jìn)行改進(jìn)為 RocksDB,RocksDB 將對(duì)象數(shù)據(jù)的元數(shù)據(jù)保存在 RocksDB,但是 RocksDB 的數(shù)據(jù)又放在哪里呢?放在內(nèi)存怕丟失,放在本地磁盤(pán)但是解決不了高可用,ceph 對(duì)象數(shù)據(jù)放在了每個(gè) OSD 中,那么就在在當(dāng)前 OSD 中劃分出一部分空間,格式化為 BlueFS 文件系統(tǒng)用于保存 RocksDB 中的元數(shù)據(jù)信息(稱為 BlueStore),并實(shí)現(xiàn)元數(shù)據(jù)的高可用, BlueStore 最大的特點(diǎn)是構(gòu)建在裸磁盤(pán)設(shè)備之上,并且對(duì)諸如 SSD 等新的存儲(chǔ)設(shè)備做了很多 優(yōu)化工作。

    #RocksDB:rocksdb 是 facebook 基于 leveldb 開(kāi)發(fā)的一款 kv 數(shù)據(jù)庫(kù),BlueStore 將元數(shù)據(jù)全部 存放至 RocksDB 中,這些元數(shù)據(jù)包括存儲(chǔ)預(yù)寫(xiě)式日志、數(shù)據(jù)對(duì)象元數(shù)據(jù)、Ceph 的 omap 數(shù) 據(jù)信息、以及分配器的元數(shù)據(jù) 。#BlueRocksEnv:這是 RocksDB 與 BlueFS 交互的接口;RocksDB 提供了文件操作的接口 EnvWrapper(Env 封裝器),可以通過(guò)繼承實(shí)現(xiàn)該接口來(lái)自定義底層的讀寫(xiě)操作,BlueRocksEnv 就是繼承自 EnvWrapper 實(shí)現(xiàn)對(duì) BlueFS 的讀寫(xiě)。#BlueFS:BlueFS是BlueStore針對(duì)RocksDB開(kāi)發(fā)的輕量級(jí)文件系統(tǒng),用于存放RocksDB產(chǎn)生的.sst 和.log 等文件。 #BlockDecive:BlueStore 拋棄了傳統(tǒng)的 ext4、xfs 文件系統(tǒng),使用直接管理裸盤(pán)的方式;BlueStore 支持同時(shí)使用多種不同類型的設(shè)備,在邏輯上 BlueStore 將存儲(chǔ)空間劃分為三層:慢速(Slow) 空間、高速(DB)空間、超高速(WAL)空間,不同的空間可以指定使用不同的設(shè)備類型, 當(dāng)然也可使用同一塊設(shè)備

    BlueStore 的設(shè)計(jì)考慮了 FileStore 中存在的一些硬傷,拋棄了傳統(tǒng)的文件系統(tǒng)直接管理裸設(shè) 備,縮短了 IO 路徑,同時(shí)采用 ROW 的方式,避免了日志雙寫(xiě)的問(wèn)題,在寫(xiě)入性能上有了極大的提高。

    2.4 CRUSH 算法簡(jiǎn)介

    Controllers replication under scalable hashing #可控的、可復(fù)制的、可伸縮的一致性 hash 算法

    Ceph 使用 CURSH 算法來(lái)存放和管理數(shù)據(jù),它是 Ceph 的智能數(shù)據(jù)分發(fā)機(jī)制。Ceph 使用 CRUSH 算法來(lái)準(zhǔn)確計(jì)算數(shù)據(jù)應(yīng)該被保存到哪里,以及應(yīng)該從哪里讀取,和保存元數(shù)據(jù)不同的 是,CRUSH 按需計(jì)算出元數(shù)據(jù),因此它就消除了對(duì)中心式的服務(wù)器/網(wǎng)關(guān)的需求,它使得 Ceph 客戶端能夠計(jì)算出元數(shù)據(jù),該過(guò)程也稱為CRUSH 查找,然后和 OSD 直接通信。

    #1.如果是把對(duì)象直接映射到 OSD 之上會(huì)導(dǎo)致對(duì)象與 OSD 的對(duì)應(yīng)關(guān)系過(guò)于緊密和耦合,當(dāng) OSD 由于故障發(fā)生變更時(shí)將會(huì)對(duì)整個(gè) ceph 集群產(chǎn)生影響。#2.于是 ceph 將一個(gè)對(duì)象映射到 RADOS 集群的時(shí)候分為兩步走: 首先使用一致性 hash 算法將對(duì)象名稱映射到 PG 然后將 PG ID 基于 CRUSH 算法映射到 OSD 即可查到對(duì)象#3.以上兩個(gè)過(guò)程都是以”實(shí)時(shí)計(jì)算”的方式完成,而沒(méi)有使用傳統(tǒng)的查詢數(shù)據(jù)與塊設(shè)備的對(duì)應(yīng) 表的方式,這樣有效避免了組件的”中心化”問(wèn)題,也解決了查詢性能和冗余問(wèn)題。使得 ceph 集群擴(kuò)展不再受查詢的性能限制。#4.這個(gè)實(shí)時(shí)計(jì)算操作使用的就是 CRUSH 算法 Controllers replication under scalable hashing #可控的、可復(fù)制的、可伸縮的一致性 hash 算 法。CRUSH 是一種分布式算法,類似于一致性 hash 算法,用于為 RADOS 存儲(chǔ)集群控制數(shù)據(jù)的 分配

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-odDLzHc2-1640169458470)(企業(yè)存儲(chǔ).assets/image-20211214110527709.png)]

    3.部署

    https://github.com/ceph/ceph

    http://docs.ceph.org.cn/install/manual-deployment/ #簡(jiǎn)要部署過(guò)程

    ceph-ansible:https://github.com/ceph/ceph-ansible #python

    ceph-salt:https://github.com/ceph/ceph-salt #python

    ceph-container:https://github.com/ceph/ceph-container #shell

    ceph-chef:https://github.com/ceph/ceph-chef #Ruby

    ceph-deploy:https://github.com/ceph/ceph-deploy #python

    是一個(gè) ceph 官方維護(hù)的基于 ceph-deploy 命令行部署 ceph 集群的工具,基于 ssh 執(zhí)行可以 sudo 權(quán)限的 shell 命令以及一些 python 腳本 實(shí)現(xiàn) ceph 集群的部署和管理維護(hù)。 Ceph-deploy 只用于部署和管理 ceph 集群,客戶端需要訪問(wèn) ceph,需要部署客戶端工具。

    3.1:服務(wù)器準(zhǔn)備:

    http://docs.ceph.org.cn/start/hardware-recommendations/ #硬件推薦

  • 192.168.91.100 admin,osd, mon 作為管理和監(jiān)控節(jié)點(diǎn) 192.168.91.101 osd,mds 192.168.91.102 osd,mds 192.168.91.103 ceph-client   clientceph1作管理. osd. mon節(jié)點(diǎn); ceph2和ceph3作osd mds; ceph-client客戶端;setenforce 0 systemctl stop firewalld sed -i '/^SELINUX=/s/=.*/=disabled/' /etc/selinux/config#前三臺(tái)服務(wù)器增加一塊硬盤(pán)/dev/sdb #創(chuàng)建目錄并掛載到/data/osd{1,2,3};##############前期準(zhǔn)備,主機(jī)名,硬盤(pán),hosts文件,ssh免密登錄################ [root@localhost ~]#hostnamectl set-hostname ceph1 #修改主機(jī)名 [root@localhost ~]#hostnamectl set-hostname ceph2 [root@localhost ~]#hostnamectl set-hostname ceph3 [root@localhost ~]#hostnamectl set-hostname ceph-client [root@localhost ~]#groupadd ceph -g 2021 && useradd -u 2021 -g 2021 ceph && echo "123456" | passwd --stdin ceph #新建ceph用戶和組[root@ceph1 ~]#echo "- - -" > /sys/class/scsi_host/host0/scan [root@ceph1 ~]#echo "- - -" > /sys/class/scsi_host/host1/scan [root@ceph1 ~]#echo "- - -" > /sys/class/scsi_host/host2/scan [root@ceph1 ~]#mkfs.xfs /dev/sdb[root@ceph1 ~]#mkdir -p /data/osd1 [root@ceph1 ~]#mount /dev/sdb /data/osd1/[root@ceph1 ~]#mkdir -p /data/osd2 [root@ceph1 ~]#mount /dev/sdb /data/osd2/[root@ceph1 ~]#mkdir -p /data/osd3 [root@ceph1 ~]#mount /dev/sdb /data/osd3echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan mkfs.xfs /dev/sdb mkdir -p /data/osd1 mount /dev/sdb /data/osd1/[root@ceph1 ~]#vim /etc/hosts #四臺(tái)服務(wù)器全部修改 192.168.91.100 ceph1 192.168.91.101 ceph2 192.168.91.102 ceph3 192.168.91.103 ceph-clientssh免密登錄 [root@ceph1 ~]#ssh-keygen [root@ceph1 ~]#ssh-copy-id ceph1 [root@ceph1 ~]#ssh-copy-id ceph2 [root@ceph1 ~]#ssh-copy-id ceph3 [root@ceph1 ~]#ssh-copy-id ceph-client[root@localhost ~]#yum install epel-release.noarch -y #安裝epel源,必須安裝rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpmsed -e 's!^metalink=!#metalink=!g' \-e 's!^#baseurl=!baseurl=!g' \-e 's!//download\.fedoraproject\.org/pub!//mirrors.tuna.tsinghua.edu.cn!g' \-e 's!http://mirrors\.tuna!https://mirrors.tuna!g' \-i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo[root@ceph1 ~]#yum clean all &&yum -y install ceph-deploy [root@ceph1 ~]#mkdir /etc/ceph && cd /etc/ceph [root@ceph1 ceph]#ceph-deploy new ceph1 [root@ceph1 ceph]#ls ceph.conf ceph-deploy-ceph.log ceph.mon.keyring[root@ceph1 ceph]#echo "osd_pool_default_size = 2" >>/etc/ceph/ceph.conf #配置文件的默認(rèn)副本數(shù)從3改成2

    4.GFS 分布式數(shù)據(jù)系統(tǒng)

    4.1GFS 概述

    GlusterFS 是一個(gè)開(kāi)源的分布式文件系統(tǒng)。 GlusterFS 主要由存儲(chǔ)服務(wù)器(Brick Server)、客戶端及 NFS/Samba 存儲(chǔ)網(wǎng)關(guān)(可選, 根據(jù)需要選擇使用)組成。 GlusterFS 架構(gòu)中最大的設(shè)計(jì)特點(diǎn)是沒(méi)有元數(shù)據(jù)服務(wù)器組件,這有助于提升整個(gè)系統(tǒng)的 性能、可靠性和穩(wěn)定性。 數(shù)據(jù)分為元數(shù)據(jù)和數(shù)據(jù):

    • 數(shù)據(jù):實(shí)際數(shù)據(jù)
    • 元數(shù)據(jù) :元數(shù)據(jù)即是文件的屬性信息(文件名、權(quán)限(屬主、屬組)、大小、更新時(shí)間等)

    傳統(tǒng)的分布式文件系統(tǒng)大多通過(guò)元服務(wù)器來(lái)存儲(chǔ)元數(shù)據(jù),元數(shù)據(jù)包 含存儲(chǔ)節(jié)點(diǎn)上的目錄信息、目錄結(jié)構(gòu)等。這樣的設(shè)計(jì)在瀏覽目錄時(shí)效率非常高,但是也存在 一些缺陷,例如單點(diǎn)故障。一旦元數(shù)據(jù)服務(wù)器出現(xiàn)故障,即使節(jié)點(diǎn)具備再高的冗余性,整個(gè) 存儲(chǔ)系統(tǒng)也將崩潰。 而 GlusterFS 分布式文件系統(tǒng)是基于無(wú)元服務(wù)器的設(shè)計(jì),數(shù)據(jù)橫向擴(kuò)展 能力強(qiáng),具備較高的可靠性及存儲(chǔ)效率

    GlusterFS同時(shí)也是Scale-out(橫向擴(kuò)展)存儲(chǔ)解決方案Gluster的核心,在存儲(chǔ)數(shù)據(jù)方面具有強(qiáng)大的橫向擴(kuò)展能力,通過(guò)擴(kuò)展能夠支持?jǐn)?shù)PB存儲(chǔ)容量和處理數(shù)千客戶端。

    GlusterFS支持借助TCP/IP或InfiniBandRDNA網(wǎng)絡(luò)(一種支持多并發(fā)鏈接的技術(shù),具有高帶寬、低時(shí)廷、高擴(kuò)展性的特點(diǎn))將物理分散分布的存儲(chǔ)資源匯聚在一起,統(tǒng)一提供存儲(chǔ)服務(wù),并使用統(tǒng)一全局命名空間來(lái)管理數(shù)據(jù)。

    4.2 GFS特點(diǎn)

    • 擴(kuò)展性和高性能 GlusterFS 利用雙重特性來(lái)提供高容量存儲(chǔ)解決方案 Scale-Out (橫向擴(kuò)展)架構(gòu)通過(guò)增加存儲(chǔ)節(jié)點(diǎn)的方式來(lái)提高存儲(chǔ)容量和性能(磁盤(pán)、計(jì)算和 I/O 資源都可以獨(dú)立增加),支持 10GbE 和 InfiniBand 等高速網(wǎng)絡(luò)互聯(lián)。

    Gluster 彈性哈希(Elastic Hash)解決了 GlusterFS 對(duì)元數(shù)據(jù)服務(wù)器的依賴, GlusterFS 采用彈性哈希算法在存儲(chǔ)池中定位數(shù)據(jù),放棄了傳統(tǒng)的通過(guò)元數(shù)據(jù)服 務(wù)器定位數(shù)據(jù)。GlusterFS 中可以智能地定位任意數(shù)據(jù)分片(將數(shù)據(jù)分片存儲(chǔ)在 不同節(jié)點(diǎn)上),不需要查看索引或者向元數(shù)據(jù)服務(wù)器查詢。這種設(shè)計(jì)機(jī)制實(shí)現(xiàn)了 存儲(chǔ)的橫向擴(kuò)展, 改善了單點(diǎn)故障及性能瓶頸,真正實(shí)現(xiàn)了并行化數(shù)據(jù)訪問(wèn)。

    • 高可用性 GlusterFS 通過(guò)配置某些類型的存儲(chǔ)卷,可以對(duì)文件進(jìn)行自動(dòng)復(fù)制(類似 于 RAID1),即使某個(gè)節(jié)點(diǎn)出現(xiàn)故障,也不影響數(shù)據(jù)的訪問(wèn)。當(dāng)數(shù)據(jù)出現(xiàn)不一致時(shí), 自動(dòng)修復(fù)功能能夠把數(shù)據(jù)恢復(fù)到正確的狀態(tài),數(shù)據(jù)的修復(fù)是以增量的方式在后臺(tái)執(zhí)行, 不會(huì)占用太多系統(tǒng)資源。GlusterFS 可以支持所有的存儲(chǔ),因?yàn)樗鼪](méi)有設(shè)計(jì)自己的私有數(shù)據(jù)文件格式,而是采用操作系統(tǒng)中標(biāo)準(zhǔn)的磁盤(pán)文件系統(tǒng)(如 EXT3、XFS 等)來(lái) 存儲(chǔ)文件,數(shù)據(jù)可以使用傳統(tǒng)訪問(wèn)磁盤(pán)的方式被訪問(wèn)。

    • 全局統(tǒng)一命名空間 全局統(tǒng)一命名空間將所有的存儲(chǔ)資源聚集成一個(gè)單一的虛擬存儲(chǔ) 池,對(duì)用戶和應(yīng)用屏蔽了物理存儲(chǔ)信息。存儲(chǔ)資源(類似于 LVM)可以根據(jù)生產(chǎn)環(huán) 境中的需要進(jìn)行彈性擴(kuò)展或收縮。在多節(jié)點(diǎn)場(chǎng)景中,全局統(tǒng)一命名空間還可以基于不 同節(jié)點(diǎn)做負(fù)載均衡,大大提高了存取效率。

    • 彈性卷管理。 GlusterFS 通過(guò)將數(shù)據(jù)儲(chǔ)存在邏輯卷中,邏輯卷從邏輯存儲(chǔ)池進(jìn)行獨(dú)立 邏輯劃分。邏輯存儲(chǔ)池可以在線進(jìn)行增加和移除,不會(huì)導(dǎo)致業(yè)務(wù)中斷。邏輯卷可以根 據(jù)需求在線增長(zhǎng)和縮減,并可以在多個(gè)節(jié)點(diǎn)中實(shí)現(xiàn)負(fù)載均衡。文件系統(tǒng)配置也可以實(shí)時(shí)在線進(jìn)行更改并應(yīng)用,從而可以適應(yīng)工作負(fù)載條件變化或在線性能調(diào)優(yōu)

    • 基于標(biāo)準(zhǔn)協(xié)議 Gluster 存儲(chǔ)服務(wù)支持 NFS、CIFS、HTTP、FTP、SMB 及 Gluster 原生協(xié)議,完全與 POSIX 標(biāo)準(zhǔn)兼容。現(xiàn)有應(yīng)用程序不需要做任何修改就可以對(duì) Gluster 中的數(shù)據(jù)進(jìn)行訪問(wèn),也可以使用專用 API 進(jìn)行訪問(wèn)(效率更高),這在公有 云環(huán)境中部署 Gluster 時(shí)非常有用,Gluster 對(duì)云服務(wù)提供商專用 API 進(jìn)行抽象,然 后提供標(biāo)準(zhǔn) POSIX 接口

    4.3 Gluster 術(shù)語(yǔ)

    • Brick(存儲(chǔ)塊): 主機(jī)池中由主機(jī)提供的用于物理存儲(chǔ)的專用分區(qū),是 GlusterFS 中的基本存儲(chǔ)單元,同時(shí)也是用存儲(chǔ)池中服務(wù)器上對(duì)外提供的存儲(chǔ)目錄。 存儲(chǔ)目錄的格式由服務(wù)器和目錄的絕對(duì)路徑構(gòu)成,表示方法為 SERVER:EXPORT, 如 192.168.1.4:/ data/mydir/。
    • Volume(邏輯卷): 一個(gè)邏輯卷是一組 Brick 的集合。卷是數(shù)據(jù)存儲(chǔ)的邏輯設(shè)備,類 似于 LVM 中的邏輯卷。大部分 Gluster 管理操作是在卷上進(jìn)行的。
    • FUSE(Filesystem inUserspace): 是一個(gè)內(nèi)核模塊,允許用戶創(chuàng)建自己的文件系統(tǒng), 無(wú)須修改內(nèi)核代碼。
    • VFS: 內(nèi)核空間對(duì)用戶空間提供的訪問(wèn)磁盤(pán)的接口。
    • Glusterd(后臺(tái)管理進(jìn)程): 在存儲(chǔ)群集中的每個(gè)節(jié)點(diǎn)上都要運(yùn)行。

    4.4 模塊化堆棧式架構(gòu)

    GlusterFS 采用模塊化、堆棧式的架構(gòu),可以根據(jù)需 求配置定制化的應(yīng)用環(huán)境,如大文件存儲(chǔ)、海量小文件存儲(chǔ)、云存儲(chǔ)、多傳輸協(xié)議應(yīng)用等。 通過(guò)對(duì)模塊進(jìn)行各種組合,即可實(shí)現(xiàn)復(fù)雜的功能。例如 Replicate 模塊可實(shí)現(xiàn) RAID1,Stripe 模塊可實(shí)現(xiàn) RAID0,通過(guò)兩者的組合可實(shí)現(xiàn) RAID10 和 RAID01,同時(shí)獲得更高的性能及可靠性。

    4.5GlusterFS 工作流程

    (1) 客戶端或應(yīng)用程序通過(guò) GlusterFS 的掛載點(diǎn)訪問(wèn)數(shù)據(jù)。 (2) Linux 系統(tǒng)內(nèi)核通過(guò) VFS API 收到請(qǐng)求并處理。 (3) VFS 將數(shù)據(jù)遞交給 FUSE 內(nèi)核文件系統(tǒng),并向系統(tǒng)注冊(cè)一個(gè)實(shí)際的文件系統(tǒng) FUSE, 而 FUSE 文件系統(tǒng)則是將數(shù)據(jù)通過(guò)/dev/fuse 設(shè)備文件遞交給了 GlusterFS client 端。可以 將 FUSE 文件系統(tǒng)理解為一個(gè)代理。 (4) GlusterFS client 收到數(shù)據(jù)后,client 根據(jù)配置文件對(duì)數(shù)據(jù)進(jìn)行處理。 (5) 經(jīng)過(guò) GlusterFS client 處理后,通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)傳遞至遠(yuǎn)端的 GlusterFS Server, 并且將數(shù)據(jù)寫(xiě)入服務(wù)器存儲(chǔ)設(shè)備。

    4.6 彈性HASH算法

    • 保證數(shù)據(jù)平均分布在每個(gè) Brick 中
    • 解決了對(duì)元數(shù)據(jù)服務(wù)器的依賴,進(jìn)而解決了單點(diǎn)故障及訪問(wèn)瓶頸。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-gJBLSR2p-1640169458470)(企業(yè)分布式存儲(chǔ).assets/image-20211214225122947.png)]

    4.7 GlusterFS 支持卷類型

    GlusterFS 支持七種卷,即分布式卷、條帶卷、復(fù)制卷、分布式條帶卷、分布式復(fù)制卷、 條帶復(fù)制卷和分布式條帶復(fù)制卷,這七種卷可以滿足不同應(yīng)用對(duì)高性能、高可用的需求。

    分布式卷(Distribute volume): 文件通過(guò) HASH 算法分布到所有 Brick Server 上, 這種卷是 Glusterf 的基礎(chǔ);以文件為單位根據(jù) HASH 算法散列到不同的 Brick,其實(shí) 只是擴(kuò)大了磁盤(pán)空間,如果有一塊磁盤(pán)損壞,數(shù)據(jù)也將丟失,屬于文件級(jí)的 RAID 0, 不具有容錯(cuò)能力。條帶卷(Stripe volume): 類似 RAID0,文件被分成數(shù)據(jù)塊并以輪詢的方式分布到多 個(gè) Brick Server 上,文件存儲(chǔ)以數(shù)據(jù)塊為單位,支持大文件存儲(chǔ),文件越大,讀取效 率越高復(fù)制卷(Replica volume): 將文件同步到多個(gè) Brick 上,使其具備多個(gè)文件副本, 屬于文件級(jí) RAID 1,具有容錯(cuò)能力。因?yàn)閿?shù)據(jù)分散在多個(gè) Brick 中,所以讀性能得 到很大提升,但寫(xiě)性能下降。分布式條帶卷(Distribute Stripe volume Brick Server 數(shù)量是條帶數(shù)(數(shù)據(jù)塊分布 的 Brick 數(shù)量)的倍數(shù),兼具分布式卷和條帶卷的特點(diǎn)分布式復(fù)制卷(Distribute Replica volume): Brick Server 數(shù)量是鏡像數(shù)(數(shù)據(jù)副本 數(shù)量)的倍數(shù),兼具分布式卷和復(fù)制卷的特點(diǎn)。

    分布式卷

    分布式卷是 GlusterFS 的默認(rèn)卷,在創(chuàng)建卷時(shí),默認(rèn)選項(xiàng)是創(chuàng)建分布式卷。在該模式下, 并沒(méi)有對(duì)文件進(jìn)行分塊處理,文件直接存儲(chǔ)在某個(gè) Server 節(jié)點(diǎn)上。直接使用本地文件系統(tǒng) 進(jìn)行文件存儲(chǔ),大部分 Linux 命令和工具可以繼續(xù)正常使用。需要通過(guò)擴(kuò)展文件屬性保存 HASH 值,目前支持的底層文件系統(tǒng)有 EXT3、EXT4、ZFS、XFS 等。 由于使用的是本地文件系統(tǒng),所以存取效率并沒(méi)有提高,反而會(huì)因?yàn)榫W(wǎng)絡(luò)通信的原因而 有所降低;另外支持超大型文件也會(huì)有一定的難度,因?yàn)榉植际骄聿粫?huì)對(duì)文件進(jìn)行分塊處理。 雖然 EXT4 已經(jīng)可以支持最大 16TB 的單個(gè)文件,但是本地存儲(chǔ)設(shè)備的容量實(shí)在有限。File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是隨機(jī)存儲(chǔ),一 個(gè)文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分塊同時(shí)存放在 Server1 和 Server2 上。

    分布式卷具有如下特點(diǎn):

    • 文件分布在不同的服務(wù)器,不具備冗余性。
    • 更容易且廉價(jià)地?cái)U(kuò)展卷的大小。
    • 存在單點(diǎn)故障會(huì)造成數(shù)據(jù)丟失。
    • 依賴底層的數(shù)據(jù)保護(hù)。

    條帶卷

    Stripe 模式相當(dāng)于 RAID0,在該模式下,根據(jù)偏移量將文件分成 N 塊(N 個(gè)條帶節(jié)點(diǎn)), 輪詢地存儲(chǔ)在每個(gè) Brick Server 節(jié)點(diǎn)。節(jié)點(diǎn)把每個(gè)數(shù)據(jù)塊都作為普通文件存入本地文件系統(tǒng) 中,通過(guò)擴(kuò)展屬性記錄總塊數(shù)(Stripe-count)和每塊的序號(hào)(Stripe-index)。在配置時(shí)指 定的條帶數(shù)必須等于卷中 Brick 所包含的存儲(chǔ)服務(wù)器數(shù),在存儲(chǔ)大文件時(shí),性能尤為突出, 但是不具備冗余性。

    • 條帶卷具有如下特點(diǎn)。
    • 數(shù)據(jù)被分割成更小塊分布到塊服務(wù)器群中的不同條帶區(qū)。
    • 分布減少了負(fù)載且更小的文件加速了存取的速度。
    • 沒(méi)有數(shù)據(jù)冗余性

    復(fù)制卷

    復(fù)制模式,也稱為 AFR(AutoFile Replication),相當(dāng)于 RAID1,即同一文件保存一份 或多份副本,每個(gè)節(jié)點(diǎn)上保存相同的內(nèi)容和目錄結(jié)構(gòu)。復(fù)制模式因?yàn)橐4娓北?#xff0c;所以磁盤(pán) 利用率較低。如果多個(gè)節(jié)點(diǎn)上的存儲(chǔ)空間不一致,那么將按照木桶效應(yīng)取最低節(jié)點(diǎn)的容量作,為該卷的總?cè)萘俊T谂渲脧?fù)制卷時(shí),復(fù)制數(shù)必須等于卷中 Brick 所包含的存儲(chǔ)服務(wù)器數(shù),復(fù)制卷具備冗余性,即使一個(gè)節(jié)點(diǎn)損壞,也不影響數(shù)據(jù)的正常使用。

    復(fù)制卷具有如下特點(diǎn)。

    • 卷中所有的服務(wù)器均保存一個(gè)完整的副本。
    • 卷的副本數(shù)量可由客戶創(chuàng)建的時(shí)候決定。
    • 至少有兩個(gè)塊服務(wù)器或更多服務(wù)器。
    • 具備冗余性

    分布式條帶卷

    分布式條帶卷兼顧分布式卷和條帶卷的功能,主要用于大文件訪問(wèn)處理,創(chuàng)建一個(gè)分布 式條帶卷最少需要 4 臺(tái)服務(wù)器

    分布式復(fù)制卷

    分布式復(fù)制卷兼顧分布式卷和復(fù)制卷的功能,主要用于需要冗余的情況下

    4.8實(shí)際操作

    setenforce 0 systemctl stop firewalldecho "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan #!/bin/bash dev=`ls /dev/sd* |grep -o 'sd[b-z]'| uniq` for i in $devdoecho -e "n\np\n\n\n\nw\n" | fdisk /dev/$i &> /dev/nullmkfs.xfs /dev/${i}"1" &> /dev/nullmkdir -p /data/${i}"1" &> /dev/nullecho "/dev/${i}"1" /data/${i}"1" xfs defaults 0 0 " >> /etc/fstab done mount -a &> /dev/nullhostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3 hostnamectl set-hostname node4 hostnamectl set-hostname node5[root@node1 ~]#vim /etc/hosts 192.168.91.100 node1 192.168.91.101 node2 192.168.91.102 node3 192.168.91.103 node4echo " 192.168.91.100 node1 192.168.91.101 node2 192.168.91.102 node3 192.168.91.103 node4 192.168.91.104 node5">>/etc/hosts#########################本地源安裝##############################################[root@node1 opt]#tar xf gfsrepo.tar.gz [root@node1 yum.repos.d]#mkdir bak [root@node1 yum.repos.d]#mv *.repo bak/ [root@node1 yum.repos.d]#ls bak [root@node1 yum.repos.d]#vim local.repo[local] name=local baseurl=file:///opt/gfsrepo gpgcheck=0[root@node1 opt]#yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma scp local.repo 192.168.91.101:/etc/yum.repos.d/ scp local.repo 192.168.91.102:/etc/yum.repos.d/#####################################################################################使用網(wǎng)絡(luò)源,版本較新取消了一些功能########################[root@node1 opt]#cd /opt [root@node1 opt]#yum install centos-release-gluster -y [root@node1 opt]#yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma --skip-broken###################################################################################[root@node1 opt]#systemctl start glusterd.service [root@node1 opt]#systemctl status glusterd.service 添加節(jié)點(diǎn)到存儲(chǔ)信任池中(在 node1中) gluster peer probe node1 gluster peer probe node2 gluster peer probe node3 gluster peer probe node4 [root@node1 opt]#gluster peer status Number of Peers: 3Hostname: node2 Uuid: bdcab81e-f3fc-4633-9697-e5e1b4676d6a State: Peer in Cluster (Connected)Hostname: node3 Uuid: 9633f84f-05b7-46fa-9925-42e1cfc4c53a State: Peer in Cluster (Connected)Hostname: node4 Uuid: 0b63b591-5d06-4809-ab86-a85c916e1693 State: Peer in Cluster (Connected)卷名稱 卷類型 Brick dis-volume 分布式卷 node1(/data/sdb1) node2(/data/sdb1) stripe-volume 條帶卷 node1(/data/sdc1) node2(/data/sdc1) rep-volume 復(fù)制卷 node3(/data/sdb1) node4(/data/sdb1) dis-stripe 分布式條帶卷 node1(/data/sdd1) node2(/data/sdd1)node3(/data/sdd1)node4(/data/sdd1) dis-rep 分布式復(fù)制卷 node1(/data/sde1) node2(/data/sde1)node3(/data/sde1)node4(/data/sde1)1創(chuàng)建分布式卷,默認(rèn)創(chuàng)建的是分布式卷 gluster volume create dis-voluem node1:/data/sdb1 node2:/data/sdb1 forcegluster volume list #查看卷列表 gluster volume start dis-volume #啟動(dòng)卷 gluster volume info dis-volume #查看卷的基本信息2創(chuàng)建條帶卷 #指定的類型是stripe 數(shù)值為2 且后面跟了兩個(gè) brick server ,所以創(chuàng)建的是條帶卷 gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force gluster volume start stripe-volume #啟動(dòng)3 復(fù)制卷 #指定類型為replica 數(shù)值為2 且后面跟了兩個(gè) brick server ,所以創(chuàng)建的是復(fù)制卷 gluster volume create replica-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force gluster volume start replica-volume4創(chuàng)建分布式條帶卷 #指定的類型是stripe 數(shù)值為2 且后面跟了4個(gè) brick server ,所以創(chuàng)建的是分布式條帶卷 gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force gluster volume start dis-stripe5創(chuàng)建分布式復(fù)制卷 #指定類型為replica 數(shù)值為2 且后面跟了4個(gè) brick server 所以創(chuàng)建的分布式復(fù)制卷 gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force gluster volume start dis-rep##########客戶機(jī)操作############# setenforce 0 systemctl stop firewalld[root@node1 opt]#tar xf gfsrepo.tar.gz [root@node1 yum.repos.d]#mkdir bak [root@node1 yum.repos.d]#mv *.repo bak/ [root@node1 yum.repos.d]#ls bak [root@node1 yum.repos.d]#vim local.repo[local] name=local baseurl=file:///opt/gfsrepo gpgcheck=0 [root@localhost yum.repos.d]#yum install glusterfs glusterfs-fuse -ymkdir -p /data/{dis,stripe,rep,dis_stripe,dis_rep} #建立掛載目錄echo " 192.168.91.100 node1 192.168.91.101 node2 192.168.91.102 node3 192.168.91.103 node4">>/etc/hosts臨時(shí)掛載 mount.glusterfs node1:dis-volume /data/dis永久掛載 node1:dis-volume /data/dis glusterfs defaults,_netdev 0 0 node1:dis-rep /data/dis_rep glusterfs defaults,_netdev 0 0 node1:dis-stripe /data/dis_stripe glusterfs defaults,_netdev 0 0 node1:replica-volume /data/rep glusterfs defaults,_netdev 0 0 node1:stripe-volume /data/stripe glusterfs defaults,_netdev 0 0mount -a測(cè)試: cd /opt dd if=/dev/zero of=/demo1.log bs=1M count=40 dd if=/dev/zero of=/demo2.log bs=1M count=40 dd if=/dev/zero of=/demo3.log bs=1M count=40 dd if=/dev/zero of=/demo4.log bs=1M count=40 dd if=/dev/zero of=/demo5.log bs=1M count=40cp /demo* /data/dis cp /demo* /data/stripe/ cp /demo* /data/rep/ cp /demo* /data/dis_stripe/ cp /demo* /data/dis_rep/[root@node1 opt]#ll /data/sdb1 #已文件形式的分布式 總用量 163840 -rw-r--r--. 2 root root 41943040 1215 06:39 demo1.log -rw-r--r--. 2 root root 41943040 1215 06:39 demo2.log -rw-r--r--. 2 root root 41943040 1215 06:39 demo3.log -rw-r--r--. 2 root root 41943040 1215 06:39 demo4.log [root@node2 opt]#ll /data/sdb1 總用量 40960 -rw-r--r--. 2 root root 41943040 1215 06:39 demo5.log[root@node1 opt]#ll -h /data/sdc1 #條帶卷 總用量 101M -rw-r--r--. 2 root root 20M 1215 06:39 demo1.log -rw-r--r--. 2 root root 20M 1215 06:39 demo2.log -rw-r--r--. 2 root root 20M 1215 06:39 demo3.log -rw-r--r--. 2 root root 20M 1215 06:39 demo4.log -rw-r--r--. 2 root root 20M 1215 06:39 demo5.log [root@node2 opt]#ll -h /data/sdc1 總用量 101M -rw-r--r--. 2 root root 20M 1215 06:39 demo1.log -rw-r--r--. 2 root root 20M 1215 06:39 demo2.log -rw-r--r--. 2 root root 20M 1215 06:39 demo3.log -rw-r--r--. 2 root root 20M 1215 06:39 demo4.log -rw-r--r--. 2 root root 20M 1215 06:39 demo5.log[root@node3 opt]# ll -h /data/sdb1 #復(fù)制1 總用量 200M -rw-r--r--. 2 root root 40M 1215 06:39 demo1.log -rw-r--r--. 2 root root 40M 1215 06:39 demo2.log -rw-r--r--. 2 root root 40M 1215 06:39 demo3.log -rw-r--r--. 2 root root 40M 1215 06:39 demo4.log -rw-r--r--. 2 root root 40M 1215 06:39 demo5.log[root@node4 yum.repos.d]#ll -h /data/sdb1 總用量 200M -rw-r--r--. 2 root root 40M 1215 06:39 demo1.log -rw-r--r--. 2 root root 40M 1215 06:39 demo2.log -rw-r--r--. 2 root root 40M 1215 06:39 demo3.log -rw-r--r--. 2 root root 40M 1215 06:39 demo4.log -rw-r--r--. 2 root root 40M 1215 06:39 demo5.log#####破壞測(cè)試####systemctl stop glusterd.service ###當(dāng)我們關(guān)機(jī)node2 在客戶端上查看文件是否正常####分布式卷數(shù)據(jù)查看### [root@localhost dis]# ll ###我們?cè)诳蛻羯习l(fā)現(xiàn)少了demo5.log文件,這個(gè)是node2上的, 總用量 163840 -rw-r--r-- 1 root root 41943040 1018 14:50 demo1.log -rw-r--r-- 1 root root 41943040 1018 14:50 demo2.log -rw-r--r-- 1 root root 41943040 1018 14:50 demo3.log -rw-r--r-- 1 root root 41943040 1018 14:50 demo4.log####條帶卷### [root@localhost text]# cd stripe/ ####無(wú)法訪問(wèn),條帶卷不具備冗余性 [root@localhost stripe]# ll 總用量 0#####分布式條帶卷#### [root@localhost dis_and_stripe]# ll #####無(wú)法訪問(wèn),分布條帶卷不具備冗余性 總用量 40960 -rw-r--r-- 1 root root 41943040 1018 14:51 demo5.log###分布式復(fù)制卷#### [root@localhost dis_and_rep]# ll #####可以訪問(wèn),分布式復(fù)制卷具備冗余性 總用量 204800 -rw-r--r-- 1 root root 41943040 1018 14:52 demo1.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo2.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo3.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo4.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo5.log###node2 和node4 掛機(jī)#### 1、測(cè)試復(fù)制卷是否正常 [root@localhost rep]# ls -l ###在客戶機(jī)上測(cè)試正常 數(shù)據(jù)有 總用量 204800 -rw-r--r-- 1 root root 41943040 1018 14:51 demo1.log -rw-r--r-- 1 root root 41943040 1018 14:51 demo2.log -rw-r--r-- 1 root root 41943040 1018 14:51 demo3.log -rw-r--r-- 1 root root 41943040 1018 14:51 demo4.log -rw-r--r-- 1 root root 41943040 1018 14:51 demo5.log 2、測(cè)試分布式條卷是否正常 [root@localhost dis_and_stripe]# ll ###在客戶機(jī)上測(cè)試正常 沒(méi)有數(shù)據(jù) 總用量 0 3、測(cè)試分布式復(fù)制卷是否正常 [root@localhost dis_and_rep]# ll ###在客戶機(jī)上測(cè)試正常 有數(shù)據(jù) 總用量 204800 -rw-r--r-- 1 root root 41943040 1018 14:52 demo1.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo2.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo3.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo4.log -rw-r--r-- 1 root root 41943040 1018 14:52 demo5.log#####上述實(shí)驗(yàn)測(cè)試,凡是帶復(fù)制數(shù)據(jù),相比而言,數(shù)據(jù)比較安全####gluster volume stop dis-stripe #停止卷 gluster volume delete dis-volume #刪除卷 gluster volume status #查看狀態(tài) gluster volume set dis-rep auth.allow 192.168.91.* gluster volume set dis-rep auth.deny 192.168.91.100 #設(shè)置權(quán)限

    51 demo2.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:51 demo3.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:51 demo4.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:51 demo5.log
    2、測(cè)試分布式條卷是否正常
    [root@localhost dis_and_stripe]# ll ###在客戶機(jī)上測(cè)試正常 沒(méi)有數(shù)據(jù)
    總用量 0
    3、測(cè)試分布式復(fù)制卷是否正常
    [root@localhost dis_and_rep]# ll ###在客戶機(jī)上測(cè)試正常 有數(shù)據(jù)
    總用量 204800
    -rw-r–r-- 1 root root 41943040 10月 18 14:52 demo1.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:52 demo2.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:52 demo3.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:52 demo4.log
    -rw-r–r-- 1 root root 41943040 10月 18 14:52 demo5.log

    #####上述實(shí)驗(yàn)測(cè)試,凡是帶復(fù)制數(shù)據(jù),相比而言,數(shù)據(jù)比較安全####

    gluster volume stop dis-stripe
    #停止卷
    gluster volume delete dis-volume
    #刪除卷
    gluster volume status
    #查看狀態(tài)
    gluster volume set dis-rep auth.allow 192.168.91.*
    gluster volume set dis-rep auth.deny 192.168.91.100
    #設(shè)置權(quán)限

    總結(jié)

    以上是生活随笔為你收集整理的企业分布式存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。