]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/cli-integration/rbd/unmap.t
import ceph 16.2.6
[ceph.git] / ceph / src / test / cli-integration / rbd / unmap.t
1
2 Setup
3 =====
4
5 $ rbd create --size 1 img
6 $ rbd snap create img@snap --no-progress
7 $ rbd create --size 1 anotherimg
8 $ ceph osd pool create custom >/dev/null 2>&1
9 $ rbd pool init custom
10 $ rbd create --size 1 custom/img
11 $ rbd snap create custom/img@snap --no-progress
12 $ rbd snap create custom/img@anothersnap --no-progress
13
14 Spell out device instead of using $DEV - sfdisk is not a joke.
15
16 $ DEV=$(sudo rbd device map img)
17 $ cat <<EOF | sudo sfdisk /dev/rbd[01] >/dev/null 2>&1
18 > unit: sectors
19 > /dev/rbd0p1 : start= 2, size= 2, Id=83
20 > /dev/rbd0p2 : start= 5, size= 2043, Id= 5
21 > /dev/rbd0p3 : start= 0, size= 0, Id= 0
22 > /dev/rbd0p4 : start= 0, size= 0, Id= 0
23 > /dev/rbd0p5 : start= 7, size= 2, Id=83
24 > EOF
25
26
27 Unmap by device
28 ===============
29
30 Unmap by device (img is already mapped):
31
32 $ rbd device list
33 id pool namespace image snap device
34 ? rbd img - /dev/rbd? (glob)
35 $ sudo rbd device unmap $DEV
36 $ rbd device list
37
38 Unmap by device partition:
39
40 $ DEV=$(sudo rbd device map img)
41 $ rbd device list
42 id pool namespace image snap device
43 ? rbd img - /dev/rbd? (glob)
44 $ sudo rbd device unmap ${DEV}p1
45 $ rbd device list
46
47 $ DEV=$(sudo rbd device map img)
48 $ rbd device list
49 id pool namespace image snap device
50 ? rbd img - /dev/rbd? (glob)
51 $ sudo rbd device unmap ${DEV}p5
52 $ rbd device list
53
54 Not a block device - random junk prefixed with /dev/ (so it's not
55 interpreted as a spec):
56
57 $ sudo rbd device unmap /dev/foobar
58 rbd: '/dev/foobar' is not a block device
59 rbd: unmap failed: (22) Invalid argument
60 [22]
61
62 Not a block device - device that's just been unmapped:
63
64 $ DEV=$(sudo rbd device map img)
65 $ sudo rbd device unmap $DEV
66 $ sudo rbd device unmap $DEV
67 rbd: '/dev/rbd?' is not a block device (glob)
68 rbd: unmap failed: (22) Invalid argument
69 [22]
70
71 A block device, but not rbd:
72
73 $ sudo rbd device unmap /dev/[sv]da
74 rbd: '/dev/?da' is not an rbd device (glob)
75 rbd: unmap failed: (22) Invalid argument
76 [22]
77
78
79 Unmap by spec
80 =============
81
82 img:
83
84 $ sudo rbd device map img
85 /dev/rbd? (glob)
86 $ rbd device list
87 id pool namespace image snap device
88 ? rbd img - /dev/rbd? (glob)
89 $ sudo rbd device unmap img
90 $ rbd device list
91
92 $ sudo rbd device map img
93 /dev/rbd? (glob)
94 $ rbd device list
95 id pool namespace image snap device
96 ? rbd img - /dev/rbd? (glob)
97 $ sudo rbd --image img device unmap
98 $ rbd device list
99
100 img@snap:
101
102 $ sudo rbd device map img@snap
103 /dev/rbd? (glob)
104 $ rbd device list
105 id pool namespace image snap device
106 ? rbd img snap /dev/rbd? (glob)
107 $ sudo rbd device unmap img@snap
108 $ rbd device list
109
110 $ sudo rbd device map img@snap
111 /dev/rbd? (glob)
112 $ rbd device list
113 id pool namespace image snap device
114 ? rbd img snap /dev/rbd? (glob)
115 $ sudo rbd --snap snap device unmap img
116 $ rbd device list
117
118 $ sudo rbd device map img@snap
119 /dev/rbd? (glob)
120 $ rbd device list
121 id pool namespace image snap device
122 ? rbd img snap /dev/rbd? (glob)
123 $ sudo rbd --image img --snap snap device unmap
124 $ rbd device list
125
126 pool/img@snap, default pool:
127
128 $ sudo rbd device map rbd/img@snap
129 /dev/rbd? (glob)
130 $ rbd device list
131 id pool namespace image snap device
132 ? rbd img snap /dev/rbd? (glob)
133 $ sudo rbd device unmap rbd/img@snap
134 $ rbd device list
135
136 $ sudo rbd device map rbd/img@snap
137 /dev/rbd? (glob)
138 $ rbd device list
139 id pool namespace image snap device
140 ? rbd img snap /dev/rbd? (glob)
141 $ sudo rbd --pool rbd device unmap img@snap
142 $ rbd device list
143
144 $ sudo rbd device map rbd/img@snap
145 /dev/rbd? (glob)
146 $ rbd device list
147 id pool namespace image snap device
148 ? rbd img snap /dev/rbd? (glob)
149 $ sudo rbd --pool rbd --snap snap device unmap img
150 $ rbd device list
151
152 $ sudo rbd device map rbd/img@snap
153 /dev/rbd? (glob)
154 $ rbd device list
155 id pool namespace image snap device
156 ? rbd img snap /dev/rbd? (glob)
157 $ sudo rbd --pool rbd --image img --snap snap device unmap
158 $ rbd device list
159
160 pool/img@snap, custom pool:
161
162 $ sudo rbd device map custom/img@snap
163 /dev/rbd? (glob)
164 $ rbd device list
165 id pool namespace image snap device
166 ? custom img snap /dev/rbd? (glob)
167 $ sudo rbd device unmap custom/img@snap
168 $ rbd device list
169
170 $ sudo rbd device map custom/img@snap
171 /dev/rbd? (glob)
172 $ rbd device list
173 id pool namespace image snap device
174 ? custom img snap /dev/rbd? (glob)
175 $ sudo rbd --pool custom device unmap img@snap
176 $ rbd device list
177
178 $ sudo rbd device map custom/img@snap
179 /dev/rbd? (glob)
180 $ rbd device list
181 id pool namespace image snap device
182 ? custom img snap /dev/rbd? (glob)
183 $ sudo rbd --pool custom --snap snap device unmap img
184 $ rbd device list
185
186 $ sudo rbd device map custom/img@snap
187 /dev/rbd? (glob)
188 $ rbd device list
189 id pool namespace image snap device
190 ? custom img snap /dev/rbd? (glob)
191 $ sudo rbd --pool custom --image img --snap snap device unmap
192 $ rbd device list
193
194 Not a mapped spec - random junk (which gets interpreted as a spec):
195
196 $ sudo rbd device unmap foobar
197 rbd: rbd/foobar: not a mapped image or snapshot
198 rbd: unmap failed: (22) Invalid argument
199 [22]
200
201 $ sudo rbd --image foobar device unmap
202 rbd: rbd/foobar: not a mapped image or snapshot
203 rbd: unmap failed: (22) Invalid argument
204 [22]
205
206 Not a mapped spec - spec that's just been unmapped:
207
208 $ sudo rbd device map img
209 /dev/rbd? (glob)
210 $ sudo rbd device unmap img
211 $ sudo rbd device unmap img
212 rbd: rbd/img: not a mapped image or snapshot
213 rbd: unmap failed: (22) Invalid argument
214 [22]
215
216 $ sudo rbd device map img@snap
217 /dev/rbd? (glob)
218 $ sudo rbd device unmap img@snap
219 $ sudo rbd device unmap img@snap
220 rbd: rbd/img@snap: not a mapped image or snapshot
221 rbd: unmap failed: (22) Invalid argument
222 [22]
223
224 Need an arg:
225
226 $ sudo rbd device unmap
227 rbd: unmap requires either image name or device path
228 [22]
229
230
231 Two images
232 ==========
233
234 Unmap img first:
235
236 $ sudo rbd device map img
237 /dev/rbd? (glob)
238 $ sudo rbd device map anotherimg
239 /dev/rbd? (glob)
240 $ rbd device list
241 id pool namespace image snap device
242 ? rbd img - /dev/rbd? (glob)
243 ? rbd anotherimg - /dev/rbd? (glob)
244 $ sudo rbd device unmap img
245 $ rbd device list
246 id pool namespace image snap device
247 ? rbd anotherimg - /dev/rbd? (glob)
248 $ sudo rbd device unmap anotherimg
249 $ rbd device list
250
251 Unmap anotherimg first:
252
253 $ sudo rbd device map img
254 /dev/rbd? (glob)
255 $ sudo rbd device map anotherimg
256 /dev/rbd? (glob)
257 $ rbd device list
258 id pool namespace image snap device
259 ? rbd img - /dev/rbd? (glob)
260 ? rbd anotherimg - /dev/rbd? (glob)
261 $ sudo rbd device unmap anotherimg
262 $ rbd device list
263 id pool namespace image snap device
264 ? rbd img - /dev/rbd? (glob)
265 $ sudo rbd device unmap img
266 $ rbd device list
267
268
269 Image and its snap
270 ==================
271
272 Unmap the image first:
273
274 $ sudo rbd device map img
275 /dev/rbd? (glob)
276 $ sudo rbd device map img@snap
277 /dev/rbd? (glob)
278 $ rbd device list
279 id pool namespace image snap device
280 ? rbd img - /dev/rbd? (glob)
281 ? rbd img snap /dev/rbd? (glob)
282 $ sudo rbd device unmap img
283 $ rbd device list
284 id pool namespace image snap device
285 ? rbd img snap /dev/rbd? (glob)
286 $ sudo rbd device unmap img@snap
287 $ rbd device list
288
289 Unmap the snap first:
290
291 $ sudo rbd device map img
292 /dev/rbd? (glob)
293 $ sudo rbd device map img@snap
294 /dev/rbd? (glob)
295 $ rbd device list
296 id pool namespace image snap device
297 ? rbd img - /dev/rbd? (glob)
298 ? rbd img snap /dev/rbd? (glob)
299 $ sudo rbd device unmap img@snap
300 $ rbd device list
301 id pool namespace image snap device
302 ? rbd img - /dev/rbd? (glob)
303 $ sudo rbd device unmap img
304 $ rbd device list
305
306
307 Two snaps of the same image
308 ===========================
309
310 Unmap snap first:
311
312 $ sudo rbd device map custom/img@snap
313 /dev/rbd? (glob)
314 $ sudo rbd device map custom/img@anothersnap
315 /dev/rbd? (glob)
316 $ rbd device list
317 id pool namespace image snap device
318 ? custom img snap /dev/rbd? (glob)
319 ? custom img anothersnap /dev/rbd? (glob)
320 $ sudo rbd device unmap custom/img@snap
321 $ rbd device list
322 id pool namespace image snap device
323 ? custom img anothersnap /dev/rbd? (glob)
324 $ sudo rbd device unmap custom/img@anothersnap
325 $ rbd device list
326
327 Unmap anothersnap first:
328
329 $ sudo rbd device map custom/img@snap
330 /dev/rbd? (glob)
331 $ sudo rbd device map custom/img@anothersnap
332 /dev/rbd? (glob)
333 $ rbd device list
334 id pool namespace image snap device
335 ? custom img snap /dev/rbd? (glob)
336 ? custom img anothersnap /dev/rbd? (glob)
337 $ sudo rbd device unmap custom/img@anothersnap
338 $ rbd device list
339 id pool namespace image snap device
340 ? custom img snap /dev/rbd? (glob)
341 $ sudo rbd device unmap custom/img@snap
342 $ rbd device list
343
344
345 Same img and snap in different pools
346 ====================================
347
348 img:
349
350 $ sudo rbd device map img
351 /dev/rbd? (glob)
352 $ sudo rbd device map custom/img
353 /dev/rbd? (glob)
354 $ rbd device list
355 id pool namespace image snap device
356 ? rbd img - /dev/rbd? (glob)
357 ? custom img - /dev/rbd? (glob)
358 $ sudo rbd device unmap img
359 $ rbd device list
360 id pool namespace image snap device
361 ? custom img - /dev/rbd? (glob)
362 $ sudo rbd device unmap custom/img
363 $ rbd device list
364
365 img@snap:
366
367 $ sudo rbd device map img@snap
368 /dev/rbd? (glob)
369 $ sudo rbd device map custom/img@snap
370 /dev/rbd? (glob)
371 $ rbd device list
372 id pool namespace image snap device
373 ? rbd img snap /dev/rbd? (glob)
374 ? custom img snap /dev/rbd? (glob)
375 $ sudo rbd device unmap custom/img@snap
376 $ rbd device list
377 id pool namespace image snap device
378 ? rbd img snap /dev/rbd? (glob)
379 $ sudo rbd device unmap img@snap
380 $ rbd device list
381
382
383 Same spec mapped twice
384 ======================
385
386 img:
387
388 $ sudo rbd device map img
389 /dev/rbd? (glob)
390 $ sudo rbd device map img
391 rbd: warning: image already mapped as /dev/rbd? (glob)
392 /dev/rbd? (glob)
393 $ rbd device list
394 id pool namespace image snap device
395 ? rbd img - /dev/rbd? (glob)
396 ? rbd img - /dev/rbd? (glob)
397 $ sudo rbd device unmap img
398 rbd: rbd/img: mapped more than once, unmapping /dev/rbd? only (glob)
399 $ rbd device list
400 id pool namespace image snap device
401 ? rbd img - /dev/rbd? (glob)
402 $ sudo rbd device unmap img
403 $ rbd device list
404
405 img@snap:
406
407 $ sudo rbd device map img@snap
408 /dev/rbd? (glob)
409 $ sudo rbd device map img@snap
410 rbd: warning: image already mapped as /dev/rbd? (glob)
411 /dev/rbd? (glob)
412 $ rbd device list
413 id pool namespace image snap device
414 ? rbd img snap /dev/rbd? (glob)
415 ? rbd img snap /dev/rbd? (glob)
416 $ sudo rbd device unmap img@snap
417 rbd: rbd/img@snap: mapped more than once, unmapping /dev/rbd? only (glob)
418 $ rbd device list
419 id pool namespace image snap device
420 ? rbd img snap /dev/rbd? (glob)
421 $ sudo rbd device unmap img@snap
422 $ rbd device list
423
424 pool/img@snap, default pool:
425
426 $ sudo rbd device map rbd/img@snap
427 /dev/rbd? (glob)
428 $ sudo rbd device map rbd/img@snap
429 rbd: warning: image already mapped as /dev/rbd? (glob)
430 /dev/rbd? (glob)
431 $ rbd device list
432 id pool namespace image snap device
433 ? rbd img snap /dev/rbd? (glob)
434 ? rbd img snap /dev/rbd? (glob)
435 $ sudo rbd device unmap rbd/img@snap
436 rbd: rbd/img@snap: mapped more than once, unmapping /dev/rbd? only (glob)
437 $ rbd device list
438 id pool namespace image snap device
439 ? rbd img snap /dev/rbd? (glob)
440 $ sudo rbd device unmap rbd/img@snap
441 $ rbd device list
442
443 pool/img@snap, custom pool:
444
445 $ sudo rbd device map custom/img@snap
446 /dev/rbd? (glob)
447 $ sudo rbd device map custom/img@snap
448 rbd: warning: image already mapped as /dev/rbd? (glob)
449 /dev/rbd? (glob)
450 $ rbd device list
451 id pool namespace image snap device
452 ? custom img snap /dev/rbd? (glob)
453 ? custom img snap /dev/rbd? (glob)
454 $ sudo rbd device unmap custom/img@snap
455 rbd: custom/img@snap: mapped more than once, unmapping /dev/rbd? only (glob)
456 $ rbd device list
457 id pool namespace image snap device
458 ? custom img snap /dev/rbd? (glob)
459 $ sudo rbd device unmap custom/img@snap
460 $ rbd device list
461
462
463 Odd names
464 =========
465
466 $ ceph osd pool create foo\* >/dev/null 2>&1
467 $ rbd pool init foo\*
468 $ rbd create --size 1 foo\*/[0.0.0.0]
469 $ rbd snap create foo\*/[0.0.0.0]@\?bar --no-progress
470 $ sudo rbd device map foo\*/[0.0.0.0]@\?bar
471 /dev/rbd? (glob)
472 $ rbd device list
473 id pool namespace image snap device
474 ? foo* [0.0.0.0] ?bar /dev/rbd? (glob)
475 $ sudo rbd device unmap foo\*/[0.0.0.0]@\?bar
476 $ rbd device list
477 $ ceph osd pool delete foo\* foo\* --yes-i-really-really-mean-it >/dev/null 2>&1
478
479
480 Teardown
481 ========
482
483 $ ceph osd pool delete custom custom --yes-i-really-really-mean-it >/dev/null 2>&1
484 $ rbd snap purge anotherimg >/dev/null 2>&1
485 $ rbd rm anotherimg >/dev/null 2>&1
486 $ rbd snap purge img >/dev/null 2>&1
487 $ rbd rm img >/dev/null 2>&1
488