Ubuntu16.04LTS部署CEPH文件存储集群

直接从word文档复制的 懒得整理格式了

基础环境安装
添加硬盘
步骤1集群安装需要三台及以上服务器,此处以3台作为示例,此处直接使用每台主机第二块硬盘空间作为存储空间方案,每台服务器须添加一块硬盘。
//查看每台硬盘情况
# lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                     8:16   0 223.6G  0 disk 
├─sda2                  8:18   0   732M  0 part /boot
├─sda3                  8:19   0 222.4G  0 part 
│ ├─ubuntu--vg-swap_1 253:1    0   976M  0 lvm  [SWAP]
│ └─ubuntu--vg-root   253:0    0 221.4G  0 lvm  /
└─sda1                  8:17   0   512M  0 part /boot/efi
sdb                     8:0    0 931.5G  0 disk 
├─sdb5                  8:5    0 931.5G  0 part 
└─sdb1                  8:1    0     1K  0 part 
使用sdb作为存储空间
步骤2将新硬盘格式化成xfs格式(ceph对xfs支持比ext4好)。
//第1台服务器
# sudo  mkfs.xfs /dev/sdb
//第2台服务器
# sudo  mkfs.xfs /dev/sdb
//第3台服务器
# sudo  mkfs.xfs /dev/sdb
//其他服务器以此类推 此处以最小集群3台配置
时间设置
步骤13台均强制更改时区为上海,执行以下命令。
需要务必保证3台服务器的时区是一样的
# ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c "echo 'Asia/Shanghai' > /etc/timezone"
步骤23台均执行时间同步。
# apt-get install -y ntpdate ntp
//与阿里云时间服务器同步时间
# ntpdate ntp1.aliyun.com
添加主机
步骤1集群安装需要三台及以上服务器,每台服务器。角色分配为三台均为mon+osd,第一台为Control。依次添加hostname,hostname可自行规划。
//第1台服务器
# sudo  hostname set-hostname wh01 && su
//第2台服务器
# sudo  hostname set-hostname wh02 && su
//第3台服务器
# sudo  hostname set-hostname wh03 && su
//其他服务器以此类推 此处以最小集群3台配置
步骤2所有服务器均添加所有服务器的IP和对应hosts。
//第1台服务器 IP为对应服务器IP
# sudo echo "192.168.20.241 wh01" >> /etc/hosts
# sudo echo "192.168.20.242 wh02" >> /etc/hosts
# sudo echo "192.168.20.243 wh03" >> /etc/hosts
//第2台服务器 IP为对应服务器IP
# sudo echo "192.168.20.241 wh01" >> /etc/hosts
# sudo echo "192.168.20.242 wh02" >> /etc/hosts
# sudo echo "192.168.20.243 wh03" >> /etc/hosts
//第3台服务器 IP为对应服务器IP
# sudo echo "192.168.20.241 wh01" >> /etc/hosts
# sudo echo "192.168.20.242 wh02" >> /etc/hosts
# sudo echo "192.168.20.243 wh03" >> /etc/hosts
//其他服务器以此类推 此处以最小集群3台配置
添加账号和免密登陆
步骤1添加账号。
//在3台机器上均创建账号:
# useradd -m -s /bin/bash cephuser
# echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
//输入账号密码
# passwd cephuser
步骤2在3台机器上从其他账号家目录复制.ssh目录及文件。
cp -r /root/.ssh/ /home/cephuser/ && chown cephuser:cephuser /home/cephuser -R
步骤3在第一台上添加SSH配置,注意对应每台主机。
# sudo echo "Host wh01
    Hostname wh01
    User cephuser
Host wh02
    Hostname wh02
    User cephuser
Host wh03
    Hostname wh03
    User cephuser" >> ~/.ssh/config
