1RBD(8)                               Ceph                               RBD(8)
2
3
4

NAME

6       rbd - manage rados block device (RBD) images
7

SYNOPSIS

9       rbd [ -c ceph.conf ] [ -m monaddr ] [--cluster cluster-name]
10       [ -p | --pool pool ] [ command ... ]
11
12

DESCRIPTION

14       rbd is a utility for manipulating rados block device (RBD) images, used
15       by the Linux rbd driver and the rbd storage driver for  QEMU/KVM.   RBD
16       images  are  simple  block  devices  that  are striped over objects and
17       stored in a RADOS object store. The size of the objects  the  image  is
18       striped over must be a power of two.
19

OPTIONS

21       -c ceph.conf, --conf ceph.conf
22              Use   ceph.conf   configuration  file  instead  of  the  default
23              /etc/ceph/ceph.conf  to  determine  monitor   addresses   during
24              startup.
25
26       -m monaddress[:port]
27              Connect   to  specified  monitor  (instead  of  looking  through
28              ceph.conf).
29
30       --cluster cluster-name
31              Use different cluster name as compared to default  cluster  name
32              ceph.
33
34       -p pool-name, --pool pool-name
35              Interact with the given pool. Required by most commands.
36
37       --namespace namespace-name
38              Use a pre-defined image namespace within a pool
39
40       --no-progress
41              Do  not  output  progress information (goes to standard error by
42              default for some commands).
43

PARAMETERS

45       --image-format format-id
46              Specifies which object layout to use. The default is 2.
47
48              • format 1 - (deprecated) Use the original format for a new  rbd
49                image. This format is understood by all versions of librbd and
50                the kernel rbd module, but does  not  support  newer  features
51                like cloning.
52
53              • format  2  -  Use the second rbd format, which is supported by
54                librbd since the Bobtail release and  the  kernel  rbd  module
55                since  kernel 3.10 (except for "fancy" striping, which is sup‐
56                ported since kernel 4.17). This adds support for  cloning  and
57                is  more  easily  extensible to allow more features in the fu‐
58                ture.
59
60       -s size-in-M/G/T, --size size-in-M/G/T
61              Specifies the size of the new rbd image or the new size  of  the
62              existing  rbd  image in M/G/T.  If no suffix is given, unit M is
63              assumed.
64
65       --object-size size-in-B/K/M
66              Specifies the object size in B/K/M.  Object size will be rounded
67              up  the  nearest  power of two; if no suffix is given, unit B is
68              assumed.  The default object size is 4M, smallest is 4K and max‐
69              imum is 32M.
70
71       --stripe-unit size-in-B/K/M
72              Specifies the stripe unit size in B/K/M.  If no suffix is given,
73              unit B is assumed.  See striping section (below)  for  more  de‐
74              tails.
75
76       --stripe-count num
77              Specifies  the  number  of objects to stripe over before looping
78              back to the first object.  See striping section (below) for more
79              details.
80
81       --snap snap
82              Specifies the snapshot name for the specific operation.
83
84       --id username
85              Specifies  the username (without the client. prefix) to use with
86              the map command.
87
88       --keyring filename
89              Specifies a keyring file containing a secret for  the  specified
90              user to use with the map command.  If not specified, the default
91              keyring locations will be searched.
92
93       --keyfile filename
94              Specifies a file containing the secret key of --id user  to  use
95              with the map command.  This option is overridden by --keyring if
96              the latter is also specified.
97
98       --shared lock-tag
99              Option for lock add that allows multiple  clients  to  lock  the
100              same  image  if  they  use the same tag. The tag is an arbitrary
101              string. This is useful for situations where  an  image  must  be
102              open  from more than one client at once, like during live migra‐
103              tion of a virtual machine, or for  use  underneath  a  clustered
104              file system.
105
106       --format format
107              Specifies output formatting (default: plain, json, xml)
108
109       --pretty-format
110              Make json or xml formatted output more human-readable.
111
112       -o krbd-options, --options krbd-options
113              Specifies  which options to use when mapping or unmapping an im‐
114              age via the rbd kernel driver.  krbd-options  is  a  comma-sepa‐
115              rated  list of options (similar to mount(8) mount options).  See
116              kernel rbd (krbd) options section below for more details.
117
118       --read-only
119              Map the image read-only.  Equivalent to -o ro.
120
121       --image-feature feature-name
122              Specifies which RBD format 2 feature should be enabled when cre‐
123              ating  an  image.  Multiple features can be enabled by repeating
124              this option multiple times.  The  following  features  are  sup‐
125              ported:
126
127              • layering: layering support
128
129              • striping: striping v2 support
130
131              • exclusive-lock: exclusive locking support
132
133              • object-map: object map support (requires exclusive-lock)
134
135              • fast-diff: fast diff calculations (requires object-map)
136
137              • deep-flatten: snapshot flatten support
138
139              • journaling: journaled IO support (requires exclusive-lock)
140
141              • data-pool: erasure coded pool support
142
143       --image-shared
144              Specifies  that  the image will be used concurrently by multiple
145              clients.  This will disable features that are dependent upon ex‐
146              clusive ownership of the image.
147
148       --whole-object
149              Specifies  that  the  diff should be limited to the extents of a
150              full object instead of showing intra-object deltas. When the ob‐
151              ject  map  feature  is enabled on an image, limiting the diff to
152              the object extents will dramatically improve  performance  since
153              the  differences  can be computed by examining the in-memory ob‐
154              ject map instead of querying RADOS for each  object  within  the
155              image.
156
157       --limit
158              Specifies the limit for the number of snapshots permitted.
159

