57.CEPH分布式文件系
CEPH分布式文件系統
CEPH是一種為優秀的性能,可靠性和可擴展性而設計的統一的,分布式文件系統。
CEPH可以輕松的擴展到數PB容量,支持多種工作負載的高性能,高可靠性。
CEPH四個部分:
Clients客戶端:用來訪問文件系統
CMDS元數據服務器:用來緩存和同步數據
COSD對象存儲群集:用來構成存儲池
CMON集群監視器:用來監視文件系統
CEPH是統一存儲系統,支持三種接口:
Object:有原生的API,同時也兼容swift和S3的API。
Block:支持精簡配置,快照,克隆。
File:Posixi接口,支持快照。
CEPH的特點:
高擴展性:使用普通的X86服務器,支持10~1000臺服務器,支持1TB到
高可靠性:沒有單點故障,多數據副本,自動管理,自動修復。
高性能:數據分布均衡,並行化度高。
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 [email protected] #將公鑰上傳到node1
# ssh-copy-id -i /root/ceph/.ssh/id_rsa.pub [email protected] #將公鑰上傳到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 | 查看OSD狀態 |
Ceph osd tree | 查看OSD樹 |
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/
57.CEPH分布式文件系