块是一个字节序列(例如,512字节的数据块)。 基于块的存储接口是使用旋转介质(如硬盘,CD,软盘甚至传统的9轨磁带)存储数据的最常用方法;Ceph块设备是精简配置,可调整大小并存储在Ceph集群中多个OSD条带化的数据。
总结:块设备可理解成一块硬盘,用户可以直接使用不含文件系统的块设备,也可以将其格式化成特定的文件系统,由文件系统来组织管理存储空间,从而为用户提供丰富而友好的数据操作支持。
准备三台服务器
配置主机名
在192.168.40.200上执行如下:
hostnamectl set-hostname master1-admin && bash
在192.168.40.201上执行如下:
hostnamectl set-hostname node1-monitor && bash
在192.168.40.202上执行如下:
hostnamectl set-hostname node2-osd && bash
三台服务器分别配置hosts文件
vim /etc/hosts
192.168.40.200 master1-admin
192.168.40.201 node1-monitor
192.168.40.202 node2-osd
配置阿里云的repo源,master1-admin、node1-monitor、node2-osd上操作:
yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
cat /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet deltarpm
在master1-admin节点安装ceph-deploy
yum install python-setuptools ceph-deploy -y
在master1-admin、node1-monitor和node2-osd节点安装ceph
yum install ceph ceph-radosgw -y
ceph --version
在master1-admin创建一个目录,用于保存 ceph-deploy 生成的配置文件信息的
cd /etc/ceph
ceph-deploy new master1-admin node1-monitor node2-osd
ls
生成了如下配置文件
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
Ceph配置文件、一个monitor密钥环和一个日志文件
把ceph.conf配置文件里的默认副本数从3改成1 。把osd_pool_default_size = 2 ,加入[global]段,这样只有2个osd也能达到active+clean状态:
在master1-admin执行
vim /etc/ceph/ceph.conf
[global]
fsid = af5cd413-1c53-4035-90c6-95368eef5c78
mon_initial_members = node1-monitor
mon_host = 192.168.40.201
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
mon clock drift allowed = 0.500 #监视器间允许的时钟漂移量默认值0.05,ceph对每个mon之间的时间同步延时默认要求在0.05s之间,这个时间有的时候太短了。所以如果ceph集群如果出现clock问题就检查ntp时间同步或者适当放宽这个误差时间。
mon clock drift warn backoff = 10 #时钟偏移警告的退避指数。默认值5
#cephx是认证机制是整个 Ceph 系统的用户名/密码
在master1-admin 执行
cd /etc/ceph
ceph-deploy mon create-initial
ls *.keyring
出现如下
ceph.bootstrap-mds.keyring ceph.bootstrap-mgr.keyring ceph.bootstrap-osd.keyring ceph.bootstrap-rgw.keyring ceph.client.admin.keyring ceph.mon.keyring
准备osd
在在master1-admin 执行
cd /etc/ceph/
ceph-deploy osd prepare master1-admin:/dev/sdb [root@master1-admin ceph]# ceph-deploy osd prepare node1-monitor:/dev/sdb
ceph-deploy osd prepare node2-osd:/dev/sdb
激活osd
ceph-deploy osd activate master1-admin:/dev/sdb1
ceph-deploy osd activate node1-monitor:/dev/sdb1
ceph-deploy osd activate node2-osd:/dev/sdb1
查看状态:
ceph-deploy osd list master1-admin node1-monitor node2-osd
创建mds
在master1-admin 执行
ceph-deploy mds create master1-admin node1-monitor node2-osd
查看ceph当前文件系统
ceph fs ls
#No filesystems enabled
一个cephfs至少要求两个librados存储池,一个为data,一个为metadata。当配置这两个存储池时,注意:
创建存储池
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
关于创建存储池
确定 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 取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)。
创建文件系统
创建好存储池后,你就可以用 fs new 命令创建文件系统了
ceph fs new xianchao cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1 #其中:new后的fsname 可自定义
ceph fs ls #查看创建后的cephfs
ceph mds stat #查看mds节点状态
xianchao:1 {0=master1-admin=up:active} 2 up:standby #active是活跃的,另1个是处于热备份的状态
ceph -s
cluster cd296ab9-1f61-4b9f-8cc3-0a57dfab00eb
health HEALTH_OK
monmap e1: 3 mons at {master1-admin=192.168.40.200:6789/0,node1-monitor=192.168.40.201:6789/0,node2-osd=192.168.40.202:6789/0}
election epoch 4, quorum 0,1,2 master1-admin,node1-monitor,node2-osd
fsmap e7: 1/1/1 up {0=node2-osd=up:active}, 2 up:standby
osdmap e20: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v51: 116 pgs, 3 pools, 2068 bytes data, 20 objects
323 MB used, 164 GB / 164 GB avail
116 active+clean
#HEALTH_OK表示ceph集群正常