COMMANDS

161       bench   --io-type   <read   |   write  |  readwrite  |  rw>  [--io-size
162       size-in-B/K/M/G/T]   [--io-threads    num-ios-in-flight]    [--io-total
163       size-in-B/K/M/G/T]  [--io-pattern  seq | rand] [--rw-mix-read read pro‐
164       portion in readwrite] image-spec
165              Generate a series of  IOs  to  the  image  and  measure  the  IO
166              throughput  and  latency.   If no suffix is given, unit B is as‐
167              sumed  for  both  --io-size  and  --io-total.    Defaults   are:
168              --io-size  4096,  --io-threads  16,  --io-total 1G, --io-pattern
169              seq, --rw-mix-read 50.
170
171       children snap-spec
172              List the clones of the image at the given snapshot. This  checks
173              every pool, and outputs the resulting poolname/imagename.
174
175              This requires image format 2.
176
177       clone   [--object-size   size-in-B/K/M]   [--stripe-unit  size-in-B/K/M
178       --stripe-count  num]  [--image-feature  feature-name]  [--image-shared]
179       parent-snap-spec child-image-spec
180              Will  create  a  clone (copy-on-write child) of the parent snap‐
181              shot.  Object size will be identical to that of the parent image
182              unless  specified. Size will be the same as the parent snapshot.
183              The --stripe-unit and --stripe-count arguments are optional, but
184              must be used together.
185
186              The  parent  snapshot  must be protected (see rbd snap protect).
187              This requires image format 2.
188
189       config global get config-entity key
190              Get a global-level configuration override.
191
192       config global list [--format plain | json | xml] [--pretty-format] con‐
193       fig-entity
194              List global-level configuration overrides.
195
196       config global set config-entity key value
197              Set a global-level configuration override.
198
199       config global remove config-entity key
200              Remove a global-level configuration override.
201
202       config image get image-spec key
203              Get an image-level configuration override.
204
205       config  image  list [--format plain | json | xml] [--pretty-format] im‐
206       age-spec
207              List image-level configuration overrides.
208
209       config image set image-spec key value
210              Set an image-level configuration override.
211
212       config image remove image-spec key
213              Remove an image-level configuration override.
214
215       config pool get pool-name key
216              Get a pool-level configuration override.
217
218       config pool list  [--format  plain  |  json  |  xml]  [--pretty-format]
219       pool-name
220              List pool-level configuration overrides.
221
222       config pool set pool-name key value
223              Set a pool-level configuration override.
224
225       config pool remove pool-name key
226              Remove a pool-level configuration override.
227
228       cp (src-image-spec | src-snap-spec) dest-image-spec
229              Copy  the content of a src-image into the newly created dest-im‐
230              age.  dest-image will have the same size, object size, and image
231              format as src-image.
232
233       create  (-s  |  --size size-in-M/G/T) [--image-format format-id] [--ob‐
234       ject-size size-in-B/K/M]  [--stripe-unit  size-in-B/K/M  --stripe-count
235       num]    [--thick-provision]   [--no-progress]   [--image-feature   fea‐
236       ture-name]... [--image-shared] image-spec
237              Will create a new rbd image. You must also specify the size  via
238              --size.   The --stripe-unit and --stripe-count arguments are op‐
239              tional, but must be used together.  If the --thick-provision  is
240              enabled,  it  will  fully allocate storage for the image at cre‐
241              ation time. It will take a long time to do.  Note: thick  provi‐
242              sioning requires zeroing the contents of the entire image.
243
244       deep cp (src-image-spec | src-snap-spec) dest-image-spec
245              Deep  copy  the  content  of  a src-image into the newly created
246              dest-image.  Dest-image will have the same  size,  object  size,
247              image format, and snapshots as src-image.
248
249       device  list  [-t | --device-type device-type] [--format plain | json |
250       xml] --pretty-format
251              Show the rbd images that are mapped via the  rbd  kernel  module
252              (default) or other supported device.
253
254       device  map  [-t  | --device-type device-type] [--cookie device-cookie]
255       [--show-cookie] [--read-only] [--exclusive] [-o | --options  device-op‐
256       tions] image-spec | snap-spec
257              Map  the  specified  image  to a block device via the rbd kernel
258              module (default) or other supported  device  (nbd  on  Linux  or
259              ggate on FreeBSD).
260
261              The  --options argument is a comma separated list of device type
262              specific options (opt1,opt2=val,...).
263
264       device unmap [-t |  --device-type  device-type]  [-o  |  --options  de‐
265       vice-options] image-spec | snap-spec | device-path
266              Unmap the block device that was mapped via the rbd kernel module
267              (default) or other supported device.
268
269              The --options argument is a comma separated list of device  type
270              specific options (opt1,opt2=val,...).
271
272       device  attach  [-t  |  --device-type device-type] --device device-path
273       [--cookie device-cookie]  [--show-cookie]  [--read-only]  [--exclusive]
274       [--force] [-o | --options device-options] image-spec | snap-spec
275              Attach  the  specified image to the specified block device (cur‐
276              rently only nbd on Linux). This operation is unsafe  and  should
277              not be normally used.  In particular, specifying the wrong image
278              or the wrong block device may lead to data corruption as no val‐
279              idation is performed by nbd kernel driver.
280
281              The  --options argument is a comma separated list of device type
282              specific options (opt1,opt2=val,...).
283
284       device detach [-t | --device-type  device-type]  [-o  |  --options  de‐
285       vice-options] image-spec | snap-spec | device-path
286              Detach  the  block device that was mapped or attached (currently
287              only nbd on Linux). This operation is unsafe and should  not  be
288              normally used.
289
290              The  --options argument is a comma separated list of device type
291              specific options (opt1,opt2=val,...).
292
293       diff [--from-snap snap-name] [--whole-object] image-spec | snap-spec
294              Dump a list of byte extents in the image that have changed since
295              the  specified  start  snapshot, or since the image was created.
296              Each output line includes the starting offset  (in  bytes),  the
297              length  of the region (in bytes), and either 'zero' or 'data' to
298              indicate whether the region is known to be zeros or may  contain
299              other data.
300
301       du [-p | --pool pool-name] [image-spec | snap-spec] [--merge-snapshots]
302              Will  calculate the provisioned and actual disk usage of all im‐
303              ages and associated snapshots within the specified pool.  It can
304              also be used against individual images and snapshots.
305
306              If  the RBD fast-diff feature is not enabled on images, this op‐
307              eration will require querying the OSDs for every  potential  ob‐
308              ject within the image.
309
310              The --merge-snapshots will merge snapshots used space into their
311              parent images.
312
313       encryption format image-spec format passphrase-file [--cipher-alg alg]
314              Formats image to an encrypted format.  All data previously writ‐
315              ten  to the image will become unreadable.  A cloned image cannot
316              be formatted, although encrypted images  can  be  cloned.   Sup‐
317              ported  formats:  luks1,  luks2.   Supported  cipher algorithms:
318              aes-128, aes-256 (default).
319
320       export [--export-format format  (1  or  2)]  (image-spec  |  snap-spec)
321       [dest-path]
322              Export image to dest path (use - for stdout).  The --export-for‐
323              mat accepts '1' or '2' currently. Format 2 allow  us  to  export
324              not  only the content of image, but also the snapshots and other
325              properties, such as image_order, features.
326
327       export-diff  [--from-snap  snap-name]  [--whole-object]  (image-spec  |
328       snap-spec) dest-path
329              Export  an incremental diff for an image to dest path (use - for
330              stdout).  If an initial  snapshot  is  specified,  only  changes
331              since  that snapshot are included; otherwise, any regions of the
332              image that contain data are included.  The end snapshot is spec‐
333              ified  using the standard --snap option or @snap syntax (see be‐
334              low).  The image diff format includes metadata about image  size
335              changes, and the start and end snapshots.  It efficiently repre‐
336              sents discarded or 'zero' regions of the image.
337
338       feature disable image-spec feature-name...
339              Disable the specified feature on the specified  image.  Multiple
340              features can be specified.
341
342       feature enable image-spec feature-name...
343              Enable  the  specified  feature on the specified image. Multiple
344              features can be specified.
345
346       flatten image-spec
347              If image is a clone, copy all  shared  blocks  from  the  parent
348              snapshot  and make the child independent of the parent, severing
349              the link between parent snap and child.  The parent snapshot can
350              be  unprotected  and  deleted  if  it  has  no further dependent
351              clones.
352
353              This requires image format 2.
354
355       group create group-spec
356              Create a group.
357
358       group image add group-spec image-spec
359              Add an image to a group.
360
361       group image list group-spec
362              List images in a group.
363
364       group image remove group-spec image-spec
365              Remove an image from a group.
366
367       group ls [-p | --pool pool-name]
368              List rbd groups.
369
370       group rename src-group-spec dest-group-spec
371              Rename a group.  Note: rename across pools is not supported.
372
373       group rm group-spec
374              Delete a group.
375
376       group snap create group-snap-spec
377              Make a snapshot of a group.
378
379       group snap list group-spec
380              List snapshots of a group.
381
382       group snap rm group-snap-spec
383              Remove a snapshot from a group.
384
385       group snap rename group-snap-spec snap-name
386              Rename group's snapshot.
387
388       group snap rollback group-snap-spec
389              Rollback group to snapshot.
390
391       image-meta get image-spec key
392              Get metadata value with the key.
393
394       image-meta list image-spec
395              Show metadata held on the image. The first column is the key and
396              the second column is the value.
397
398       image-meta remove image-spec key
399              Remove metadata key with the value.
400
401       image-meta set image-spec key value
402              Set  metadata  key  with  the  value. They will displayed in im‐
403              age-meta list.
404
405       import [--export-format format (1  or  2)]  [--image-format  format-id]
406       [--object-size      size-in-B/K/M]     [--stripe-unit     size-in-B/K/M
407       --stripe-count num] [--image-feature feature-name]...  [--image-shared]
408       src-path [image-spec]
409              Create  a  new  image  and imports its data from path (use - for
410              stdin).  The import operation will try to create sparse rbd  im‐
411              ages  if  possible.   For  import from stdin, the sparsification
412              unit is the data block size of  the  destination  image  (object
413              size).
414
415              The --stripe-unit and --stripe-count arguments are optional, but
416              must be used together.
417
418              The --export-format accepts '1' or '2' currently. Format 2 allow
419              us  to  import not only the content of image, but also the snap‐
420              shots and other properties, such as image_order, features.
421
422       import-diff src-path image-spec
423              Import an incremental diff of an image and  applies  it  to  the
424              current  image.   If  the diff was generated relative to a start
425              snapshot, we verify that snapshot already exists before continu‐
426              ing.  If there was an end snapshot we verify it does not already
427              exist before applying the changes, and create the snapshot  when
428              we are done.
429
430       info image-spec | snap-spec
431              Will  dump  information  (such  as size and object size) about a
432              specific rbd image.  If image is a clone, information about  its
433              parent  is  also displayed.  If a snapshot is specified, whether
434              it is protected is shown as well.
435
436       journal client disconnect journal-spec
437              Flag image journal client as disconnected.
438
439       journal export [--verbose] [--no-error] src-journal-spec path-name
440              Export image journal to path (use - for stdout). It can be  make
441              a  backup of the image journal especially before attempting dan‐
442              gerous operations.
443
444              Note that this command may not always work  if  the  journal  is
445              badly corrupted.
446
447       journal import [--verbose] [--no-error] path-name dest-journal-spec
448              Import image journal from path (use - for stdin).
449
450       journal info journal-spec
451              Show information about image journal.
452
453       journal inspect [--verbose] journal-spec
454              Inspect and report image journal for structural errors.
455
456       journal reset journal-spec
457              Reset image journal.
458
459       journal status journal-spec
460              Show status of image journal.
461
462       lock add [--shared lock-tag] image-spec lock-id
463              Lock  an  image. The lock-id is an arbitrary name for the user's
464              convenience. By default, this is an exclusive lock,  meaning  it
465              will  fail  if  the image is already locked. The --shared option
466              changes this behavior. Note that locking does not affect any op‐
467              eration  other  than adding a lock. It does not protect an image
468              from being deleted.
469
470       lock ls image-spec
471              Show locks held on the image. The first column is the locker  to
472              use with the lock remove command.
473
474       lock rm image-spec lock-id locker
475              Release a lock on an image. The lock id and locker are as output
476              by lock ls.
477
478       ls [-l | --long] [pool-name]
479              Will list all rbd images listed  in  the  rbd_directory  object.
480              With  -l,  also show snapshots, and use longer-format output in‐
481              cluding size, parent (if clone), format, etc.
482
483       merge-diff first-diff-path second-diff-path merged-diff-path
484              Merge two continuous incremental diffs of an image into one sin‐
485              gle  diff.  The first diff's end snapshot must be equal with the
486              second diff's start snapshot.  The first diff  could  be  -  for
487              stdin, and merged diff could be - for stdout, which enables mul‐
488              tiple  diff  files  to  be  merged  using  something  like  'rbd
489              merge-diff first second - | rbd merge-diff - third result'. Note
490              this command currently only support the source incremental  diff
491              with stripe_count == 1
492
493       migration abort image-spec
494              Cancel image migration. This step may be run after successful or
495              failed migration prepare or migration execute steps and  returns
496              the image to its initial (before migration) state. All modifica‐
497              tions to the destination image are lost.
498
499       migration commit image-spec
500              Commit image migration. This step is run after a successful  mi‐
501              gration  prepare  and  migration  execute  steps and removes the
502              source image data.
503
504       migration execute image-spec
505              Execute image migration. This step is run after a successful mi‐
506              gration prepare step and copies image data to the destination.
507
508       migration  prepare  [--order  order] [--object-size object-size] [--im‐
509       age-feature image-feature] [--image-shared] [--stripe-unit stripe-unit]
510       [--stripe-count  stripe-count]  [--data-pool data-pool] [--import-only]
511       [--source-spec json] [--source-spec-path path] src-image-spec [dest-im‐
512       age-spec]
513              Prepare  image  migration. This is the first step when migrating
514              an image, i.e. changing the image location, format or other  pa‐
515              rameters  that can't be changed dynamically. The destination can
516              match the source, and in this case dest-image-spec can be  omit‐
517              ted.  After this step the source image is set as a parent of the
518              destination image, and the image is accessible in  copy-on-write
519              mode by its destination spec.
520
521              An  image can also be migrated from a read-only import source by
522              adding the --import-only optional and providing  a  JSON-encoded
523              --source-spec or a path to a JSON-encoded source-spec file using
524              the --source-spec-path optionals.
525
526       mirror image demote image-spec
527              Demote a primary image to non-primary for RBD mirroring.
528
529       mirror image disable [--force] image-spec
530              Disable RBD mirroring for an image. If the mirroring is  config‐
531              ured  in image mode for the image's pool, then it can be explic‐
532              itly disabled mirroring for each image within the pool.
533
534       mirror image enable image-spec mode
535              Enable RBD mirroring for an image. If the mirroring  is  config‐
536              ured  in image mode for the image's pool, then it can be explic‐
537              itly enabled mirroring for each image within the pool.
538
539              The mirror image mode can either be journal (default)  or  snap‐
540              shot. The journal mode requires the RBD journaling feature.
541
542       mirror image promote [--force] image-spec
543              Promote a non-primary image to primary for RBD mirroring.
544
545       mirror image resync image-spec
546              Force resync to primary image for RBD mirroring.
547
548       mirror image status image-spec
549              Show RBD mirroring status for an image.
550
551       mirror pool demote [pool-name]
552              Demote  all  primary images within a pool to non-primary.  Every
553              mirroring enabled image will demoted in the pool.
554
555       mirror pool disable [pool-name]
556              Disable RBD mirroring by default within a pool.  When  mirroring
557              is  disabled  on a pool in this way, mirroring will also be dis‐
558              abled on any images (within the pool) for  which  mirroring  was
559              enabled explicitly.
560
561       mirror pool enable [pool-name] mode
562              Enable  RBD  mirroring  by default within a pool.  The mirroring
563              mode can either be pool or image.  If configured in  pool  mode,
564              all  images  in the pool with the journaling feature enabled are
565              mirrored.  If configured in image mode, mirroring  needs  to  be
566              explicitly  enabled (by mirror image enable command) on each im‐
567              age.
568
569       mirror pool info [pool-name]
570              Show information about the pool mirroring configuration.  It in‐
571              cludes  mirroring  mode, peer UUID, remote cluster name, and re‐
572              mote client name.
573
574       mirror pool peer add [pool-name] remote-cluster-spec
575              Add a mirroring peer to a pool.  remote-cluster-spec is  [remote
576              client name@]remote cluster name.
577
578              The default for remote client name is "client.admin".
579
580              This requires mirroring mode is enabled.
581
582       mirror pool peer remove [pool-name] uuid
583              Remove  a mirroring peer from a pool. The peer uuid is available
584              from mirror pool info command.
585
586       mirror pool peer set [pool-name] uuid key value
587              Update mirroring peer settings.  The key can be either client or
588              cluster, and the value is corresponding to remote client name or
589              remote cluster name.
590
591       mirror pool promote [--force] [pool-name]
592              Promote all non-primary images within a pool to primary.   Every
593              mirroring enabled image will promoted in the pool.
594
595       mirror pool status [--verbose] [pool-name]
596              Show  status  for  all mirrored images in the pool.  With --ver‐
597              bose, also show additionally output  status  details  for  every
598              mirroring image in the pool.
599
600       mirror snapshot schedule add [-p | --pool pool] [--namespace namespace]
601       [--image image] interval [start-time]
602              Add mirror snapshot schedule.
603
604       mirror snapshot schedule list  [-R  |  --recursive]  [--format  format]
605       [--pretty-format]  [-p  | --pool pool] [--namespace namespace] [--image
606       image]
607              List mirror snapshot schedule.
608
609       mirror snapshot schedule remove [-p | --pool pool]  [--namespace  name‐
610       space] [--image image] interval [start-time]
611              Remove mirror snapshot schedule.
612
613       mirror  snapshot  schedule  status [-p | --pool pool] [--format format]
614       [--pretty-format] [--namespace namespace] [--image image]
615              Show mirror snapshot schedule status.
616
617       mv src-image-spec dest-image-spec
618              Rename an image.  Note: rename across pools is not supported.
619
620       namespace create pool-name/namespace-name
621              Create a new image namespace within the pool.
622
623       namespace list pool-name
624              List image namespaces defined within the pool.
625
626       namespace remove pool-name/namespace-name
627              Remove an empty image namespace from the pool.
628
629       object-map check image-spec | snap-spec
630              Verify the object map is correct.
631
632       object-map rebuild image-spec | snap-spec
633              Rebuild an invalid object map for the specified image. An  image
634              snapshot can be specified to rebuild an invalid object map for a
635              snapshot.
636
637       pool init [pool-name] [--force]
638              Initialize pool for use by RBD. Newly created  pools  must  ini‐
639              tialized prior to use.
640
641       resize (-s | --size size-in-M/G/T) [--allow-shrink] image-spec
642              Resize rbd image. The size parameter also needs to be specified.
643              The --allow-shrink option lets the size be reduced.
644
645       rm image-spec
646              Delete an rbd image (including all data blocks).  If  the  image
647              has snapshots, this fails and nothing is deleted.
648
649       snap create snap-spec
650              Create  a  new  snapshot.  Requires  the snapshot name parameter
651              specified.
652
653       snap limit clear image-spec
654              Remove any previously set limit on the number of  snapshots  al‐
655              lowed on an image.
656
657       snap limit set [--limit] limit image-spec
658              Set a limit for the number of snapshots allowed on an image.
659
660       snap ls image-spec
661              Dump the list of snapshots inside a specific image.
662
663       snap protect snap-spec
664              Protect  a snapshot from deletion, so that clones can be made of
665              it (see rbd clone).  Snapshots must be protected  before  clones
666              are  made;  protection implies that there exist dependent cloned
667              children that refer to this snapshot.  rbd clone will fail on  a
668              nonprotected snapshot.
669
670              This requires image format 2.
671
672       snap purge image-spec
673              Remove all unprotected snapshots from an image.
674
675       snap rename src-snap-spec dest-snap-spec
676              Rename  a  snapshot. Note: rename across pools and images is not
677              supported.
678
679       snap rm [--force] snap-spec
680              Remove the specified snapshot.
681
682       snap rollback snap-spec
683              Rollback image content to snapshot. This  will  iterate  through
684              the  entire blocks array and update the data head content to the
685              snapshotted version.
686
687       snap unprotect snap-spec
688              Unprotect a snapshot from  deletion  (undo  snap  protect).   If
689              cloned children remain, snap unprotect fails.  (Note that clones
690              may exist in different pools than the parent snapshot.)
691
692              This requires image format 2.
693
694       sparsify [--sparse-size sparse-size] image-spec
695              Reclaim space for zeroed image extents. The default sparse  size
696              is  4096  bytes and can be changed via --sparse-size option with
697              the following restrictions: it should be power of two, not  less
698              than 4096, and not larger than image object size.
699
700       status image-spec
701              Show  the  status  of the image, including which clients have it
702              open.
703
704       trash ls [pool-name]
705              List all entries from trash.
706
707       trash mv image-spec
708              Move an image to the trash. Images, even ones actively in-use by
709              clones, can be moved to the trash and deleted at a later time.
710
711       trash purge [pool-name]
712              Remove all expired images from trash.
713
714       trash restore image-id
715              Restore an image from trash.
716
717       trash rm image-id
718              Delete  an image from trash. If image deferment time has not ex‐
719              pired you can not removed it unless use force. But  an  actively
720              in-use by clones or has snapshots can not be removed.
721
722       trash purge schedule add [-p | --pool pool] [--namespace namespace] in‐
723       terval [start-time]
724              Add trash purge schedule.
725
726       trash  purge  schedule  list  [-R  |  --recursive]  [--format   format]
727       [--pretty-format] [-p | --pool pool] [--namespace namespace]
728              List trash purge schedule.
729
730       trash  purge schedule remove [-p | --pool pool] [--namespace namespace]
731       interval [start-time]
732              Remove trash purge schedule.
733
734       trash purge schedule  status  [-p  |  --pool  pool]  [--format  format]
735       [--pretty-format] [--namespace namespace]
736              Show trash purge schedule status.
737
738       watch image-spec
739              Watch events on image.
740

