ceph提供了對象存儲(RADOSGW)、塊存儲(RBD)和文件存儲(Ceph FS)三種功能:
RADOSGW:基於LIBRADOS之上,提供當前流行的RESTful協議的網關,而且兼容S3和Swift接口,做爲對象存儲,能夠對接網盤類應用以及HLS流媒體應用等。
RBD:也基於LIBRADOS之上,經過LIBRBD建立一個塊設備,經過QEMU/KVM附加到VM上,做爲傳統的塊設備來用。目前OpenStack、CloudStack等都是採用這種方式來爲VM提供塊設備,同時也支持快照、COW(Copy On Write)等功能。
Ceph FS: 基於RADOS來實現分佈式的文件系統,引入了MDS(Metadata Server),主要爲兼容POSIX文件系統提供元數據。通常都是當作文件系統來掛載。node
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 等基本命令。linux
RADOS
CRUSH
journal服務器
系統類型:CentOS7.5
cehp版本:mimic網絡
主機名 | IP地址 | 角色 | 數據盤 |
---|---|---|---|
ceph-node1 | 172.16.1.31 | mon、osd、deploy | /dev/sdb |
ceph-node2 | 172.16.1.32 | mon、osd | /dev/sdb |
ceph-node3 | 172.16.1.33 | mon、osd | /dev/sdb |
host解析
時間同步
ssh免密登陸,deploy節點須要ssh免密登陸到全部node節點
關閉防火牆
關閉selinuxssh
[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@ceph-node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@ceph-node1 ~]# cat << EOF > /etc/yum.repos.d/ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-mimic/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-mimic/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-mimic/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc priority=1 EOF
#在node1安裝ceph-deploy工具分佈式
[root@ceph-node1 ~]# yum -y install ceph-deploy [root@ceph-node1 ~]# ceph-deploy --version 2.0.1
#配置config文件,指定ssh用戶ide
[root@ceph-node1 ~]# cat .ssh/config Host node1 Hostname ceph-node1 User root Host node2 Hostname ceph-node2 User root Host node3 Hostname ceph-node3 User root [root@ceph-node1 ~]# chmod 600 .ssh/config [root@ceph-node1 ~]# systemctl restart sshd
#在三個節點安裝ceph[root@ceph-node1 ~]# ceph-deploy install --release mimic ceph-node1 ceph-node2 ceph-node3
#建立目錄,用於保存執行ceph-deploy時產生的文件[root@ceph-node1 ~]# mkdir /etc/ceph && cd /etc/ceph
#初始化集羣[root@ceph-node1 ceph]# ceph-deploy new ceph-node1 ceph-node2 ceph-node3
#修改配置文件工具
[root@ceph-node1 ceph]# cat ceph.conf [global] fsid = aa6f450a-613a-435d-ace3-4e1a4c8d231a mon_initial_members = ceph-node1, ceph-node2, ceph-node3 mon_host = 172.16.1.31,172.16.1.32,172.16.1.33 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public network = 172.16.1.0/24 #新添加
配置含義:ui
fsid:文件系統id mon_initial_members:監視器主機名 mon_host:監視器IP地址 cephx:表示開啓認證 public network:指定public網絡,參看ceph網絡 #參考:http://docs.ceph.org.cn/rados/configuration/network-config-ref/
#初始化mon[root@ceph-node1 ceph]# ceph-deploy mon create-initial
#拷貝配置文件及admin密鑰到各ceph節點[root@ceph-node1 ceph]# ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
#建立ceph管理進程服務[root@ceph-node1 ceph]# ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
#查看集羣狀態url
[root@ceph-node1 ceph]# ceph -s cluster: id: aa6f450a-613a-435d-ace3-4e1a4c8d231a health: HEALTH_OK services: mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3 osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
#建立osd
#注意:若是磁盤已存在分區須要執行zap命令,刪除分區和磁盤內容,而後再執行create。 [root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node1 /dev/sdb [root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node2 /dev/sdb [root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node3 /dev/sdb [root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node1 [root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node2 [root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node3
#再次查看集羣狀態
[root@ceph-node1 ceph]# ceph -s cluster: id: aa6f450a-613a-435d-ace3-4e1a4c8d231a health: HEALTH_OK services: mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3 osd: 3 osds: 3 up, 3 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 3.0 GiB used, 57 GiB / 60 GiB avail pgs:
#啓用dashboard[root@ceph-node1 ceph]# ceph mgr module enable dashboard
#爲dashboard生成自簽名證書,使用https訪問
[root@ceph-node1 ceph]# ceph dashboard create-self-signed-cert Self-signed certificate created
#爲dashboard綁定IP和端口
[root@ceph-node1 ceph]# ceph config set mgr mgr/dashboard/server_addr 172.16.1.31 [root@ceph-node1 ceph]# ceph config set mgr mgr/dashboard/server_port 7000
#查看服務
[root@ceph-node1 ceph]# ceph mgr services { "dashboard": "https://172.16.1.31:7000/" }
#更新dashboard帳號密碼ceph dashboard set-login-credentials admin admin
#登陸dashboard
若是部署失敗,能夠執行以下命令清除各節點上的軟件及部署時生成的文件。
ceph-deploy purge {ceph-node} ceph-deploy purgedata {ceph-node} ceph-deploy forgetkeys
#檢查集羣健康情況,正常返回HEALTH_OK ceph health 若是配置文件或密鑰不在默認路徑,須要指定: ceph -c /path/to/conf -k /path/to/keyring health #檢查集羣狀態,返回集羣健康狀態、服務狀態以及數據狀態 ceph status 或者 ceph –s #檢查集羣的使用狀況,返回集羣總體使用狀況和各個存儲池的使用狀況 ceph df #檢查OSD狀態 ceph osd stat 或者 ceph osd dump 或者 ceph osd tree #檢查監視器狀態 ceph mon stat 或者 ceph mon dump #檢查MDS狀態 ceph mds stat 或者 ceph mds dump
#列出存儲池 ceph osd lspools #建立存儲池 ##副本類型 ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-name] [expected-num-objects] ##糾刪類型(相似於RAID5) ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure [erasure-code-profile] [crush-ruleset-name] [expected_num_objects] ##必需參數: pool-name 池名稱 pg-num 存儲池擁有的歸置組總數 少於 5 個 OSD 時可把 pg_num 設置爲 128 OSD 數量在 5 到 10 個時,可把 pg_num 設置爲 512 OSD 數量在 10 到 50 個時,可把 pg_num 設置爲 4096 pgp-num 用於歸置的歸置組總數,通常等於歸置組總數 #設置存儲池配額 ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}] #刪除存儲池 ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it] #重命名存儲池 ceph osd pool rename {current-pool-name} {new-pool-name} #查看存儲池統計信息 rados df
#羅列用戶 ceph auth list #獲取用戶信息,包括用戶密鑰、能力(用戶的權限) ceph auth get {TYPE.ID} #新增用戶 ##直接添加用戶並指定能力 ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool' ##經常使用的添加用戶並指定能力,會以標準格式返回用戶名稱和key,若是用戶已存在,會直接返回用戶名和key ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool' ##在上條命令基礎上,將返回保存到文件中 ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring ##添加用戶並指定能力,只返回key,-o表示將返回保存到文件 ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key #修改用戶能力,ceph auth caps會覆蓋當前能力,若是新增能力時注意在命令中加上當前能力 ceph auth caps USERTYPE.USERID {daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]' [{daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]'] #刪除用戶,其中 {TYPE} 是 client 、 osd 、 mon 或 mds 之一, {ID} 是用戶名或守護進程的 ID ceph auth del {TYPE}.{ID} #查看用戶密鑰 ceph auth print-key {TYPE}.{ID} #導入用戶 ceph auth import -i /path/to/keyring
查看更多的命令請參考官方文檔:http://docs.ceph.org.cn/rados/operations/