注意
本文档适用于 Ceph 开发版本。
scan
扫描允许捕获已部署 OSD 的任何重要细节,以便ceph-volume
可以管理它,而无需任何其他启动工作流程或工具(如udev
或ceph-disk
)。
如果未提供路径或设备,该命令还可以扫描所有正在运行的 OSD。
扫描后,信息将(默认情况下)将元数据作为 JSON 保存在/etc/ceph/osd
该JSON
文件将使用以下命名约定:{OSD ID}-{OSD FSID}.json
一个 ID 为 1 的 OSD,以及像86ebd829-1405-43d3-8fd6-4cbc9b6ecf96
这样的 FSID,文件的绝对路径将是:
/etc/ceph/osd/1-86ebd829-1405-43d3-8fd6-4cbc9b6ecf96.json
The scan
如果需要覆盖内容,必须使用--force
标志:
ceph-volume simple scan --force {path}
如果不需要持久化JSON
元数据,支持将内容发送到stdout
(不会写入文件):
ceph-volume simple scan --stdout {path}
运行 OSD 扫描
使用此命令而不提供 OSD 目录或设备将扫描任何当前正在运行的 OSD 的目录。如果运行的 OSD 不是由 ceph-disk 创建的,它将被忽略并且不会被扫描。
要扫描所有运行的 ceph-disk OSD,命令将如下所示:
ceph-volume simple scan
目录扫描
目录扫描将捕获来自有趣文件的 OSD 文件内容。为了成功扫描,必须存在一些文件:
ceph_fsid
fsid
keyring
ready
type
whoami
如果 OSD 被加密,它将额外添加以下密钥:
encrypted
encryption_type
lockbox_keyring
对于任何其他文件,只要它不是二进制文件或目录,它也将被捕获并作为 JSON 对象的一部分进行持久化。
JSON 对象中键的约定是任何文件名都是键,其内容是其值。如果内容是一行(如在whoami
的情况下),内容将被修剪,并删除换行符。例如,对于具有 ID 1 的 OSD,JSON 条目将如下所示:
"whoami": "1",
对于可能有多于一行内容的文件,内容将保持原样,除了密钥环,密钥环将特殊处理并解析以提取密钥环。例如,一个keyring
被读取为:
[osd.1]\n\tkey = AQBBJ/dZp57NIBAAtnuQS9WOS0hnLVe0rZnE6Q==\n
将被存储为:
"keyring": "AQBBJ/dZp57NIBAAtnuQS9WOS0hnLVe0rZnE6Q==",
对于像/var/lib/ceph/osd/ceph-1
这样的目录,命令可能如下所示:
ceph-volume simple scan /var/lib/ceph/osd/ceph1
设备扫描
当 OSD 目录不可用(OSD 未运行,或设备未挂载)时,scan
命令能够内省设备以捕获所需数据。就像运行 OSD 扫描一样,它仍然需要一些文件存在。这意味着要扫描的设备必须是OSD 的数据分区。
只要 OSD 的数据分区作为参数传递,子命令就可以扫描其内容。
如果设备已经挂载,工具可以检测到此场景并从该目录捕获文件内容。
如果设备未挂载,将创建一个临时目录,设备将临时挂载仅用于扫描内容。扫描内容后,设备将卸载。
对于像/dev/sda1
这样的设备must将是数据分区,命令可能如下所示:
ceph-volume simple scan /dev/sda1
JSON
内容
JSON 对象的内容非常简单。扫描不仅将持久化特殊 OSD 文件及其内容的信息,还将验证路径和设备 UUID。与ceph-disk
不同,它将它们存储在{device type}_uuid
文件中,该工具将它们作为设备类型键的一部分进行持久化。
例如,一个block.db
设备将如下所示:
"block.db": {
"path": "/dev/disk/by-partuuid/6cc43680-4f6e-4feb-92ff-9c7ba204120e",
"uuid": "6cc43680-4f6e-4feb-92ff-9c7ba204120e"
},
但它还将持久化生成的ceph-disk
特殊文件,如下所示:
"block.db_uuid": "6cc43680-4f6e-4feb-92ff-9c7ba204120e",
这种重复是为了确保以下内容:
# 支持可能没有 ceph-disk 特殊文件的 OSDblkid
# 支持逻辑卷和 GPT 设备
这是一个示例JSON
元数据,来自使用bluestore
:
{
"active": "ok",
"block": {
"path": "/dev/disk/by-partuuid/40fd0a64-caa5-43a3-9717-1836ac661a12",
"uuid": "40fd0a64-caa5-43a3-9717-1836ac661a12"
},
"block.db": {
"path": "/dev/disk/by-partuuid/6cc43680-4f6e-4feb-92ff-9c7ba204120e",
"uuid": "6cc43680-4f6e-4feb-92ff-9c7ba204120e"
},
"block.db_uuid": "6cc43680-4f6e-4feb-92ff-9c7ba204120e",
"block_uuid": "40fd0a64-caa5-43a3-9717-1836ac661a12",
"bluefs": "1",
"ceph_fsid": "c92fc9eb-0610-4363-aafc-81ddf70aaf1b",
"cluster_name": "ceph",
"data": {
"path": "/dev/sdr1",
"uuid": "86ebd829-1405-43d3-8fd6-4cbc9b6ecf96"
},
"fsid": "86ebd829-1405-43d3-8fd6-4cbc9b6ecf96",
"keyring": "AQBBJ/dZp57NIBAAtnuQS9WOS0hnLVe0rZnE6Q==",
"kv_backend": "rocksdb",
"magic": "ceph osd volume v026",
"mkfs_done": "yes",
"ready": "ready",
"systemd": "",
"type": "bluestore",
"whoami": "3"
}
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.