ceph儲存 ceph整體學習記錄(未整理較亂)
ceph原始碼下載:
http://ceph.com/download/
主要文件下載連線:
http://download.iyunv.com/detail/skdkjxy/8149989
/*******************/
Time:2014-11-6
Author:skdkjzz
/******************/
1、unified中何為radosgw、rbd、ceph-dfs、rados?
2、distributed中spof?
{
http://article.yeeyan.org/view/258596/225158
單點故障
}
3、ceph中何為paxos?
4、ceph包括四個部分--moniters(ceph-mon)、object_storage_daemons(ceph-osd)、clients(librados、librbd)、metadata_servers(ceph-mds)
5、posix語義?
6、rados_object_storage_model--include “pools” “objects”
7、object_storage--何為btrfs、xfs?online fsck 硬碟壞軌檢查?
8、objects are automatically placed放置, balanced均衡, migrated遷移 in a dynamic cluster動態叢集
9、CRUSH偽隨機放置演算法(pseudo-random placement algorithm)
10、3 replicas, same row, different racks(3個副本、同行、不同機架)
11、coordinate_peers(協調節點?)
12、何為openstack、RESTful、S3?
13、何為ACL_route_base(路由策略)?
14、何為rbd – rados block device --rbd?
15、基於核心的虛擬機器(K Virtual Machine)--kvm
16、何為librbd、libvirt
17、shared cluster-coherent file system (共享叢集一致?連貫?檔案系統)?
18、動態子目錄樹分割槽特性--高效、可擴充套件、動態、自適應(均衡整個叢集)
19、recursive_accounting--遞迴運算
20、Linux_kernel_client--Samba(CIFS)、export(NFS)
21、NFS-GANESHA 是一個使用者空間伺服器,支援NFSv2、NFSv3和NFSv4。它支援的執行平臺包括Linux,BSD variants和POSIX-compliant Unixes。
22、何為poc?
{
POC測試,即Proof of Concept,是業界流行的針對客戶具體應用的驗證性測試,根據使用者對採用系統提出的效能要求和擴充套件需求的指標,在選用伺服器上進行真實資料的執行,
對承載使用者資料量和執行時間進行實際測算,並根據使用者未來業務擴充套件的需求加大資料量以驗證系統和平臺的承載能力和效能變化。
}
23、needs testing, deliberate qa effort for production(需要進行測試,為深思熟慮的品質做出努力)
/*******************/
Time:2014-11-7
Author:skdkjzz
/******************/
1、跟隨魏盟去儲存技術實驗室
2、何為Lustre、GlusterFS和OrangeFS?
3、預計下週一進行疑惑解決,然後深入ceph框架
/========================================================================/
HardDisk:
4、預計下週一進行ceph安裝文件閱讀:
5、均衡日誌和OSD效能相當重要
6、不顧分割槽而在單個硬碟上執行多個OSD,這樣不明智!
7、不顧分割槽在運行了OSD的硬碟上監視器或者元資料伺服器,也是不明智!
8、儲存驅動器受限於尋道時間、訪問時間、讀寫時間、還有總吞吐量,這些物理侷限性影響著整體系統效能,尤
其在系統恢復期間。因此我們推薦獨立的驅動器用於安裝作業系統和軟體,另外每個OSD守護程序佔用一個驅動器。
大多數“slow OSD”問題的起因都是在相同的硬碟上運行了作業系統、多個OSD和/或多個日誌檔案。鑑於解決效能問題
的成本差不多會超過另外增加磁碟驅動器,你應該在設計時就避免增加 OSD 儲存驅動器的負擔來提升效能。
9、ceph允許你在每塊硬碟驅動器上執行多個OSD,但這會導致資源競爭並降低總體吞吐量;ceph也允許把日誌
和物件資料儲存在相同驅動器上,但這會增加記錄寫日誌並回應客戶端的延時,因為ceph必須先寫入日誌才會迴應確認了寫動作。
btrfs檔案系統能同時寫入日誌資料和物件資料,xfs和ext4卻不能。
10、ceph最佳實踐指示,你應該分別在單獨的硬碟執行作業系統、OSD資料和OSD日誌。
/========================================================================/
/*******************/
Time:2014-11-8
Author:skdkjzz
/******************/
SSD:
1、一種提升效能的方法是使用固態硬碟(SSD)來降低隨機訪問時間和讀延時,同時增加吞吐量。SSD和硬碟相
比每GB成本通常要高10倍以上,但訪問時間至少比硬碟快100倍。
2、SSD侷限性在於順序讀寫效能,SSD沒有可移動機械部件,所以不存在和硬碟一樣的侷限性。但SSD也有侷限性,評估SSD時,順序讀寫性
能很重要,在為多個OSD儲存日誌時,有著400MB/s順序讀寫吞吐量的SSD其效能遠高於120MB/s的。
3、在大量投入SSD前,我們強烈建議核實SSD的效能指標,並在測試環境下衡量效能。
4、SSD沒有移動機械部件,很適合ceph中不需要太多儲存空間的地方,但是對SSD效能衡量需要注意一下幾點:
4.1)IOPS指標,又何為IOPS指標?
4.2)寫密集語義:記日誌涉及寫密集語義,所以你要確保選用的SSD寫入效能和硬碟相當或好於硬碟。廉價SSD可能在加速訪問的同時
引入寫延時,有時候高效能硬碟的寫入速度可以和便宜SSD相媲美。又何為寫密集語義?
4.3)順序寫入:在一個SSD上為多個OSD儲存多個日誌時也必須考慮SSD的順序寫入極限,因為它們要同時處理多個OSD日誌的寫入請求。
4.4)分割槽對齊:採用了SSD的一個常見問題是人們喜歡分割槽,卻常常忽略了分割槽對齊,這會導致SSD的資料傳輸速率慢很多,所以請確保分割槽對齊了。
5、SSD用於物件儲存太昂貴了,但是把OSD的日誌存到SSD、把物件資料儲存到獨立的硬碟可以明顯提升效能。osd_journal選項的預設值是
/var/lib/ceph/osd/$cluster-$id/journal,你可以把它掛載到一個SSD或SSD分割槽,這樣它就不再是和物件資料一樣儲存在同一個硬碟上的檔案了 。
6、提升CephFS檔案系統性能的一種方法是從CephFS檔案內容裡分離出元資料。ceph提供了預設的metadata儲存池來儲存CephFS元資料,所以你不需要給
CephFS元資料建立儲存池,但是可以給它建立一個僅指向某主機SSD的CRUSH執行圖。又何為CRUSH執行圖?
Controller:
1、優秀的ceph的效能問題探討可以參考ceph相關blog--見ceph-docs_zh-v1.3.pdf,頁碼為p23
2、硬碟控制器對寫吞吐量有顯著影響,需慎重選擇,以免造成效能瓶頸(bottleneck)
Others_Notes:
1、可以在同意主機執行多個osd,但是需保證osd硬碟吞吐量不超過為客戶端提供讀寫服務所需網路頻寬。
2、還應考慮叢集在每臺主機上儲存的資料佔總體的百分比,如果一臺主機所佔百分比太多而掛了,那麼就可能導致諸如full ratio(滿載滿負荷)的問題,
那麼ceph會中止執行來防止資料丟失。
3、如果每臺主機執行多個osd,請保證核心是最新的,來確保硬體效能可達期望值。
Network:
1、建議每臺機器最少兩個千兆網絡卡,現在大多數機械硬碟都能達到大概100MB/s的吞吐量,網絡卡應該能處理所有OSD硬碟總吞吐量,所以推薦最少兩個千兆網絡卡,
分別用於公網(前端)和叢集網路(後端)。叢集網路(最好別連線到國際網際網路)用於處理由資料複製產生的額外負載,而且可防止拒絕服務攻擊,拒絕服務攻擊
會干擾資料歸置組,使之在OSD資料複製時不能回到active+clean狀態。請考慮部署萬兆網絡卡。通過1Gbps網路複製1TB資料耗時3小時,而3TB(典型配置)需要9小時,
相比之下,如果使用10Gbps複製時間可分別縮減到20分鐘和1小時。在一個PB級叢集中,OSD磁碟失敗是常態,而非異常;在價效比合理的的前提下,系統管理員
想讓PG儘快從degraded(降級)狀態恢復到 active+clean 狀態。另外,一些部署工具(如Dell的Crowbar)部署了5個不同的網路,但使用了VLAN以提高網路和硬體可管理性。
VLAN使用802.1q協議,還需要採用支援VLAN功能的網絡卡和交換機,增加的硬體成本可用節省的運營(網路安裝、維護)成本抵消。使用VLAN來處理叢集和計算棧
(如 OpenStack、 CloudStack 等等)之間的VM流量時,採用10G網絡卡仍然值得。每個網路的機架路由器到核心路由器應該有更大的頻寬,如40Gbps到100Gbps。
又何為VM流量?
2、伺服器應配置底板管理控制器(Baseboard Management Controller, BMC),管理和部署工具也應該大規模使用BMC,所以請考慮帶外網路管理的成本/效益平衡,
此程式管理著SSH訪問、VM映像上傳、作業系統安裝、埠管理、等等,會徒增網路負載。運營3個網路有點過分,但是每條流量路徑都指示了部署一個大型資料叢集前
要仔細考慮的潛能力、吞吐量、效能瓶頸。
Failure_Domain:
1、故障域指任何導致不能訪問一個或多個OSD的故障,可以是主機上停止的程序、硬碟故障、作業系統崩潰、有問題的網絡卡、損壞的電源、斷網、斷電等等。規劃硬體需求時,
要在多個需求間尋求平衡點,像付出很多努力減少故障域帶來的成本削減、隔離每個潛在故障域增加的成本。
HardWare_choose:
1、參考文件ceph-docs_zh-v1.3.pdf,頁碼為p24。
2、如果在只有一塊硬碟的機器上執行OSD,要把資料和作業系統分別放到不同分割槽;一般來說,我們推薦作業系統和資料分別使用不同的硬碟。
/*******************/
Time:2014-11-9
Author:skdkjzz
/******************/
OS_Recommentdations:
1、推薦在較新的Linux發行版上部署ceph。
2、在btrfs上執行ceph,推薦使用Linux核心版本高於v3.5。又何為btrfs?
3、syncfs(2):對非btrfs檔案系統(像XFS和ext4)而言,在一臺伺服器上運行了多個ceph-osd守護程序時,ceph使用syncfs(2)系統呼叫時效率高
得多(此功能在2.6.39核心和glibc-2.14加入)。又何為syncfs(2)?
Platfrom:
1、一般來說,ceph對Linux核心和系統初始化階段的依賴很少(sysvinit、upstart、systemd)。又何為sysvinit、upstart、systemd?
2、Notes:
2.1)預設核心的btrfs版本較老,不推薦用於ceph-osd儲存節點,要升級到推薦的核心,或者改用xfs或ext4。
2.2)預設核心帶的ceph客戶端較老,不推薦做核心空間客戶端(核心rbd或ceph檔案系統),請升級至推薦核心。
2.3)已安裝glibc版本不支援syncfs(2)系統呼叫,同一臺機器上使用xfs或ext4的ceph-osd守護程序效能一般,它可以更好。
Testing:
1、我們持續地在這個平臺上編譯所有分支、做基本單元測試;也為這個平臺構建可釋出軟體包。
2、我們在這個平臺上做基本的安裝和功能測試。
3、我們在這個平臺上持續地做全面的功能、退化、壓力測試,包括開發分支、預釋出版本、正式釋出版本。
Installing Ubuntu/debian Packages:p27
1、install release key:
1.1)軟體包都使用進行release.asc金鑰加密簽名過,把釋出金鑰新增到系統可信金鑰列表中可避免安全警告,執行命令如下:
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add
2、Add release packeages:
2.1)穩定版-bobtail是ceph最新的主要釋出,適用任何想在生產環境下部署ceph,重大的bug已經修復。把軟體庫新增到apt源列表,執行命令如下:
echo deb http://ceph.com/debian-bobtail/ $(lsb_release -sc)main | sudo tee /etc/apt/sources.list.d/ceph.list
2.2)穩定版-argonaut是ceph前一個的主要釋出,適用已經在生產環境下部署了argonaut又沒準備好升級。把軟體庫新增到apt源列表,執行命令如下:
echo deb http://ceph.com/debian-argonaut/ $(lsb_release-sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
3、install packages-ceph:
3.1)把正式釋出或者開發包新增到apt源列表中,要更新apt資料庫,在安裝ceph。執行命令如下:
sudo apt-get update && sudo apt-get install ceph
RPM packages install-centos&redhat:
1、rpm安裝和ubuntu下類似,詳見p29
Update Ceph:
1、可以逐個升級叢集中的守護程序:
1.1)登入主機升級ceph包
1.2)重啟ceph守護程序
1.3)確認叢集是健康,執行正常
1.4)Notes:important-->一旦升級守護程序就無法降級!
2、depend relation,升級順序如下:
2.1)Monitors(or Osds)
2.2)Osds(or Monitors)
2.3)Metadata Servers
2.4)RADOS Gateway
Notes:
作為一般規則,推薦一次性升級同一型別的所有守護程序(如所有ceph-osd守護程序、所有ceph-mon等等)以保證它們都處於同一版本。同時建議
您升級完叢集中的所有守護程序後再練習那個版本的新功能。
3、Upgrading OSD Steps:
3.1)Upgrade the OSD package--> ssh {osd-host} && sudo apt-get update && sudo apt-get install ceph
3.2)Restart the OSD, where N is the OSD number--> service ceph restart osd.N
3.3)Ensure the upgraded OSD has rejoined the cluster--> ceph osd stat
3.4)成功升級一個OSD後,再繼續其它的,直到完成所有OSD。
4、Upgrading Monitors:
4.1)Upgrade the ceph package--> ssh {mon-host} && sudo apt-get update && sudo apt-get install ceph
4.2)Restart the monitor--> service ceph restart mon.{name}
4.3)Ensure the monitor has rejoined the quorum--> ceph mon stat
4.4)成功升級一個監視器後,再繼續其它的,直到完成所有監視器。
5、Upgrading a Metadata Server:
5.1)Upgrade the ceph package--> ssh {mds-host} && sudo apt-get update && sudo apt-get install ceph
5.2)Restart the metadata server--> service ceph restart mds.{name}
5.3)Ensure the metadata server is up and running--> ceph mds stat
5.4)成功升級一個元資料伺服器後,再繼續其它的,直到完成所有元資料伺服器。
6、Upgrading a Client:
6.1)Upgrade the package--> ssh {client-host} && apt-get update && sudo apt-get install ceph-common librados2 librbd1 python-ceph
6.2)Ensure that you have the latest version--> ceph --version
Argonaut update to Bobtail:
1、Notes:
1.1)現在預設開啟了認證,但以前預設關閉
1.2)監視器使用了新的內部on-wire協議(一個時間同步協議?)
1.3)使用RBD format 2格式的映像前要先升級完所有OSD。
1.4)bobtail版支援format 2格式的映像!若ceph-osd未完全升級完成,不可以使用format 2格式。檢查叢集版本命令如下:
ceph osd ls 和 ceph tell osd.N version ,其中ceph osd ls 會列出叢集裡所有OSD的ID,迴圈指令碼示例:
{
for i in $(ceph osd ls); do
ceph tell osd.${i} version
done
}
1.5)具體開始細節見p33。
Build Ceph Prerequisites,in other words,Cpeh depend other libs or tools:
1、在 Ubuntu上,執行sudo apt-get install安裝缺失依賴,執行命令如下:
1.1)sudo apt-get install autotools-dev autoconf automake cdbs gcc g++ git libboost-dev libedit-dev libssl-dev libtool libfcgi libfcgi-dev libfuse-dev linux-kernel-headers libcrypto++-dev libcrypto++ libexpat1-dev
1.2)sudo apt-get install uuid-dev libkeyutils-dev libgoogle-perftools-dev libatomic-ops-dev libaio-dev libgdata-common libgdata13 libsnappy-dev libleveldb-dev
Building Ceph:
1、具體安裝步驟及注意事項如下:
1.1):進入ceph source,執行命令如下
{
cd ceph
./autogen.sh
./configure --prefix=?
make
}
1.2)根據你的系統可以用 make -j 同時執行多個任務,例如make -j4在雙核CPU上會編譯得更快。
1.3)安裝ceph到本地,執行命令--> sudo make install
Installing Oprofile:
1、分析ceph CPU消耗情況的最簡方法就是用系統級的oprofile--> sudo apt-get install oprofile oprofile-gui
Compiling Ceph for Profiling:
1、編譯適合分析的ceph:
1.1)先清理先前編譯--> make distclean
1.2)檢視輸出呼叫圖--> export CFLAGS="-fno=omit-frame-pointer -O2 -g"
1.3)最終編譯-->
{
./autogen.sh
./configure
make
}
1.4)超執行緒編譯選項-->make -j4
/*******************/
Time:2014-11-10
Author:skdkjzz
/******************/
RADOS About:
1、ceph 叢集可以包含數千個儲存節點,最小系統至少需要二個OSD才能做到資料複製。要配置OSD叢集,你得把配置寫入
配置檔案,ceph對很多選項提供了預設值,你可以在配置檔案裡覆蓋它們;另外,你可以使用命令列工具修改執行時配置。
2、ceph 啟動時要啟用三種守護程序:
2.1)ceph-osd
2.2)ceph-mon
2.3)ceph-mds
3、Hard disk prep:
3.1)如果檔案系統日誌在原始硬碟上,就需要禁用寫快取:新的核心(big than v2.6.33)不需要禁用
3.2)禁用硬碟的寫快取功能--> sudo hdparm -W 0 /dev/hda 0
3.3)在生產環境,建議您在系統盤執行OSD,在另外的硬盤裡放資料。如果必須把資料和系統放在一個硬盤裡,最好給資料分配一個單獨的分割槽。
4、Fs depend:
4.1)ceph的OSD依賴於底層檔案系統的穩定性和效能。
4.2)當前,我們推薦部署生產系統時使用xfs檔案系統,建議用btrfs做測試、開發和其他不太要緊的部署。我們相信,長期來看btrfs適合ceph的功能需求和發展方向,
但是xfs和ext4能提供當前部署所必需的穩定性。btrfs開發在迅速推進,使用者應該有能力經常更新到最新核心釋出,而且能跟蹤嚴重bug的修正進度。
4.3)ceph的OSD有賴於底層檔案系統的擴充套件屬性(XATTR)儲存各種內部物件狀態和元資料。底層檔案系統必須給XATTR提供足夠容量,btrfs沒有限制
隨檔案儲存的xattr元資料;xfs的限制相對大(64KB),多數部署都不會有瓶頸;ext4的則太小而不可用。
4.4)要用這些檔案系統,你得把下面這行寫入ceph.conf的[osd]段裡--> filestore xattr use omap = true
5、xfs、btrfs比較:
5.1)xfs和btrfs相比較ext3/4而言,在高伸縮性資料儲存方面有幾個優勢,xfs和btrfs都是日誌檔案系統,這使得在崩潰、斷電後恢復時更健壯,
因為檔案系統在寫入資料前會先記錄所有變更。
5.2)xfs由Silicon Graphics開發,是一個成熟、穩定的檔案系統。相反,btrfs是相對年輕的檔案系統,它致力於實現系統管理員夢寐以求的大規模資料儲存基礎,
和其他Linux檔案系統相比它有獨一無二的功能和優勢。
5.3)btrfs是寫時複製(copy-on-write, cow)檔案系統,它支援檔案建立時間戳和校驗和(可校驗元資料完整性)功能,所以它能探測到資料壞副本,
並且用好副本修復。寫時複製功能是說btrfs支援可寫檔案系統快照。btrfs也支援透明壓縮和其他功能。
5.4)btrfs也集成了多裝置管理功能,據此可以在底層支援異質硬碟儲存,和資料分配策略。未來開發社群還會提供fsck、拆分、資料加密功能,這些誘人的功能正是ceph叢集的理想選擇。
Configure Ceph:
1、典型的ceph叢集中至少要執行下面四種守護程序中的一種:
1.1)ceph-osd 物件儲存裝置
1.2)ceph-mon 監視器
1.3)ceph-mds 元資料伺服器
1.4)radosgw(ceph gateway) ceph閘道器
1.5)為方便起見,每個守護程序都有一系列預設值(參見 ceph/src/common/config_opts.h),你可以用ceph配置檔案覆蓋這些設定。
2、configfile--> ceph.conf:
2.1)啟動ceph叢集時,每個守護程序都從ceph.conf裡查詢它自己的配置。
2.2)手動配置時,你需要建立ceph.conf來配置叢集-->詳見p43。
2.3)ceph檔案使用ini風格的語法,以分號(;)和井號(#)開始的行是註釋。
2.4)一個例程由型別和它的例程編號(ID)確定,OSD的例程ID只能是數字,監視器和元資料伺服器的ID可包含字母和數字。
2.5)元變數大大簡化了叢集配置,ceph會把配置的元變數展開為具體值;元變數功能很強大,可以用在[global] 、[osd] 、
[mon] 、[mds]段裡,類似於bash的shell擴充套件-->詳見p45。
2.6)理想情況下一臺主機應該只 執行一類程序,例如:一臺主機執行著ceph-osd程序,另一臺主機執行著ceph-mds程序,ceph-mon程序又在另外一臺主機上。
2.7)每個主機都有一個標識名稱(系統配置),監視器可用addr選項指定網路地址和埠(如域名或IP地址),基本配置可以只指定最小配置。例如:
{
[mon.a]
host = hostName
mon addr = 150.140.130.120:6789
[osd.0]
host = hostName
Notes:
2.7.1)主機名設定是主機的短名字,不是正式域名FQDN,也不是IP地址;在執行hostname -s就可以得到短名字。
此設定只在mkcephfs和手動部署時用到,用chef部署ceph時不必要。
}
2.8)監視器預設監聽 6789 埠,元資料伺服器和OSD監聽從6800開始的第一個可用埠;要確保監聽6789埠的是監視器程序,每個OSD或元資料伺服器程序
監聽了從6800開始的埠。每個主機使用的埠數量都是確定的,所以你沒必要多開埠。但有些時候程序失敗後重啟卻沒釋放舊埠,就會繫結到了新埠,
所以要多留些埠作備用。如果你的部署區分了叢集網和公網,你也許需要給每個網路寫相應配置。網路埠配置示例命令:
iptables -A INPUT -m multiport -p tcp -s {ip-address}/{netmask} --dports 6789,6800:6810 -j ACCEPT
2.9)使用兩個分開的網路:
2.9.1)OSD給客戶端做資料複製時,如果副本數大於1,客戶端和ceph叢集間的網路負載會很容易增大,這會導致延時增大和效能下降,ceph處於Degrade。
2.9.2)拒絕服務攻擊(DoS),當攻擊OSD間的流量中斷時,歸置組就再也不能進入active+clean狀態了,它也會阻止使用者讀寫資料。
2.9.3)最好的辦法就是徹底分開叢集網和公網。詳見p47
{
2.9.3.1)要配置這樣的網路,把下面的選項加到ceph.conf裡的[global]段下:
{
[global]
public network {public-network-ip-address/netmask}
cluster network {enter cluster-network-ip-address/netmask}
}
2.9.3.2)要讓ceph主機使用分開的網路,把下面的選項設定在守護程序例程下面:
{
[osd.0]
public addr {host-public-ip-address}
cluster addr {host-cluster-ip-address}
}
}
2.10)典型的ceph生產叢集至少部署3個監視器來確保高可靠性,它允許一個監視器例程崩潰。奇數個監視器確保PAXOS演算法能確定
一批監視器裡哪個版本的叢集執行圖是最新的。
2.11)一個ceph 叢集可以只有一個監視器,但是如果它失敗了,因沒有監視器資料服務就會中斷。
2.12)ceph監視器預設監聽6789埠:
{
[mon.a]
host = hostName
mon addr = 150.140.130.120:6789
Notes:
1)預設情況下,ceph會在下面的路徑儲存監視器資料--> /var/lib/ceph/mon/$cluster-$id
2)你必須自己建立對應的目錄,前述的元變數必須先展開,名為ceph的叢集將展開為--> /var/lib/ceph/mon/ceph-a
3)你可以用mon data選項更改預設路徑,但我們不推薦修改。用下面的命令在新監視器主機上建立預設目錄,執行命令如下:
ssh {new-mon-host} && sudo mkdir -p /var/lib/ceph/mon/ceph-{mon-letter}
}
2.13)典型的生產叢集裡,一個數據盤上執行一個OSD程序;典型部署要指定日誌尺寸、檔案儲存的擴充套件屬性(XATTR)是否使用物件圖(如執行在ext4之上),例如:
{
[osd]
osd journal size = 10000
filestore xattr use omap = true #enables the object map. Only if running ext4.
[osd.0]
hostname = {hostname}
Notes:
1)預設ceph認為你把OSD資料儲存在下面的路徑下:--> /var/lib/ceph/osd/$cluster-$id
2)你必須建立對應目錄,名字為ceph的叢集其元變數完全展開後,前述的目錄將是--> /var/lib/ceph/osd/ceph-0
3)你可以用mon data選項更改預設路徑,但我們不推薦修改。用下面的命令在新監視器主機上建立預設目錄,執行命令如下:
ssh {new-osd-host} && sudo mkdir -p /var/lib/ceph/osd/ceph-{osd-number}
4)osd data路徑應該指向一個硬碟的掛載點,這個硬碟應該獨立於作業系統和守護程序所在硬碟。按下列步驟準備好並掛載:
ssh {new-osd-host} && sudo mkfs -t {fstype} /dev/{disk} && sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/ceph-{osd-number}
5)我們推薦用xfs或btrfs檔案系統,命令是mkfs
6)ceph預設把OSD日誌儲存在下面的路徑--> /var/lib/ceph/osd/$cluster-$id/journal
7)沒有效能優化時,ceph把日誌和OSD資料儲存相同的硬碟上;要優化OSD效能,可以把日誌分離到單獨的硬碟上(例如,固態硬碟能提供高日誌效能)。
8)ceph的osd journal size預設值是0,所以你得在 ceph.conf裡設定,日誌尺寸應該至少2倍於filestore min sync interval的值和預計吞吐量的乘積:
osd journal size = {2 * (expected throughput * filestore min sync interval)}
9)預計吞吐量應該包括硬碟吞吐量(持續的資料傳輸速度)和網路吞吐量,例如,7200轉的硬碟速度大概是100MB/s,取硬碟和網路吞吐量中較小的一個
應該能提供合理的預計吞吐量。一些使用者以 10GB 起步,例如--> osd journal size = 10000 (unit is MB?)
}
2.14)journal and debug:
2.14.1)為打 ceph的除錯輸出(例如,dout()),你可以在配置檔案裡新增除錯選項。ceph的日誌級別在 1 到 20 之間,1 是簡潔、20 是詳細。對每個
程序都相同的子系統可以在[global]下配置,對特定守護程序的子系統要配置在程序段下,如[mon] 、[osd] 、[mds] 下。 例如:
{
[global]
debug ms = 1
[mon]
debug mon = 20
debug paxos = 20
debug auth = 20
[osd]
debug osd = 20
debug filestore = 20
debug journal = 20
debug monc = 20
[mds]
debug mds = 20
debug mds balancer = 20
debug mds log = 20
debug mds migrator = 20
Notes:
1)你的系統執行良好的時候,應該選擇合適的日誌級別、關閉不必要的除錯設定來確保叢集執行在最佳狀態。記錄除錯輸出相 對慢,且浪費資源。
2)每個子系統的日誌都有它自己的輸出級別、和記憶體存留級別。你可以給每個子系統分別設定不同的日誌檔案和記憶體日誌級別,例如:
{
debug {subsystem} {log-level}/{memory-level}
#for example
debug mds log 1/20 (log/memory level)
}
}
2.15)EXAMPLE CEPH.CONF:
{
[global]
auth supported = cephx
[osd]
osd journal size = 1000
# uncomment the following line if you are mounting with ext4
# filestore xattr use omap = true
[mon.a]
host = myserver01
mon addr = 10.0.0.101:6789
[mon.b]
host = myserver02
mon addr = 10.0.0.102:6789
[mon.c]
host = myserver03
mon addr = 10.0.0.103:6789
[osd.0]
host = myserver01
[osd.1]
host = myserver02
[osd.2]
host = myserver03
[mds.a]
host = myserver01
}
2.16)Running Changes:
2.16.1)ceph可以在執行時更改ceph-osd、ceph-mon、ceph-mds守護程序的配置:
ceph {daemon-type} tell {id or *} injectargs '--{name} {value} [--{name} {value}]'
2.16.2)用osd、mon、mds中的一個替代{daemon-type},你可以用星號(*)或具體程序ID(其數字或字母)把執行時配置應用到一類程序的所有例程,
例如增加名為osd.0的ceph-osd程序的除錯級別的命令如下--> ceph osd tell 0 injectargs '--debug-osd 20 --debug-ms 1'
2.16.3)在ceph.conf檔案裡配置時用空格分隔關鍵詞,但在命令列使用的時候要用下劃線或連字元(_或-)分隔,例如--> debug osd 變成 debug-osd。
2.17)viewing Configuration at Runtime:
2.17.1)如果你的ceph叢集在執行,而你想看一個在執行程序的配置,用下面的命令:
ceph --admin-daemon {/path/to/admin/socket} config show | less
2.17.2)每個守護程序的管理套接字預設路徑如下--> /var/run/ceph/$cluster-$name.asok
2.17.3)元變數將展開為實際的叢集名和程序名,例如如果叢集名是ceph(預設值),你可以用下面的命令檢索osd.0的配置:
ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less
2.18)ceph-Filestore-config:
2.18.1)擴充套件屬性(XATTR)是配置裡的重要方面。一些檔案系統XATTR大小有限制,而且在一些情況下檔案系統儲存XATTR的速度
不如其他方法,下面的設定通過使用獨立於檔案系統的儲存方法能幫你提升效能。詳見p64
2.18.2)filestore需要週期性地靜默寫入、同步檔案系統,這建立了一個提交點,然後就能釋放相應的日誌條目了。較大的同步頻率
可減小執行同步的時間及儲存在日誌裡的資料量;較小的頻率使得後端的檔案系統能優化歸併較小的資料和元資料寫入,因此可能使同步更有效。
2.18.3)檔案儲存回寫器強制使用同步檔案排列來寫出大塊資料,這樣處理有望減小最終同步的代價。實踐中,禁用 "filestore flusher"有時候能提升效能。
2.18.4)QUEUE-->可以設定檔案儲存佇列的相關屬性,詳見p65
2.18.5)TIMEOUT-->可以設定關於執行緒超時值以及提交操作超時值。
2.18.6)btrfs相關配置
2.18.7)Journal相關配置
2.19)Journal-config:
2.19.1)ceph的OSD使用日誌的原因有二:速度和一致性。
2.19.2)速度:日誌允許OSD快速地提交小塊資料的寫入,ceph把小片、隨機IO依次寫入日誌,這樣,後端檔案系統就有機會歸併寫入動作,並最終提升併發承載力。
因此,使用OSD日誌能展現出優秀的瞬間寫效能,實際上卻沒有任何寫動作,因 為檔案系統把它們捕捉到了日誌。
2.19.3)一致性:ceph的OSD需要一個能保證原子操作的檔案系統介面。OSD把一個操作的描述寫入日誌,然後把操作應用到檔案系統,這需要原子更新一個物件
(例如歸置組元資料)。每隔一段filestore max sync interval和filestore min sync interval之間的時間,OSD停止寫入、把日誌同步到檔案系統,這樣允許OSD
修整日誌裡的操作並重用空間。失敗後,OSD從上次的同步點開始重放日誌。詳見p96
Ceph deployment:
1、你可以用很多其它部署系統(如Chef、Juju、Puppet、Crowbar)安裝chef,如果你只想測試一下,ceph提供了最小化安裝工具,它只依賴SSH和DNS。你得手動設定SSH和DNS。
2、提供了輕量級部署指令碼供您評估ceph,專業的部署應該考慮用專業的部署系統,像Chef、Juju、Puppet、Crowbar。
3、要配置一個測試或開發叢集,你可以用mkcephfs工具。
3.1)允許以root身份登入叢集主機。詳見p75
3.2)ceph的mkcephfs 指令碼不會把管理主機上建立的配置檔案拷貝到OSD主機,所以你得手動拷貝,例如:
ssh myserver01 sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
3.3)建立預設目錄--> sudo mkdir /var/lib/ceph/mon/ceph-a
3.4)如果你在每臺主機上都要執行多個OSD程序,應該先把這些硬碟分別掛載到其資料目錄下。
4、執行mkcephfs:
4.1)cd /etc/ceph && sudo mkcephfs -a -c /etc/ceph/ceph.conf -k ceph.keyring(這個指令碼把一個管理金鑰新增到了ceph.keyring 裡,它和root密碼的功能類似)
4.2)啟動或關閉叢集時不必使用sudo或者提供密碼--> service ceph -a start
Install chef:
1、chef定義了三種實體:
1.1)cheh節點:執行chef-client客戶端,用來安裝和管理軟體
1.2)chef伺服器:在chef節點上和chef-client互動
1.3)chef工作站:管理chef伺服器
2、Create ceph user:
2.1)chef-client命令需要合適的特權才能安裝和管理軟體,他應該有所有 root 特權,例如:
ssh