# chmod 644 ~/.ssh/config
步骤4生产SSH公钥并添加。
//在第3台上切换至cephuser账号
# su - cephuser
//一直回车直到生成秘钥
# ssh-keygen
//互相拷贝对方秘钥(第一台执行,但推荐每台都执行)
# ssh-keyscan wh01 wh02 wh03 >> ~/.ssh/known_hosts
# ssh-copy-id cephuser@wh01
# ssh-copy-id cephuser@wh02
# ssh-copy-id cephuser@wh03
//在第一台上验证是否免密登陆
# ssh cephuser@wh01
# ssh cephuser@wh02
# ssh cephuser@wh03
更新下载源(mimic版本13.2.6)
步骤1更新为阿里源(可选) 。
由于默认的更新源太慢了,调整为阿里云的更新源
# mv /etc/apt/sources.list /etc/apt/sources.list_bak
# sudo echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse" >> /etc/apt/sources.list
步骤2添加CEPH官方源。
添加 release key
# wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
添加Ceph软件包源,用Ceph稳定版(如 cuttlefish 、 dumpling 、 emperor 、 firefly、luminous 等等)替换掉 {ceph-stable-release}
deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main
ceph-stable-release 我选择的是mimic版本
那么在ubuntu服务器上面执行命令
# echo "deb http://download.ceph.com/debian-mimic/ $(lsb_release -sc) main"
就可以得到结果:
deb http://download.ceph.com/debian-mimic/ xenial main
更新源
# apt-get update
需要保证3台服务器的源都是一致的
步骤3使用CEPH国内源(可选有效)。
粘贴后连续回车
# sudo echo "
export export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-mimic
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc
" >> /etc/profile
# source /etc/profile
更新下载源(系统自带版本10.2.11就是debian-jewel版本)
步骤1更新为阿里源(可选) 。
由于默认的更新源太慢了,调整为阿里云的更新源
# mv /etc/apt/sources.list /etc/apt/sources.list_bak
# sudo echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse" >> /etc/apt/sources.list
步骤2添加CEPH官方源。
安装CEPH
步骤1本章节及之后章节均以cephuser用户执行
步骤2主节点安装cepf-deploy。
创建配置目录
# sudo mkdir /opt/ceph-cluster  
# sudo chown cephuser:cephuser /opt/ceph-cluster -R
主节点安装ceph-deploy
# sudo apt-get update && sudo apt-get install ceph-deploy
步骤3创建ceph集群。
创建新集群
# ceph-deploy new wh01 wh02 wh03
当前目录会生成配置文件ceph.conf
如果提示
bash: python2: command not found
需要在每台上
# apt-get install python
步骤4修改配置。
修改配置文件(注意填写当前主机所在网段)
# echo "osd pool default size = 2
osd max object name len = 256
osd max object namespace len = 64
mon_pg_warn_max_per_osd = 2000
mon clock drift allowed = 30
mon clock drift warn backoff = 30
rbd cache writethrough until flush = false
public network = 192.168.20.0/24" >> ceph.conf
步骤5安装ceph。
# ceph-deploy install wh01 wh02 wh03
注意01:可以ceph-deploy install wh01一台一台装,下载速度超慢(用国内源快),但是一定要安装完且无报错
注意02:中途如果超过300秒会报错,在对应主机上ps -ef|grep apt,如果进程任然在执行,耐心等待即可(可kill -9对应进程然后重新安装)
注意03:如一台完全安装完成可将/var/cache/apt/archives下文件复制至其他未完成主机同一目录,免除下载时间
注意04:最后重新执行一遍无报错即安装完成,对应主机上执行ceph -v可看到安装好的版本
初始化节点
步骤1创建mon集群
# cd /opt/ceph-cluster
创建mon集群
# ceph-deploy --overwrite-conf  mon create wh01 wh02 wh03
初始化mon集群
# ceph-deploy --overwrite-conf mon create-initial
注意01:此处一定要完整执行且无报错
Debug01:[ceph_deploy.mon][ERROR ] Some monitors have still not reached quorum:
[ceph_deploy.mon][ERROR ] cell02
出现这种问题通常是对应的节点中存在原来的配置,导致新部署过程中无法生成认证秘钥。此时遍历待部署的所有节点将/etc/ceph,和/var/lib/ceph下的目录清除掉,然后再部署,通常就能解决。
测试可以sudo chown cephuser:cephuser /var/run/ceph/  -R解决,因为脚本里面没有sudo没权限访问目录没法生成文件
测试ceph-deploy --overwrite-conf config push wh01 wh02 wh03
Debug02:如果出现连不上其他主机
检查SSH是否免密连上和清除主要ceph进程后再试
# sudo pkill ceph
Debug03:出现缺少目录创建即可,文件则需要卸载ceph在重装,之后重新创建ceph集群
Debug04:mon进程无法启动
移除该节点mon
# ceph mon remove wh01
ceph-deploy mon destroy wh01
清理该mon的文件
# sudo rm -rf /var/lib/ceph/mon/ceph-*
重新安装ceph-mon
# sudo apt-get remove ceph-mon -y
# sudo apt-get install ceph-mon -y
Debug05:其他异常可执行步骤2重新搭建
步骤2清除和重置集群(出现问题时按需求选择)。
如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
# ceph-deploy purgedata wh01 wh02 wh03
# ceph-deploy forgetkeys
用下列命令可以连 Ceph 安装包一起清除:
# ceph-deploy purge wh01
如果执行了 purge ,你必须重新安装 Ceph 。
步骤3收集秘钥文件。
主节点收集其他主机秘钥,目录下会多出ceph.bootstrap-mds.keyring  ceph.client.admin.keyring  ceph.client.admin.keyring这几个文件:
# ceph-deploy gatherkeys wh02
# ceph-deploy gatherkeys wh03
创建OSD存储节点(mimic版本13.2.6)
步骤1查看各节点磁盘列表
# ceph-deploy disk list wh02 wh03
步骤2清理各节点磁盘分区表
此版本只能挂载硬盘使用,未找到挂载路径说明
注意:此操作存在数据清除风险,请确认磁盘无误后执行
# ceph-deploy disk zap wh01 /dev/sdb
# ceph-deploy disk zap wh02 /dev/sdb
# ceph-deploy disk zap wh03 /dev/sdb
步骤3创建OSD数据分区(网上旧命令已失效,更改为新命令)
注意:此操作存在数据清除风险,请确认磁盘无误后执行
# ceph-deploy osd create --data /dev/sdb wh01
# ceph-deploy osd create --data /dev/sdb wh02
# ceph-deploy osd create --data /dev/sdb wh03
步骤4将配置文件和admin密钥拷贝到ceph集群所有节点
# ceph-deploy --overwrite-conf admin wh01 wh02 wh03
步骤5添加对ceph.client.admin.keyring 有正确的操作权限
注意:ceph集群中每台主机都需要执行
# sudo chmod +r /etc/ceph/ceph.client.admin.keyring
步骤6查看各节点状态
# ceph -s
  cluster:
    id:     721f9f8b-2509-4292-aa11-3fd7ae123456
    health: HEALTH_HEALTHY
            no active mgr
            quorum wh01,wh02,wh03
 
  services:
    mon: 3 daemons, quorum wh01,wh02,wh03
    mgr: no daemons active
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:   
  如此处OSD为三台则集群正常
