CEPH分布式檔案系統
CEPH是一種為優秀的性能,可靠性和可擴充性而設計的統一的,分布式檔案系統。
CEPH可以輕松的擴充到數PB容量,支援多種工作負載的高性能,高可靠性。
CEPH四個部分:
Clients用戶端:用來通路檔案系統
CMDS中繼資料伺服器:用來緩存和同步資料
COSD對象存儲群集:用來構成存儲池
CMON叢集螢幕:用來監視檔案系統
CEPH是統一存儲系統,支援三種接口:
Object:有原生的API,同時也相容swift和S3的API。
Block:支援精簡配置,快照,克隆。
File:Posixi接口,支援快照。
CEPH的特點:
高擴充性:使用普通的X86伺服器,支援10~1000台伺服器,支援1TB到PB級别的擴充。
高可靠性:沒有單點故障,多資料副本,自動管理,自動修複。
高性能:資料分布均衡,并行化度高。
CEPH分布式檔案系統架構:
歸置組(PG):可以了解為一個組,這個組裡可以有多少個對象(檔案數),歸置組建立在存儲池中。
存儲池(POOL):由多個OSD組成。
術語:
OSD:存儲對象
MON 螢幕
NODE:節點
MDS:中繼資料伺服器
CEPH安裝與部署(網YUM版):需要聯網部署
v 環境需求:關閉防火牆,關閉SElinux,時間同步,修改主機名,修改HOSTS檔案,SSH的支援,建立運作使用者。
# systemctl stop firewalld #關閉防火牆
# setenforce 0 #關閉SELinux
# vi /etc/hosts #修改HOSTS檔案
添加内容:
1.1.1.19 admin-node
1.1.1.20 node1
1.1.1.21 node2
# vi /etc/sysconfig/network #修改主機名
NETWORKING=yes
HOSTNAME=admin-node
# hostname admin-node #臨時修改主機名
# yum -y install ntp ntpdate #部署NTP時間同步
# /etc/ntp.conf #使用自身時間搭建NTP伺服器
server 127.127.1.0
fudge 127.127.1.0 stratum 8
# systemctl restart ntpd #重新開機NTP伺服器
# ntpdate 1.1.1.19 #去NTP伺服器同步時間
# timedatectl #檢視時間
# useradd ceph
# echo 123 | passwd ceph --stdin #建立運作使用者
# ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa #建立密鑰對
# ssh-copy-id -i /root/ceph/.ssh/id_rsa.pub root@node1 #将公鑰上傳到node1
# ssh-copy-id -i /root/ceph/.ssh/id_rsa.pub root@node1 #将公鑰上傳到node2
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #導入公鑰庫
v 安裝CEPH群集需求:每台伺服器上都要部署YUM庫,Deploy工具,EPEL源(需網絡)
# mv CentOS-Base.repo /etc/yum.repos.d/ #将CenOS7預設備份YUM庫還原
# mv ceph.repo /etc/yum.repos.d/ #将CEPH的REPO檔案放置YUM庫
# yum makecache #生成緩存
# yum -y install epel-release #安裝EPEL源
# yum -y install ceph-deploy #安裝CEPH-Deploy工具
# ceph-deploy new node1 #配置一個Mon(螢幕)節點
注:會在所在位置生成三個配置檔案。
#vi ceph.conf
osd_pool_default_size = 2 #修改OSD存儲池預設副本數
注:如果有多張網卡還可以增加:public network = {ip-address}/{netmask}參數
# ceph-deploy install admin-node node1 node2 #安裝CEPH到三個節點上
ceph-deploy purgedata admin-node node1 node2
安裝出現問題可以使用這兩條指令清空配置重新部署和安裝
ceph-deploy forgetkeys
v 初始化Mon螢幕,并收集所有密鑰
# ceph-deploy mon create-initial
v 建立硬碟(OSD)挂載目錄
# ssh node1
# mkdir /var/local/osd0
# ssh node2
# mkdir /var/local/osd1
v 添加OSD和管理激活OSD
# ceph-deploy osd prepare node1:/var/local/osd0 node2:/var/local/osd1
# ceph-deploy osd activate node1:/var/local/osd0 node2:/var/local/osd1
v 建立管理使用者
# ceph-deploy admin admin-node node1 node2
# chmod +r /etc/ceph/ceph.client.admin.keyring #確定keyring檔案有讀取權限
v 檢查群集健康狀況(部署完成)
# ceph health
v 通過SYSVINIT機制啟動CEPH所有守護程序
# /etc/init.d/ceph -a start
注:SYSVINIT:字面意思是利用系統程序的方式運作。
v 建立CephFS檔案系統:
# ceph osd pool create pool1 100 100 #預設需要建立兩個存儲池
# ceph osd pool create pool2 100 100
# ceph fs new ren pool1 pool2 #兩個存儲池組成一個檔案系統
# ceph mds stat
v 挂載CephFS檔案系統
# ceph auth list #檢視認證密碼清單
# mount -t ceph -o name=admin,secret="AQBs2U9Y54/vKRAAgPZxOf6lmbl522mkiJvXRA==" 1.1.1.20:6789:/ /opt #密碼認證方式挂載CephFS檔案系統
安裝報錯:
故障一:找不到EPEL源 解決方法:安裝EPEL源# yum -y install epel-release(每台)
故障二:找不到CEPH安裝包 解決方法:YUM庫中寫入CEPH安裝包網YUM源路徑
故障三:檢視版本指令未找到 解決方法:手動安裝CEPH:yum -y install ceph ceph-radosgw(每台)或者檢查SSH的問題
CEPH分布式檔案系統操作整合
指令
描述
ceph health
檢視群集健康狀态
ceph status
檢視狀态
ceph osd stat
檢視OSD狀态
ceph osd dump
檢視OSD屬性
ceph osd tree
檢視OSD樹
ceph mon dump
檢視MON屬性
ceph quorum_status
檢視配額狀态
ceph mds stat
檢視MDS狀态
ceph mds dump
檢視MDS轉存
ceph osd lspools
檢視已存在的存儲池
ceph osd pool get pool1 pg_num
檢視池歸置組屬性
ceph osd pool get pool1 pgp_num
檢視池歸置組總數
ceph osd pool create pool1 100 100
建立一個存儲池
ceph osd pool delete pool1 pool1 --yes-i-really-really-mean-it
删除一個存儲池
ceph osd pool rename pool1 pool2
重命名一個存儲池
rados df
檢視存儲池統計資訊
ceph osd pool mksnap pool1 poolkz1
存儲池快照
ceph osd pool rmsnap pool1 poolkz1
删除存儲池快照
ceph osd pool set pool1 size 2
設定對象副本數
ceph fs new ren pool1 pool2
建立CephFS檔案系統
注:pg:歸置組 pgp:歸置組總數
添加和删除OSD節點(OSD為存儲對象)
ceph-deploy osd prepare node1:/var/local/osd2
添加OSD
ceph-deploy osd activate node1:/var/local/osd2
激活OSD
ceph -w
Ceph osd tree
Ceph osd out osd.0
當機将要移除的節點
Ceph stop osd.0
停止将要移除的節點程序
Ceph osd crush remove osd.0
從群集裡移除節點資訊
Ceph osd rm 0
移除節點
添加中繼資料伺服器(MDS)
ceph-deploy mds create node1
添加MDS
注:至少需要一個中繼資料伺服器才能使用CephFS。
添加和删除螢幕(MON)
ceph-deploy mon add node2
添加MON
ceph quorum_status --format json-pretty
檢查法定人數狀态
ceph -a stop mon.0
停止螢幕程序
ceph mon remove mon.0
移除螢幕
ssh node1
ceph stop mon || stop ceph-mon-all
遠端連接配接螢幕,停止有關螢幕的所有程序
添加對象網關(RGW)
ceph-deploy rgw create node1
添加RGW
注:RGW預設監聽7480端口。有關對象網關的使用請繼續了解CEPH分布式檔案系統。
CEPH對象網關的使用:http://docs.ceph.org.cn/install/install-ceph-gateway/
本文轉自 觸動的風 51CTO部落格,原文連結:http://blog.51cto.com/10978134/1945815