■ 河南 劉京義
編者按:Ceph是新一代自由軟件分布式文件系統(tǒng),具有良好的可擴展性(PB級別以上)、高性能和高可靠性,Ceph擁有數(shù)據(jù)與元數(shù)據(jù)的分離,動態(tài)的分布式的元數(shù)據(jù)管理,可靠統(tǒng)一的分布式對象存儲機制。Ceph是一個高可用、易于管理、開源的分布式存儲系統(tǒng),可以在一套系統(tǒng)中同時提供對象存儲、塊存儲以及文件存儲服務。
以簡單的實例來說明如何搭建Ceph分布式存儲。
這里使用了四臺主機,分別安裝了CentOS 7.X系統(tǒng),其IP從1 72.16.1.101到172.16.1.10 4,一臺作為管理節(jié)點使用,名稱為“server1”,兩臺作為數(shù)據(jù)存儲節(jié)點,名稱分別為“server2”和“server3”。一臺作為客戶端使用。名稱為“cephClient”。在管理主機上執(zhí)行“hostnamectl set-hostname server1”命令,修改其主機名稱。
執(zhí)行“useradd cephuse r”,“echo“cephuser”|pass wd --stdin cephuser”命令,創(chuàng)建名為“cephuser”的賬戶,其密碼為“cephuser”,用來管理主節(jié)點。執(zhí)行“cat<
在“server1”上執(zhí)行“yum -y install ntp ntpdate”命令,安裝NTP組件,將“server1”作為時間服務器使用。執(zhí)行“sed -i'/^server/s/^/#/g'/etc/ntp.conf”,“sed -i'25aserver 127.127.1.0 fudge 127.127.1.0 stratum 8'/etc/ntp.conf”命令,配置NTP參數(shù),執(zhí)行“systemctl start ntpd”,“systemctl enable ntpd”命令,重啟并激活NTP服務。
執(zhí)行“netstat -utpln|grep 123” 命令,查看NTP服務端口開啟狀態(tài)。在其他主機上執(zhí)行“yum -y install ntpdate”,“/usr/sbin/ntpdate 172.16.1.101”,“echo "/usr/sbin/ntpdate 172.16.1.101" >>/etc/rc.l ocal”,“chmod +x/etc/rc.local”命令,根據(jù)“server1”來同步時間,并在開機時自動加載時間同步命令,并為其設置執(zhí)行權(quán)限。
在“server1”上執(zhí)行“y um -y install yumutils”命令,來安裝YUM的管理工具。執(zhí)行“yum-config-manager--add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/”命令,來配置YUM管理器,添加指定的源。執(zhí)行“l(fā)s/etc/yum.repos.d/”命令,查看對應的源信息。執(zhí)行“yum-y install epel-release--nogpgcheck”命令,來安裝對應的源,并且不檢查公鑰。執(zhí)行“cat <
輸入如圖1所示內(nèi)容,在其他主機上分別執(zhí)行以上命令,來配置源信息。
在其他主機上安裝Ceph
圖1 配置源信息
在“server1”上執(zhí)行“su -cephuser”,“mkdir cephdata”,“cd cephdata”命令,切換到“cephuser”賬戶環(huán)境,并在其家目錄中創(chuàng)建對應的目錄,這樣更便于管理。在該目錄中執(zhí)行“sudo yum -y install ceph-deploy”,“sudo yum -y install ceph–nogpgcheck”命令,安裝Ceph主程序和管理工具。
如果安裝出現(xiàn)異常,可以執(zhí)行“sudo rm -rt/etc/yum.repos.d/centos.repo”,“sudo/etc/yum.repos.d/bak/*/etc/yum.repos.d/”命令,使用epel源執(zhí)行安裝即可。之后在“server2”和“server3”上分別執(zhí)行以上命令,所不同的是還要執(zhí)行“sudo yum -y install deltarpm”命令,來安裝“deltarpm”工 具,避免出現(xiàn)啟動失敗的情況。在客戶端主機上執(zhí)行“yum-y install yum-pluginpriorities”?!皔um -y install ceph ceph-radosgw--nogpgcheck”命令,安裝YUM優(yōu)先級插件,Ceph主程序和Ceph連接的網(wǎng)關(guān)程序。
在“server1”上進入Ceph安裝目錄,執(zhí)行“sshkeygen -t rsa”命令,生成所需的秘鑰對。執(zhí)行“ssh-copy-id cephuser@server1”,“ssh-copyid cephuser@server2”,“ssh-copy-id cephuser@server3”,“ssh-copy-id root@cephclient”命令,將公鑰復制到所有的主機上。執(zhí)行“cat <
輸入“Host server1”,“Hostname server1”,“User cephuser”,“Host server2”,“Hostname server2”,“User cephuser”,“Host server3”,“Hostname server31”,“User cephuser”,“END”行,添 加對應的主機和賬戶名稱。執(zhí)行“chmod 644/home/cephuser/.ssh/config”命令,為該配置文件合適的權(quán)限。執(zhí)行“ceph-deploy new server2 server3”命令,對數(shù)據(jù)節(jié)點進行初始化操作。如果出錯的話,可以在對應的數(shù)據(jù)節(jié)點上執(zhí)行“yum -y install epel-release”,“rpm -e epel-release”,“rpm -qa epel-release”命令,安裝對應的epel源,之后進行安裝。
如果依然出錯,可以根據(jù)出錯提示信息,執(zhí)行“rpm -ivh/varcache/yum/x86_4/7/xxx.rpm”命令,來執(zhí)行對應的安裝操作,其中的“xxx”為具體的文件名稱。之后在管理節(jié)點執(zhí)行初始化操作,就可以順利安裝了。注意,如果在配置過程中出現(xiàn)問題,需要重新創(chuàng)建集群或重新安裝Ceph,可以執(zhí)行“ceph-deploy purge server2 server3”,“cephdeploy purgedata server2 server3”,“ceph-deploy forgetkeys &&rm ceph.*”命令,將Ceph集群中的數(shù)據(jù)全部清除。
在“server1”上執(zhí)行“cat <
執(zhí)行“ssh cephuser@server2”命令,連接到指定的數(shù)據(jù)節(jié)點。執(zhí)行“sudo fdisk/dev/sdb”和“sudo partx -a/dev/sdb”命令,對指定的磁盤進行分區(qū)處理。執(zhí)行“sudo mkfs -t xfs/dev/sdb1”命令,創(chuàng)建所需的分區(qū)。執(zhí)行“sudo mkdir/var/local/osd0”命令,掛載OSD存儲路徑。執(zhí)行“sudo vi/etc/fstab”命令,輸入“/dev/sdb1/var/local/osd0 xfs defaults 0 0”行,保存對應的文件系統(tǒng)信息。
執(zhí)行“sudo mount -a”命令,重新加載“/etc/fstab”中的所有信息。執(zhí)行“sudo chmod 777/var/local/osd0”,“sudo chown ceph:ceph/var/local/osd0/”命令,為目標路徑設置訪問權(quán)限和屬主信息。執(zhí)行“l(fā)s -ld/var/local/osd0/”,“df -hT”命令,查看對應的路徑和磁盤信息。執(zhí)行“exit”命令退出。針對“server3”節(jié)點執(zhí)行相同的配置操作。
在“server1”上執(zhí)行“ceph-deploy osd prepare server2:/var/local/osd0 server3:/var/local/osd1”命令,針對數(shù)據(jù)節(jié)點初始創(chuàng)建OSD節(jié)點,并指定節(jié)點存儲文件位置。對于OSD節(jié)點來說,其“/var/local/osd*/”存儲數(shù)據(jù)實體的目錄權(quán)限必須為777,并且屬主和屬組必須為“ceph”。執(zhí)行“chmod +r/home/cephuser/cephdata/ceph.client.admin.keyring”命令,針對管理客戶端的Key文件設置讀取權(quán)限。
執(zhí)行“ceph-deploy osd activate server2:/var/local/osd0 server3:/var/local/osd1”命令,激活兩個OSD節(jié)點。在數(shù)據(jù)節(jié)點上執(zhí) 行“netstat -utpln”命令,會顯示和OSD相關(guān)的端口信息。執(zhí)行“ceph-deploy admin server2 server3”命令,將管理密鑰復制到數(shù)據(jù)節(jié)點。執(zhí)行“sudo cp/home/cephuser/cephdata/ceph.client.admin.keyring/etc/ceph/”,“sudo cp/ho me/cephuser/cephdata/ceph.conf/etc/ceph/”命令,將管理Key文件和Ceph主配置文件復制到目錄。
執(zhí)行“ceph quorum_status --format jsonpretty”命令,查看Ceph群詳細信息。執(zhí)行“ceph health”和“ceph -s”命令,查看Ceph群集的狀態(tài)信息。如果出現(xiàn)和時間有關(guān)的錯誤信息,可以執(zhí)行“vi ceph.conf”命 令,追加“mon clock drift warn backoff=30”行。之 后執(zhí)行“sudo rm -rf/etc/ceph/ceph.conf”,“sudo cp/home/cephuser/cephdata/ceph.conf/etc/ceph/”,“ceph-deploy–overwriteconf config push server2 server3”命令,將配置文件復制到指定路徑,并推送給數(shù)據(jù)節(jié)點。
在數(shù)據(jù)節(jié)點執(zhí)行“systemctrl restart cephmon.target”命令,重啟MON服務?;蛘咴诠芾砉?jié)點重啟NTP服務,之后在數(shù)據(jù)節(jié)點執(zhí)行時間同步,也可以解決該問題。執(zhí)行“ceph osd tree”命令,查看OSD存儲信息。執(zhí)行“ssh cephuser@server2”命令,遠程連接到指定的數(shù)據(jù)節(jié)點。執(zhí)行“df-hT |grep sdb1”命令,查看磁盤使用情況。執(zhí)行“du-sh/var/local/osd0/”命令,查看指定的設備信息。執(zhí)行“cat/etc/ceph/ceph.conf”命令,查看Ceph主配置文件信息。
執(zhí)行“ceph-deploy mds create server2”命 令,在“server2”上創(chuàng)建元數(shù)據(jù)節(jié)點,執(zhí)行“ssh cephuser@server2”,“netstat -utpln|grep 68”,“exit”命令,遠程查看指定數(shù)據(jù)節(jié)點的端口信息,可以看到MDS進程的端口處于開啟狀態(tài)。
注意,在執(zhí)行執(zhí)行上述命令時,必須切換到Ceph安裝目錄中,便于其找到所需的Ceph配置文件。
如果管理節(jié)點中的Ceph安裝路徑下的“ceph.conf”主配置文件發(fā)生了變化,可以 執(zhí) 行“ceph-deploy–overwrite-conf config push server2 server3”命令,將Ceph主配置文件推送給數(shù)據(jù)節(jié)點。
在“server1”上執(zhí)行“ceph-deploy install ceph-client”命令,針對客戶端主機安裝Ceph客戶端程序。執(zhí)行“ceph-deploy admin cephclient”命 令,將管理密鑰推動給客戶端。執(zhí)行“ssh root@cephclient”,“chmod +r/etc/ceph/ceph.client.admin.keyring”,“exit”命令,遠程連接客戶端,針對密鑰文件文件配置讀取權(quán)限。執(zhí)行“ceph osd pool create cephfs_data 128”命令,創(chuàng)建數(shù)據(jù)存儲池,其中的“128”為塊的數(shù)量。
執(zhí)行“ceph osd pool create cephfs_metadata 128”命令,創(chuàng)建元數(shù)據(jù)存儲池。執(zhí)行“ceph fs new cephfs cephfs_data cephfs_metadata”命令,創(chuàng)建文件系統(tǒng)。執(zhí)行“ceph fs ls”命令,查看文件系統(tǒng)。執(zhí)行“ssh root@cephclient”,“mkdir/mnt/ceph”命令,遠程連接客戶端,創(chuàng)建所需目錄。執(zhí)行“grep key/etc/ceph/ceph.client.admin.keyring |awk'{print $3}' >>/etc/ceph/admin.secret”命令,生成一個 Key。執(zhí) 行“cat/etc/ceph/admin.secret”命 令,顯示該Key的內(nèi)容。
執(zhí)行“mount -t ceph 172.16.1.102:6789:/ /mnt/ceph/ -o name=admin,s ecretfile=/etc/ceph/admi n.secret”命令,掛載“server2”的MON進 程,并指定Key文件。執(zhí)行“df -hT |grep ceph”命令,顯示目標分區(qū)信息。進入“/mnt/ceph”目錄,執(zhí)行“touch {1..10}.file”命令,創(chuàng)建所需的文件。執(zhí)行“dd if=/dev/zero of=/mnt/ceph/1.file bs=1G count=1”命令,將“/dev/zero”中的無限輸入寫到“1.file”文件中。執(zhí)行“df-hT |grep ceph”命令,顯示寫入信息。執(zhí)行“mkdir/mnt/ceph1”,“mount -t ceph 172.16.1.103:6789://mnt/ceph1/ -o name=admin,secretfile=/e tc/ceph/admin.secret”,“df-hT |grep ceph”命令,在“server3”節(jié)點上執(zhí)行類似的操作。