1. Create a Cluster(创建一个集群)
2. Operating Your Cluster(操作你的集群)
3. Expanding Your Cluster(扩展你的集群)
3.1 Adding an OSD(增加一个OSD)
3.2 Add a Metadata Server(增加一个元数据服务器)
3.3 Adding Monitors(增加监控器)
4. Storing/Retrieving Object Data(存储/恢复对象数据)
存储集群快速入门
如果你还没有完成你的预检,那先做第一步。这“快速入门”设置了两个节点演示集群,这样你可以探索一些Ceph的存储集群功能。此快速入门将帮助您安装一个最小的Ceph存储在服务器上的集群节点从admin节点使用ceph-deploy。
为了获得最佳效果,你的admin维护配置您的群集节点上创建一个目录。
mkdir my-cluster cd my-cluster |
---|
ceph-deploy 工具将输出到当前目录下的文件。当执行
作为第一个练习, 用一个Ceph监视器和两个Ceph OSD守护进程创建一个Ceph存储集群 。一旦这个集群是active + clean状态, 通过增加第三个Ceph OSD 守护进程,一个元数据服务器和另外两个Ceph监控器来扩展它。
重要:如果你是用不同的用户登录的,就不要用sudo或者root权限运行ceph-deploy,因为在远程的主机上不能发出sudo命令
创建一个集群
要创建您的Ceph的存储集群,生成一个文件系统ID(FSID),在命令行提示符下输入以下命令,生成监视器的秘钥:
ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys |
---|
在管理模式下,请使用ceph-deploy进行如下操作:
1.创建集群.
ceph-deploy new {ceph-node} ceph-deploy new ceph-node1 |
---|
在当前目录下使用ls和cat命令检查ceph-deploy输出结果,你可以看到一个ceph配置文件,一个密钥环以及为新集群创建的日志文件。使用ceph-deploy的"-h"参数可查看更多帮助信息。
2.安装Ceph
ceph-deploy install {ceph-node}[{ceph-node} ...] ceph-deploy install ceph-node1 ceph-node2 ceph-node3 |
---|
3.增加一个Ceph集群监视器。
ceph-deploy mon create {ceph-node} ceph-deploy mon create ceph-node1 |
---|
4.收集密钥
ceph-deploy gatherkeys {ceph-node} ceph-deploy gatherkeys ceph-node1 |
---|
一旦你收集到密钥,在本地目录下可看到如下密钥环文件:
1. {cluster-name}.client.admin.keyring
2. {cluster-name}.bootstrap-osd.keyring
3. {cluster-name}.bootstrap-mds.keyring
5.增加2个OSD。为了快速安装,本例中为每个Ceph OSD守护进程使用单个目录而非单个磁盘。使用ceph-deply osd命令可查看在分离的磁盘/分区上创建OSD和日志的方法。登陆Ceph节点,并为每个Ceph OSD守护进程创建单个目录。
ssh ceph-node2 ssh ceph-node3 |
---|
然后,在管理模式下,使用ceph-deploy准备OSD。
ceph-deploy osd prepare {ceph-node}:/path/to/directory ceph-deploy osd prepare ceph-node2:/tmp/osd0 ceph-node3:/tmp/osd1 |
---|
最后,激活OSD。
ceph-deploy osd activate {ceph-node}:/path/to/directory ceph-deploy osd activate ceph-node2:/tmp/osd0 ceph-node3:/tmp/osd1 |
---|
6.使用ceph-deploy命令将配置文件和管理密钥复制到管理节点和你的Ceph节点。下次你再使用ceph命令界面时就无需指定集群监视器地址,执行命令时也无需每次都指定ceph.client.admin.keyring。
ceph-deploy admin {ceph-node} ceph-deploy admin admin-node ceph-node1 ceph-node2 ceph-node3 |
---|
注意:由于你使用ceph-deploy与本地主机通信,因此你的主机必须是主机名可达的(如果需要的话,可修改/etc/hostsif文件)。确保你对ceph.client.admin.keyring文件具有正确的权限。
7.检查集群健康状况。
ceph health |
---|
当集群完成配对后,它应该返回active + clean 状态。
操作你的集群
在Ceph集群中应用ceph-deploy命令可实现集群自启动。Debian/Ubuntu发行版中,可使用Upstart操作集群守护进程。Centos、Red Hat、Fedora、SLES发行版则可使用sysvinit工具。
如果想了解配对和集群健康状况的更多信息,可查看”监视一个集群“章节。如果想了解Ceph OSD进程和组健康信息,可查看”监视OSD和PG“章节。
一旦你部署好一个Ceph集群,你可以尝试使用一些管理功能、rados对象存储命令等,然后可根据快速启动向导对Ceph块设备、Ceph文件系统以及Ceph对象网关进行初始化。
扩展你的集群
当你创建并运行一个基本集群后,下一步就是扩展集群。为ceph-node1增加一个Ceph OSD进程和一个Ceph元数据服务器。再为ceph-node2和ceph-node3增加一台Ceph监视器,以生成quoraum。
增加一个OSD
因为你正在运行的是一个3节点的测试集群环境,需为监视节点增加OSD。
ssh ceph-node1 sudo mkdir /tmp/osd2 exit |
---|
然后在你的ceph-deloy节点上,准备OSD。
ceph-deploy osd prepare {ceph-node}:/path/to/directory ceph-deploy osd prepare ceph-node1:/tmp/osd2 |
---|
最后,激活OSD。
ceph-deploy osd activate {ceph-node}:/path/to/directory ceph-deploy osd activate ceph-node1:/tmp/osd2 |
---|
一旦你增加新的OSD,Ceph将会迁移已有的放置置到新的OSD上以达到集群的重新平衡,你可通过ceph命令界面观察这个过程。
ceph -w |
---|
你将会看到PG状态由活跃且干净状态变成活跃态,其中存在部分降级对象。当迁移完成后,将再次返回活跃且干净状态。(可按Control+c组合键退出)
增加一个元数据服务器
为了使用CephFS文件系统,你需要至少一台元数据服务器。执行如下步骤以创建一台元数据服务器。
ceph-deploy mds create {ceph-node} ceph-deploy mds create ceph-node1 |
---|
注意:当前Ceph产品中仅支持运行一个元数据服务器。你可尝试在一个集群中运行多个元数据服务器,但对此尚无商业支持。
增加监控器
一个Ceph存储集群至少需要一台Ceph监视器。为了保证高可用性,Ceph存储集群中通常会运行多个Ceph监视器,任意单台Ceph监视器的宕机都不会影响整个Ceph存储集群正常工作。由于Ceph使用Paxos算法,这需要多个Ceph监视器组成Quoram(如1,2:3,3:4,3:5,4:6等)。
向你的集群增加2台Ceph监视器。
ceph-deploy mon create {ceph-node} ceph-deploy mon create ceph-node2 ceph-node3 |
---|
当你增加Ceph监视器后,Ceph将开始同步各监视器并形成Quoram。你可通过如下方式检查Quoram状态:
ceph quorum_status |
---|
存储/恢复对象数据
为了能够操作Ceph存储集群中的对象数据,Ceph客户端必需满足:
1. 设置一个对象名
2. 指定一个数据池
Ceph客户端取回最新的集群映射表,并根据CRUSH算法先计算如何将对象映射到某个PG中,然后再计算如何将该PG动态映射入一个Ceph OSD进程上。为了查找对象位置,你需要的仅仅是对象名称和数据池名称,例如:
ceph osd map {poolname} {object-name} |
---|
练习:定位一个对象
作为一个练习,我们先创建一个对象。使用rados put命令指定对象名称、存储对象数据的测试文件路径和地址池名称。例如:
rados put {object-name} {file-path} --pool=data rados put test-object-1 testfile.txt --pool=data |
---|
为了验证Ceph存储集群已存储该对象,执行如下命令:
rados -p data ls |
---|
现在,可标识对象位置:
ceph osd map {pool-name} {object-name} ceph osd map data test-object-1 |
---|
Ceph将输出对象位置信息,例如:
osdmap e537 pool 'data' (0) object 'test-object-1' -> pg 0.d1743484 (0.4) -> up [1,0] acting [1,0] |
---|
如果要删除测试对象,使用rados rm命令即可,例如:
rados rm test-object-1 --pool=data |
---|
当集群扩展后,对象位置可能会动态变更。Ceph动态平衡的一个好处就是Ceph可自动完成迁移而无须你手动操作。