测试架构信息:
Ceph-Admin172.17.0.50admin
Ceph-Mon172.17.0.40mon
Ceph-OSD01172.17.0.41osd01
Ceph-OSD02172.17.0.42osd02
CEph-OSD03172.17.0.43osd03
Ceph-OSD04172.17.0.44osd04
Ceph-OSD05172.17.0.45osd05
Ceph-MDS172.17.0.49msd
一、系统初始配置
安装系统centos 7.3 最小化安装
yum 源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
配置网络:
echo "DNS1=172.16.1.2" >> /etc/sysconfig/network-scripts/ifcfg-ens192 /etc/init.d/network restart
配置host文件:
echo "172.17.0.50 admin" >> /etc/hosts echo "172.17.0.40 mon" >> /etc/hosts echo "172.17.0.41 osd01" >> /etc/hosts echo "172.17.0.42 osd02" >> /etc/hosts echo "172.17.0.43 osd03" >> /etc/hosts echo "172.17.0.44 osd04" >> /etc/hosts echo "172.17.0.45 osd05" >> /etc/hosts echo "172.17.0.49 msd" >> /etc/hosts echo "172.17.0.60 ceph-client" >> /etc/hosts
更改电脑名,需重启:
hostnamectl set-hostname servername
配置adminSSH无密码登陆各节点:
ssh-keygen ssh-copy-id root@mon ssh-copy-id root@osd01 ssh-copy-id root@osd02 ssh-copy-id root@osd03 ssh-copy-id root@osd04 ssh-copy-id root@osd05 ssh-copy-id root@ceph-client
添加deploy源:
vim /etc/yum.repos.d/ceph.repo
[ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-kraken/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc yum update -y yum install ceph-deploy -y
同步时间:
启用可选软件库:
yum -y install epel-release yum install yum-plugin-priorities -y yum install ntp ntpdate ntp-doc -y yum install sysstat -y yum install net-tools -y yum install wget -y
配置防火墙:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789:7100 -j ACCEPT
在各 Ceph 节点创建新用户:
ssh root@mon sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd01 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd02 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd03 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd04 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd05 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser
确保各 Ceph 节点上新创建的用户都有 sudo 权限。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser chmod 0440 /etc/sudoers.d/cephuser
允许无密码 SSH 登录
ssh-copy-id cephuser@mon ssh-copy-id cephuser@osd01 ssh-copy-id cephuser@osd02 ssh-copy-id cephuser@osd03 ssh-copy-id cephuser@osd04 ssh-copy-id cephuser@osd05 ssh-copy-id cephuser@msd
修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件
vi ~/.ssh/config Host mon Hostname mon User cephuser Host osd01 Hostname osd01 User cephuser Host osd02 Hostname osd02 User cephuser Host osd03 Hostname osd03 User cephuser Host osd04 Hostname osd04 User cephuser Host osd05 Hostname osd05 User cephuser
开放所需端口
firewall-cmd --zone=public --add-port=6789/tcp --permanent firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
不需要控制终端: 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty
关闭SELINUX
setenforce 0 vi /etc/selinux/config SELINUX=disabled
二、存储集群
创建一个 Ceph 存储集群
mkdir my-cluster cd my-cluster ceph-deploy new mon
把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:
vi ./ceph.conf osd pool default size = 2
如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下
public network = {ip-address}/{netmask} cluster network = {cluster-network/netmask}
安装ceph OSD
ceph-deploy install mon osd01 osd02 osd03
配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial
如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
ceph-deploy purge osd02 ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys !!!!!!!!
添加两个 OSD:
ssh osd01 rm -rf /var/local/osd01 sudo mkdir /var/local/osd01 exit ssh osd02 rm -rf /var/local/osd02 sudo mkdir /var/local/osd02 exit
然后与管理节点执行ceph-deploy 准备OSD
ceph-deploy osd prepare osd01:/dev/sdb osd02:/dev/sdb
激活osd:
ceph-deploy osd activate osd01:/dev/sdb osd02:/dev/sdb
用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。
ceph-deploy admin admin mon osd01 osd02
确保你对 ceph.client.admin.keyring 有正确的操作权限
chmod +r /etc/ceph/ceph.client.admin.keyring ceph health
查看OSD tree
ceph osd tree
设置ceph集群自启动
在各节点需要执行如下命令:
systemctl enable ceph-mon.target systemctl enable ceph-osd.target systemctl enable ceph.target
ssh mon "systemctl enable ceph-mon.target;systemctl enable ceph-osd.target;systemctl enable ceph.target"
CEPH操作命令:
ceph health ceph -w 打印ceph信息 ceph df集群使用情况 ceph status集群状态 ceph -s ceph osd tree ceph osd stat ceph osd dump ceph quorum_statusmon的数量状态 ceph mds stat元数据状态 ceph mds dump状态信息 systemctl restart ceph-osd.target 重启osd 服务
三、扩展集群
添加OSD
ceph-deploy osd prepare osd03:/dev/sdb ceph-deploy osd activate osd03:/dev/sdb ceph -w
添加元数据服务器
ceph-deploy install mds ceph-deploy mds create mds ceph-deploy admin mds
添加 MONITORS
vi ceph.conf public network = 172.17.0.0/23 ceph-deploy mon add osd01 osd02 osd03 ceph-deploy --overwrite-conf mon add osd03 ceph quorum_status --format json-pretty查看mon法定人数
添加 RGW 例程
ceph-deploy rgw create node1
RGW 例程默认会监听 7480 端口,可以更改该节点 ceph.conf 内与 RGW 相关的配置,如下:
[client] rgw frontends = civetweb port=80
四、管理、维护
ceph 日志
/var/log/ceph iostat -x df -h ceph osd stat ceph health 、 ceph -s 、或 ceph -w systemctl restart ceph-osd.target 重启osd 服务
最大线程数
sysctl -w kernel.pid_max=4194303 配置 kernel.pid_max 写入配置文件 /etc/sysctl.conf kernel.pid_max = 4194303
命令获取归置组列表
ceph pg dump
要根据指定归置组号查看哪些 OSD 位于 Acting Set 或 Up Set 里,执行
ceph pg map {pg-num}
其结果会告诉你 osdmap 版本( eNNN )、归置组号( {pg-num} )、 Up Set 内的 OSD ( up[] )、和 Acting Set 内的 OSD ( acting[] )。
osdmap eNNN pg {pg-num} -> up [0,1,2] acting [0,1,2]
修改单个节点的配置文件ceph.conf等如下
ceph-deploy --overwrite-conf config push mon osd01 osd02 osd03 osd04
添加心跳地址
cluster network = 172.17.0.0/23
五、使用
创建存储池:
ceph osd pool create {pool-name} pg_num ceph osd pool create poolceph01 128
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
少于 5 个 OSD 时可把 pg_num 设置为 128
OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
ceph osd lspools列出存储池 ceph-mds -i mds -d
存入/检出对象数据
ceph osd map {poolname} {object-name}
在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点。
ceph-deploy install ceph-client
在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client 。
ceph-deploy admin ceph-client
创建 CEPH 文件系统
关于存储池的管理请参考 存储池 。例如,要用默认设置为文件系统创建两个存储池,你可以用下列命令:
$ ceph osd pool create cephfs_data <pg_num> $ ceph osd pool create cephfs_metadata <pg_num>
创建好存储池后,你就可以用 fs new 命令创建文件系统了:
$ ceph fs new <fs_name> <metadata> <data> 例如: $ ceph fs new cephfs cephfs_metadata cephfs_data $ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:
$ ceph mds stat e5: 1/1/1 up {0=a=up:active}
用内核驱动挂载 CEPH 文件系统
要挂载 Ceph 文件系统,如果你知道监视器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具来自动解析监视器 IP 地址。例如:
sudo mkdir /mnt/mycephfs sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
要挂载启用了 cephx 认证的 Ceph 文件系统,你必须指定用户名、密钥。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
前述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
关于 cephx 参见认证。
要卸载 Ceph 文件系统,可以用 umount 命令,例如:
sudo umount /mnt/mycephfs
---
要把 Ceph 文件系统挂载为用户空间文件系统,可以用 ceph-fuse 命令,例如:
sudo mkdir /home/usernname/cephfs sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs
创建块设备:
ceph-deploy install ceph-client ceph-deploy admin ceph-client
配置块设备
在 ceph-client 节点上创建一个块设备 image 。
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] rbd create foo --size 4096 -m mon -k /etc/ceph/ceph.client.admin.keyring
在 ceph-client 节点上,把 image 映射为块设备。
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] rbd map foo --name client.admin -m mon -k /etc/ceph/ceph.client.admin.keyring
在 ceph-client 节点上,创建文件系统后就可以使用块设备了。
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
此命令可能耗时较长。
在 ceph-client 节点上挂载此文件系统。
sudo mkdir /mnt/ceph-block-device sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device cd /mnt/ceph-block-device
查看块信息
rbd ls
#新建rbd 块:
rbd create test001 --size 100G --image-format 2 --image-feature layering rbd ls rbd map test001 mkfs.ext4 -f /dev/rdb0 mount /dev/rbd0 /mnt/data
dd测速:
dd if=/dev/zero of=/mnt/mycephfs/zero bs=8k count=200000 conv=fdatasync
同步配置文件
ceph-deploy --overwrite-conf admin osd01
六、高级应用
缓存设置
冷热分层
学习中
本文出自 “小地方” 博客,请务必保留此出处http://lazypaul.blog.51cto.com/1032344/1912400
原文:http://lazypaul.blog.51cto.com/1032344/1912400