第 6 章 使用 ceph-volume 实用程序部署 OSD
			ceph-volume 工具是一个目的命令行工具,用于将逻辑卷部署为 OSD。它使用插件类型框架来部署具有不同设备技术的 OSD。ceph-volume 实用程序遵循与 ceph-disk 实用程序类似的工作流,用于部署 OSD,采用可预测且强大的方法来准备、激活和启动 OSD。目前,ceph-volume 工具只支持 lvm 插件,并计划将来支持其他技术。
		
				ceph-disk 命令已弃用。
			
6.1. 使用 ceph-volume LVM 插件 复制链接链接已复制到粘贴板!
				通过使用 LVM 标签,lvm 子命令可以通过查询与 OSD 关联的设备来存储和重新发现它们,以便激活它们。这包括对基于 lvm 的技术(如 dm-cache )的支持。
			
				使用 ceph-volume 时,使用 dm-cache 是透明的,把 dm-cache 视为逻辑卷。使用 dm-cache 时的性能增益和损失取决于特定工作负载。通常,随机和顺序读取将以较小的块大小显示性能增长;而随机和顺序写入的性能在更大块大小下的性能会下降。
			
				要使用 LVM 插件,在 ceph-volume 命令中添加 lvm 作为子命令:
			
ceph-volume lvm
ceph-volume lvm
				lvm 子命令有三个子命令,如下所示:
			
					使用 create 子命令,将 prepare 和 activate 子命令组合为一个子命令。详情请查看 create 子命令 部分。
				
6.1.1. 准备 OSD 复制链接链接已复制到粘贴板!
					prepare 子命令为 OSD 后端对象存储准备一个 OSD 后端对象存储,并为 OSD 数据和日志使用逻辑卷。没有默认的对象存储类型。对象存储类型需要在准备时设置 --filestore 或 --bluestore 选项。从 Red Hat Ceph Storage 3.2 开始,支持 BlueStore 对象存储类型。prepare 子命令将不会创建或修改逻辑卷,除非使用 LVM 标签添加一些额外的元数据。
				
					LVM 标签使卷更易于以后发现,并帮助将卷识别为 Ceph 系统的一部分,以及它们具有的角色。ceph-volume lvm prepare 命令添加以下 LVM 标签列表:
				
- 
							
cluster_fsid - 
							
data_device - 
							
journal_device - 
							
encrypted - 
							
osd_fsid - 
							
osd_id - 
							
journal_uuid 
					prepare 进程非常严格,它需要两个可供使用的逻辑卷,并且需要 OSD 数据和日志的最小大小。日志设备可以是逻辑卷或分区。
				
					以下是 prepare 工作流过程:
				
- 为数据和日志接受逻辑卷
 - 为 OSD 生成 UUID
 - 要求 Ceph monitor 获取重复使用生成的 UUID 的 OSD 标识符
 - OSD 数据目录已创建,数据卷被挂载
 - 日志从数据卷到日志位置进行符号链接
 - 
							
monmap为激活获取 - 
							设备挂载,数据目录由 填充 
ceph-osd - LVM 标签分配给OSD 数据和日志卷
 
					在 OSD 节点上执行以下步骤,并以 root 用户身份使用 LVM 准备简单的 OSD 部署:
				
ceph-volume lvm prepare --bluestore --data $VG_NAME/$LV_NAME
ceph-volume lvm prepare --bluestore --data $VG_NAME/$LV_NAME
例如:
ceph-volume lvm prepare --bluestore --data example_vg/data_lv
# ceph-volume lvm prepare --bluestore --data example_vg/data_lv
					对于 BlueStore,如果您要为 RocksDB 使用单独的设备,您还可以指定 --block.db 和 --block.wal 选项。
				
以下是使用分区作为日志设备的 FileStore 示例:
ceph-volume lvm prepare --filestore --data example_vg/data_lv --journal /dev/sdc1
# ceph-volume lvm prepare --filestore --data example_vg/data_lv --journal /dev/sdc1
					当使用分区时,它必须包含可由 blkid 命令发现的 PARTUUID,这样无论设备名称或路径是什么,都可以正确识别它。
				
						ceph-volume LVM 插件不会在原始磁盘设备中创建分区。必须先创建此分区,然后才能将分区用于 OSD 日志设备。
					
