注意
本文档适用于 Ceph 开发版本。
prepare
在运行之前ceph-volume lvm prepare
,我们建议您配置一个prepare
。
prepare
添加元数据到逻辑卷,但以其他方式不会修改它们。
Note
这是部署 OSD 的两步过程中的第一步。如果您更喜欢仅使用一个命令来部署 OSD,请参阅创建.
prepare
使用LVM 标签来为逻辑卷分配几块元数据。以这种方式标记的卷更容易识别,并且更容易与 Ceph 一起使用。LVM 标签通过它们在 Ceph 集群中扮演的角色来标识逻辑卷(例如:BlueStore 数据或 BlueStore WAL+DB)。
BlueStore是默认后端。Ceph 允许更改后端,这可以通过使用以下标志和参数来完成:
bluestore
Bluestore是新 OSD 的默认后端。Bluestore 支持以下配置:
一个块设备、一个块.wal 设备和一个块.db 设备
一个块设备和一个块.wal 设备
一个块设备和一个块.db 设备
一个单个块设备
The bluestore
子命令接受物理块设备、物理块设备上的分区或逻辑卷作为各种设备参数的参数。如果提供了物理块设备,将创建一个逻辑卷。如果提供的卷组名称以ceph开头,如果它尚不存在,则将创建它,如果它已经存在,则将覆盖并重用它。这允许更简单的方法来使用 LVM,但代价是灵活性:没有选项或配置可用于更改逻辑卷的创建方式。
The block
使用--data
标志指定,在其最简单的用例中,它看起来像:
ceph-volume lvm prepare --bluestore --data vg/lv
原始设备可以按相同的方式指定:
ceph-volume lvm prepare --bluestore --data /path/to/device
要启用加密,--dmcrypt
标志:
ceph-volume lvm prepare --bluestore --dmcrypt --data vg/lv
从 Ceph Squid 开始,您可以选择为创建的 LUKS2 设备进行 TPM2 令牌注册:--with-tpm
标志:
ceph-volume lvm prepare --bluestore --dmcrypt --with-tpm --data vg/lv
如果需要block.db
设备或block.wal
设备,可以使用--block.db
或--block.wal
指定。这些可以是物理设备、分区或逻辑卷。block.db
和block.wal
对于 bluestore 是可选的。
对于两者block.db
和block.wal
,分区可以直接使用,因此不会被转换为逻辑卷。
在创建 OSD 目录时,进程使用一个tmpfs
挂载来保存 OSD 所需的文件。这些文件由ceph-osd --mkfs
创建,并且是短暂的。
为block
设备创建了一个符号链接,对于block.db
和block.wal
是可选的。对于具有默认名称和 OSD ID 为 0 的集群,目录看起来像这样:
ls -l /var/lib/ceph/osd/ceph-0
lrwxrwxrwx. 1 ceph ceph 93 Oct 20 13:05 block -> /dev/ceph-be2b6fbd-bcf2-4c51-b35d-a35a162a02f0/osd-block-25cf0a05-2bc6-44ef-9137-79d65bd7ad62
lrwxrwxrwx. 1 ceph ceph 93 Oct 20 13:05 block.db -> /dev/sda1
lrwxrwxrwx. 1 ceph ceph 93 Oct 20 13:05 block.wal -> /dev/ceph/osd-wal-0
-rw-------. 1 ceph ceph 37 Oct 20 13:05 ceph_fsid
-rw-------. 1 ceph ceph 37 Oct 20 13:05 fsid
-rw-------. 1 ceph ceph 55 Oct 20 13:05 keyring
-rw-------. 1 ceph ceph 6 Oct 20 13:05 ready
-rw-------. 1 ceph ceph 10 Oct 20 13:05 type
-rw-------. 1 ceph ceph 2 Oct 20 13:05 whoami
在上述情况下,一个设备用于block
,所以ceph-volume
使用以下约定创建了卷组和逻辑卷:
卷组名称:
ceph-{cluster fsid}
(如果卷组已经存在:ceph-{random uuid}
)逻辑卷名称:
osd-block-{osd_fsid}
filestore
警告
Filestore 在 Reef 发布中已被弃用,不再受支持。
Filestore<filestore>
是为文件存储后端准备逻辑卷的 OSD 后端。-支持的 OSD。
Filestore<filestore>
使用逻辑卷存储 OSD 数据,并使用物理设备、分区或逻辑卷存储日志。如果使用物理设备创建文件存储后端,将在该物理设备上创建逻辑卷。如果提供的卷组名称以ceph开头,如果它尚不存在,则将创建它,如果它已经存在,则将覆盖并重用它。这些卷不需要特殊准备,但请确保满足 OSD 数据和日志的最小大小要求。
使用以下命令创建基本的文件存储 OSD:
ceph-volume lvm prepare --filestore --data <data block device>
使用此命令部署具有外部日志的文件存储:
ceph-volume lvm prepare --filestore --data <data block device> --journal <journal block device>
使用此命令启用加密,并请注意需要--dmcrypt
标志:
ceph-volume lvm prepare --filestore --dmcrypt --data <data block device> --journal <journal block device>
数据块设备和日志各自可以采用三种形式之一:
物理块设备
物理块设备上的分区
逻辑卷
如果您使用逻辑卷部署文件存储,则在命令中传递的值must应该是volume_group/logical_volume_name
格式。由于逻辑卷名称不强制唯一,使用这种格式是一个重要的保护措施,以防止意外选择错误的卷(并覆盖其数据)。
如果您使用分区部署文件存储,则分区must应该包含一个PARTUUID
,该卷可以被blkid
发现。这确保了无论设备名称(或路径)如何,都可以正确识别该分区。
例如,要使用逻辑卷作为 OSD 数据,并使用分区/dev/sdc1
作为日志,请运行类似以下形式的命令:
ceph-volume lvm prepare --filestore --data volume_group/logical_volume_name --journal /dev/sdc1
或者,要使用裸设备用于数据,并使用逻辑卷用于日志:
ceph-volume lvm prepare --filestore --data /dev/sdc --journal volume_group/journal_lv
在请求集群提供新的 OSD 时使用生成的 UUID。这两条信息(OSD ID 和 OSD UUID)对于标识特定的 OSD 是必要的,并且将在整个激活过程中 later 使用。
使用以下约定创建 OSD 数据目录:
/var/lib/ceph/osd/<cluster name>-<osd id>
要将日志卷链接到挂载的数据卷,请使用此命令:
ln -s /path/to/journal /var/lib/ceph/osd/<cluster_name>-<osd-id>/journal
要使用 OSD 的引导密钥获取 monmap,请使用此命令:
/usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring \
/var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o \
/var/lib/ceph/osd/<cluster name>-<osd id>/activate.monmap
要填充已挂载的 OSD 目录,请使用此ceph-osd
command:
ceph-osd --cluster ceph --mkfs --mkkey -i <osd id> --monmap \
/var/lib/ceph/osd/<cluster name>-<osd id>/activate.monmap --osd-data \
/var/lib/ceph/osd/<cluster name>-<osd id> --osd-journal \
/var/lib/ceph/osd/<cluster name>-<osd id>/journal --osd-uuid <osd uuid> \
--keyring /var/lib/ceph/osd/<cluster name>-<osd id>/keyring --setuser ceph \
--setgroup ceph
命令。以上所有步骤中的信息都用于上述命令。
分区
ceph-volume lvm
目前不会从整个设备创建分区。如果使用设备分区,唯一的要求是它们包含PARTUUID
,并且它可以通过blkid
发现。两者fdisk
和parted
都会自动为新的分区创建该内容。
例如,使用新的未格式化驱动器/dev/sdd
在此情况下,我们可以使用parted
创建一个新的分区。首先我们列出设备信息:
parted --script /dev/sdd print
Model: VBOX HARDDISK (scsi)
Disk /dev/sdd: 11.5GB
Sector size (logical/physical): 512B/512B
Disk Flags:
该设备甚至还没有标签,因此我们可以使用parted
在创建分区之前创建一个gpt
标签,并再次使用parted
print
:
parted --script /dev/sdd mklabel gpt
parted --script /dev/sdd print
Model: VBOX HARDDISK (scsi)
Disk /dev/sdd: 11.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
验证。现在让我们创建一个单个分区,并稍后验证blkid
是否可以找到PARTUUID
需要的ceph-volume
:
parted --script /dev/sdd mkpart primary 1 100%
blkid /dev/sdd1
/dev/sdd1: PARTLABEL="primary" PARTUUID="16399d72-1e1f-467d-96ee-6fe371a7d0d4"
现有 OSD
对于希望使用此新系统并且已经在其中运行 OSD 的现有集群,需要考虑以下几点:
警告
此过程将强制格式化数据设备,如果有的话,将销毁现有数据。
OSD 路径应遵循此约定:
/var/lib/ceph/osd/<cluster name>-<osd id>
最好没有其他机制来挂载卷,并且应该被删除(例如 fstab 挂载点)
现有 OSD 的一次性过程,其 ID 为 0,并使用"ceph"
集群名称,如下所示(以下命令将销毁 OSD 中的任何数据 in the OSD):
ceph-volume lvm prepare --filestore --osd-id 0 --osd-fsid E3D291C1-E7BF-4984-9794-B60D9FA139CB
命令行工具不会联系监视器来生成 OSD ID,并且除了在它上面存储元数据以便以后启动之外,还会格式化 LVM 设备(有关详细元数据描述,请参阅元数据).
Crush 设备类
要为 OSD 设置 crush 设备类,请使用--crush-device-class
标志指示 cephadm 移除主机以及 CRUSH 桶。
ceph-volume lvm prepare --bluestore --data vg/lv --crush-device-class foo
multipath
支持
multipath
设备如果lvm
配置正确,则受支持。
交给 LVM
大多数 Linux 发行版应该在其 LVM2 软件包中默认配置multipath_component_detection = 1
。使用此设置LVM
忽略任何多路径组件设备,并且ceph-volume
将相应地不接触这些设备。
使用过滤器
如果此设置不可用,必须在filter
表达式。必须不能同时使用多路径设备和其多路径组件。lvm.conf
. ceph-volume
中提供正确的
存储元数据
以下标签作为准备过程的一部分,无论卷类型(日志或数据)或 OSD 对象存储如何,都会应用这些标签:
cluster_fsid
encrypted
osd_fsid
osd_id
crush_device_class
对于bluestore这些标签将被添加:
block_device
block_uuid
db_device
db_uuid
wal_device
wal_uuid
Note
完整的 lvm 标签约定,请参阅标签 API
总结
总结一下prepare
过程 forbluestore:
接受原始物理设备、物理设备上的分区或逻辑卷作为参数。
在任何原始物理设备上创建逻辑卷。
为 OSD 生成 UUID
请求监视器获取 OSD ID,重用生成的 UUID
OSD 数据目录在 tmpfs 挂载上创建。
block
,block.wal
, andblock.db
如果定义,则将它们链接。获取用于激活的 monmap
数据目录由
ceph-osd
填充。逻辑卷使用 lvm 标签分配所有 Ceph 元数据。
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.