创建OSD存储节点(使用路径部署,系统自带版本10.2.11)
步骤1查看各节点磁盘列表
# ceph-deploy disk list saas01 saas02 saas03
步骤2创建挂载点
此版本可以挂载硬盘或路径使用
在三台上分别创建osd1 osd2 osd3三个路径用于osd
# 第1台
# sudo mkdir /opt/osd1
# sudo chmod 777 /opt/osd1/
# sudo chmod 777 /opt/osd1/ -R
# 第2台
# sudo mkdir /opt/osd2
# sudo chmod 777 /opt/osd2/
# sudo chmod 777 /opt/osd2/ -R
# 第3台
# sudo mkdir /opt/osd3
# sudo chmod 777 /opt/osd3/
# sudo chmod 777 /opt/osd3/ -R
步骤3创建OSD数据分区(老版本可以使用路径作为OSD)
准备OSD
# ceph-deploy osd prepare saas01:/opt/osd1 saas02:/opt/osd2 saas03:/opt/osd3
激活OSD
# ceph-deploy osd activate saas01:/opt/osd1 saas02:/opt/osd2 saas03:/opt/osd3
步骤4将配置文件和admin密钥拷贝到ceph集群所有节点
# ceph-deploy --overwrite-conf admin wh01 wh02 wh03
步骤5添加对ceph.client.admin.keyring 有正确的操作权限
注意:ceph集群中每台主机都需要执行
# sudo chmod +r /etc/ceph/ceph.client.admin.keyring
步骤6查看各节点状态
# ceph -s
      cluster 02512aa8-cf13-40ec-9bd3-8e5eba177c67
     health HEALTH_OK
     monmap e1: 3 mons at {saas01=192.168.20.230:6789/0,saas02=192.168.20.231:6789/0,saas03=192.168.20.232:6789/0}
            election epoch 6, quorum 0,1,2 saas01,saas02,saas03
     osdmap e20: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v479: 64 pgs, 1 pools, 0 bytes data, 0 objects
            31966 MB used, 806 GB / 882 GB avail
                  64 active+clean
  如此处OSD为三台则集群正常
