新聞中心
ceph是一個Linux PB級別的分布式存儲系統(tǒng),ceph的目標(biāo)簡單地定義為:
可輕松擴展到PB容量
對多種工作負(fù)載的高性能(每秒輸入/輸出操作[IOPS]和帶寬)
高可靠性
與常見的集中式存儲不同,分布式存儲技術(shù)并不是將數(shù)據(jù)存儲在某個或多個特定的節(jié)點上,而是通過網(wǎng)絡(luò)使用多臺機器上的磁盤空間,并將這些分散的存儲資源構(gòu)成一個虛擬的存儲設(shè)備,數(shù)據(jù)分散地存儲在這些機器的各個磁盤上
ceph架構(gòu)ceph架構(gòu)大概可以劃分為四部分:客戶端(數(shù)據(jù)用戶)、元數(shù)據(jù)服務(wù)器(緩存和同步分布式元數(shù)據(jù))、一個對象存儲集群(將數(shù)據(jù)和元數(shù)據(jù)作為對象存儲)、集群監(jiān)視器(執(zhí)行監(jiān)視功能)
ceph組件 ceph客戶端Linux顯示文件系統(tǒng)的一個公共界面(通過虛擬文件系統(tǒng)VFS),ceph的用戶視圖就是透明的。管理員的視圖肯定是不同的,考慮到很多服務(wù)器會包含存儲系統(tǒng)這一潛在因素。從用戶的角度看,他們訪問大容量的存儲系統(tǒng),卻不知道下面聚合成一個大容量的存儲池的元數(shù)據(jù)服務(wù)器,監(jiān)視器還有獨立的對象存儲設(shè)備。用戶只是簡單地看到一個安裝點,在這個點上可以執(zhí)行標(biāo)準(zhǔn)文件I/O
ceph元數(shù)據(jù)服務(wù)器元數(shù)據(jù)服務(wù)器(cmds)的工作就是管理文件系統(tǒng)的名稱空間(pools)。雖然元數(shù)據(jù)和數(shù)據(jù)兩者都存儲在對象存儲集群,但兩者分別管理,支持可擴展性。事實上,元數(shù)據(jù)在一個元數(shù)據(jù)服務(wù)器集群上被進(jìn)一步拆分,元數(shù)據(jù)服務(wù)器能夠自適應(yīng)地復(fù)制和分配名稱空間,避免出現(xiàn)熱點。元數(shù)據(jù)服務(wù)器管理名稱空間部分,可以(為冗余和性能)進(jìn)行重疊。元數(shù)據(jù)服務(wù)器到名稱空間的映射在 Ceph 中使用動態(tài)子樹邏輯分區(qū)執(zhí)行,它允許 Ceph 對變化的工作負(fù)載進(jìn)行調(diào)整(在元數(shù)據(jù)服務(wù)器之間遷移名稱空間)同時保留性能的位置
元數(shù)據(jù)服務(wù)器管理 inode 空間,將文件名轉(zhuǎn)變?yōu)樵獢?shù)據(jù)。元數(shù)據(jù)服務(wù)器將文件名轉(zhuǎn)變?yōu)樗饕?jié)點,文件大小,和 Ceph 客戶端用于文件 I/O 的分段數(shù)據(jù)(布局)
ceph包含實施集群映射管理的監(jiān)視器,但是故障管理的一些要素是在對象存儲本身中執(zhí)行的。當(dāng)對象存儲設(shè)備發(fā)生故障或者新設(shè)備添加時,監(jiān)視器就檢測和維護(hù)一個有效的集群映射。這個功能按一種分布的方式執(zhí)行,這種方式中映射升級可以和當(dāng)前的流量通信。Ceph 使用 Paxos,它是一系列分布式共識算法
ceph對象存儲集群和傳統(tǒng)的對象存儲類似,Ceph 存儲節(jié)點不僅包括存儲,還包括智能。傳統(tǒng)的驅(qū)動是只響應(yīng)來自啟動者的命令的簡單目標(biāo)。但是對象存儲設(shè)備是智能設(shè)備,它能作為目標(biāo)和啟動者,支持與其他對象存儲設(shè)備的通信和合作
從存儲角度來看,Ceph 對象存儲設(shè)備執(zhí)行從對象到塊的映射(在客戶端的文件系統(tǒng)層中常常執(zhí)行的任務(wù))。這個動作允許本地實體以方式?jīng)Q定怎樣存儲一個對象。Ceph 的早期版本在一個名為EBOFS的本地存儲器上實現(xiàn)一個自定義低級文件系統(tǒng)。這個系統(tǒng)實現(xiàn)一個到底層存儲的非標(biāo)準(zhǔn)接口,這個底層存儲已針對對象語義和其他特性(例如對磁盤提交的異步通知)調(diào)優(yōu)。今天,B-tree 文件系統(tǒng)(BTRFS)可以被用于存儲節(jié)點,它已經(jīng)實了部分必要功能(例如嵌入式完整性)
因為 Ceph 客戶實現(xiàn) CRUSH,而且對磁盤上的文件映射塊一無所知,下面的存儲設(shè)備就能安全地管理對象到塊的映射。這允許存儲節(jié)點復(fù)制數(shù)據(jù)(當(dāng)發(fā)現(xiàn)一個設(shè)備出現(xiàn)故障時)。分配故障恢復(fù)也允許存儲系統(tǒng)擴展,因為故障檢測和恢復(fù)跨生態(tài)系統(tǒng)分配。Ceph 稱其為 RADOS
安裝環(huán)境
Ceph-0.80.6
Ubuntu-14.04 LTS
節(jié)點信息
mon:192.168.234.131
osd0:192.168.234.132
osd1:192.168.234.133
ceph的一個好處就是沒有中心節(jié)點,這樣以來任何兩個節(jié)點在存儲系統(tǒng)中都是對等的。官方文檔的介紹是使用一個admin節(jié)點來部署monitor和osds,如下圖
這里我們使用一個簡化的方式,admin節(jié)點用monitor節(jié)點來代替。剛才說過,ceph是沒有中心節(jié)點的,所以ceph完全是可以自己來部署自己
安裝前的準(zhǔn)備 為每個節(jié)點添加磁盤用于對象存儲集群$ parted /dev/sdb (parted) mklable gpt #使用gpt分區(qū)表 (parted) mkpart primary xfs 0 100% (parted) quit $ mkfs.xfs /dev/sdb1 #使用xfs文件系統(tǒng),單個文件大小沒有上限
添加軟件源
$ wget -q -O- \'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc\' | sudo apt-key add - $ echo deb http://ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list $ sudo apt-get update && sudo apt-get install ceph-deploy
添加hosts信息
在所有節(jié)點hosts文件中添加如下信息 192.168.234.131 mon 192.168.234.132 osd0 192.168.234.133 osd1
同步時間
在mon節(jié)點上安裝ntp服務(wù)器 $ sudo apt-get install ntp 設(shè)定其他節(jié)點與mon節(jié)點進(jìn)行時間同步 $ sudo ntpdate 192.168.234.131
在所有節(jié)點添加ceph專用用戶
$ sudo useradd –d /home/ceph –m ceph –s /bin/bash $ sudo passwd ceph
添加sudo權(quán)限
$ echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph $ sudo chmod 0440 /etc/sudoers.d/ceph
設(shè)置admin(mon)節(jié)點與osds節(jié)點ss互通
$ su – ceph $ ssh-keygen Generating public/private key pair. Enter file in which to save the key (/home/ceph/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ceph/.ssh/id_rsa. Your public key has been saved in /home/ceph/.ssh/id_rsa.pub. $ ssh-copy-id ceph@osd0 $ ssh-copy-id ceph@osd1
配置config文件
編輯mon節(jié)點 /home/ceph/.ssh/config文件添加如下信息 Host mon Hostname mon User ceph Host osd0 Hostname osd0 User ceph Host osd1 Hostname osd1 User ceph 如果不添加此文件,每次在執(zhí)行ceph-deploye命令的時候需要指定 –username選項 部署對象存儲集群
在這個過程中,我們創(chuàng)建一個對象存儲集群,包括一個ceph monitor和三個ceph osd daemon。當(dāng)這個集群達(dá)到 active+clean 的狀態(tài)時,再擴展這個集群,添加一個元數(shù)據(jù)服務(wù)器(metadate server)和更多的ceph monitor
ceph-deploy命令會輸出文件到當(dāng)前目錄下,并且會利用輸出的文件。在整個執(zhí)行的過程中,我們都是用ceph用戶
# su – ceph
創(chuàng)建命令執(zhí)行目錄并授權(quán)給ceph
$ sudo mkdir /my-cluster $ sudo chown ceph:ceph /my-cluster $ cd /my-cluster
創(chuàng)建集群
$ ceph-deploy new mon
為所有節(jié)點安裝部署ceph
$ ceph-deploy install mon osd0 osd1
添加ceph monitor
$ ceph-deploy mon create-initial
添加osds
$ ceph-deploy osd prepare mon:/dev/sdb1 osd0:/dev/sdb1 osd1:/dev/sdb1 $ ceph-deploy osd activate mon:/dev/sdb1 osd0:/dev/sdb1 osd1:/dev/sdb1
拷貝配置文件和admin key到admin節(jié)點和其他節(jié)點
$ ceph-deploy admin mon osd0 osd1 $ sudo chmod +r /etc/ceph/ceph.client.admin.keyring 拷貝之后可以使用ceph命令行而不用指定monitor地址和ceph.client.admin.keyring
查看ceph狀態(tài)
$ ceph health $ ceph status
添加元數(shù)據(jù)服務(wù)器(mds)
$ ceph-deploy mds create mon
接下來就可以使用ceph了
添加存儲ceph可以用作文件存儲、塊存儲、對象存儲。這里以塊存儲來演示ceph的使用
創(chuàng)建存儲池(pools)
$ ceph osd pool create ceph-pool 256 256
創(chuàng)建塊存儲設(shè)備
$ rbd create ceph-block –size 20480 –pool ceph-pool size是以MB為單位
將塊存儲設(shè)備映射到本地并掛載使用
$ sudo modprobe rbd $ sudo rbd map ceph-block –pool ceph-pool $ rbd showmapped
$ sudo mkfs.ext4 /dev/rbd1 $ mount /dev/rbd1 /mnt $ cd /mnt $ ls lost+found inkscope安裝
inkscope是一個ceph的監(jiān)控和管理接口,使用nosql解決方案,使用mongodb存儲實時熱數(shù)據(jù)和歷史數(shù)據(jù),兩種數(shù)據(jù)來源于不同的收集器
inkscope:https://github.com/inkscope
inkscope
將inkscope下載后解壓縮到 /var/www/inkscope目錄
安裝apche2和mongodb
# apt-get install apache2 mongodb 安裝inkscopeViz
修改Apache端口
# vim /etc/apache2/port.conf Listen 8080
創(chuàng)建虛擬主機配置文件
# vim /etc/apache2/site-available/inkScope.con
啟動代理并添加inkScope
# a2enmod proxy_http # service apache2 restart # a2ensite inkScope
安裝inkscopeCtrl添加必要的軟件
# apt-get install libapache2-mod-wsgi # apt-get install python-pip
配置inkscopeCtrl
執(zhí)行inkScopeCtrl目錄中的install.sh腳本生成配置文件 /opt/inkscope/etc/inkscopeCtrl.conf編輯配置文件 # vim /opt/inkscope/etc/inkscopeCtrl.conf { "mongodb_host" : "192.168.234.131", "mongodb_port" : "27017", "mongodb_user" :"ceph", "mongodb_passwd":"", "is_mongo_authenticate" : 0, "radosgw_url": "http://192.168.234.131", "radosgw_admin": "admin", "radosgw_key": "11111", "radosgw_secret": "11111", "cluster": "ceph", "is_mongo_replicat" : 0, "mongodb_set" : "host_mongodb1:port,host_mongodb2:port,host_mongodb3:port", "mongodb_replicaSet" : "replicaset_name", "mongodb_read_preference" : "ReadPreference.{your_read_preference_choice}" } 安裝inkscopeProbe
準(zhǔn)備工作
修改mongodb配置 # vim /etc/mongodb.conf bind_ip = 0.0.0.0 port = 27107
安裝必要的軟件包
# apt-get install python-dev # easy_install psutil # esay_install pymongo
安裝
執(zhí)行inkscopeProbe目錄中的install.sh 腳本生成配置文件和執(zhí)行文件 sysprobe:收集系統(tǒng)信息,必須被安裝在所有ceph節(jié)點 cephprobe:收集集群信息,只需要安裝在某一個ceph節(jié)點
修改sysprobe.conf配置文件
# vim /opt/inkscope/etc/sysprobe.conf { "mongodb_host" : "192.168.234.131", "is_mongo_replicat" : 0, "mongodb_set" : "mongodb0:27017,mongodb1:27017,mongodb2:27017", "mongodb_replicaSet" : "replmongo0", "mongodb_read_preference" : "ReadPreference.SECONDARY_PREFERRED", "mongodb_port" : 27017, "is_mongo_authenticate" : 0, "mongodb_user":"ceph", "mongodb_passwd":"", "cluster": "ceph", "mem_refresh": 60, "swap_refresh": 600, "disk_refresh": 60, "partition_refresh": 60, "cpu_refresh": 30, "net_refresh": 30, "mem_window": 1200, "swap_window": 3600, "disk_window": 1200, "partition_window": 1200, "cpu_window": 1200, "net_window": 1200 }
修改cephprobe.conf配置文件
# vim /opt/inkscope/etc/cephprobe.conf { "mongodb_host" : "192.168.234.131", "is_mongo_replicat" : 0, "mongodb_set" : "mongodb0:27017,mongodb1:27017,mongodb2:27017", "mongodb_replicaSet" : "replmongo0", "mongodb_read_preference" : "ReadPreference.SECONDARY_PREFERRED", "mongodb_port" : 27017, "is_mongo_authenticate" : 0, "mongodb_user":"ceph", "mongodb_passwd":"", "cluster" : "ceph", "ceph_conf": "/etc/ceph/ceph.conf", "ceph_rest_api": "192.168.234.131:5000", "status_refresh": 3, "osd_dump_refresh": 3, "pg_dump_refresh": 60, "crushmap_refresh": 60, "df_refresh": 60, "cluster_window": 1200, "osd_window": 1200, "pool_window": 1200 }
啟動服務(wù)
在mon節(jié)點執(zhí)行 # ceph-rest-api –n client.admin
root@mon:/opt/inkscope/bin# python sysprobe.py start root@mon:/opt/inkscope/bin# python cephprobe.py start root@mon:/opt/inkscope/bin# python daemon.py
在其他節(jié)點上執(zhí)行 root@mon:/opt/inkscope/bin# python sysprobe.py start root@mon:/opt/inkscope/bin# python daemon.py
狀態(tài)圖
網(wǎng)站名稱:ceph存儲系統(tǒng)
本文路徑:http://www.dlmjj.cn/article/cphhpd.html