■ 河南 劉京義
編者按:Ceph是新一代自由軟件分布式文件系統(tǒng),具有良好的可擴(kuò)展性(PB級別以上)、高性能和高可靠性,Ceph擁有數(shù)據(jù)與元數(shù)據(jù)的分離,動(dòng)態(tài)的分布式的元數(shù)據(jù)管理,可靠統(tǒng)一的分布式對象存儲(chǔ)機(jī)制。Ceph是一個(gè)高可用、易于管理、開源的分布式存儲(chǔ)系統(tǒng),可以在一套系統(tǒng)中同時(shí)提供對象存儲(chǔ)、塊存儲(chǔ)以及文件存儲(chǔ)服務(wù)。
以簡單的實(shí)例來說明如何搭建Ceph分布式存儲(chǔ)。
這里使用了四臺(tái)主機(jī),分別安裝了CentOS 7.X系統(tǒng),其IP從1 72.16.1.101到172.16.1.10 4,一臺(tái)作為管理節(jié)點(diǎn)使用,名稱為“server1”,兩臺(tái)作為數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),名稱分別為“server2”和“server3”。一臺(tái)作為客戶端使用。名稱為“cephClient”。在管理主機(jī)上執(zhí)行“hostnamectl set-hostname server1”命令,修改其主機(jī)名稱。
執(zhí)行“useradd cephuse r”,“echo“cephuser”|pass wd --stdin cephuser”命令,創(chuàng)建名為“cephuser”的賬戶,其密碼為“cephuser”,用來管理主節(jié)點(diǎn)。執(zhí)行“cat<
在“server1”上執(zhí)行“yum -y install ntp ntpdate”命令,安裝NTP組件,將“server1”作為時(shí)間服務(wù)器使用。執(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服務(wù)。
執(zhí)行“netstat -utpln|grep 123” 命令,查看NTP服務(wù)端口開啟狀態(tài)。在其他主機(jī)上執(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”來同步時(shí)間,并在開機(jī)時(shí)自動(dòng)加載時(shí)間同步命令,并為其設(shè)置執(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/”命令,查看對應(yīng)的源信息。執(zhí)行“yum-y install epel-release--nogpgcheck”命令,來安裝對應(yīng)的源,并且不檢查公鑰。執(zhí)行“cat <
輸入如圖1所示內(nèi)容,在其他主機(jī)上分別執(zhí)行以上命令,來配置源信息。
在其他主機(jī)上安裝Ceph
圖1 配置源信息
在“server1”上執(zhí)行“su -cephuser”,“mkdir cephdata”,“cd cephdata”命令,切換到“cephuser”賬戶環(huán)境,并在其家目錄中創(chuàng)建對應(yī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)啟動(dòng)失敗的情況。在客戶端主機(jī)上執(zhí)行“yum-y install yum-pluginpriorities”。“yum -y install ceph ceph-radosgw--nogpgcheck”命令,安裝YUM優(yōu)先級插件,Ceph主程序和Ceph連接的網(wǎng)關(guān)程序。
在“server1”上進(jìn)入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”命令,將公鑰復(fù)制到所有的主機(jī)上。執(zhí)行“cat <
輸入“Host server1”,“Hostname server1”,“User cephuser”,“Host server2”,“Hostname server2”,“User cephuser”,“Host server3”,“Hostname server31”,“User cephuser”,“END”行,添 加對應(yīng)的主機(jī)和賬戶名稱。執(zhí)行“chmod 644/home/cephuser/.ssh/config”命令,為該配置文件合適的權(quán)限。執(zhí)行“ceph-deploy new server2 server3”命令,對數(shù)據(jù)節(jié)點(diǎn)進(jìn)行初始化操作。如果出錯(cuò)的話,可以在對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)上執(zhí)行“yum -y install epel-release”,“rpm -e epel-release”,“rpm -qa epel-release”命令,安裝對應(yīng)的epel源,之后進(jìn)行安裝。
如果依然出錯(cuò),可以根據(jù)出錯(cuò)提示信息,執(zhí)行“rpm -ivh/varcache/yum/x86_4/7/xxx.rpm”命令,來執(zhí)行對應(yīng)的安裝操作,其中的“xxx”為具體的文件名稱。之后在管理節(jié)點(diǎn)執(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é)點(diǎn)。執(zhí)行“sudo fdisk/dev/sdb”和“sudo partx -a/dev/sdb”命令,對指定的磁盤進(jìn)行分區(qū)處理。執(zhí)行“sudo mkfs -t xfs/dev/sdb1”命令,創(chuàng)建所需的分區(qū)。執(zhí)行“sudo mkdir/var/local/osd0”命令,掛載OSD存儲(chǔ)路徑。執(zhí)行“sudo vi/etc/fstab”命令,輸入“/dev/sdb1/var/local/osd0 xfs defaults 0 0”行,保存對應(yīng)的文件系統(tǒng)信息。
執(zhí)行“sudo mount -a”命令,重新加載“/etc/fstab”中的所有信息。執(zhí)行“sudo chmod 777/var/local/osd0”,“sudo chown ceph:ceph/var/local/osd0/”命令,為目標(biāo)路徑設(shè)置訪問權(quán)限和屬主信息。執(zhí)行“l(fā)s -ld/var/local/osd0/”,“df -hT”命令,查看對應(yīng)的路徑和磁盤信息。執(zhí)行“exit”命令退出。針對“server3”節(jié)點(diǎn)執(zhí)行相同的配置操作。
在“server1”上執(zhí)行“ceph-deploy osd prepare server2:/var/local/osd0 server3:/var/local/osd1”命令,針對數(shù)據(jù)節(jié)點(diǎn)初始創(chuàng)建OSD節(jié)點(diǎn),并指定節(jié)點(diǎn)存儲(chǔ)文件位置。對于OSD節(jié)點(diǎn)來說,其“/var/local/osd*/”存儲(chǔ)數(shù)據(jù)實(shí)體的目錄權(quán)限必須為777,并且屬主和屬組必須為“ceph”。執(zhí)行“chmod +r/home/cephuser/cephdata/ceph.client.admin.keyring”命令,針對管理客戶端的Key文件設(shè)置讀取權(quán)限。
執(zhí)行“ceph-deploy osd activate server2:/var/local/osd0 server3:/var/local/osd1”命令,激活兩個(gè)OSD節(jié)點(diǎn)。在數(shù)據(jù)節(jié)點(diǎn)上執(zhí) 行“netstat -utpln”命令,會(huì)顯示和OSD相關(guān)的端口信息。執(zhí)行“ceph-deploy admin server2 server3”命令,將管理密鑰復(fù)制到數(shù)據(jù)節(jié)點(diǎn)。執(zhí)行“sudo cp/home/cephuser/cephdata/ceph.client.admin.keyring/etc/ceph/”,“sudo cp/ho me/cephuser/cephdata/ceph.conf/etc/ceph/”命令,將管理Key文件和Ceph主配置文件復(fù)制到目錄。
執(zhí)行“ceph quorum_status --format jsonpretty”命令,查看Ceph群詳細(xì)信息。執(zhí)行“ceph health”和“ceph -s”命令,查看Ceph群集的狀態(tài)信息。如果出現(xiàn)和時(shí)間有關(guān)的錯(cuò)誤信息,可以執(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”命令,將配置文件復(fù)制到指定路徑,并推送給數(shù)據(jù)節(jié)點(diǎn)。
在數(shù)據(jù)節(jié)點(diǎn)執(zhí)行“systemctrl restart cephmon.target”命令,重啟MON服務(wù)?;蛘咴诠芾砉?jié)點(diǎn)重啟NTP服務(wù),之后在數(shù)據(jù)節(jié)點(diǎn)執(zhí)行時(shí)間同步,也可以解決該問題。執(zhí)行“ceph osd tree”命令,查看OSD存儲(chǔ)信息。執(zhí)行“ssh cephuser@server2”命令,遠(yuǎn)程連接到指定的數(shù)據(jù)節(jié)點(diǎn)。執(zhí)行“df-hT |grep sdb1”命令,查看磁盤使用情況。執(zhí)行“du-sh/var/local/osd0/”命令,查看指定的設(shè)備信息。執(zhí)行“cat/etc/ceph/ceph.conf”命令,查看Ceph主配置文件信息。
執(zhí)行“ceph-deploy mds create server2”命 令,在“server2”上創(chuàng)建元數(shù)據(jù)節(jié)點(diǎn),執(zhí)行“ssh cephuser@server2”,“netstat -utpln|grep 68”,“exit”命令,遠(yuǎn)程查看指定數(shù)據(jù)節(jié)點(diǎn)的端口信息,可以看到MDS進(jìn)程的端口處于開啟狀態(tài)。
注意,在執(zhí)行執(zhí)行上述命令時(shí),必須切換到Ceph安裝目錄中,便于其找到所需的Ceph配置文件。
如果管理節(jié)點(diǎn)中的Ceph安裝路徑下的“ceph.conf”主配置文件發(fā)生了變化,可以 執(zhí) 行“ceph-deploy–overwrite-conf config push server2 server3”命令,將Ceph主配置文件推送給數(shù)據(jù)節(jié)點(diǎn)。
在“server1”上執(zhí)行“ceph-deploy install ceph-client”命令,針對客戶端主機(jī)安裝Ceph客戶端程序。執(zhí)行“ceph-deploy admin cephclient”命 令,將管理密鑰推動(dòng)給客戶端。執(zhí)行“ssh root@cephclient”,“chmod +r/etc/ceph/ceph.client.admin.keyring”,“exit”命令,遠(yuǎn)程連接客戶端,針對密鑰文件文件配置讀取權(quán)限。執(zhí)行“ceph osd pool create cephfs_data 128”命令,創(chuàng)建數(shù)據(jù)存儲(chǔ)池,其中的“128”為塊的數(shù)量。
執(zhí)行“ceph osd pool create cephfs_metadata 128”命令,創(chuàng)建元數(shù)據(jù)存儲(chǔ)池。執(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”命令,遠(yuǎn)程連接客戶端,創(chuàng)建所需目錄。執(zhí)行“grep key/etc/ceph/ceph.client.admin.keyring |awk'{print $3}' >>/etc/ceph/admin.secret”命令,生成一個(gè) 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進(jìn) 程,并指定Key文件。執(zhí)行“df -hT |grep ceph”命令,顯示目標(biāo)分區(qū)信息。進(jìn)入“/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é)點(diǎn)上執(zhí)行類似的操作。