OSD部署

关于RocksDB::Env 是用来固化RocksDB运行过程中产生的.sst(Sorting string table,有序字符串表,键值对的磁盘存储形式)和.log(wal:write ahead log)文件。因为日志文件的功能是为了提升磁盘的写速度,所以在BlueFs的设计上支持将.sst和.log文件分开存储,以方便将.log文件单独使用速度更快的固态存储设备例如NVMSSD或者NVRRAM存储。

BlueFs将整个BlueStore的存储空间分为三个层次 :

1. 慢速(Slow)空间: 主要用于存储对象数据,可由普通大容量机械盘提供,由BlueStore自行管理

2. 高速(DB)空间:存储BlueStore内部产生的元数据,可由普通SSD提供,需求小于(慢速空间)。

3. 超高速(WAL)空间:主要存储RocksDB内部产生的.log文件,可由SSD或者NVRAM等时延相较普通SSD更小的设备充当。容量需求和(高速空间)相当,同样由BlueFs直接管理。

 

关键要素

 1. 部署osd

ceph-volume  lvm create --bluestore --data /dev/sdx --block.db /dev/sdy

或者

ceph-volume lvm create --bluestore --data /dev/sdx  --block.wal /dev/nsdy --block.db /dev/sdz

 输出:

Running command: /usr/bin/ceph-authtool --gen-print-key
Running command: /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 00197149-051f-4d11-be35-f1f4bfc55973
Running command: /usr/sbin/vgcreate --force --yes ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a /dev/vdb1
 stdout: Wiping ext4 signature on /dev/vdb1.
 stdout: Physical volume "/dev/vdb1" successfully created.
 stdout: Volume group "ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a" successfully created
Running command: /usr/sbin/lvcreate --yes -l 2559 -n osd-block-00197149-051f-4d11-be35-f1f4bfc55973 ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a
 stdout: Logical volume "osd-block-00197149-051f-4d11-be35-f1f4bfc55973" created.
Running command: /usr/bin/ceph-authtool --gen-print-key
Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0
Running command: /usr/bin/chown -h ceph:ceph /dev/ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a/osd-block-00197149-051f-4d11-be35-f1f4bfc55973
Running command: /usr/bin/chown -R ceph:ceph /dev/dm-0
Running command: /usr/bin/ln -s /dev/ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a/osd-block-00197149-051f-4d11-be35-f1f4bfc55973 /var/lib/ceph/osd/ceph-0/block
Running command: /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o /var/lib/ceph/osd/ceph-0/activate.monmap
 stderr: got monmap epoch 1
Running command: /usr/bin/ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQDfMathRsISIhAAics1EfR+2MRzx9zhN4ZpiA==
 stdout: creating /var/lib/ceph/osd/ceph-0/keyring
added entity osd.0 auth(key=AQDfMathRsISIhAAics1EfR+2MRzx9zhN4ZpiA==)
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
Running command: /usr/bin/ceph-osd --cluster ceph --osd-objectstore bluestore --mkfs -i 0 --monmap /var/lib/ceph/osd/ceph-0/activate.monmap --keyfile - --osd-data /var/lib/ceph/osd/ceph-0/ --osd-uuid 00197149-051f-4d11-be35-f1f4bfc55973 --setuser ceph --setgroup ceph
 stderr: 2021-12-04 17:16:18.376 7f54fef55a80 -1 bluestore(/var/lib/ceph/osd/ceph-0/) _read_fsid unparsable uuid
--> ceph-volume lvm prepare successful for: /dev/vdb1
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a/osd-block-00197149-051f-4d11-be35-f1f4bfc55973 --path /var/lib/ceph/osd/ceph-0 --no-mon-config
Running command: /usr/bin/ln -snf /dev/ceph-4fb37e72-2a92-468c-ad9b-25cc7a9e335a/osd-block-00197149-051f-4d11-be35-f1f4bfc55973 /var/lib/ceph/osd/ceph-0/block
Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block
Running command: /usr/bin/chown -R ceph:ceph /dev/dm-0
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-00197149-051f-4d11-be35-f1f4bfc55973
 stderr: Created symlink from /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-00197149-051f-4d11-be35-f1f4bfc55973.service to /usr/lib/systemd/system/ceph-volume@.service.
Running command: /usr/bin/systemctl enable --runtime ceph-osd@0
 stderr: Created symlink from /run/systemd/system/ceph-osd.target.wants/ceph-osd@0.service to /usr/lib/systemd/system/ceph-osd@.service.
Running command: /usr/bin/systemctl start ceph-osd@0
--> ceph-volume lvm activate successful for osd ID: 0
--> ceph-volume lvm create successful for: /dev/vdb1

 

1. 如果要重建osd

ceph-volume lvm zap /dev/sdc --destroy

 2. 如果遇到逻辑卷无法删除

dmsetup remove {lv name}

 注意:创建物理卷出现如下错误 Can't initialize physical volume的解决方法:  pvcreate -ff -y /dev/sdb 

1. Ceph 创建 OSD 报错 ‘GPT headers found, they must be removed’ 的处理:

该错误关键点就是 GPT headers found, they must be removed,发生原因应该是之前磁盘被分区过,虽然删掉了分区,但是还存在 GPT 数据结构,使用 sgdisk 命令进行清除。
sgdisk --zap-all /dev/sdX

参考资料

1. ceph-volume 创建osd

相关文章: