1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
一、在线调整Ceph RBD的容量大小
1
、支持调整ceph RBD的容量大小的底层文件系统
自由的增加或者减少RBD的容量,需要底层文件系统的支持,支持的文件系统有
1
、XFS
2
、EXT
3
、Btrfs
4
、ZFS
2
、将RBD镜像ceph
-
client1
-
rbd1原始容量是
10G
扩容为
20G
,(在ceph集群中任意一台节点上)执行的命令如下:
rbd resize rbd
/
ceph
-
client1
-
rbd1
-
-
size
20480
[root@ceph
-
node1 ~]
# rbd info ceph-client1-rbd1
rbd image
'ceph-client1-rbd1'
:
size
20480
MB
in
5120
objects
#已经扩容为20G
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
857a238e1f29
format
:
2
features: layering
flags:
3
、在客户端上检查新的容量是否已经被内核所接受
[root@ceph
-
client1 ceph
-
vol1]
# xfs_growfs -d /mnt/ceph-vol1/
meta
-
data
=
/
dev
/
rbd0 isize
=
512
agcount
=
17
, agsize
=
162816
blks
=
sectsz
=
512
attr
=
2
, projid32bit
=
1
=
crc
=
1
finobt
=
0
spinodes
=
0
data
=
bsize
=
4096
blocks
=
2621440
, imaxpct
=
25
=
sunit
=
1024
swidth
=
1024
blks
naming
=
version
2
bsize
=
4096
ascii
-
ci
=
0
ftype
=
1
log
=
internal bsize
=
4096
blocks
=
2560
, version
=
2
=
sectsz
=
512
sunit
=
8
blks, lazy
-
count
=
1
realtime
=
none extsz
=
4096
blocks
=
0
, rtextents
=
0
data blocks changed
from
2621440
to
5242880
[root@ceph
-
client1 ceph
-
vol1]
# df -h
Filesystem Size Used Avail Use
%
Mounted on
devtmpfs
471M
0
471M
0
%
/
dev
tmpfs
483M
0
483M
0
%
/
dev
/
shm
tmpfs
483M
6.6M
477M
2
%
/
run
tmpfs
483M
0
483M
0
%
/
sys
/
fs
/
cgroup
/
dev
/
mapper
/
cl
-
root
8.0G
1.5G
6.5G
19
%
/
/
dev
/
sda1
1014M
186M
829M
19
%
/
boot
tmpfs
97M
0
97M
0
%
/
run
/
user
/
0
/
dev
/
rbd0
20G
134M
20G
1
%
/
mnt
/
ceph
-
vol1
#已经是20G
二、创建Ceph RBD快照
1
、在
/
mnt
/
ceph
-
vol1目录下创建一个文件,用于演示
[root@ceph
-
client1 ceph
-
vol1]
# cd /mnt/ceph-vol1
[root@ceph
-
client1 ceph
-
vol1]
# vi file_1
#文件内容如下:
hello world
1
2
、创建快照
[root@ceph
-
client1 ceph
-
vol1]
# rbd snap create rbd/ceph-client1-rbd1@snap1 #快照名字:snap1
3
、查看镜像的快照
[root@ceph
-
client1 ceph
-
vol1]
# rbd snap ls rbd/ceph-client1-rbd1
SNAPID NAME SIZE
4
snap1
20480
MB
4
、演示恢复快照的效果,删除原来的文件,并再次创建一个文件
[root@ceph
-
client1 ceph
-
vol1]
# rm -rf file_1
[root@ceph
-
client1 ceph
-
vol1]
# ls -l
total
8
-
rw
-
r
-
-
r
-
-
1
root root
13
Jan
7
22
:
32
file_2
这时候有一个文件file_2,记住刚才做快照的时候,是file_1文件,但是目前被删除了,并且误创建了一个file_2文件
也就是说恢复快照之后会恢复回原来的file_1文件
5
、恢复快照(在生产环境中,请谨慎操作,)
[root@ceph
-
client1 ceph
-
vol1]
# rbd snap rollback rbd/ceph-client1-rbd1@snap1
Rolling back to snapshot:
100
%
complete...done.
快照回滚操作完成后,重新挂载文件系统以刷新文件系统状态
umount
/
mnt
/
ceph
-
vol1
mount
/
dev
/
rbd0
/
mnt
/
ceph
-
vol1
6
、快照的删除,删除指定的快照
rbd snap rm rbd
/
ceph
-
client1
-
rbd1@snap1
7
、一次性删除所有快照
[root@ceph
-
client1 ~]
# rbd snap purge rbd/ceph-client1-rbd1
8
、如果需要删除RBD镜像,命令如下
rbd rm ceph
-
client1
-
rbd1
-
p rbd
三、复制Ceph RBD
cow副本:
ceph存储集群可以从rbd的快照中创建写时复制副本(cow副本),这就是ceph的快照分层。
RBD父快照是只读的,再从这个RBD父快照创建cow副本,那么cow副本是可读可写的
注意:
rbd镜像分为两种类型,分别是
format
-
1
,还有
format
-
2
,这两种类型都支持快照的特性
但是,只有
format
-
2
类型支持分层的特性(cow赋值特性),如果在创建rbd镜像时,没有明确指定属于哪种类型
那么默认是
format
-
1
类型。因此,
1
、创建属于
format
-
2
类型的rbd镜像
[root@ceph
-
node1 my
-
cluster]
# rbd create ceph-client1-rbd2 --size 5024 --image-feature layering --image-format 2
2
、创建快照
[root@ceph
-
node1 my
-
cluster]
# rbd snap create rbd/ceph-client1-rbd2@snapshot_for_clone
3
、要创建cow副本之前,将快照设置为保护状态(预防被误删,导致cow分层快照无法使用)
[root@ceph
-
node1 my
-
cluster]
# rbd snap protect rbd/ceph-client1-rbd2@snapshot_for_clone
4
、开始创建cow副本
注意:
赋值快照需要父存储池,RBD镜像以及快照的名称,对于子实例来说,它需要池以及RBD镜像的名称
[root@ceph
-
node1 my
-
cluster]
# rbd clone rbd/ceph-client1-rbd2@snapshot_for_clone rbd/ceph-client1-cow-rbd3
5
、查看cown副本信息
[root@ceph
-
node1 my
-
cluster]
# rbd --pool rbd --image ceph-client1-cow-rbd3 info
rbd image
'ceph-client1-cow-rbd3'
:
size
5024
MB
in
1256
objects
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
197553d1b58ba
format
:
2
features: layering
flags:
parent: rbd
/
ceph
-
client1
-
rbd2@snapshot_for_clone
#父镜像是rbd/ceph-client1-rbd2@snapshot_for_clone
overlap:
5024
MB
到此,就已经克隆了一个RBD镜像
6
、扁平化该镜像(可选操作)
说明:
如果想让克隆出来的快照不依赖它的父镜像,那么就需要扁平化。
这样的话,克隆出来的RBD镜像就和它的父镜像快照没有任何依赖了
6.1
启动扁平化
[root@ceph
-
node1 my
-
cluster]
# rbd flatten ceph-client1-cow-rbd3
Image flatten:
100
%
complete...done.
6.2
查看cow快照
[root@ceph
-
node1 my
-
cluster]
# rbd --pool rbd --image ceph-client1-cow-rbd3 info
rbd image
'ceph-client1-cow-rbd3'
:
size
5024
MB
in
1256
objects
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
197553d1b58ba
format
:
2
features: layering
flags:
发现没有了parent:选项,已经变成了一个独立的镜像
7
、删除父镜像快照
7.1
删除之前首先解除保护状态
[root@ceph
-
node1 my
-
cluster]
# rbd snap unprotect rbd/ceph-client1-rbd2@snapshot_for_clone
7.2
开始删除
[root@ceph
-
node1 my
-
cluster]
# rbd snap rm rbd/ceph-client1-rbd2@snapshot_for_clone
|
本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/2058990