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就正常了