1. 准備4台虛擬機
ceph 192.168.66.93 管理osd,mon節點
ceph-node1 192.168.66.94 osd節點
ceph-node2 192.168.66.95 osd節點
jenkins 192.168.66.88 客戶端
關閉selinux,firewalld
2. 在ceph上新增一塊磁盤
dd if=/dev/zero of=/home/kvm/ceph/ceph1.img bs=1M count=5120
dd if=/dev/zero of=/home/kvm/ceph-node1/ceph-node11.img bs=1M count=5120
dd if=/dev/zero of=/home/kvm/ceph-node2/ceph-node21.img bs=1M count=5120
mkfs.xfs /dev/vdb(格式化新增磁盤)
mkdir /var/local/osd{0,1,2}
[root@ceph ~]# mount /dev/vdb /var/local/osd0/
[root@ceph-node1 ~]# mount /dev/vdb /var/local/osd1/
[root@ceph-node2 ~]# mount /dev/vdb /var/local/osd2/
3. 在虛擬機配置文件添加如下內容
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/home/kvm/ceph-node1/ceph-node11.img'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
</disk>
4. 重啟虛擬機
fdisk -l查看,如無效先備份虛擬機配置文件,virsh undefine ceph再把配置文件還原virsh define ceph.xml啟動虛擬機

5. 添加host文件
生成密鑰
ssh-copyid或者將公鑰拷貝到節點.ssh/下面的authorized_keys
6. 時間同步
在管理節點ceph上安裝ntp服務
yum -y install ntp
systemctl start ntpd
在節點執行ntpdate 192.168.66.93
7. 配置yum源
mkdir /etc/yum.repos.d/yum/
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/yum/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
清理緩存更新yum源
yum clean all && yum makecache
####先備份節點和客戶端yum源
scp *.repo ceph.repo* root@ceph-node1:/etc/yum.repos.d/
scp *.repo ceph.repo* root@ceph-node2:/etc/yum.repos.d/
scp *.repo ceph.repo* root@jenkins:/etc/yum.repos.d/
8. 在管理節點安裝ceph-deploy管理工具
yum -y install ceph-deploy
mkdir /etc/ceph && cd /etc/ceph
ceph-deploy new ceph
vim ceph.conf
osd_pool_default_size = 2 #2個節點
9. 安裝ceph
ceph-deploy install ceph ceph-node1 ceph-node2 jenkins
報錯一般為網絡問題,如換成阿里源或者163源還是無法安裝,可手動安裝
手工安裝epel-release 然后安裝yum -y install ceph-release再yum -y install ceph ceph-radosgw
ceph-deploy uninstall {hostname [hostname] ...}
10. 在管理節點安裝ceph monitor
[root@ceph ceph]ceph-deploy mon create ceph
[root@ceph ceph]ceph-deploy gatherkeys ceph
ceph-deploy mon destroy {host-name [host-name]...}
11. 部署osd服務
創建osd
ceph-deploy osd prepare ceph:/var/local/osd0/ ceph-node1:/var/local/osd1/ ceph-node2:/var/local/osd2/
激活osd
ceph-deploy osd activate ceph:/var/local/osd0/ ceph-node1:/var/local/osd1/ ceph-node2:/var/local/osd2/
激活報錯,在報錯節點執行chmod 777 /var/local/osd0 或者 chmod 777 /var/local/osd*
查看狀態:
ceph-deploy osd list ceph ceph-node1 ceph-node2
用ceph-deploy把配置文件和admin密鑰拷貝到所有節點,這樣每次執行Ceph命令行時就無需指定monitor地址和ceph.client.admin.keyring了
ceph-deploy admin ceph ceph-node1 ceph-node2
chmod +r /etc/ceph/ceph.client.admin.keyring
ceph health或者ceph -s


12. 部署mds服務
ceph-deploy mds create ceph ceph-node1 ceph-node2
查看狀態
ceph mds stat
ceph存儲集群搭建完畢

13. 創建ceph文件系統
ceph fs ls
創建存儲池
ceph osd pool create cephfs_data 128
ceph fs new 128 cephfs_metadata cephfs_data #cephfs可自定義
關於創建存儲池:
確定pg_num取值是強制性的,因為不能自動計算。下面是幾個常用的值:
*少於5 個OSD 時可把pg_num設置為128
*OSD 數量在5 到10 個時,可把pg_num設置為512
*OSD 數量在10 到50 個時,可把pg_num設置為4096
*OSD 數量大於50 時,你得理解權衡方法、以及如何自己計算pg_num取值
*自己計算pg_num取值時可借助pgcalc 工具
隨着OSD 數量的增加,正確的pg_num取值變得更加重要,因為它顯著地影響着集群的行為、以及出錯時的數據持久性(即災難性事件導致數據丟失的概率)。
創建文件系統
ceph fs new 128 cephfs_metadata cephfs_data #cephfs根據上面創建的存儲池定義

14. 掛載 cp ceph.client.admin.keyring admin.secret vim admin.secret AQDVUpVec7FyIBAAX/wlJBJwpw+adAhRWltPOA== mount -t ceph 192.168.66.93:6789:/ /mnt -o name=admin,secretfile=/etc/ceph/admin.secret echo "Hello World" > /mnt/a.txt umount /mnt 開機自動掛載: vim /etc/fstab
格式:[{ipaddress}:{port}]:/ {mount}/{mountpoint} ceph [name=username,secret=secretkey|secretfile=/path/to/secretfile],[{mount.options}]
192.168.66.93:6789:/ /mnt/ ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev 0 0
15. 用戶控件掛載Ceph文件系統 安裝ceph-fuse yum install -y ceph-fuse ceph-fuse -m 192.168.66.93:6789 /mnt 卸載:umount /mnt
開機自動掛載:192.168.66.93:6789:/ /mnt/mycephfs fuse.ceph ceph.id={user-ID}[,ceph.conf={path/to/conf.conf}],_netdev,defaults 0 0
systemctl start ceph-fuse@/mnt/mycephfs.service systemctl enable ceph-fuse.target systemctl enable ceph-fuse@-mnt-mycephfs.servic
16. 如果群集具有多個FS,則掛載非默認FS:
mount -t ceph :/ /mnt/mycephfs2 -o mds_namespace=mycephfs2
如果有多個監視器,則傳遞用逗號分隔的地址:
mount.ceph 192.168.0.1,192.168.0.2,192.168.0.3:/ /mnt/mycephfs
清理機器上的ceph相關配置:
停止所有進程:stop ceph-all
卸載所有ceph程序:ceph-deploy uninstall [{ceph-node}]
刪除ceph相關的安裝包:ceph-deploy purge {ceph-node} [{ceph-data}]
刪除ceph相關的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
刪除key:ceph-deploy forgetkeys
卸載ceph-deploy管理:
yum -y remove ceph-deploy
Ceph各組件介紹
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等基本命令
ceph官方文檔http://docs.ceph.org.cn/
ceph中文開源社區http://ceph.org.cn/
排錯1: 由於上午網絡調整導致ceph ip地址變動,查看集群狀態為err,如下圖
我先百度了一下發現很多類似的,我看了一篇之后,雖是測試環境我也沒急於動手,查看三台之后,ceph-node2和ceph,ceph-node1不一樣,我就看了一下hosts文件,發現寫的hosts沒了。
解決:查看下ceph主節點和ceph-node1,發現ceph-node1也沒了,同步一樣之后再查看ceph -s就正常了




