Ceph的安装
官网链接:http://docs.ceph.com/docs/master/install/install-storage-cluster/
2.1 相关依赖的安装
我这里操作系统都是Centos7.2的操作系统。
#yum install yum-plugin-priorities -y
# cat /etc/yum/pluginconf.d/priorities.conf #确保priority.conf启用插件。
[main] enabled = 1
# vim /etc/yum.repos.d/ceph.repo #做ceph源文件
[Ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-jewel/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [Ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-jewel/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-jewel/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
OR
[ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ gpgcheck=0
#yum install snappy leveldb gdisk python-argparse gperftools-libs -y
2.2 ceph安装
rpm -Uvh http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
yum -y install epel-release
yum -y install ceph-deploy
yum -y install ntp ntpdate ntp-doc
yum -y install openssh-server openssh-client
yum -y install yum-plugin-priorities -y
yum -y install redhat-lsb
yum -y install ceph ceph-release ceph-common ceph-radosgw
性能优化:
Ceph Configurations
[global]
参数名 | 描述 | 默认值 | 建议值 |
---|---|---|---|
public network | 客户端访问网络 | 192.168.100.0/24 | |
cluster network | 集群网络 | 192.168.1.0/24 | |
max open files | 如果设置了该选项,Ceph会设置系统的max open fds | 0 | 131072 |
- 查看系统最大文件打开数可以使用命令
1
|
cat /proc/sys/fs/file-max |
[osd] - filestore
参数名 | 描述 | 默认值 | 建议值 |
---|---|---|---|
filestore xattr use omap | 为XATTRS使用object map,EXT4文件系统时使用,XFS或者btrfs也可以使用 | false | true |
filestore max sync interval | 从日志到数据盘最大同步间隔(seconds) | 5 | 15 |
filestore min sync interval | 从日志到数据盘最小同步间隔(seconds) | 0.1 | 10 |
filestore queue max ops | 数据盘最大接受的操作数 | 500 | 25000 |
filestore queue max bytes | 数据盘一次操作最大字节数(bytes) | 100 << 20 | 10485760 |
filestore queue committing max ops | 数据盘能够commit的操作数 | 500 | 5000 |
filestore queue committing max bytes | 数据盘能够commit的最大字节数(bytes) | 100 << 20 | 10485760000 |
filestore op threads | 并发文件系统操作数 | 2 | 32 |
- 调整omap的原因主要是EXT4文件系统默认仅有4K
- filestore queue相关的参数对于性能影响很小,参数调整不会对性能优化有本质上提升
[osd] - journal
参数名 | 描述 | 默认值 | 建议值 |
---|---|---|---|
osd journal size | OSD日志大小(MB) | 5120 | 20000 |
journal max write bytes | journal一次性写入的最大字节数(bytes) | 10 << 20 | 1073714824 |
journal max write entries | journal一次性写入的最大记录数 | 100 | 10000 |
journal queue max ops | journal一次性最大在队列中的操作数 | 500 | 50000 |
journal queue max bytes | journal一次性最大在队列中的字节数(bytes) | 10 << 20 | 10485760000 |
- Ceph OSD Daemon stops writes and synchronizes the journal with the filesystem, allowing Ceph OSD Daemons to trim operations from the journal and reuse the space.
- 上面这段话的意思就是,Ceph OSD进程在往数据盘上刷数据的过程中,是停止写操作的。
[osd] - osd config tuning
参数名 | 描述 | 默认值 | 建议值 |
---|---|---|---|
osd max write size | OSD一次可写入的最大值(MB) | 90 | 512 |
osd client message size cap | 客户端允许在内存中的最大数据(bytes) | 524288000 | 2147483648 |
osd deep scrub stride | 在Deep Scrub时候允许读取的字节数(bytes) | 524288 | 131072 |
osd op threads | OSD进程操作的线程数 | 2 | 8 |
osd disk threads | OSD密集型操作例如恢复和Scrubbing时的线程 | 1 | 4 |
osd map cache size | 保留OSD Map的缓存(MB) | 500 | 1024 |
osd map cache bl size | OSD进程在内存中的OSD Map缓存(MB) | 50 | 128 |
osd mount options xfs | Ceph OSD xfs Mount选项 | rw,noatime,inode64 | rw,noexec,nodev,noatime,nodiratime,nobarrier |
- 增加osd op threads和disk threads会带来额外的CPU开销
[osd] - recovery tuning
参数名 | 描述 | 默认值 | 建议值 |
---|---|---|---|
osd recovery op priority | 恢复操作优先级,取值1-63,值越高占用资源越高 | 10 | 4 |
osd recovery max active | 同一时间内活跃的恢复请求数 | 15 | 10 |
osd max backfills | 一个OSD允许的最大backfills数 | 10 | 4 |
[osd] - client tuning
参数名 | 描述 | 默认值 | 建议值 |
---|---|---|---|
rbd cache | RBD缓存 | true | true |
rbd cache size | RBD缓存大小(bytes) | 33554432 | 268435456 |
rbd cache max dirty | 缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through | 25165824 | 134217728 |
rbd cache max dirty age | 在被刷新到存储盘前dirty数据存在缓存的时间(seconds) | 1 | 5 |
关闭Debug
3. PG Number
PG和PGP数量一定要根据OSD的数量进行调整,计算公式如下,但是最后算出的结果一定要接近或者等于一个2的指数。
Total PGs = (Total_number_of_OSD * 100) / max_replication_count
例如15个OSD,副本数为3的情况下,根据公式计算的结果应该为500,最接近512,所以需要设定该pool(volumes)的pg_num和pgp_num都为512.
1 2 |
ceph osd pool set volumes pg_num 512 ceph osd pool set volumes pgp_num 512 |
4. CRUSH Map
CRUSH是一个非常灵活的方式,CRUSH MAP的调整取决于部署的具体环境,这个可能需要根据具体情况进行分析,这里面就不再赘述了。
Mon删除
从健康的集群中删除
1、 systemctl stop ceph-mon@{mon-id}
2、 ceph mon remove {mon-id}
3、 从ceph.conf中删除
从不健康的集群中删除
1、 ceph mon dump
2、 service ceph stop mon
3、 ceph-mon –i {mon-id} --extract-monmap {mappath}
4、 monmaptool {mappath} -rm {mon-id}
5、 ceph-mon –I {mon-id} –inject-monmap {monpath}
参考:
..