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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
|
:orphan:
=======================================
rados -- rados object storage utility
=======================================
.. program:: rados
Synopsis
========
| **rados** [ *options* ] [ *command* ]
Description
===========
**rados** is a utility for interacting with a Ceph object storage
cluster (RADOS), part of the Ceph distributed storage system.
Global Options
==============
.. option:: --object-locator object_locator
Set object_locator for operation.
.. option:: -p pool, --pool pool
Interact with the given pool. Required by most commands.
.. option:: --target-pool pool
Select target pool by name.
.. option:: --pgid
As an alternative to ``--pool``, ``--pgid`` also allow users to specify the
PG id to which the command will be directed. With this option, certain
commands like ``ls`` allow users to limit the scope of the command to the given PG.
.. option:: -N namespace, --namespace namespace
Specify the rados namespace to use for the object.
.. option:: --all
Use with ls to list objects in all namespaces.
Put in CEPH_ARGS environment variable to make this the default.
.. option:: --default
Use with ls to list objects in default namespace.
Takes precedence over --all in case --all is in environment.
.. option:: -s snap, --snap snap
Read from the given pool snapshot. Valid for all pool-specific read operations.
.. option:: --create
Create the pool or directory that was specified.
.. option:: -i infile
will specify an input file to be passed along as a payload with the
command to the monitor cluster. This is only used for specific
monitor commands.
.. option:: -m monaddress[:port]
Connect to specified monitor (instead of looking through ceph.conf).
.. option:: -b block_size
Set the block size for put/get/append ops and for write benchmarking.
.. option:: --striper
Uses the striping API of rados rather than the default one.
Available for stat, stat2, get, put, append, truncate, rm, ls
and all xattr related operation.
.. option:: -O object_size, --object-size object_size
Set the object size for put/get ops and for write benchmarking.
.. option:: --max-objects
Set the max number of objects for write benchmarking.
.. option:: --lock-cookie locker-cookie
Will set the lock cookie for acquiring advisory lock (lock get command).
If the cookie is not empty, this option must be passed to lock break command
to find the correct lock when releasing lock.
.. option:: --target-locator
Use with cp to specify the locator of the new object.
.. option:: --target-nspace
Use with cp to specify the namespace of the new object.
Bench options
=============
.. option:: -t N, --concurrent-ios=N
Set number of concurrent I/O operations.
.. option:: --show-time
Prefix output with date/time.
.. option:: --no-verify
Do not verify contents of read objects.
.. option:: --write-object
Write contents to the objects.
.. option:: --write-omap
Write contents to the omap.
.. option:: --write-xattr
Write contents to the extended attributes.
Load gen options
================
.. option:: --num-objects
Total number of objects.
.. option:: --min-object-size
Min object size.
.. option:: --max-object-size
Max object size.
.. option:: --min-op-len
Min io size of operations.
.. option:: --max-op-len
Max io size of operations.
.. option:: --max-ops
Max number of operations.
.. option:: --max-backlog
Max backlog size.
.. option:: --read-percent
Percent of operations that are read.
.. option:: --target-throughput
Target throughput (in bytes).
.. option:: --run-length
Total time (in seconds).
.. option:: --offset-align
At what boundary to align random op offsets.
Cache pools options
===================
.. option:: --with-clones
Include clones when doing flush or evict.
OMAP options
============
.. option:: --omap-key-file file
Read the omap key from a file.
Generic options
===============
.. option:: -c FILE, --conf FILE
Read configuration from the given configuration file.
.. option:: --id ID
Set ID portion of my name.
.. option:: -n TYPE.ID, --name TYPE.ID
Set cephx user name.
.. option:: --cluster NAME
Set cluster name (default: ceph).
.. option:: --setuser USER
Set uid to user or uid (and gid to user's gid).
.. option:: --setgroup GROUP
Set gid to group or gid.
.. option:: --version
Show version and quit.
Global commands
===============
:command:`lspools`
List object pools
:command:`df`
Show utilization statistics, including disk usage (bytes) and object
counts, over the entire system and broken down by pool.
:command:`list-inconsistent-pg` *pool*
List inconsistent PGs in given pool.
:command:`list-inconsistent-obj` *pgid*
List inconsistent objects in given PG.
:command:`list-inconsistent-snapset` *pgid*
List inconsistent snapsets in given PG.
Pool specific commands
======================
:command:`get` *name* *outfile*
Read object name from the cluster and write it to outfile.
:command:`put` *name* *infile* [--offset offset]
Write object name with start offset (default:0) to the cluster with contents from infile.
**Warning:** The put command creates a single RADOS object, sized just as
large as your input file. Unless your objects are of reasonable and consistent sizes, that
is probably not what you want -- consider using RGW/S3, CephFS, or RBD instead.
:command:`append` *name* *infile*
Append object name to the cluster with contents from infile.
:command:`rm` [--force-full] *name* ...
Remove object(s) with name(s). With ``--force-full`` will remove when cluster is marked full.
:command:`listwatchers` *name*
List the watchers of object name.
:command:`ls` *outfile*
List objects in the given pool and write to outfile. Instead of ``--pool`` if ``--pgid`` will be specified, ``ls`` will only list the objects in the given PG.
:command:`lssnap`
List snapshots for given pool.
:command:`clonedata` *srcname* *dstname* --object-locator *key*
Clone object byte data from *srcname* to *dstname*. Both objects must be stored with the locator key *key* (usually either *srcname* or *dstname*). Object attributes and omap keys are not copied or cloned.
:command:`mksnap` *foo*
Create pool snapshot named *foo*.
:command:`rmsnap` *foo*
Remove pool snapshot named *foo*.
:command:`bench` *seconds* *mode* [ -b *objsize* ] [ -t *threads* ]
Benchmark for *seconds*. The mode can be *write*, *seq*, or
*rand*. *seq* and *rand* are read benchmarks, either
sequential or random. Before running one of the reading benchmarks,
run a write benchmark with the *--no-cleanup* option. The default
object size is 4 MB, and the default number of simulated threads
(parallel writes) is 16. The *--run-name <label>* option is useful
for benchmarking a workload test from multiple clients. The *<label>*
is an arbitrary object name. It is "benchmark_last_metadata" by
default, and is used as the underlying object name for "read" and
"write" ops.
Note: -b *objsize* option is valid only in *write* mode.
Note: *write* and *seq* must be run on the same host otherwise the
objects created by *write* will have names that will fail *seq*.
:command:`cleanup` [ --run-name *run_name* ] [ --prefix *prefix* ]
Clean up a previous benchmark operation.
Note: the default run-name is "benchmark_last_metadata"
:command:`listxattr` *name*
List all extended attributes of an object.
:command:`getxattr` *name* *attr*
Dump the extended attribute value of *attr* of an object.
:command:`setxattr` *name* *attr* *value*
Set the value of *attr* in the extended attributes of an object.
:command:`rmxattr` *name* *attr*
Remove *attr* from the extended attributes of an object.
:command:`stat` *name*
Get stat (ie. mtime, size) of given object
:command:`stat2` *name*
Get stat (similar to stat, but with high precision time) of given object
:command:`listomapkeys` *name*
List all the keys stored in the object map of object name.
:command:`listomapvals` *name*
List all key/value pairs stored in the object map of object name.
The values are dumped in hexadecimal.
:command:`getomapval` [ --omap-key-file *file* ] *name* *key* [ *out-file* ]
Dump the hexadecimal value of key in the object map of object name.
If the optional *out-file* argument is not provided, the value will be
written to standard output.
:command:`setomapval` [ --omap-key-file *file* ] *name* *key* [ *value* ]
Set the value of key in the object map of object name. If the optional
*value* argument is not provided, the value will be read from standard
input.
:command:`rmomapkey` [ --omap-key-file *file* ] *name* *key*
Remove key from the object map of object name.
:command:`getomapheader` *name*
Dump the hexadecimal value of the object map header of object name.
:command:`setomapheader` *name* *value*
Set the value of the object map header of object name.
:command:`export` *filename*
Serialize pool contents to a file or standard output.\n"
:command:`import` [--dry-run] [--no-overwrite] < filename | - >
Load pool contents from a file or standard input
Examples
========
To view cluster utilization::
rados df
To get a list object in pool foo sent to stdout::
rados -p foo ls -
To get a list of objects in PG 0.6::
rados --pgid 0.6 ls
To write an object::
rados -p foo put myobject blah.txt
To create a snapshot::
rados -p foo mksnap mysnap
To delete the object::
rados -p foo rm myobject
To read a previously snapshotted version of an object::
rados -p foo -s mysnap get myobject blah.txt.old
To list inconsistent objects in PG 0.6::
rados list-inconsistent-obj 0.6 --format=json-pretty
Availability
============
**rados** is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to
the Ceph documentation at https://docs.ceph.com for more information.
See also
========
:doc:`ceph <ceph>`\(8)
|