IMAGE, SNAP, GROUP AND JOURNAL SPECS

742       image-spec      is [pool-name/[namespace-name/]]image-name
743       snap-spec       is [pool-name/[namespace-name/]]image-name@snap-name
744       group-spec      is [pool-name/[namespace-name/]]group-name
745       group-snap-spec is [pool-name/[namespace-name/]]group-name@snap-name
746       journal-spec    is [pool-name/[namespace-name/]]journal-name
747
748
749       The  default for pool-name is "rbd" and namespace-name is "". If an im‐
750       age name contains a slash character ('/'), pool-name is required.
751
752       The journal-name is image-id.
753
754       You may specify each  name  individually,  using  --pool,  --namespace,
755       --image,  and  --snap  options, but this is discouraged in favor of the
756       above spec syntax.
757

STRIPING

759       RBD images are striped over many objects, which are then stored by  the
760       Ceph distributed object store (RADOS).  As a result, read and write re‐
761       quests for the image are distributed across many nodes in the  cluster,
762       generally  preventing  any  single node from becoming a bottleneck when
763       individual images get large or busy.
764
765       The striping is controlled by three parameters:
766
767       object-size
768              The size of objects we stripe over is a power of two. It will be
769              rounded up the nearest power of two.  The default object size is
770              4 MB, smallest is 4K and maximum is 32M.
771
772       stripe_unit
773              Each [stripe_unit] contiguous bytes are stored adjacently in the
774              same object, before we move on to the next object.
775
776       stripe_count
777              After we write [stripe_unit] bytes to [stripe_count] objects, we
778              loop back to the initial object and write another stripe,  until
779              the  object reaches its maximum size.  At that point, we move on
780              to the next [stripe_count] objects.
781
782       By  default,  [stripe_unit]  is  the  same  as  the  object  size   and
783       [stripe_count]  is  1.   Specifying  a  different  [stripe_unit] and/or
784       [stripe_count] is often referred to as using "fancy" striping  and  re‐
785       quires format 2.
786

