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