搭建ceph分布式文件系統


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

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM