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
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
14 Spell out device instead of using $DEV - sfdisk is not a joke.
16 $ DEV=$(sudo rbd device 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 namespace image snap device
34 ? rbd img - /dev/rbd? (glob)
35 $ sudo rbd device unmap $DEV
38 Unmap by device partition:
40 $ DEV=$(sudo rbd device map img)
42 id pool namespace image snap device
43 ? rbd img - /dev/rbd? (glob)
44 $ sudo rbd device unmap ${DEV}p1
47 $ DEV=$(sudo rbd device map img)
49 id pool namespace image snap device
50 ? rbd img - /dev/rbd? (glob)
51 $ sudo rbd device 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 device 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 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
71 A block device, but not rbd:
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
84 $ sudo rbd device map img
87 id pool namespace image snap device
88 ? rbd img - /dev/rbd? (glob)
89 $ sudo rbd device unmap img
92 $ sudo rbd device map img
95 id pool namespace image snap device
96 ? rbd img - /dev/rbd? (glob)
97 $ sudo rbd --image img device unmap
102 $ sudo rbd device map img@snap
105 id pool namespace image snap device
106 ? rbd img snap /dev/rbd? (glob)
107 $ sudo rbd device unmap img@snap
110 $ sudo rbd device map img@snap
113 id pool namespace image snap device
114 ? rbd img snap /dev/rbd? (glob)
115 $ sudo rbd --snap snap device unmap img
118 $ sudo rbd device map img@snap
121 id pool namespace image snap device
122 ? rbd img snap /dev/rbd? (glob)
123 $ sudo rbd --image img --snap snap device unmap
126 pool/img@snap, default pool:
128 $ sudo rbd device map rbd/img@snap
131 id pool namespace image snap device
132 ? rbd img snap /dev/rbd? (glob)
133 $ sudo rbd device unmap rbd/img@snap
136 $ sudo rbd device map rbd/img@snap
139 id pool namespace image snap device
140 ? rbd img snap /dev/rbd? (glob)
141 $ sudo rbd --pool rbd device unmap img@snap
144 $ sudo rbd device map rbd/img@snap
147 id pool namespace image snap device
148 ? rbd img snap /dev/rbd? (glob)
149 $ sudo rbd --pool rbd --snap snap device unmap img
152 $ sudo rbd device map rbd/img@snap
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
160 pool/img@snap, custom pool:
162 $ sudo rbd device map custom/img@snap
165 id pool namespace image snap device
166 ? custom img snap /dev/rbd? (glob)
167 $ sudo rbd device unmap custom/img@snap
170 $ sudo rbd device map custom/img@snap
173 id pool namespace image snap device
174 ? custom img snap /dev/rbd? (glob)
175 $ sudo rbd --pool custom device unmap img@snap
178 $ sudo rbd device map custom/img@snap
181 id pool namespace image snap device
182 ? custom img snap /dev/rbd? (glob)
183 $ sudo rbd --pool custom --snap snap device unmap img
186 $ sudo rbd device map custom/img@snap
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
194 Not a mapped spec - random junk (which gets interpreted as a spec):
196 $ sudo rbd device unmap foobar
197 rbd: rbd/foobar: not a mapped image or snapshot
198 rbd: unmap failed: (22) Invalid argument
201 $ sudo rbd --image foobar device 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:
208 $ sudo rbd device map img
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
216 $ sudo rbd device map img@snap
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
226 $ sudo rbd device unmap
227 rbd: unmap requires either image name or device path
236 $ sudo rbd device map img
238 $ sudo rbd device map anotherimg
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
246 id pool namespace image snap device
247 ? rbd anotherimg - /dev/rbd? (glob)
248 $ sudo rbd device unmap anotherimg
251 Unmap anotherimg first:
253 $ sudo rbd device map img
255 $ sudo rbd device map anotherimg
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
263 id pool namespace image snap device
264 ? rbd img - /dev/rbd? (glob)
265 $ sudo rbd device unmap img
272 Unmap the image first:
274 $ sudo rbd device map img
276 $ sudo rbd device map img@snap
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
284 id pool namespace image snap device
285 ? rbd img snap /dev/rbd? (glob)
286 $ sudo rbd device unmap img@snap
289 Unmap the snap first:
291 $ sudo rbd device map img
293 $ sudo rbd device map img@snap
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
301 id pool namespace image snap device
302 ? rbd img - /dev/rbd? (glob)
303 $ sudo rbd device unmap img
307 Two snaps of the same image
308 ===========================
312 $ sudo rbd device map custom/img@snap
314 $ sudo rbd device map custom/img@anothersnap
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
322 id pool namespace image snap device
323 ? custom img anothersnap /dev/rbd? (glob)
324 $ sudo rbd device unmap custom/img@anothersnap
327 Unmap anothersnap first:
329 $ sudo rbd device map custom/img@snap
331 $ sudo rbd device map custom/img@anothersnap
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
339 id pool namespace image snap device
340 ? custom img snap /dev/rbd? (glob)
341 $ sudo rbd device unmap custom/img@snap
345 Same img and snap in different pools
346 ====================================
350 $ sudo rbd device map img
352 $ sudo rbd device map custom/img
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
360 id pool namespace image snap device
361 ? custom img - /dev/rbd? (glob)
362 $ sudo rbd device unmap custom/img
367 $ sudo rbd device map img@snap
369 $ sudo rbd device map custom/img@snap
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
377 id pool namespace image snap device
378 ? rbd img snap /dev/rbd? (glob)
379 $ sudo rbd device unmap img@snap
383 Same spec mapped twice
384 ======================
388 $ sudo rbd device map img
390 $ sudo rbd device map img
391 rbd: warning: image already mapped as /dev/rbd? (glob)
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)
400 id pool namespace image snap device
401 ? rbd img - /dev/rbd? (glob)
402 $ sudo rbd device unmap img
407 $ sudo rbd device map img@snap
409 $ sudo rbd device map img@snap
410 rbd: warning: image already mapped as /dev/rbd? (glob)
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)
419 id pool namespace image snap device
420 ? rbd img snap /dev/rbd? (glob)
421 $ sudo rbd device unmap img@snap
424 pool/img@snap, default pool:
426 $ sudo rbd device map rbd/img@snap
428 $ sudo rbd device map rbd/img@snap
429 rbd: warning: image already mapped as /dev/rbd? (glob)
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)
438 id pool namespace image snap device
439 ? rbd img snap /dev/rbd? (glob)
440 $ sudo rbd device unmap rbd/img@snap
443 pool/img@snap, custom pool:
445 $ sudo rbd device map custom/img@snap
447 $ sudo rbd device map custom/img@snap
448 rbd: warning: image already mapped as /dev/rbd? (glob)
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)
457 id pool namespace image snap device
458 ? custom img snap /dev/rbd? (glob)
459 $ sudo rbd device unmap custom/img@snap
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
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
477 $ ceph osd pool delete foo\* foo\* --yes-i-really-really-mean-it >/dev/null 2>&1
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