https://blog.csdn.net/tangwei0928/article/details/95533329
创建OSD存储节点(使用磁盘部署,系统自带版本10.2.11)
步骤1查看各节点磁盘列表
# ceph-deploy disk list saas01 saas02 saas03
步骤2创建挂载点
此版本可以挂载硬盘或路径使用
注意:此操作存在数据清除风险,请确认磁盘无误后执行
# ceph-deploy disk zap wh01:/dev/sdb wh02:/dev/sdb wh03:/dev/sdb
步骤3创建OSD数据分区(老版本可以使用路径作为OSD)
创建OSD
# ceph-deploy --overwrite-conf  osd create wh01:/dev/sdb wh02:/dev/sdb wh03:/dev/sdb
ceph-deploy osd prepare wh01:/dev/sdb wh02:/dev/sdb wh03:/dev/sdb
ceph-deploy osd activate wh01:/dev/sdb1 wh02:/dev/sdb1 wh03:/dev/sdb1如果之前装过其他版本导致失败,fdisk -l查看mapper是否之前被挂载过,删掉硬盘重新添加即可
激活OSD
#   /dev/sdb1可以
删除OSD(可选)
# ceph osd crush remove osd.0
# ceph auth del osd.0
# ceph osd down osd.0
# ceph osd rm osd.0
步骤4将配置文件和admin密钥拷贝到ceph集群所有节点
# ceph-deploy --overwrite-conf admin wh01 wh02 wh03
步骤5添加对ceph.client.admin.keyring 有正确的操作权限
注意:ceph集群中每台主机都需要执行
# sudo chmod +r /etc/ceph/ceph.client.admin.keyring
步骤6查看各节点状态
# ceph -s
      cluster 02512aa8-cf13-40ec-9bd3-8e5eba177c67
     health HEALTH_OK
     monmap e1: 3 mons at {saas01=192.168.20.230:6789/0,saas02=192.168.20.231:6789/0,saas03=192.168.20.232:6789/0}
            election epoch 6, quorum 0,1,2 saas01,saas02,saas03
     osdmap e20: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v479: 64 pgs, 1 pools, 0 bytes data, 0 objects
            31966 MB used, 806 GB / 882 GB avail
                  64 active+clean
  如此处OSD为三台则集群正常
https://blog.csdn.net/tangwei0928/article/details/95533329
创建和使用CEPH-RBD存储
添加CEPH-RBD存储
步骤1查看OSD节点。
//查看OSD节点情况
# ceph osd tree
ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF 
-1       0.08789 root default                          
-7       0.02930     host wh01                         
 2   hdd 0.02930         osd.2     up  1.00000 1.00000 
-3       0.02930     host wh02                         
 0   hdd 0.02930         osd.0     up  1.00000 1.00000 
-5       0.02930     host wh03                         
 1   hdd 0.02930         osd.1     up  1.00000 1.00000 
