注意
本文档适用于 Ceph 的开发版本。
ceph-volume -- Ceph OSD 部署和检查工具
概要
ceph-volume [-h] [--cluster CLUSTER] [--log-level LOG_LEVEL] [--log-path LOG_PATH]
ceph-volume inventory
ceph-volume lvm [ trigger | create | activate | prepare | zap | list | batch | new-wal | new-db | migrate ]
ceph-volume simple [ trigger | scan | activate ]
描述
ceph-volume 是一个用于将逻辑卷部署为 OSD 的专用命令行工具,它试图在准备、激活和创建 OSD 时保持与 ceph-disk 相似的 API。
它与 ceph-disk 的不同之处在于不与 Ceph 附带的 udev 规则进行交互或依赖这些规则。这些规则允许自动检测以前设置的设备,然后将这些设备馈入 ceph-disk 以激活它们。
命令
inventory
此子命令提供有关主机物理磁盘清单的信息,并报告有关这些磁盘的元数据。在这些元数据中,可以找到特定于磁盘的数据项(如型号、大小、旋转或固态),以及特定于使用设备的 ceph 的数据项,例如它是否可用于 ceph,或者是否存在逻辑卷。
示例
ceph-volume inventory
ceph-volume inventory /dev/sda
ceph-volume inventory --format json-pretty
可选参数
- -h, --help
显示帮助信息并退出
- --format
报告格式,有效值为
plain(默认)、json和json-pretty
lvm
通过使用 LVM 标签,lvm 子命令能够存储和稍后重新发现以及查询与 OSD 关联的设备,以便稍后可以激活它们。
子命令
batch
使用 bluestore(默认)设置从设备列表创建 OSD。它将创建运行 OSD 所需的所有卷组和逻辑卷。
使用三个设备的示例
ceph-volume lvm batch --bluestore /dev/sda /dev/sdb /dev/sdc
可选参数
- -h, --help
显示帮助信息并退出
- --bluestore
使用 bluestore 对象存储(默认)
- --yes
跳过报告并提示继续配置
- --prepare
仅准备 OSD,不激活
- --dmcrypt
为底层 OSD 设备启用加密
- --crush-device-class
定义一个 CRUSH 设备类以分配 OSD
- --no-systemd
不启用或创建任何 systemd 单元
- --osds-per-device
每个设备配置多个(默认值为 1 个)OSD
- --report
报告当前输入的潜在结果(需要传入设备)
- --format
报告时的输出格式(与 --report 一起使用),可以是 'pretty'(默认)或 'json' 之一
- --block-db-size
设置(或覆盖)“bluestore_block_db_size”值,以字节为单位
- --journal-size
覆盖“osd_journal_size”值,以兆字节为单位
必需的位置参数
- <DEVICE>
原始设备的完整路径,例如
/dev/sda。可以传入多个<DEVICE>路径。
activate
启用一个 systemd 单元,该单元持久化 OSD ID 及其 UUID(在 Ceph CLI 工具中也称为 fsid),以便在启动时它能够理解哪个 OSD 已启用并且需要挂载。
用法
ceph-volume lvm activate --bluestore <osd id> <osd fsid>
可选参数
- -h, --help
显示帮助信息并退出
- --auto-detect-objectstore
通过检查 OSD 自动检测对象存储
- --bluestore
bluestore 对象存储(默认)
- --all
激活系统中找到的所有 OSD
- --no-systemd
跳过创建和启用 systemd 单元以及启动 OSD 服务
通过使用(幂等的)--all 标志,可以一次激活多个 OSD
ceph-volume lvm activate --all
prepare
准备一个逻辑卷用作 OSD 和日志,使用 bluestore(默认)设置。它不会创建或修改逻辑卷,只会添加额外的元数据。
用法
ceph-volume lvm prepare --bluestore --data <data lv> --journal <journal device>
可选参数
- -h, --help
显示帮助信息并退出
- --journal JOURNAL
逻辑组名、逻辑卷路径或设备路径
- --bluestore
使用 bluestore 对象存储(默认)
- --block.wal
bluestore block.wal 逻辑卷或分区的路径
- --block.db
bluestore block.db 逻辑卷或分区的路径
- --dmcrypt
为底层 OSD 设备启用加密
- --osd-id OSD_ID
重用现有 OSD ID
- --osd-fsid OSD_FSID
重用现有 OSD fsid
- --crush-device-class
定义一个 CRUSH 设备类以分配 OSD
必需参数
- --data
逻辑组名或逻辑卷路径
对于加密 OSD,必须在准备时添加 --dmcrypt 标志(create 子命令也支持)。
create
将配置新 osd 的两步过程(先调用 prepare,然后调用 activate)封装为一个。选择 prepare 然后 activate 的原因是为了逐步将新 OSD 引入集群,避免大量数据重新平衡。
单次调用过程完全统一了 prepare 和 activate 的功能,提供了便捷的一次性操作。标志和一般用法与 prepare 和 activate 子命令等效。
trigger
此子命令不应直接使用,它被 systemd 使用,通过解析来自 systemd 的输入,检测与 OSD 关联的 UUID 和 ID,将输入代理到 ceph-volume lvm activate。
用法
ceph-volume lvm trigger <SYSTEMD-DATA>
systemd “数据”应采用以下格式
<OSD ID>-<OSD UUID>
与 OSD 关联的 lvs 需要事先准备好,以便存在所有必需的标签和元数据。
位置参数
- <SYSTEMD_DATA>
来自 systemd 单元的数据,包含 OSD 的 ID 和 UUID。
list
列出与 Ceph 关联的设备或逻辑卷。如果设备具有与 OSD 相关的信息,则确定关联关系。这通过查询 LVM 的元数据并将其与设备关联来验证。
与 OSD 关联的 lvs 需要事先由 ceph-volume 准备好,以便存在所有必需的标签和元数据。
用法
ceph-volume lvm list
列出特定设备,报告有关它的所有元数据
ceph-volume lvm list /dev/sda1
列出逻辑卷及其所有元数据(vg 是卷组,lv 是逻辑卷名称)
ceph-volume lvm list {vg/lv}
位置参数
- <DEVICE>
对于逻辑卷,形式为
vg/lv;对于常规设备,形式为/path/to/sda1或/path/to/sda。
zap
清除给定的逻辑卷或分区。如果给定逻辑卷的路径,则必须采用 vg/lv 格式。给定 lv 或分区上存在的任何文件系统都将被删除,并且所有数据都将被清除。
但是,lv 或分区将保持不变。
用法,用于逻辑卷
ceph-volume lvm zap {vg/lv}
用法,用于逻辑分区
ceph-volume lvm zap /dev/sdc1
要完全删除设备,请使用 --destroy 标志(适用于所有设备类型)
ceph-volume lvm zap --destroy /dev/sdc1
可以通过指定 OSD ID 和/或 OSD FSID 来删除多个设备
ceph-volume lvm zap --destroy --osd-id 1
ceph-volume lvm zap --destroy --osd-id 1 --osd-fsid C9605912-8395-4D76-AFC0-7DFDAC315D59
位置参数
- <DEVICE>
对于逻辑卷,形式为
vg/lv;对于常规设备,形式为/path/to/sda1或/path/to/sda。
new-wal
将给定的逻辑卷作为 WAL 附加到 OSD。逻辑卷名称格式为 vg/lv。如果 OSD 已附加 WAL,则失败。
用法
ceph-volume lvm new-wal --osd-id OSD_ID --osd-fsid OSD_FSID --target <target lv>
可选参数
- -h, --help
显示帮助信息并退出
- --no-systemd
跳过检查 OSD systemd 单元
必需参数
- --target
要作为 WAL 附加的逻辑卷名称
new-db
将给定的逻辑卷作为 DB 附加到 OSD。逻辑卷名称格式为 vg/lv。如果 OSD 已附加 DB,则失败。
用法
ceph-volume lvm new-db --osd-id OSD_ID --osd-fsid OSD_FSID --target <target lv>
可选参数
- -h, --help
显示帮助信息并退出
- --no-systemd
跳过检查 OSD systemd 单元
必需参数
- --target
要作为 DB 附加的逻辑卷名称
migrate
将 BlueFS 数据从源卷移动到目标卷,源卷(主卷除外,即数据或块卷)在成功后被删除。仅允许 LVM 卷作为目标,无论是已附加的还是新的。在后一种情况下,它被附加到 OSD,替换其中一个源设备。以下替换规则适用(按优先顺序,在第一次匹配时停止)
如果源列表有 DB 卷 - 目标设备替换它。
如果源列表有 WAL 卷 - 目标设备替换它。
如果源列表只有 slow 卷 - 不允许操作,需要通过 new-db/new-wal 命令进行显式分配。
用法
ceph-volume lvm migrate --osd-id OSD_ID --osd-fsid OSD_FSID --target <target lv> --from {data|db|wal} [{data|db|wal} ...]
可选参数
- -h, --help
显示帮助信息并退出
- --no-systemd
跳过检查 OSD systemd 单元
必需参数
- --from
源设备类型名称列表
- --target
要将数据移动到的逻辑卷
simple
扫描可能由 ceph-disk 或手动创建的旧式 OSD 目录或数据设备。
子命令
activate
启用一个 systemd 单元,该单元持久化 OSD ID 及其 UUID(在 Ceph CLI 工具中也称为 fsid),以便在启动时它能够理解哪个 OSD 已启用并且需要挂载,同时读取先前在 /etc/ceph/osd/ 中以 JSON 格式创建和持久化的信息。
用法
ceph-volume simple activate --bluestore <osd id> <osd fsid>
可选参数
- -h, --help
显示帮助信息并退出
- --bluestore
bluestore 对象存储(默认)
注意
它需要一个匹配的 JSON 文件,格式如下
/etc/ceph/osd/<osd id>-<osd fsid>.json
scan
扫描正在运行的 OSD 或 OSD 的数据设备以获取元数据,这些元数据稍后可用于使用 ceph-volume 激活和管理 OSD。扫描方法将创建一个 JSON 文件,其中包含所需的信息以及在 OSD 目录中找到的任何内容。
或者,可以将 JSON blob 发送到 stdout 进行进一步检查。
在所有正在运行的 OSD 上使用
ceph-volume simple scan
在数据设备上使用
ceph-volume simple scan <data device>
正在运行的 OSD 目录
ceph-volume simple scan <path to osd dir>
可选参数
- -h, --help
显示帮助信息并退出
- --stdout
将 JSON blob 发送到 stdout
- --force
如果 JSON 文件存在于目标位置,则覆盖它
可选位置参数
- <DATA DEVICE or OSD DIR>
实际数据分区或正在运行的 OSD 路径
trigger
此子命令不应直接使用,它被 systemd 使用,通过解析来自 systemd 的输入,检测与 OSD 关联的 UUID 和 ID,将输入代理到 ceph-volume simple activate。
用法
ceph-volume simple trigger <SYSTEMD-DATA>
systemd “数据”应采用以下格式
<OSD ID>-<OSD UUID>
与 OSD 关联的 JSON 文件需要事先通过扫描(或手动)持久化,以便可以使用所有必需的元数据。
位置参数
- <SYSTEMD_DATA>
来自 systemd 单元的数据,包含 OSD 的 ID 和 UUID。
可用性
ceph-volume 是 Ceph 的一部分,Ceph 是一个可大规模扩展的开源分布式存储系统。请参阅 https://docs.ceph.net.cn/ 上的文档以获取更多信息。
另请参阅
ceph-osd(8),