1. 存储池
创建存储池:8 个 PG
$ ceph osd pool create data-pool 8 8
pool 'data-pool' created
列出存储池:
$ ceph osd pool ls
data-pool
查看存储池的统计信息:
$ rados df
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR USED COMPR UNDER COMPR
data-pool 0 B 0 0 0 0 0 0 0 0 B 0 0 B 0 B 0 B
total_objects 0
total_used 3.0 GiB
total_avail 57 GiB
total_space 60 GiB
删除存储池:
需要首先修改 ceph.conf 配置文件,
...
[mon]
mon allow pool delete = true
sudo ceph-deploy --overwrite-conf config push <nodes>
sudo systemctl restart ceph-mon.target
$ ceph osd pool rm data-pool data-pool --yes-i-really-really-mean-it
2. 块设备
映像
创建映像:16MB、位于存储池 data-pool 中,映像名为 foo
$ rbd create --size 16 data-pool/foo
列出映像:
$ rbd ls data-pool
foo
查看映像信息:
$ rbd info data-pool/foo
rbd image 'foo':
size 16 MiB in 4 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 3737822b8571
block_name_prefix: rbd_data.3737822b8571
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Sat Nov 27 06:38:16 2021
access_timestamp: Sat Nov 27 06:38:16 2021
modify_timestamp: Sat Nov 27 06:38:16 2021
调整映像大小:
$ rbd resize --size 32 data-pool/foo
Resizing image: 100% complete...done.
$ rbd resize --size 8 data-pool/foo --allow-shrink
Resizing image: 100% complete...done.
删除映像:
$ rbd rm data-pool/foo
Removing image: 100% complete...done.
映射
映射块设备:
$ sudo rbd map data-pool/foo --id admin
/dev/rbd0
查看设备映射:
$ rbd showmapped
id pool namespace image snap device
0 data-pool foo - /dev/rbd0
使用块设备:
$ mkdir mnt
$ sudo mkfs.ext4 -q /dev/rbd0
$ sudo mount /dev/rbd0 mnt
解除映射:需要先执行 umount
$ sudo rbd unmap /dev/rbd/data-pool/foo
快照
创建快照:创建名为 snap1 的快照
$ rbd snap create data-pool/foo@snap1
列出快照:
$ rbd snap ls data-pool/foo
SNAPID NAME SIZE PROTECTED TIMESTAMP
4 snap1 4 MiB Sat Nov 27 21:31:49 2021
回滚:
$ rbd snap rollback data-pool/foo@snap1
Rolling back to snapshot: 100% complete...done.
删除指定的快照:
$ rbd snap rm data-pool/foo@snap1
Removing snap: 100% complete...done.
清除所有的快照:
$ rbd snap purge data-pool/foo
克隆
先保护快照:使之无法被删除
$ rbd snap protect data-pool/foo@snap1
克隆快照:克隆为 data-pool/bar
$ rbd clone data-pool/foo@snap1 data-pool/bar
查看快照的子孙:
$ rbd children data-pool/foo@snap1
data-pool/bar
flatten 快照的子孙:克隆出来的映像仍保留了对父快照的引用。要从快照的子孙中删除这些父快照的引用,可以把快照的信息复制给快照的子孙,也就是 flatten。要删除快照,必须先进行 flatten。
$ rbd flatten data-pool/bar
Image flatten: 100% complete...done.
取消保护:
$ rbd snap unprotect data-pool/foo@snap1