不管你是想為雲平台提供Ceph 對象存儲和/或 Ceph 塊設備,還是想部署一個 Ceph 文件系統或者把 Ceph 作為他用,所有 Ceph 存儲集群的部署都始於部署一個個 Ceph 節點、網絡和 Ceph 存儲集群。 Ceph 存儲集群至少需要一個 Ceph Monitor 和兩個 OSD 守護進程。而運行 Ceph 文件系統客戶端時,則必須要有元數據服務器( Metadata Server )。
- Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的復制、恢復、回填、再均衡,並通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集群設定為有2個副本時,至少需要2個 OSD 守護進程,集群才能達到 active+clean 狀態( Ceph 默認有3個副本,但你可以調整副本數)。
- Monitors: Ceph Monitor維護着展示集群狀態的各種圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變更的歷史信息(稱為 epoch )。
- MDSs: Ceph 元數據服務器( MDS )為 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,可以在不對 Ceph 存儲集群造成負擔的前提下,執行諸如 ls、find 等基本命令。
硬件推薦
Ceph 為普通硬件設計,這可使構建、維護 PB 級數據集群的費用相對低廉。規划集群硬件時,需要均衡幾方面的因素,包括區域失效和潛在的性能問題。硬件規划要包含把使用 Ceph 集群的 Ceph 守護進程和其他進程恰當分布。通常,我們推薦在一台機器上只運行一種類型的守護進程。我們推薦把使用數據集群的進程(如 OpenStack 、 CloudStack 等)安裝在別的機器上
Ceph 可以運行在廉價的普通硬件上,小型生產集群和開發集群可以在一般的硬件上。
推薦操作系統
下面的表格展示了 Ceph 需求和各種 Linux 發行版的對應關系。一般來說, Ceph 對內核和系統初始化階段的依賴很少(如 sysvinit 、 upstart 、 systemd )。
安裝(快速)
步驟一:預檢
在部署 Ceph 存儲集群之前,需要對 Ceph 客戶端和 Ceph 節點進行一些基本的配置,你也可以加入 Ceph 社區以尋求幫助。
步驟二:存儲集群
完成預檢之后,你就可以開始部署 Ceph 存儲集群了。
步驟三: CEPH 客戶端
大多數 Ceph 用戶不會直接往 Ceph 存儲集群里存儲對象,他們通常會使用 Ceph 塊設備、 Ceph 文件系統、或 Ceph 對象存儲這三大功能中的一個或多個。
預檢¶
New in version 0.60.
謝謝您嘗試 Ceph !我們建議安裝一個 ceph-deploy 管理節點和一個三節點的Ceph 存儲集群來研究 Ceph 的基本特性。這篇預檢會幫你准備一個 ceph-deploy 管理節點、以及三個Ceph 節點(或虛擬機),以此構成 Ceph 存儲集群。在進行下一步之前,請參見操作系統推薦以確認你安裝了合適的 Linux 發行版。如果你在整個生產集群中只部署了單一 Linux 發行版的同一版本,那么在排查生產環境中遇到的問題時就會容易一點。
在下面的描述中節點代表一台機器。
安裝 CEPH 部署工具¶
把 Ceph 倉庫添加到 ceph-deploy 管理節點,然后安裝 ceph-deploy
-
在 CentOS 上,可以執行下列命令:
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
-
把軟件包源加入軟件倉庫。用文本編輯器創建一個 YUM (Yellowdog Updater, Modified) 庫文件,其路徑為 /etc/yum.repos.d/ceph.repo 。例如:
sudo vim /etc/yum.repos.d/ceph.repo
把如下內容粘帖進去,用 Ceph 的最新主穩定版名字替換 {ceph-stable-release} (如 firefly ),用你的Linux發行版名字替換 {distro} (如 el6 為 CentOS 6 、 el7 為 CentOS 7 、 rhel6 為 Red Hat 6.5 、 rhel7 為 Red Hat 7 、 fc19 是 Fedora 19 、 fc20 是 Fedora 20 )。最后保存到 /etc/yum.repos.d/ceph.repo 文件中。
[ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
-
更新軟件庫並安裝 ceph-deploy :
sudo yum update && sudo yum install ceph-deploy
Note
你也可以從歐洲鏡像 eu.ceph.com 下載軟件包,只需把 http://ceph.com/ 替換成 http://eu.ceph.com/ 即可
CEPH 節點安裝
你的管理節點必須能夠通過 SSH 無密碼地訪問各 Ceph 節點。如果 ceph-deploy 以某個普通用戶登錄,那么這個用戶必須有無密碼使用 sudo 的權限。
安裝 NTP
我們建議在所有 Ceph 節點上安裝 NTP 服務(特別是 Ceph Monitor 節點),以免因時鍾漂移導致故障,詳情見時鍾。
在 CentOS / RHEL 上,執行:
sudo yum install ntp ntpdate ntp-doc
在 Debian / Ubuntu 上,執行:
sudo apt-get install ntp
確保在各 Ceph 節點上啟動了 NTP 服務,並且要使用同一個 NTP 服務器,詳情見 NTP 。
安裝 SSH 服務器
在所有 Ceph 節點上執行如下步驟:
-
在各 Ceph 節點安裝 SSH 服務器(如果還沒有):
sudo apt-get install openssh-server
或者
sudo yum install openssh-server
-
確保所有 Ceph 節點上的 SSH 服務器都在運行。
創建部署 CEPH 的用戶
ceph-deploy 工具必須以普通用戶登錄 Ceph 節點,且此用戶擁有無密碼使用 sudo 的權限,因為它需要在安裝軟件及配置文件的過程中,不必輸入密碼。
較新版的 ceph-deploy 支持用 --username 選項提供可無密碼使用 sudo 的用戶名(包括 root ,雖然不建議這樣做)。使用 ceph-deploy --username {username} 命令時,指定的用戶必須能夠通過無密碼 SSH 連接到 Ceph 節點,因為 ceph-deploy 中途不會提示輸入密碼。
我們建議在集群內的所有 Ceph 節點上給 ceph-deploy 創建一個特定的用戶,但不要用 “ceph” 這個名字。全集群統一的用戶名可簡化操作(非必需),然而你應該避免使用知名用戶名,因為黑客們會用它做暴力破解(如 root 、 admin、 {productname} )。后續步驟描述了如何創建無 sudo 密碼的用戶,你要用自己取的名字替換 {username} 。
Note
從 Infernalis 版起,用戶名 “ceph” 保留給了 Ceph 守護進程。如果 Ceph 節點上已經有了 “ceph” 用戶,升級前必須先刪掉這個用戶。
-
在各 Ceph 節點創建新用戶。
ssh user@ceph-server sudo useradd -d /home/{username} -m {username} sudo passwd {username}
-
確保各 Ceph 節點上新創建的用戶都有 sudo 權限。
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username} sudo chmod 0440 /etc/sudoers.d/{username}
允許無密碼 SSH 登錄
正因為 ceph-deploy 不支持輸入密碼,你必須在管理節點上生成 SSH 密鑰並把其公鑰分發到各 Ceph 節點。 ceph-deploy 會嘗試給初始 monitors 生成 SSH 密鑰對。
-
生成 SSH 密鑰對,但不要用 sudo 或 root 用戶。提示 “Enter passphrase” 時,直接回車,口令即為空:
ssh-keygen Generating public/private key pair. Enter file in which to save the key (/ceph-admin/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /ceph-admin/.ssh/id_rsa. Your public key has been saved in /ceph-admin/.ssh/id_rsa.pub.
-
把公鑰拷貝到各 Ceph 節點,把下列命令中的 {username} 替換成前面創建部署 Ceph 的用戶里的用戶名。
ssh-copy-id {username}@node1 ssh-copy-id {username}@node2 ssh-copy-id {username}@node3
-
(推薦做法)修改 ceph-deploy 管理節點上的 ~/.ssh/config 文件,這樣 ceph-deploy 就能用你所建的用戶名登錄 Ceph 節點了,而無需每次執行 ceph-deploy 都要指定 --username {username} 。這樣做同時也簡化了 ssh 和 scp 的用法。把 {username} 替換成你創建的用戶名。
Host node1 Hostname node1 User {username} Host node2 Hostname node2 User {username} Host node3 Hostname node3 User {username}
引導時聯網
Ceph 的各 OSD 進程通過網絡互聯並向 Monitors 上報自己的狀態。如果網絡默認為 off ,那么 Ceph 集群在啟動時就不能上線,直到你打開網絡。
某些發行版(如 CentOS )默認關閉網絡接口。所以需要確保網卡在系統啟動時都能啟動,這樣 Ceph 守護進程才能通過網絡通信。例如,在 Red Hat 和 CentOS 上,需進入 /etc/sysconfig/network-scripts 目錄並確保 ifcfg-{iface} 文件中的 ONBOOT 設置成了 yes 。
確保聯通性
用 ping 短主機名( hostname -s )的方式確認網絡聯通性。解決掉可能存在的主機名解析問題。
Note
主機名應該解析為網絡 IP 地址,而非回環接口 IP 地址(即主機名應該解析成非 127.0.0.1 的IP地址)。如果你的管理節點同時也是一個 Ceph 節點,也要確認它能正確解析自己的主機名和 IP 地址(即非回環 IP 地址)。
開放所需端口
Ceph Monitors 之間默認使用 6789 端口通信, OSD 之間默認用 6800:7300 這個范圍內的端口通信。詳情見網絡配置參考。 Ceph OSD 能利用多個網絡連接進行與客戶端、monitors、其他 OSD 間的復制和心跳的通信。
某些發行版(如 RHEL )的默認防火牆配置非常嚴格,你可能需要調整防火牆,允許相應的入站請求,這樣客戶端才能與 Ceph 節點上的守護進程通信。
對於 RHEL 7 上的 firewalld ,要對公共域開放 Ceph Monitors 使用的 6789 端口和 OSD 使用的 6800:7300 端口范圍,並且要配置為永久規則,這樣重啟后規則仍有效。例如:
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
若使用 iptables ,要開放 Ceph Monitors 使用的 6789 端口和 OSD 使用的 6800:7300 端口范圍,命令如下:
sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT
在每個節點上配置好 iptables 之后要一定要保存,這樣重啟之后才依然有效。例如:
/sbin/service iptables save
終端( TTY )
在 CentOS 和 RHEL 上執行 ceph-deploy 命令時可能會報錯。如果你的 Ceph 節點默認設置了 requiretty ,執行 sudo visudo 禁用它,並找到 Defaults requiretty 選項,把它改為 Defaults:ceph !requiretty 或者直接注釋掉,這樣 ceph-deploy 就可以用之前創建的用戶(創建部署 Ceph 的用戶 )連接了。
Note
編輯配置文件 /etc/sudoers 時,必須用 sudo visudo 而不是文本編輯器。
SELINUX
在 CentOS 和 RHEL 上, SELinux 默認為 Enforcing 開啟狀態。為簡化安裝,我們建議把 SELinux 設置為 Permissive 或者完全禁用,也就是在加固系統配置前先確保集群的安裝、配置沒問題。用下列命令把 SELinux 設置為 Permissive :
sudo setenforce 0
要使 SELinux 配置永久生效(如果它的確是問題根源),需修改其配置文件 /etc/selinux/config 。
優先級/首選項
確保你的包管理器安裝了優先級/首選項包且已啟用。在 CentOS 上你也許得安裝 EPEL ,在 RHEL 上你也許得啟用可選軟件庫。
sudo yum install yum-plugin-priorities
比如在 RHEL 7 服務器上,可用下列命令安裝 yum-plugin-priorities並啟用 rhel-7-server-optional-rpms 軟件庫:
sudo yum install yum-plugin-priorities --enablerepo=rhel-7-server-optional-rpms
存儲集群快速入門
如果你還沒完成預檢,請先做完。本篇快速入門用 ceph-deploy 從管理節點建立一個 Ceph 存儲集群,該集群包含三個節點,以此探索 Ceph 的功能。
第一次練習時,我們創建一個 Ceph 存儲集群,它有一個 Monitor 和兩個 OSD 守護進程。一旦集群達到 active + clean 狀態,再擴展它:增加第三個 OSD 、增加元數據服務器和兩個 Ceph Monitors。為獲得最佳體驗,先在管理節點上創建一個目錄,用於保存 ceph-deploy 生成的配置文件和密鑰對。
mkdir my-cluster cd my-cluster
ceph-deploy 會把文件輸出到當前目錄,所以請確保在此目錄下執行 ceph-deploy 。
Important
如果你是用另一普通用戶登錄的,不要用 sudo 或在 root 身份運行 ceph-deploy ,因為它不會在遠程主機上調用所需的 sudo 命令。
禁用 requiretty
在某些發行版(如 CentOS )上,執行 ceph-deploy 命令時,如果你的 Ceph 節點默認設置了 requiretty 那就會遇到報錯。可以這樣禁用此功能:執行 sudo visudo ,找到 Defaults requiretty 選項,把它改為 Defaults:ceph !requiretty ,這樣 ceph-deploy 就能用 ceph 用戶登錄並使用 sudo 了。
創建集群
如果在某些地方碰到麻煩,想從頭再來,可以用下列命令清除配置:
ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys
用下列命令可以連 Ceph 安裝包一起清除:
ceph-deploy purge {ceph-node} [{ceph-node}]
如果執行了 purge ,你必須重新安裝 Ceph 。
在管理節點上,進入剛創建的放置配置文件的目錄,用 ceph-deploy 執行如下步驟。
-
創建集群。
ceph-deploy new {initial-monitor-node(s)}
例如:
ceph-deploy new node1
在當前目錄下用 ls 和 cat 檢查 ceph-deploy 的輸出,應該有一個 Ceph 配置文件、一個 monitor 密鑰環和一個日志文件。詳情見 ceph-deploy new -h 。
-
把 Ceph 配置文件里的默認副本數從 3 改成 2 ,這樣只有兩個 OSD 也可以達到 active + clean 狀態。把下面這行加入 [global] 段:
osd pool default size = 2
-
如果你有多個網卡,可以把 public network 寫入 Ceph 配置文件的 [global] 段下。詳情見網絡配置參考。
public network = {ip-address}/{netmask}
-
安裝 Ceph 。
ceph-deploy install {ceph-node} [{ceph-node} ...]
例如:
ceph-deploy install admin-node node1 node2 node3
ceph-deploy 將在各節點安裝 Ceph 。 注:如果你執行過 ceph-deploy purge ,你必須重新執行這一步來安裝 Ceph 。
-
配置初始 monitor(s)、並收集所有密鑰:
ceph-deploy mon create-initial
完成上述操作后,當前目錄里應該會出現這些密鑰環:
- {cluster-name}.client.admin.keyring
- {cluster-name}.bootstrap-osd.keyring
- {cluster-name}.bootstrap-mds.keyring
- {cluster-name}.bootstrap-rgw.keyring
Note
只有在安裝 Hammer 或更高版時才會創建 bootstrap-rgw 密鑰環。
Note
如果此步失敗並輸出類似於如下信息 “Unable to find /etc/ceph/ceph.client.admin.keyring”,請確認 ceph.conf 中為 monitor 指定的 IP 是 Public IP,而不是 Private IP。
-
添加兩個 OSD 。為了快速地安裝,這篇快速入門把目錄而非整個硬盤用於 OSD 守護進程。如何為 OSD 及其日志使用獨立硬盤或分區,請參考 ceph-deploy osd 。登錄到 Ceph 節點、並給 OSD 守護進程創建一個目錄。
ssh node2 sudo mkdir /var/local/osd0 exit ssh node3 sudo mkdir /var/local/osd1 exit
然后,從管理節點執行 ceph-deploy 來准備 OSD 。
ceph-deploy osd prepare {ceph-node}:/path/to/directory
例如:
ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1
最后,激活 OSD 。
ceph-deploy osd activate {ceph-node}:/path/to/directory
例如:
ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
-
用 ceph-deploy 把配置文件和 admin 密鑰拷貝到管理節點和 Ceph 節點,這樣你每次執行 Ceph 命令行時就無需指定 monitor 地址和 ceph.client.admin.keyring 了。
ceph-deploy admin {admin-node} {ceph-node}
例如:
ceph-deploy admin admin-node node1 node2 node3
ceph-deploy 和本地管理主機( admin-node )通信時,必須通過主機名可達。必要時可修改 /etc/hosts ,加入管理主機的名字。
-
確保你對 ceph.client.admin.keyring 有正確的操作權限。
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
-
檢查集群的健康狀況。
ceph health
等 peering 完成后,集群應該達到 active + clean 狀態。
操作集群
用 ceph-deploy 部署完成后它會自動啟動集群。要在 Debian/Ubuntu 發行版下操作集群守護進程,參見用 Upstart 運行 Ceph ;要在 CentOS 、 Red Hat 、 Fedora 和 SLES 下操作集群守護進程,參見用 sysvinit 運行 Ceph 。
關於 peering 和集群健康狀況請參見監控集群;關於 OSD 守護進程和歸置組( placement group )健康狀況參見監控 OSD 和歸置組;關於用戶管理請參見用戶管理。
Ceph 集群部署完成后,你可以嘗試一下管理功能、 rados 對象存儲命令,之后可以繼續快速入門手冊,了解 Ceph 塊設備、 Ceph 文件系統和 Ceph 對象網關。
擴展集群(擴容)
一個基本的集群啟動並開始運行后,下一步就是擴展集群。在 node1 上添加一個 OSD 守護進程和一個元數據服務器。然后分別在 node2 和 node3 上添加 Ceph Monitor ,以形成 Monitors 的法定人數。
添加 OSD
你運行的這個三節點集群只是用於演示的,把 OSD 添加到 monitor 節點就行。
ssh node1 sudo mkdir /var/local/osd2 exit
然后,從 ceph-deploy 節點准備 OSD 。
ceph-deploy osd prepare {ceph-node}:/path/to/directory
例如:
ceph-deploy osd prepare node1:/var/local/osd2
最后,激活 OSD 。
ceph-deploy osd activate {ceph-node}:/path/to/directory
例如:
ceph-deploy osd activate node1:/var/local/osd2
一旦你新加了 OSD , Ceph 集群就開始重均衡,把歸置組遷移到新 OSD 。可以用下面的 ceph 命令觀察此過程:
ceph -w
你應該能看到歸置組狀態從 active + clean 變為 active ,還有一些降級的對象;遷移完成后又會回到 active + clean 狀態( Control-C 退出)。
添加元數據服務器
至少需要一個元數據服務器才能使用 CephFS ,執行下列命令創建元數據服務器:
ceph-deploy mds create {ceph-node}
例如:
ceph-deploy mds create node1
Note
當前生產環境下的 Ceph 只能運行一個元數據服務器。你可以配置多個,但現在我們還不會為多個元數據服務器的集群提供商業支持。
添加 RGW 例程
要使用 Ceph 的 Ceph 對象網關組件,必須部署 RGW 例程。用下列方法創建新 RGW 例程:
ceph-deploy rgw create {gateway-node}
例如:
ceph-deploy rgw create node1
Note
這個功能是從 Hammer 版和 ceph-deploy v1.5.23 才開始有的。
RGW 例程默認會監聽 7480 端口,可以更改該節點 ceph.conf 內與 RGW 相關的配置,如下:
[client] rgw frontends = civetweb port=80
用的是 IPv6 地址的話:
[client] rgw frontends = civetweb port=[::]:80
添加 MONITORS
Ceph 存儲集群需要至少一個 Monitor 才能運行。為達到高可用,典型的 Ceph 存儲集群會運行多個 Monitors,這樣在單個 Monitor 失敗時不會影響 Ceph 存儲集群的可用性。Ceph 使用 PASOX 算法,此算法要求有多半 monitors(即 1 、 2:3 、 3:4 、 3:5 、 4:6 等 )形成法定人數。
新增兩個監視器到 Ceph 集群。
ceph-deploy mon add {ceph-node}
例如:
ceph-deploy mon add node2 node3
新增 Monitor 后,Ceph 會自動開始同步並形成法定人數。你可以用下面的命令檢查法定人數狀態:
ceph quorum_status --format json-pretty
Tip
當你的 Ceph 集群運行着多個 monitor 時,各 monitor 主機上都應該配置 NTP ,而且要確保這些 monitor 位於 NTP 服務的同一級。
存入/檢出對象數據
要把對象存入 Ceph 存儲集群,客戶端必須做到:
- 指定對象名
- 指定存儲池
Ceph 客戶端檢出最新集群運行圖,用 CRUSH 算法計算出如何把對象映射到歸置組,然后動態地計算如何把歸置組分配到 OSD 。要定位對象,只需要對象名和存儲池名字即可,例如:
ceph osd map {poolname} {object-name}
練習:定位某個對象
作為練習,我們先創建一個對象,用 rados put 命令加上對象名、一個有數據的測試文件路徑、並指定存儲池。例如:
echo {Test-data} > testfile.txt rados put {object-name} {file-path} --pool=data rados put test-object-1 testfile.txt --pool=data
為確認 Ceph 存儲集群存儲了此對象,可執行:
rados -p data ls
現在,定位對象:
ceph osd map {pool-name} {object-name} ceph osd map data test-object-1
Ceph 應該會輸出對象的位置,例如:
osdmap e537 pool 'data' (0) object 'test-object-1' -> pg 0.d1743484 (0.4) -> up [1,0] acting [1,0]
用``rados rm`` 命令可刪除此測試對象,例如:
rados rm test-object-1 --pool=data
隨着集群的運行,對象位置可能會動態改變。 Ceph 有動態均衡機制,無需手動干預即可完成。
塊設備快速入門¶
要實踐本手冊,你必須先完成存儲集群快速入門 ,並確保 Ceph 存儲集群處於 active + clean 狀態,這樣才能使用 Ceph 塊設備。
Note
你可以在虛擬機上運行 ceph-client 節點,但是不能在與 Ceph 存儲集群(除非它們也用 VM )相同的物理節點上執行下列步驟。詳情見 FAQ 。
安裝 CEPH
-
確認你使用了合適的內核版本,詳情見操作系統推薦。
lsb_release -a uname -r
-
在管理節點上,通過 ceph-deploy 把 Ceph 安裝到 ceph-client 節點。
ceph-deploy install ceph-client
-
在管理節點上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷貝到 ceph-client 。
ceph-deploy admin ceph-client
ceph-deploy 工具會把密鑰環復制到 /etc/ceph 目錄,要確保此密鑰環文件有讀權限(如 sudo chmod +r /etc/ceph/ceph.client.admin.keyring )。
配置塊設備
-
在 ceph-client 節點上創建一個塊設備 image 。
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
-
在 ceph-client 節點上,把 image 映射為塊設備。
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
-
在 ceph-client 節點上,創建文件系統后就可以使用塊設備了。
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
此命令可能耗時較長。
-
在 ceph-client 節點上掛載此文件系統。
sudo mkdir /mnt/ceph-block-device sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device cd /mnt/ceph-block-device
CEPH 文件系統快速入門
開始實踐 Ceph 文件系統入門手冊前,必須先完成存儲集群快速入門。在管理節點上完成此入門。
准備工作
-
確認你使用了合適的內核版本,詳情見操作系統推薦。
lsb_release -a uname -r
-
在管理節點上,通過 ceph-deploy 把 Ceph 安裝到 ceph-client 節點上。
ceph-deploy install ceph-client
-
確保 Ceph 存儲集群在運行,且處於 active + clean 狀態。同時,確保至少有一個 Ceph 元數據服務器在運行。
ceph -s [-m {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]
創建文件系統
雖然已創建了元數據服務器(存儲集群快速入門),但如果你沒有創建存儲池和文件系統,它是不會變為活動狀態的。參見 創建 Ceph 文件系統 。
ceph osd pool create cephfs_data <pg_num> ceph osd pool create cephfs_metadata <pg_num> ceph fs new <fs_name> cephfs_metadata cephfs_data
創建密鑰文件
Ceph 存儲集群默認啟用認證,你應該有個包含密鑰的配置文件(但不是密鑰環本身)。用下述方法獲取某一用戶的密鑰:
-
在密鑰環文件中找到與某用戶對應的密鑰,例如:
cat ceph.client.admin.keyring
-
找到用於掛載 Ceph 文件系統的用戶,復制其密鑰。大概看起來如下所示:
[client.admin] key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
-
打開文本編輯器。
-
把密鑰粘帖進去,大概像這樣:
AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
-
保存文件,並把其用戶名 name 作為一個屬性(如 admin.secret )。
-
確保此文件對用戶有合適的權限,但對其他用戶不可見。
內核驅動
把 Ceph FS 掛載為內核驅動。
sudo mkdir /mnt/mycephfs sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs
Ceph 存儲集群默認需要認證,所以掛載時需要指定用戶名 name 和創建密鑰文件一節中創建的密鑰文件 secretfile ,例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
Note
從管理節點而非服務器節點掛載 Ceph FS 文件系統,詳情見 FAQ 。
用戶空間文件系統( FUSE )
把 Ceph FS 掛載為用戶空間文件系統( FUSE )。
sudo mkdir ~/mycephfs sudo ceph-fuse -m {ip-address-of-monitor}:6789 ~/mycephfs
Ceph 存儲集群默認要求認證,需指定相應的密鑰環文件,除非它在默認位置(即 /etc/ceph ):
sudo ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 ~/mycephfs
CEPH 對象存儲快速入門
從 firefly(v0.80)起,Ceph 存儲集群顯著地簡化了 Ceph 對象網關的安裝和配置。網關守護進程內嵌了 Civetweb,無需額外安裝 web 服務器或配置 FastCGI。此外,可以直接 使用 ceph-deploy 來安裝網關軟件包、生成密鑰、配置數據目錄以及創建一個網關實例。
Tip
Civetweb 默認使用 7480 端口。要么直接打開 7480 端口,要么在你的 Ceph 配置文件中設置首選端口(例如 80 端口)。
要使用 Ceph 對象網關,請執行下列步驟:
安裝 CEPH 對象網關
-
在 client-node 上執行預安裝步驟。如果你打算使用 Civetweb 的默認端口 7480 ,必須通過 firewall-cmd 或 iptables 來打開它。詳情見預檢。
-
從管理節點的工作目錄,在 client-node 上安裝 Ceph 對象網關軟件包。例如:
ceph-deploy install --rgw <client-node> [<client-node> ...]
新建 CEPH 對象網關實例
從管理節點的工作目錄,在 client-node 上新建一個 Ceph 對象網關實例。例如:
ceph-deploy rgw create
一旦網關開始運行,你就可以通過 7480 端口來訪問它(比如 http://client-node:7480 )。
配置 CEPH 對象網關實例
-
通過修改 Ceph 配置文件可以更改默認端口(比如改成 80 )。增加名為 [client.rgw.<client-node>] 的小節,把 <client-node> 替換成你自己 Ceph 客戶端節點的短名稱(即 hostname -s 的輸出)。例如,你的節點名就是 client-node ,在 [global] 節后增加一個類似於下面的小節:
[client.rgw.client-node] rgw_frontends = "civetweb port=80"
Note
確保在 rgw_frontends 鍵值對的 port=<port-number> 中沒有空格。
Important
如果你打算使用 80 端口,確保 Apache 服務器沒有在使用該端口,否則會和 Civetweb 沖突。出現這種情況時我們建議移除 Apache 服務。
-
為了使新端口的設置生效,需要重啟 Ceph 對象網關。在 RHEL 7 和 Fedora 上 ,執行:
sudo systemctl restart ceph-radosgw.service
在 RHEL 6 和 Ubuntu 上,執行:
sudo service radosgw restart id=rgw.<short-hostname>
-
最后,檢查節點的防火牆,確保你所選用的端口(例如 80 端口)處於開放狀態。如果沒有,把該端口加入放行規則並重載防火牆的配置。例如:
sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --add-port 80/tcp --permanent sudo firewall-cmd --reload
關於使用 firewall-cmd 或 iptables 配置防火牆的詳細信息,請參閱預檢。
你應該可以生成一個未授權的請求,並收到應答。例如,一個如下不帶參數的請求:
http://<client-node>:80
應該收到這樣的應答:
<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>anonymous</ID> <DisplayName></DisplayName> </Owner> <Buckets> </Buckets> </ListAllMyBucketsResult>