6.1.2. 激活 OSD 复制链接链接已复制到粘贴板!
完成准备过程后,OSD 已准备好激活。激活过程可在启动时启用 Systemd 单元,允许启用和挂载正确的 OSD 标识符及其 UUID。
					以下是 activate 工作流过程:
				
- 需要 OSD ID 和 OSD uuid
 - 启用与 OSD id 和 OSD uuid匹配的 systemd 单元
 - systemd 单元将确保所有设备已就绪并挂载
 - 
							匹配的 
ceph-osdsystemd 单元将开始 
					在 OSD 节点上执行以下步骤,并以 root 用户身份激活 OSD:
				
ceph-volume lvm activate --filestore $OSD_ID $OSD_UUID
ceph-volume lvm activate --filestore $OSD_ID $OSD_UUID
例如:
ceph-volume lvm activate --filestore 0 0263644D-0BF1-4D6D-BC34-28BD98AE3BC8
# ceph-volume lvm activate --filestore 0 0263644D-0BF1-4D6D-BC34-28BD98AE3BC8
运行此命令时多次没有副作用。
6.1.3. 创建 OSD 复制链接链接已复制到粘贴板!
					create 子命令将部署新 OSD 的两步流程打包为:调用 prepare 子命令,然后将 activate 子命令调用到单个子命令。单独使用 prepare 和 activate 的原因是,逐步将新 OSD 引入存储集群中,并避免重新平衡大量数据。进程没有区别,但 OSD 会在 完成后 立即启动和 进入。
				
					对 FileStore、OSD 节点上并以 root 用户身份执行以下步骤:
				
ceph-volume lvm create --filestore --data $VG_NAME/$LV_NAME --journal $JOURNAL_DEVICE
ceph-volume lvm create --filestore --data $VG_NAME/$LV_NAME --journal $JOURNAL_DEVICE
例如:
ceph-volume lvm create --filestore --data example_vg/data_lv --journal example_vg/journal_lv
# ceph-volume lvm create --filestore --data example_vg/data_lv --journal example_vg/journal_lv
					对 BlueStore、OSD 节点上并以 root 用户身份执行以下步骤:
				
ceph-volume lvm create --bluestore --data <device>
# ceph-volume lvm create --bluestore --data <device>
例如:
ceph-volume lvm create --bluestore --data /dev/sda
# ceph-volume lvm create --bluestore --data /dev/sda
6.1.4. 使用 batch 模式 复制链接链接已复制到粘贴板!
					在提供单一设备时,batch 子命令可自动创建多个 OSD。ceph-volume 命令决定基于驱动器类型创建 OSD 的最佳方法。这种最佳方式取决于对象存储格式、蓝牙或 FileStore。
				
					BlueStore 是 OSD 的默认对象存储类型。在使用 BlueStore 时,OSD 优化取决于三个不同的情景,具体取决于所使用的设备。如果所有设备都是传统的硬盘驱动器,则每个设备创建一个 OSD。如果所有设备都是固态状态驱动器,则每个设备都会创建两个 OSD。如果混合了传统的硬盘驱动器和固态驱动器,则数据会放置在传统的硬盘上,block.db 会尽可能在固态硬盘上创建。
				
						batch 子命令不支持为 write-ahead-log(block.wal)设备创建单独的逻辑卷。
					
BlusStore 示例
ceph-volume lvm batch --bluestore /dev/sda /dev/sdb /dev/nvme0n1
# ceph-volume lvm batch --bluestore /dev/sda /dev/sdb /dev/nvme0n1
					在使用 FileStore 时,OSD 优化取决于所使用的设备两种不同的情景。如果所有设备都是传统的硬盘驱动器或是固态硬盘,则为每个设备创建一个 OSD,将日志整合到同一设备上。如果混合了传统的硬盘驱动器和固态驱动器,则数据将放置在传统的硬盘驱动器上,并使用 Ceph 配置文件中指定的大小调整参数在固态驱动器上创建日志,默认日志大小为 5 GB。ceph.conf
				
FileStore 示例
ceph-volume lvm batch --filestore /dev/sda /dev/sdb
# ceph-volume lvm batch --filestore /dev/sda /dev/sdb