当您启动Ceph的服务,初始化过程启动了一系列在后台运行的守护进程。 Ceph的存储集群运行两种类型的守护进程:
Ceph的监视器(CEPH-MON)
Ceph的OSD守护(CEPH-OSD)
Ceph的存储集群,支持Ceph的文件系统,它至少运行一个的Ceph元数据服务器(CEPH-MDS)。支持Ceph的对象存储的集群,运行Ceph的网关守护(radosgw)。为了您的方便,每个守护进程有一系列的默认值(即,许多是由ceph/ src/common/config_opts.hshe设置的)。您可以用CEPH配置文件重写。
当您启动CEPH存储集群,每个守护进程寻找一个Ceph的配置文件(即默认情况下ceph.conf),它能给集群提供配置设置。手动部署,你需要创建一个Ceph的配置文件。有一些为您创建配置文件的工具(如ceph-deploy,Chef,etc),你可以使用此处包含的信息作为参考。 Ceph的配置文件定义:
Cluster Identity
Authentication settings
Cluster membership
Host names
Host addresses
Paths to keyrings
Paths to journals
Paths to data
配置文件可以配置在Ceph的存储集群,所有Ceph的守护程序或特定类型的所有Ceph的守护进程。为了配置一系列的守护进程,必须包含的以下的进程设置,配置如下:
[global]
说明:在 [global] 下的设置,影响在Ceph的存储集群所有进程实例。
例如:auth supported=cephx
[ OSD ]
说明:在 [OSD] 下的设置,影响在Ceph的存储集群所有OSD的进程实例,并且重写在 [global]里面的相同配置。
例如: osd journal size = 1000
[mon]
说明:在 [mon] 下的设置,影响在Ceph的存储集群所有mon的进程实例,并且重写在 [mon]里面的相同配置。
例如:mon addr= 10.0.0.101:6789
[MDS ]
说明:在 [mds] 下的设置,影响在Ceph的存储集群所有mon的进程实例,并且重写在 [mds]里面的相同配置。
例如:host= myserver01
[client]
说明:在[Client]下的设置,影响Ceph的所有Client(例如,挂载的文件系统,挂载的块设备等) 。
例如:log file=/var/log/ceph/ radosgw.log
在一个特定的进程类型中更改设置(例如,[ OSD] ,[MON] [ MDS] )。
在一个特定的过程更改设置(例如, [ osd.1 ] ) 。
重写全局设置会影响所有子进程,除了那些专门覆盖在一个特定的守护进程。
一个典型的全局环境设置应涉及到激活验证。例如:
[global] #Enable authentication between hosts within the cluster. #v 0.54 and earlier auth supported = cephx #v 0.55 and after auth cluster required = cephx auth service required = cephx auth client required = cephx
您可以指定适用于特定类型的守护进程的设置。当你指定设置下的[OSD],[MON]或[MDS]没有指定特定的实例,分别设置将适用于所有的OSD,显示器或元数据守护。
一个典型的守护范围的设置,包括设置日志大小,文件存储设置,例如:
[osd] osd journal size = 1000 filestore xattr use omap = true
您可以指定一个守护进程的特定实例设置。您可以通过句点(.)和实例ID分隔这种类型指定一个实例。Ceph的OSD守护进程的实例ID始终是数字,但它对于Ceph的MON和Ceph的元数据服务器(MDS)来说,可能是字母数字。
[osd.1] # settings affect osd.1 only. [mon.a] # settings affect mon.a only. [mds.b] # settings affect mds.b only.
$type
说明:扩展到MDS ,OSD ,或MON,取决于实例、守护进程的类型。
例如:/var/lib/ceph/$type
$ ID
说明:扩展守护进程标识符。对于osd.0 ,这将是0;为mds.a ,这将是a。
例如:/var/lib/ceph/$type/$cluster-$id
$host
说明:扩展即时守护进程的主机名。
$name
说明:扩展$type.$id。
例如:/var/run/ceph/$cluster-$name.asok
硬件建议部分提供一些硬件配置Ceph的存储集群指引。这是可能为一个单一的Ceph节点运行多个守护进程。例如,一个有多个驱动器或RAID的单节点可以为每个驱动器或RAID运行一个ceph-osd节点。理想情况下,你将有运行一个特定类型的实例的节点。例如,一些节点可能运行Ceph-OSD守护进程,一些节点可能运行Ceph-MDS守护,还有一些其他节点可能运行Ceph-Mon守护进程。
每个节点确定都有一个由主机设置的名称。MON还可以指定一个网络地址和端口(即域名或IP地址)确定地址设置。一个基本的配置文件,通常会指定一个守护进程的每个实例只有很少的设置。例如:
[mon.a] host = hostName mon addr = 150.140.130.120:6789 [osd.0] host = hostName
注意:主机设置为节点(即不是FQDN)的短名称。它不是一个IP地址。在命令行中输入hostname -s,检索的节点名称。另外,这个设置是只mkcephfs和手动部署。它不能被用来ceph-deploy或chef,这些工具你只需要输入相应的值即可。
Ceph的生产集群通常最低3 Ceph-MON守护部署,以确保高可用性,防止MON实例崩溃。 至少有三个MON确保Paxos算法可以决定哪个版本的CEPH集群映射是最近从大部分MON中来的,在合法的数量下。
注意:您可能部署Ceph用一个Ceph-MON,但如果这个实例失败,又没有其他的MONS,可能会中断数据服务的可用性。
Ceph的显示器通常监听端口6789上。例如:
[mon.a] host = hostName mon addr = 150.140.130.120:6789
/var/lib/ceph/mon/$cluster-$id
auth cluster required = cephx auth service required = cephx auth client required = cephx注意:重要升级时,我们明确建议先禁用身份验证,然后进行升级。一旦升级完成后,重新启用身份验证。
[osd] osd journal size = 10000 filestore xattr use omap = true #enables the object map. Only if running ext4. [osd.0] host = {hostname}
默认情况下, Ceph的期望,你将一个Ceph的OSD守护进程的数据存储在以下路径:
/var/lib/ceph/osd/$cluster-$id您或者使用部署工具(如,ceph-deploy),先建立相应的目录。然后使用元变量,命名一个“ceph”集群,如下:
/var/lib/ceph/osd/ceph-0
ssh {osd-host} sudo mkdir /var/lib/ceph/osd/ceph-{osd-number}OSD数据路径的理想挂载点是一块独立的硬盘,该硬盘和存储和运行操作系统和守护进程的硬盘是分开的。如果OSD磁盘不是操作系统磁盘,准备把它为Ceph的使用,将其安装到刚才创建的目录:
ssh {new-osd-host} sudo mkfs -t {fstype} /dev/{disk} sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/ceph-{osd-number}
[global] # For version 0.54 and earlier, you may enable # authentication with the following setting. # Specifying `cephx` enables authentication; # and specifying `none` disables authentication. #auth supported = cephx # For version 0.55 and beyond, you must explicitly enable # or disable authentication with "auth" entries in [global]. auth cluster required = cephx auth service required = cephx auth client required = cephx [osd] osd journal size = 1000 # uncomment the following line if you are mounting with ext4 # filestore xattr use omap = true # For Bobtail (v 0.56) and subsequent versions, you may # add settings for mkcephfs so that it will create and mount # the file system for you. Remove the comment `#` character for # the following settings and replace the values in parenthesis # with appropriate values, or leave the following settings commented # out to accept the default values. You must specify the --mkfs # option with mkcephfs in order for the deployment script to # utilize the following settings, and you must define the 'devs' # option for each osd instance; see below. #osd mkfs type = {fs-type} #osd mkfs options {fs-type} = {mkfs options} # default for xfs is "-f" #osd mount options {fs-type} = {mount options} # default mount option is "rw, noatime" [mon.a] host = myserver01 mon addr = 10.0.0.101:6789 [mon.b] host = myserver02 mon addr = 10.0.0.102:6789 [mon.c] host = myserver03 mon addr = 10.0.0.103:6789 [osd.0] host = myserver01 #devs = {path-to-device} [osd.1] host = myserver02 #devs = {path-to-device} [osd.2] host = myserver03 #devs = {path-to-device} [mds.a] host = myserver01 #devs = {path-to-device}
Ceph可以在运行是修改CEPH-OSD,CEPH-MON,或CEPH-MDS守护进程。此功能增加/减少日志输出,启用/禁用调试设置是非常有用的,甚至是运行优化。下面反映使用运行时配置:
ceph {daemon-type} tell {id or *} injectargs '--{name} {value} [--{name} {value}]'替换 {deamon-type} 为 OSD,MON或MDS。可以申请*特定类型的所有守护进程运行时设置,或指定一个特定的守护进程的ID(即,它的数字或字母)。例如,增加一个CEPH-OSD名为osd.0的守护进程的调试日志记录,请执行以下命令:
ceph osd tell 0 injectargs '--debug-osd 20 --debug-ms 1'
在您的ceph.conf文件,你可以使用空格时指定设置名称。在命令行上指定设置的名称时,请确保您使用下划线或连字符(_或 - )连接(例如,debug OSD变得debug+OSD)。
ceph --admin-daemon {/path/to/admin/socket} config show | lessadmin socket,每个守护进程的默认路径是:
/var/run/ceph/$cluster-$name.asok
ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less
用CEPH,你可以在同一硬件上运行多个Ceph的存储集群。运行多个集群,与用不同CRUSH规则集的同一个群集上使用不同的存储池相比,提供了更高级别的隔离。一个单独的集群,将有独立的MON,OSD和元数据服务器进程。当运行Ceph时使用默认设置,默认群集名称是ceph,这意味着你将保存您的Ceph的配置文件在/ etc /ceph默认目录中的文件名ceph.conf 。
当你运行多个集群,你必须说出你的集群,并用集群的名称保存Ceph的配置文件。例如,一个名为OpenStack的集群将有一个Ceph的配置文件在/ etc /ceph默认目录的文件名openstack.conf 。
Important
Cluster names must consist of letters a-z and digits 0-9 only.
独立的集群意味着独立数据磁盘和日志之间不能共享集群。元变量, $集群metavariable的计算群集名称(即在上述的例子中, OpenStack的) 。各种设置使用自个的集群metavariable ,包括:
创建默认的目录或文件时,你应该使用群集名称路径中的适当位置。例如:
sudo mkdir /var/lib/ceph/osd/openstack-0 sudo mkdir /var/lib/ceph/mon/openstack-a注意:当运行在同一主机上的MON,你应该使用不同的端口。默认情况下,MON使用端口6789 。如果您已经有使用端口6789的MON,请使用不同的端口为您的其他集群。
ceph -c {cluster-name}.conf health
ceph -c openstack.conf health