步骤2创建存储池。
//创建名为ceph_rbd的存储池,pg_num为128
# ceph osd pool create ceph_rbd 128
//初始化名为ceph_rbd的存储池(10.2.11无需此步骤)
# rbd pool init ceph_rbd
注意:通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:若少于5个OSD, 设置pg_num为128。5~10个OSD,设置pg_num为512。10~50个OSD,设置pg_num为4096。超过50个OSD,可以参考pgcalc计算。本文的测试环境只有3个OSD,因此设置pg_num为128。
//也可使用命令单独修改pg_num
# osd pool default pg num = 128
# osd pool default pgp num = 128
步骤3查看创建的存储池。
查看初始化的pool  
# ceph osd pool ls
步骤4在存储池中创建镜像。
//在存储池中创建镜像(size单位是mb)
# rbd create ceph_rbd/ceph_image --size 901120
注意:此处使用最大化存储空间880GB(901120/1024=880GB),请根据实际情况划分
镜像大小计算方法如下
1. 查看存储池副本数(默认3个节点存储三份)
# ceph osd pool get pool_name size
2. 设置存储池副本数(可根据情况调整副本数量)
# ceph osd pool set pool_name size 3
2. 打印存储池列表
# ceph osd lspools
分析
3台物理机,每台物理机有1块1T硬盘,物理可用空间为1*3=3T;
ceph层将每台服务器1T硬盘当成一个osd数据节点,这样global总空间可用大小便是1*3=3T(约2.73TiB);
查看pool副本数为3,故整个集群可用空间为3/3=1T(约880GiB);
pool可用大小是基于总空间大小,而且并没有定义单个pool限额,故所有pools的可用大小便是基于副本数size的总集群可用大小,这里ceph对pool的最大可用大小定义有些模糊;
bucket和用户可配置磁盘限额;
查看所有用户
# ceph auth list
创建只读用户client.docker
# ceph auth get-or-create client.docker mon 'profile rbd' osd 'profile rbd pool=ceph_rbd, profile rbd-read-only pool=ceph_image'
注意:此文档未创建账户,使用默认的admin账户,此命令按需使用
查看创建的镜像
# rbd ls ceph_rbd
查看创建的镜像详情
# rbd info ceph_rbd/ceph_image
步骤5镜像扩容和缩容(可根据情况调整)。
# 扩容(20GB)
# rbd resize --size 20480 ceph_rbd/ceph_image
# 缩容(20GB)
# rbd resize --size 20480 ceph_rbd/ceph_image --allow-shrink
注意:Ceph的块镜像设备是精简配置,在创建他们并指定大小时并不会使用物理存储空间,直到存储数据。但是它们可以通过--size指定最大容量的限制。
步骤6删除镜像(可根据情况调整)。
删除块设备镜像
# rbd rm ceph_rbd/ceph_image
可以将暂时不用的镜像移入trash
# rbd trash mv ceph_rbd/ceph_image
显示trash中的镜像
# rbd trash ls ceph_rbd
1beb76b8b4567 ceph_image
如果要恢复trash中的镜像可以执行如下命令:
# rbd trash restore ceph_rbd/1beb76b8b4567
此时trash中将不会有数据,原来的镜像已经恢复
# rbd ls ceph_rbd
ceph_image
如果要在恢复的时候重命名镜像,执行如下命令:
# rbd trash restore ceph_rbd/1beb76b8b4567 --image docker # 将镜像重命名为docker
删除trash中的镜像,需要使用镜像的ID
# rbd trash rm ceph_rbd/1beb76b8b4567
注意:
即使这个镜像存在快照,或者它自身某一个克隆正在被使用,都可以将镜像移入trash,但是不能从trash中删除。
如果想要删除,可以使用-expires-at设置延迟时间(默认为now),如果延迟时间尚未到期,则除非使用-force,否则无法删除
挂载镜像存储
步骤1挂载镜像作为Linux存储空间(可选)。
检查集群版本和可调参数版本
# ceph osd crush show-tunables
设置版本
# ceph osd crush tunables hammer
挂载至/dev/rbd0
# sudo rbd map ceph_rbd/ceph_image -p /dev/rbd0 --id admin
注意:如果出现报错sysfs write failed
rbd info ceph_rbd/ceph_image查看支持哪些
禁用特性再试试:
rbd feature disable ceph_rbd/ceph_image exclusive-lock, object-map, fast-diff, deep-flatten
查看挂载
# df -h|grep rbd
# rbd device list
# rbd showmapped
# lsblk | grep rbd
使用rbd块存储挂载至/mnt目录
[root@local-node-1 ~]# mkfs.xfs  /dev/rbd
[root@local-node-1 ~]# mount /dev/rbd0 /mnt
7 . 如果要卸载设备使用如下命令:
# umount  /mnt/
# rbd device unmap /dev/rbd0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值