KERNEL RBD (KRBD) OPTIONS

788       Most of these options are useful mainly for debugging and benchmarking.
789       The default values are set in the kernel and may  therefore  depend  on
790       the version of the running kernel.
791
792       Per client instance rbd device map options:
793
794       • fsid=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  -  FSID that should be as‐
795         sumed by the client.
796
797       • ip=a.b.c.d[:p] - IP and, optionally, port the client should use.
798
799       • share - Enable sharing of client instances with other  mappings  (de‐
800         fault).
801
802       • noshare - Disable sharing of client instances with other mappings.
803
804       • crc  - Enable CRC32C checksumming for msgr1 on-the-wire protocol (de‐
805         fault).  For msgr2.1 protocol this option is ignored: full  checksum‐
806         ming is always on in 'crc' mode and always off in 'secure' mode.
807
808       • nocrc  -  Disable CRC32C checksumming for msgr1 on-the-wire protocol.
809         Note that only payload checksumming is disabled, header  checksumming
810         is always on.  For msgr2.1 protocol this option is ignored.
811
812       • cephx_require_signatures  -  Require  msgr1  message  signing feature
813         (since 3.19, default).  This option is deprecated and will be removed
814         in the future as the feature has been supported since the Bobtail re‐
815         lease.
816
817       • nocephx_require_signatures - Don't require msgr1 message signing fea‐
818         ture  (since 3.19).  This option is deprecated and will be removed in
819         the future.
820
821       • tcp_nodelay - Disable Nagle's algorithm on client sockets (since 4.0,
822         default).
823
824       • notcp_nodelay  -  Enable  Nagle's  algorithm on client sockets (since
825         4.0).
826
827       • cephx_sign_messages - Enable message signing  for  msgr1  on-the-wire
828         protocol  (since  4.4, default).  For msgr2.1 protocol this option is
829         ignored: message signing is built into 'secure' mode and not  offered
830         in 'crc' mode.
831
832       • nocephx_sign_messages - Disable message signing for msgr1 on-the-wire
833         protocol (since 4.4).  For msgr2.1 protocol this option is ignored.
834
835       • mount_timeout=x - A timeout on various steps in rbd  device  map  and
836         rbd  device  unmap sequences (default is 60 seconds).  In particular,
837         since 4.2 this can be used to ensure that rbd device unmap eventually
838         times out when there is no network connection to a cluster.
839
840       • osdkeepalive=x - OSD keepalive timeout (default is 5 seconds).
841
842       • osd_idle_ttl=x - OSD idle TTL (default is 60 seconds).
843
844       Per mapping (block device) rbd device map options:
845
846       • rw - Map the image read-write (default).  Overridden by --read-only.
847
848       • ro - Map the image read-only.  Equivalent to --read-only.
849
850       • queue_depth=x - queue depth (since 4.2, default is 128 requests).
851
852       • lock_on_read - Acquire exclusive lock on reads, in addition to writes
853         and discards (since 4.9).
854
855       • exclusive -  Disable  automatic  exclusive  lock  transitions  (since
856         4.12).  Equivalent to --exclusive.
857
858       • lock_timeout=x  -  A timeout on waiting for the acquisition of exclu‐
859         sive lock (since 4.17, default is 0 seconds, meaning no timeout).
860
861       • notrim - Turn off discard and write zeroes offload support  to  avoid
862         deprovisioning  a fully provisioned image (since 4.17). When enabled,
863         discard requests will fail with -EOPNOTSUPP,  write  zeroes  requests
864         will fall back to manually zeroing.
865
866       • abort_on_full  - Fail write requests with -ENOSPC when the cluster is
867         full or the data pool reaches its quota (since 5.0).  The default be‐
868         haviour is to block until the full condition is cleared.
869
870       • alloc_size  -  Minimum  allocation  unit of the underlying OSD object
871         store backend (since 5.1, default is 64K bytes).   This  is  used  to
872         round  off  and drop discards that are too small.  For bluestore, the
873         recommended setting is bluestore_min_alloc_size  (typically  64K  for
874         hard disk drives and 16K for solid-state drives).  For filestore with
875         filestore_punch_hole = false, the recommended setting is image object
876         size (typically 4M).
877
878       • crush_location=x  -  Specify  the  location of the client in terms of
879         CRUSH hierarchy (since 5.8).  This is a set of key-value pairs  sepa‐
880         rated from each other by '|', with keys separated from values by ':'.
881         Note that '|' may need to be quoted or escaped to avoid it being  in‐
882         terpreted  as  a  pipe by the shell.  The key is the bucket type name
883         (e.g. rack, datacenter or region with default bucket types)  and  the
884         value  is  the bucket name.  For example, to indicate that the client
885         is local to rack "myrack", data center "mydc" and region "myregion":
886
887            crush_location=rack:myrack|datacenter:mydc|region:myregion
888
889         Each key-value pair stands on its own: "myrack" doesn't need  to  re‐
890         side  in  "mydc", which in turn doesn't need to reside in "myregion".
891         The location is not a path to the root of the hierarchy but rather  a
892         set  of nodes that are matched independently, owning to the fact that
893         bucket names are unique within a CRUSH  map.   "Multipath"  locations
894         are  supported,  so  it is possible to indicate locality for multiple
895         parallel hierarchies:
896
897            crush_location=rack:myrack1|rack:myrack2|datacenter:mydc
898
899       • read_from_replica=no - Disable replica reads, always pick the primary
900         OSD (since 5.8, default).
901
902       • read_from_replica=balance  - When issued a read on a replicated pool,
903         pick a random OSD for serving it (since 5.8).
904
905         This mode is safe for general use  only  since  Octopus  (i.e.  after
906         "ceph osd require-osd-release octopus").  Otherwise it should be lim‐
907         ited to read-only workloads such as images  mapped  read-only  every‐
908         where or snapshots.
909
910       • read_from_replica=localize - When issued a read on a replicated pool,
911         pick the most local OSD for serving it  (since  5.8).   The  locality
912         metric  is  calculated  against the location of the client given with
913         crush_location; a match with the lowest-valued bucket type wins.  For
914         example,  with  default  bucket  types,  an OSD in a matching rack is
915         closer than an OSD in a matching data center, which in turn is closer
916         than an OSD in a matching region.
917
918         This  mode  is  safe  for  general use only since Octopus (i.e. after
919         "ceph osd require-osd-release octopus").  Otherwise it should be lim‐
920         ited  to  read-only  workloads such as images mapped read-only every‐
921         where or snapshots.
922
923       • compression_hint=none - Don't set compression hints (since  5.8,  de‐
924         fault).
925
926       • compression_hint=compressible  -  Hint  to  the underlying OSD object
927         store backend that the data is compressible, enabling compression  in
928         passive mode (since 5.8).
929
930       • compression_hint=incompressible  -  Hint to the underlying OSD object
931         store backend that the data is incompressible, disabling  compression
932         in aggressive mode (since 5.8).
933
934       • ms_mode=legacy  -  Use  msgr1  on-the-wire  protocol (since 5.11, de‐
935         fault).
936
937       • ms_mode=crc - Use msgr2.1 on-the-wire protocol,  select  'crc'  mode,
938         also  referred  to  as plain mode (since 5.11).  If the daemon denies
939         'crc' mode, fail the connection.
940
941       • ms_mode=secure - Use msgr2.1 on-the-wire  protocol,  select  'secure'
942         mode (since 5.11).  'secure' mode provides full in-transit encryption
943         ensuring both confidentiality and authenticity.  If the daemon denies
944         'secure' mode, fail the connection.
945
946       • ms_mode=prefer-crc  -  Use msgr2.1 on-the-wire protocol, select 'crc'
947         mode (since 5.11).  If the daemon denies 'crc' mode in favor of  'se‐
948         cure' mode, agree to 'secure' mode.
949
950       • ms_mode=prefer-secure - Use msgr2.1 on-the-wire protocol, select 'se‐
951         cure' mode (since 5.11).  If the daemon denies 'secure' mode in favor
952         of 'crc' mode, agree to 'crc' mode.
953
954       • rxbounce - Use a bounce buffer when receiving data (since 5.17).  The
955         default behaviour is to read directly into the destination buffer.  A
956         bounce buffer is needed if the destination buffer isn't guaranteed to
957         be stable (i.e. remain unchanged while it is being read to).  In par‐
958         ticular  this  is  the  case  for Windows where a system-wide "dummy"
959         (throwaway) page may be mapped into the destination buffer  in  order
960         to  generate  a  single  large  I/O.   Otherwise,  "libceph:  ... bad
961         crc/signature" or "libceph: ... integrity error, bad crc" errors  and
962         associated performance degradation are expected.
963
964       • udev  - Wait for udev device manager to finish executing all matching
965         "add" rules and release the device before  exiting  (default).   This
966         option is not passed to the kernel.
967
968       • noudev  -  Don't wait for udev device manager.  When enabled, the de‐
969         vice may not be fully usable immediately on exit.
970
971       rbd device unmap options:
972
973       • force - Force the unmapping of a block device  that  is  open  (since
974         4.9).  The driver will wait for running requests to complete and then
975         unmap; requests sent to the driver after initiating the unmap will be
976         failed.
977
978       • udev  - Wait for udev device manager to finish executing all matching
979         "remove" rules and clean up after  the  device  before  exiting  (de‐
980         fault).  This option is not passed to the kernel.
981
982       • noudev - Don't wait for udev device manager.
983

