Think Deep,Work Lean

ceph之块存储

Posted on By zack

内核操作rbd

rbd是操作block device的命令行工具

首先创建一个Pool,pgs 64

ceph osd pool create cephblock 64

然后在这个pool里创建一个映像

[root@node2 ceph]# rbd create --size 1024 cephblock/bar
[root@node2 ceph]# rbd ls cephblock
bar
[root@node2 ceph]# rbd info cephblock/bar
rbd image 'bar':
	size 1 GiB in 256 objects
	order 22 (4 MiB objects)
	id: b0236b8b4567
	block_name_prefix: rbd_data.b0236b8b4567
	format: 2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
	op_features:
	flags:
	create_timestamp: Sat Mar 16 05:56:19 2019
[root@node2 ceph]# rbd resize --size 2048 cephblock/bar
Resizing image: 100% complete...done.
[root@node2 ceph]# rbd rm cephblock/bar
Removing image: 100% complete...done.

现在来挂载

[root@node1 my-cluster]# rbd ls cephblock
bar
[root@node1 my-cluster]# rbd map cephblock/bar
/dev/rbd0

取消挂载

[root@node1 my-cluster]# rbd device ls
id pool      image snap device
0  cephblock bar   -    /dev/rbd0
[root@node1 my-cluster]# rbd device unmap /dev/rbd0
[root@node1 my-cluster]# rbd device ls
将ceph.client.admin.keyring拷备到需要挂载的节点/etc/ceph下后,可以直接用ceph命令行工具来访问集群进行操作

快照

快照是映像在某个特定时间点的一份只读副本。 Ceph 块设备的一个高级特性就是你可以为映像创建快照来保留其历史。 Ceph 还支持分层快照,让你快速、简便地克隆映像(如 VM 映像)。 Ceph 的快照功能支持 rbd 命令和多种高级接口,包括 QEMU 、 libvirt 、 OpenStack 和 CloudStack 。

注意:在做快照时尽量停止IO操作,不然获取不到最新的数据,停止io操作的命令是fsfreeze,[命令的中文man](http://www.mplinux.com/util-linux/fsfreeze8.html)
rbd snap rollback/ls/create/protect rbd/foo@snapname
rbd clone ...

分层

COW 写时复制

Ceph 块设备的分层是个简单的过程。你必须有个映像、必须为它创建快照、并且必须保护快照,执行过这些步骤后,你才能克隆快照