5 $ rbd create --size 1 img
6 $ rbd snap create img@snap
7 $ rbd create --size 1 anotherimg
8 $ ceph osd pool create custom 8 >/dev/null 2>&1
10 $ rbd create --size 1 custom/img
11 $ rbd snap create custom/img@snap
12 $ rbd snap create custom/img@anothersnap
14 Spell out device instead of using $DEV - sfdisk is not a joke.
16 $ DEV=$(sudo rbd map img)
17 $ cat <<EOF | sudo sfdisk /dev/rbd[01] >/dev/null 2>&1
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
30 Unmap by device (img is already mapped):
33 id pool image snap device
34 ? rbd img - /dev/rbd? (glob)
38 Unmap by device partition:
40 $ DEV=$(sudo rbd map img)
42 id pool image snap device
43 ? rbd img - /dev/rbd? (glob)
44 $ sudo rbd unmap ${DEV}p1
47 $ DEV=$(sudo rbd map img)
49 id pool image snap device
50 ? rbd img - /dev/rbd? (glob)
51 $ sudo rbd unmap ${DEV}p5
54 Not a block device - random junk prefixed with /dev/ (so it's not
55 interpreted as a spec):
57 $ sudo rbd unmap /dev/foobar
58 rbd: '/dev/foobar' is not a block device
59 rbd: unmap failed: (22) Invalid argument
62 Not a block device - device that's just been unmapped:
64 $ DEV=$(sudo rbd map img)
67 rbd: '/dev/rbd?' is not a block device (glob)
68 rbd: unmap failed: (22) Invalid argument
71 A block device, but not rbd:
73 $ sudo rbd unmap /dev/[sv]da
74 rbd: '/dev/?da' is not an rbd device (glob)
75 rbd: unmap failed: (22) Invalid argument
87 id pool image snap device
88 ? rbd img - /dev/rbd? (glob)
95 id pool image snap device
96 ? rbd img - /dev/rbd? (glob)
97 $ sudo rbd --image img unmap
102 $ sudo rbd map img@snap
105 id pool image snap device
106 ? rbd img snap /dev/rbd? (glob)
107 $ sudo rbd unmap img@snap
110 $ sudo rbd map img@snap
113 id pool image snap device
114 ? rbd img snap /dev/rbd? (glob)
115 $ sudo rbd --snap snap unmap img
118 $ sudo rbd map img@snap
121 id pool image snap device
122 ? rbd img snap /dev/rbd? (glob)
123 $ sudo rbd --image img --snap snap unmap
126 pool/img@snap, default pool:
128 $ sudo rbd map rbd/img@snap
131 id pool image snap device
132 ? rbd img snap /dev/rbd? (glob)
133 $ sudo rbd unmap rbd/img@snap
136 $ sudo rbd map rbd/img@snap
139 id pool image snap device
140 ? rbd img snap /dev/rbd? (glob)
141 $ sudo rbd --pool rbd unmap img@snap
144 $ sudo rbd map rbd/img@snap
147 id pool image snap device
148 ? rbd img snap /dev/rbd? (glob)
149 $ sudo rbd --pool rbd --snap snap unmap img
152 $ sudo rbd map rbd/img@snap
155 id pool image snap device
156 ? rbd img snap /dev/rbd? (glob)
157 $ sudo rbd --pool rbd --image img --snap snap unmap
160 pool/img@snap, custom pool:
162 $ sudo rbd map custom/img@snap
165 id pool image snap device
166 ? custom img snap /dev/rbd? (glob)
167 $ sudo rbd unmap custom/img@snap
170 $ sudo rbd map custom/img@snap
173 id pool image snap device
174 ? custom img snap /dev/rbd? (glob)
175 $ sudo rbd --pool custom unmap img@snap
178 $ sudo rbd map custom/img@snap
181 id pool image snap device
182 ? custom img snap /dev/rbd? (glob)
183 $ sudo rbd --pool custom --snap snap unmap img
186 $ sudo rbd map custom/img@snap
189 id pool image snap device
190 ? custom img snap /dev/rbd? (glob)
191 $ sudo rbd --pool custom --image img --snap snap unmap
194 Not a mapped spec - random junk (which gets interpreted as a spec):
196 $ sudo rbd unmap foobar
197 rbd: rbd/foobar@-: not a mapped image or snapshot
198 rbd: unmap failed: (22) Invalid argument
201 $ sudo rbd --image foobar unmap
202 rbd: rbd/foobar@-: not a mapped image or snapshot
203 rbd: unmap failed: (22) Invalid argument
206 Not a mapped spec - spec that's just been unmapped:
212 rbd: rbd/img@-: not a mapped image or snapshot
213 rbd: unmap failed: (22) Invalid argument
216 $ sudo rbd map img@snap
218 $ sudo rbd unmap img@snap
219 $ sudo rbd unmap img@snap
220 rbd: rbd/img@snap: not a mapped image or snapshot
221 rbd: unmap failed: (22) Invalid argument
227 rbd: unmap requires either image name or device path
238 $ sudo rbd map anotherimg
241 id pool image snap device
242 ? rbd img - /dev/rbd? (glob)
243 ? rbd anotherimg - /dev/rbd? (glob)
246 id pool image snap device
247 ? rbd anotherimg - /dev/rbd? (glob)
248 $ sudo rbd unmap anotherimg
251 Unmap anotherimg first:
255 $ sudo rbd map anotherimg
258 id pool image snap device
259 ? rbd img - /dev/rbd? (glob)
260 ? rbd anotherimg - /dev/rbd? (glob)
261 $ sudo rbd unmap anotherimg
263 id pool image snap device
264 ? rbd img - /dev/rbd? (glob)
272 Unmap the image first:
276 $ sudo rbd map img@snap
279 id pool image snap device
280 ? rbd img - /dev/rbd? (glob)
281 ? rbd img snap /dev/rbd? (glob)
284 id pool image snap device
285 ? rbd img snap /dev/rbd? (glob)
286 $ sudo rbd unmap img@snap
289 Unmap the snap first:
293 $ sudo rbd map img@snap
296 id pool image snap device
297 ? rbd img - /dev/rbd? (glob)
298 ? rbd img snap /dev/rbd? (glob)
299 $ sudo rbd unmap img@snap
301 id pool image snap device
302 ? rbd img - /dev/rbd? (glob)
307 Two snaps of the same image
308 ===========================
312 $ sudo rbd map custom/img@snap
314 $ sudo rbd map custom/img@anothersnap
317 id pool image snap device
318 ? custom img snap /dev/rbd? (glob)
319 ? custom img anothersnap /dev/rbd? (glob)
320 $ sudo rbd unmap custom/img@snap
322 id pool image snap device
323 ? custom img anothersnap /dev/rbd? (glob)
324 $ sudo rbd unmap custom/img@anothersnap
327 Unmap anothersnap first:
329 $ sudo rbd map custom/img@snap
331 $ sudo rbd map custom/img@anothersnap
334 id pool image snap device
335 ? custom img snap /dev/rbd? (glob)
336 ? custom img anothersnap /dev/rbd? (glob)
337 $ sudo rbd unmap custom/img@anothersnap
339 id pool image snap device
340 ? custom img snap /dev/rbd? (glob)
341 $ sudo rbd unmap custom/img@snap
345 Same img and snap in different pools
346 ====================================
352 $ sudo rbd map custom/img
355 id pool image snap device
356 ? rbd img - /dev/rbd? (glob)
357 ? custom img - /dev/rbd? (glob)
360 id pool image snap device
361 ? custom img - /dev/rbd? (glob)
362 $ sudo rbd unmap custom/img
367 $ sudo rbd map img@snap
369 $ sudo rbd map custom/img@snap
372 id pool image snap device
373 ? rbd img snap /dev/rbd? (glob)
374 ? custom img snap /dev/rbd? (glob)
375 $ sudo rbd unmap custom/img@snap
377 id pool image snap device
378 ? rbd img snap /dev/rbd? (glob)
379 $ sudo rbd unmap img@snap
383 Same spec mapped twice
384 ======================
393 id pool image snap device
394 ? rbd img - /dev/rbd? (glob)
395 ? rbd img - /dev/rbd? (glob)
397 rbd: rbd/img@-: mapped more than once, unmapping /dev/rbd? only (glob)
399 id pool image snap device
400 ? rbd img - /dev/rbd? (glob)
406 $ sudo rbd map img@snap
408 $ sudo rbd map img@snap
411 id pool image snap device
412 ? rbd img snap /dev/rbd? (glob)
413 ? rbd img snap /dev/rbd? (glob)
414 $ sudo rbd unmap img@snap
415 rbd: rbd/img@snap: mapped more than once, unmapping /dev/rbd? only (glob)
417 id pool image snap device
418 ? rbd img snap /dev/rbd? (glob)
419 $ sudo rbd unmap img@snap
422 pool/img@snap, default pool:
424 $ sudo rbd map rbd/img@snap
426 $ sudo rbd map rbd/img@snap
429 id pool image snap device
430 ? rbd img snap /dev/rbd? (glob)
431 ? rbd img snap /dev/rbd? (glob)
432 $ sudo rbd unmap rbd/img@snap
433 rbd: rbd/img@snap: mapped more than once, unmapping /dev/rbd? only (glob)
435 id pool image snap device
436 ? rbd img snap /dev/rbd? (glob)
437 $ sudo rbd unmap rbd/img@snap
440 pool/img@snap, custom pool:
442 $ sudo rbd map custom/img@snap
444 $ sudo rbd map custom/img@snap
447 id pool image snap device
448 ? custom img snap /dev/rbd? (glob)
449 ? custom img snap /dev/rbd? (glob)
450 $ sudo rbd unmap custom/img@snap
451 rbd: custom/img@snap: mapped more than once, unmapping /dev/rbd? only (glob)
453 id pool image snap device
454 ? custom img snap /dev/rbd? (glob)
455 $ sudo rbd unmap custom/img@snap
462 $ ceph osd pool delete custom custom --yes-i-really-really-mean-it >/dev/null 2>&1
463 $ rbd snap purge anotherimg >/dev/null 2>&1
464 $ rbd rm anotherimg >/dev/null 2>&1
465 $ rbd snap purge img >/dev/null 2>&1
466 $ rbd rm img >/dev/null 2>&1