EXAMPLES

985       To create a new rbd image that is 100 GB:
986
987          rbd create mypool/myimage --size 102400
988
989       To use a non-default object size (8 MB):
990
991          rbd create mypool/myimage --size 102400 --object-size 8M
992
993       To delete an rbd image (be careful!):
994
995          rbd rm mypool/myimage
996
997       To create a new snapshot:
998
999          rbd snap create mypool/myimage@mysnap
1000
1001       To create a copy-on-write clone of a protected snapshot:
1002
1003          rbd clone mypool/myimage@mysnap otherpool/cloneimage
1004
1005       To see which clones of a snapshot exist:
1006
1007          rbd children mypool/myimage@mysnap
1008
1009       To delete a snapshot:
1010
1011          rbd snap rm mypool/myimage@mysnap
1012
1013       To map an image via the kernel with cephx enabled:
1014
1015          rbd device map mypool/myimage --id admin --keyfile secretfile
1016
1017       To  map  an image via the kernel with different cluster name other than
1018       default ceph:
1019
1020          rbd device map mypool/myimage --cluster cluster-name
1021
1022       To unmap an image:
1023
1024          rbd device unmap /dev/rbd0
1025
1026       To create an image and a clone from it:
1027
1028          rbd import --image-format 2 image mypool/parent
1029          rbd snap create mypool/parent@snap
1030          rbd snap protect mypool/parent@snap
1031          rbd clone mypool/parent@snap otherpool/child
1032
1033       To create an image with a smaller  stripe_unit  (to  better  distribute
1034       small writes in some workloads):
1035
1036          rbd create mypool/myimage --size 102400 --stripe-unit 65536B --stripe-count 16
1037
1038       To change an image from one image format to another, export it and then
1039       import it as the desired image format:
1040
1041          rbd export mypool/myimage@snap /tmp/img
1042          rbd import --image-format 2 /tmp/img mypool/myimage2
1043
1044       To lock an image for exclusive use:
1045
1046          rbd lock add mypool/myimage mylockid
1047
1048       To release a lock:
1049
1050          rbd lock remove mypool/myimage mylockid client.2485
1051
1052       To list images from trash:
1053
1054          rbd trash ls mypool
1055
1056       To defer delete an image (use --expires-at to set expiration time,  de‐
1057       fault is now):
1058
1059          rbd trash mv mypool/myimage --expires-at "tomorrow"
1060
1061       To delete an image from trash (be careful!):
1062
1063          rbd trash rm mypool/myimage-id
1064
1065       To force delete an image from trash (be careful!):
1066
1067          rbd trash rm mypool/myimage-id  --force
1068
1069       To restore an image from trash:
1070
1071          rbd trash restore mypool/myimage-id
1072
1073       To restore an image from trash and rename it:
1074
1075          rbd trash restore mypool/myimage-id --image mynewimage
1076

AVAILABILITY

1078       rbd  is  part  of  Ceph, a massively scalable, open-source, distributed
1079       storage  system.  Please   refer   to   the   Ceph   documentation   at
1080       http://ceph.com/docs for more information.
1081

SEE ALSO

1083       ceph(8), rados(8)
1084
1086       2010-2022,  Inktank Storage, Inc. and contributors. Licensed under Cre‐
1087       ative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0)
1088
1089
1090
1091
1092dev                              Jun 22, 2022                           RBD(8)
Impressum