1QEMU-BLOCK-DRIVERS.7(7) QEMU-BLOCK-DRIVERS.7(7)
2
3
4
6 qemu-block-drivers - QEMU block drivers reference
7
9 QEMU block driver reference manual
10
12 Disk image file formats
13
14 QEMU supports many image file formats that can be used with VMs as well
15 as with any of the tools (like "qemu-img"). This includes the preferred
16 formats raw and qcow2 as well as formats that are supported for
17 compatibility with older QEMU versions or other hypervisors.
18
19 Depending on the image format, different options can be passed to
20 "qemu-img create" and "qemu-img convert" using the "-o" option. This
21 section describes each format and the options that are supported for
22 it.
23
24 raw Raw disk image format. This format has the advantage of being
25 simple and easily exportable to all other emulators. If your file
26 system supports holes (for example in ext2 or ext3 on Linux or NTFS
27 on Windows), then only the written sectors will reserve space. Use
28 "qemu-img info" to know the real size used by the image or "ls -ls"
29 on Unix/Linux.
30
31 Supported options:
32
33 "preallocation"
34 Preallocation mode (allowed values: "off", "falloc", "full").
35 "falloc" mode preallocates space for image by calling
36 posix_fallocate(). "full" mode preallocates space for image by
37 writing zeros to underlying storage.
38
39 qcow2
40 QEMU image format, the most versatile format. Use it to have
41 smaller images (useful if your filesystem does not supports holes,
42 for example on Windows), zlib based compression and support of
43 multiple VM snapshots.
44
45 Supported options:
46
47 "compat"
48 Determines the qcow2 version to use. "compat=0.10" uses the
49 traditional image format that can be read by any QEMU since
50 0.10. "compat=1.1" enables image format extensions that only
51 QEMU 1.1 and newer understand (this is the default). Amongst
52 others, this includes zero clusters, which allow efficient
53 copy-on-read for sparse images.
54
55 "backing_file"
56 File name of a base image (see create subcommand)
57
58 "backing_fmt"
59 Image format of the base image
60
61 "encryption"
62 This option is deprecated and equivalent to
63 "encrypt.format=aes"
64
65 "encrypt.format"
66 If this is set to "luks", it requests that the qcow2 payload
67 (not qcow2 header) be encrypted using the LUKS format. The
68 passphrase to use to unlock the LUKS key slot is given by the
69 "encrypt.key-secret" parameter. LUKS encryption parameters can
70 be tuned with the other "encrypt.*" parameters.
71
72 If this is set to "aes", the image is encrypted with 128-bit
73 AES-CBC. The encryption key is given by the
74 "encrypt.key-secret" parameter. This encryption format is
75 considered to be flawed by modern cryptography standards,
76 suffering from a number of design problems:
77
78 -<The AES-CBC cipher is used with predictable initialization
79 vectors based>
80 on the sector number. This makes it vulnerable to chosen
81 plaintext attacks which can reveal the existence of
82 encrypted data.
83
84 -<The user passphrase is directly used as the encryption key. A
85 poorly>
86 chosen or short passphrase will compromise the security of
87 the encryption.
88
89 -<In the event of the passphrase being compromised there is no
90 way to>
91 change the passphrase to protect data in any qcow images.
92 The files must be cloned, using a different encryption
93 passphrase in the new file. The original file must then be
94 securely erased using a program like shred, though even
95 this is ineffective with many modern storage technologies.
96
97 The use of this is no longer supported in system emulators.
98 Support only remains in the command line utilities, for the
99 purposes of data liberation and interoperability with old
100 versions of QEMU. The "luks" format should be used instead.
101
102 "encrypt.key-secret"
103 Provides the ID of a "secret" object that contains the
104 passphrase ("encrypt.format=luks") or encryption key
105 ("encrypt.format=aes").
106
107 "encrypt.cipher-alg"
108 Name of the cipher algorithm and key length. Currently defaults
109 to "aes-256". Only used when "encrypt.format=luks".
110
111 "encrypt.cipher-mode"
112 Name of the encryption mode to use. Currently defaults to
113 "xts". Only used when "encrypt.format=luks".
114
115 "encrypt.ivgen-alg"
116 Name of the initialization vector generator algorithm.
117 Currently defaults to "plain64". Only used when
118 "encrypt.format=luks".
119
120 "encrypt.ivgen-hash-alg"
121 Name of the hash algorithm to use with the initialization
122 vector generator (if required). Defaults to "sha256". Only used
123 when "encrypt.format=luks".
124
125 "encrypt.hash-alg"
126 Name of the hash algorithm to use for PBKDF algorithm Defaults
127 to "sha256". Only used when "encrypt.format=luks".
128
129 "encrypt.iter-time"
130 Amount of time, in milliseconds, to use for PBKDF algorithm per
131 key slot. Defaults to 2000. Only used when
132 "encrypt.format=luks".
133
134 "cluster_size"
135 Changes the qcow2 cluster size (must be between 512 and 2M).
136 Smaller cluster sizes can improve the image file size whereas
137 larger cluster sizes generally provide better performance.
138
139 "preallocation"
140 Preallocation mode (allowed values: "off", "metadata",
141 "falloc", "full"). An image with preallocated metadata is
142 initially larger but can improve performance when the image
143 needs to grow. "falloc" and "full" preallocations are like the
144 same options of "raw" format, but sets up metadata also.
145
146 "lazy_refcounts"
147 If this option is set to "on", reference count updates are
148 postponed with the goal of avoiding metadata I/O and improving
149 performance. This is particularly interesting with
150 cache=writethrough which doesn't batch metadata updates. The
151 tradeoff is that after a host crash, the reference count tables
152 must be rebuilt, i.e. on the next open an (automatic) "qemu-img
153 check -r all" is required, which may take some time.
154
155 This option can only be enabled if "compat=1.1" is specified.
156
157 "nocow"
158 If this option is set to "on", it will turn off COW of the
159 file. It's only valid on btrfs, no effect on other file
160 systems.
161
162 Btrfs has low performance when hosting a VM image file, even
163 more when the guest on the VM also using btrfs as file system.
164 Turning off COW is a way to mitigate this bad performance.
165 Generally there are two ways to turn off COW on btrfs: a)
166 Disable it by mounting with nodatacow, then all newly created
167 files will be NOCOW. b) For an empty file, add the NOCOW file
168 attribute. That's what this option does.
169
170 Note: this option is only valid to new or empty files. If there
171 is an existing file which is COW and has data blocks already,
172 it couldn't be changed to NOCOW by setting "nocow=on". One can
173 issue "lsattr filename" to check if the NOCOW flag is set or
174 not (Capital 'C' is NOCOW flag).
175
176 qed Old QEMU image format with support for backing files and compact
177 image files (when your filesystem or transport medium does not
178 support holes).
179
180 When converting QED images to qcow2, you might want to consider
181 using the "lazy_refcounts=on" option to get a more QED-like
182 behaviour.
183
184 Supported options:
185
186 "backing_file"
187 File name of a base image (see create subcommand).
188
189 "backing_fmt"
190 Image file format of backing file (optional). Useful if the
191 format cannot be autodetected because it has no header, like
192 some vhd/vpc files.
193
194 "cluster_size"
195 Changes the cluster size (must be power-of-2 between 4K and
196 64K). Smaller cluster sizes can improve the image file size
197 whereas larger cluster sizes generally provide better
198 performance.
199
200 "table_size"
201 Changes the number of clusters per L1/L2 table (must be
202 power-of-2 between 1 and 16). There is normally no need to
203 change this value but this option can be used for performance
204 benchmarking.
205
206 qcow
207 Old QEMU image format with support for backing files, compact image
208 files, encryption and compression.
209
210 Supported options:
211
212 "backing_file"
213 File name of a base image (see create subcommand)
214
215 "encryption"
216 This option is deprecated and equivalent to
217 "encrypt.format=aes"
218
219 "encrypt.format"
220 If this is set to "aes", the image is encrypted with 128-bit
221 AES-CBC. The encryption key is given by the
222 "encrypt.key-secret" parameter. This encryption format is
223 considered to be flawed by modern cryptography standards,
224 suffering from a number of design problems enumerated
225 previously against the "qcow2" image format.
226
227 The use of this is no longer supported in system emulators.
228 Support only remains in the command line utilities, for the
229 purposes of data liberation and interoperability with old
230 versions of QEMU.
231
232 Users requiring native encryption should use the "qcow2" format
233 instead with "encrypt.format=luks".
234
235 "encrypt.key-secret"
236 Provides the ID of a "secret" object that contains the
237 encryption key ("encrypt.format=aes").
238
239 luks
240 LUKS v1 encryption format, compatible with Linux
241 dm-crypt/cryptsetup
242
243 Supported options:
244
245 "key-secret"
246 Provides the ID of a "secret" object that contains the
247 passphrase.
248
249 "cipher-alg"
250 Name of the cipher algorithm and key length. Currently defaults
251 to "aes-256".
252
253 "cipher-mode"
254 Name of the encryption mode to use. Currently defaults to
255 "xts".
256
257 "ivgen-alg"
258 Name of the initialization vector generator algorithm.
259 Currently defaults to "plain64".
260
261 "ivgen-hash-alg"
262 Name of the hash algorithm to use with the initialization
263 vector generator (if required). Defaults to "sha256".
264
265 "hash-alg"
266 Name of the hash algorithm to use for PBKDF algorithm Defaults
267 to "sha256".
268
269 "iter-time"
270 Amount of time, in milliseconds, to use for PBKDF algorithm per
271 key slot. Defaults to 2000.
272
273 vdi VirtualBox 1.1 compatible image format. Supported options:
274
275 "static"
276 If this option is set to "on", the image is created with
277 metadata preallocation.
278
279 vmdk
280 VMware 3 and 4 compatible image format.
281
282 Supported options:
283
284 "backing_file"
285 File name of a base image (see create subcommand).
286
287 "compat6"
288 Create a VMDK version 6 image (instead of version 4)
289
290 "hwversion"
291 Specify vmdk virtual hardware version. Compat6 flag cannot be
292 enabled if hwversion is specified.
293
294 "subformat"
295 Specifies which VMDK subformat to use. Valid options are
296 "monolithicSparse" (default), "monolithicFlat",
297 "twoGbMaxExtentSparse", "twoGbMaxExtentFlat" and
298 "streamOptimized".
299
300 vpc VirtualPC compatible image format (VHD). Supported options:
301
302 "subformat"
303 Specifies which VHD subformat to use. Valid options are
304 "dynamic" (default) and "fixed".
305
306 VHDX
307 Hyper-V compatible image format (VHDX). Supported options:
308
309 "subformat"
310 Specifies which VHDX subformat to use. Valid options are
311 "dynamic" (default) and "fixed".
312
313 "block_state_zero"
314 Force use of payload blocks of type 'ZERO'. Can be set to "on"
315 (default) or "off". When set to "off", new blocks will be
316 created as "PAYLOAD_BLOCK_NOT_PRESENT", which means parsers are
317 free to return arbitrary data for those blocks. Do not set to
318 "off" when using "qemu-img convert" with "subformat=dynamic".
319
320 "block_size"
321 Block size; min 1 MB, max 256 MB. 0 means auto-calculate based
322 on image size.
323
324 "log_size"
325 Log size; min 1 MB.
326
327 Read-only formats
328
329 More disk image file formats are supported in a read-only mode.
330
331 bochs
332 Bochs images of "growing" type.
333
334 cloop
335 Linux Compressed Loop image, useful only to reuse directly
336 compressed CD-ROM images present for example in the Knoppix CD-
337 ROMs.
338
339 dmg Apple disk image.
340
341 parallels
342 Parallels disk image format.
343
344 Using host drives
345
346 In addition to disk image files, QEMU can directly access host devices.
347 We describe here the usage for QEMU version >= 0.8.3.
348
349 Linux
350
351 On Linux, you can directly use the host device filename instead of a
352 disk image filename provided you have enough privileges to access it.
353 For example, use /dev/cdrom to access to the CDROM.
354
355 "CD"
356 You can specify a CDROM device even if no CDROM is loaded. QEMU has
357 specific code to detect CDROM insertion or removal. CDROM ejection
358 by the guest OS is supported. Currently only data CDs are
359 supported.
360
361 "Floppy"
362 You can specify a floppy device even if no floppy is loaded. Floppy
363 removal is currently not detected accurately (if you change floppy
364 without doing floppy access while the floppy is not loaded, the
365 guest OS will think that the same floppy is loaded). Use of the
366 host's floppy device is deprecated, and support for it will be
367 removed in a future release.
368
369 "Hard disks"
370 Hard disks can be used. Normally you must specify the whole disk
371 (/dev/hdb instead of /dev/hdb1) so that the guest OS can see it as
372 a partitioned disk. WARNING: unless you know what you do, it is
373 better to only make READ-ONLY accesses to the hard disk otherwise
374 you may corrupt your host data (use the -snapshot command line
375 option or modify the device permissions accordingly).
376
377 Windows
378
379 "CD"
380 The preferred syntax is the drive letter (e.g. d:). The alternate
381 syntax \\.\d: is supported. /dev/cdrom is supported as an alias to
382 the first CDROM drive.
383
384 Currently there is no specific code to handle removable media, so
385 it is better to use the "change" or "eject" monitor commands to
386 change or eject media.
387
388 "Hard disks"
389 Hard disks can be used with the syntax: \\.\PhysicalDriveN where N
390 is the drive number (0 is the first hard disk).
391
392 WARNING: unless you know what you do, it is better to only make
393 READ-ONLY accesses to the hard disk otherwise you may corrupt your
394 host data (use the -snapshot command line so that the modifications
395 are written in a temporary file).
396
397 Mac OS X
398
399 /dev/cdrom is an alias to the first CDROM.
400
401 Currently there is no specific code to handle removable media, so it is
402 better to use the "change" or "eject" monitor commands to change or
403 eject media.
404
405 Virtual FAT disk images
406
407 QEMU can automatically create a virtual FAT disk image from a directory
408 tree. In order to use it, just type:
409
410 qemu-system-i386 linux.img -hdb fat:/my_directory
411
412 Then you access access to all the files in the /my_directory directory
413 without having to copy them in a disk image or to export them via SAMBA
414 or NFS. The default access is read-only.
415
416 Floppies can be emulated with the ":floppy:" option:
417
418 qemu-system-i386 linux.img -fda fat:floppy:/my_directory
419
420 A read/write support is available for testing (beta stage) with the
421 ":rw:" option:
422
423 qemu-system-i386 linux.img -fda fat:floppy:rw:/my_directory
424
425 What you should never do:
426
427 *<use non-ASCII filenames ;>
428 *<use "-snapshot" together with ":rw:" ;>
429 *<expect it to work when loadvm'ing ;>
430 *<write to the FAT directory on the host system while accessing it with
431 the guest system.>
432
433 NBD access
434
435 QEMU can access directly to block device exported using the Network
436 Block Device protocol.
437
438 qemu-system-i386 linux.img -hdb nbd://my_nbd_server.mydomain.org:1024/
439
440 If the NBD server is located on the same host, you can use an unix
441 socket instead of an inet socket:
442
443 qemu-system-i386 linux.img -hdb nbd+unix://?socket=/tmp/my_socket
444
445 In this case, the block device must be exported using qemu-nbd:
446
447 qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
448
449 The use of qemu-nbd allows sharing of a disk between several guests:
450
451 qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
452
453 and then you can use it with two guests:
454
455 qemu-system-i386 linux1.img -hdb nbd+unix://?socket=/tmp/my_socket
456 qemu-system-i386 linux2.img -hdb nbd+unix://?socket=/tmp/my_socket
457
458 If the nbd-server uses named exports (supported since NBD 2.9.18, or
459 with QEMU's own embedded NBD server), you must specify an export name
460 in the URI:
461
462 qemu-system-i386 -cdrom nbd://localhost/debian-500-ppc-netinst
463 qemu-system-i386 -cdrom nbd://localhost/openSUSE-11.1-ppc-netinst
464
465 The URI syntax for NBD is supported since QEMU 1.3. An alternative
466 syntax is also available. Here are some example of the older syntax:
467
468 qemu-system-i386 linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
469 qemu-system-i386 linux2.img -hdb nbd:unix:/tmp/my_socket
470 qemu-system-i386 -cdrom nbd:localhost:10809:exportname=debian-500-ppc-netinst
471
472 Sheepdog disk images
473
474 Sheepdog is a distributed storage system for QEMU. It provides highly
475 available block level storage volumes that can be attached to QEMU-
476 based virtual machines.
477
478 You can create a Sheepdog disk image with the command:
479
480 qemu-img create sheepdog:///<image> <size>
481
482 where image is the Sheepdog image name and size is its size.
483
484 To import the existing filename to Sheepdog, you can use a convert
485 command.
486
487 qemu-img convert <filename> sheepdog:///<image>
488
489 You can boot from the Sheepdog disk image with the command:
490
491 qemu-system-i386 sheepdog:///<image>
492
493 You can also create a snapshot of the Sheepdog image like qcow2.
494
495 qemu-img snapshot -c <tag> sheepdog:///<image>
496
497 where tag is a tag name of the newly created snapshot.
498
499 To boot from the Sheepdog snapshot, specify the tag name of the
500 snapshot.
501
502 qemu-system-i386 sheepdog:///<image>#<tag>
503
504 You can create a cloned image from the existing snapshot.
505
506 qemu-img create -b sheepdog:///<base>#<tag> sheepdog:///<image>
507
508 where base is an image name of the source snapshot and tag is its tag
509 name.
510
511 You can use an unix socket instead of an inet socket:
512
513 qemu-system-i386 sheepdog+unix:///<image>?socket=<path>
514
515 If the Sheepdog daemon doesn't run on the local host, you need to
516 specify one of the Sheepdog servers to connect to.
517
518 qemu-img create sheepdog://<hostname>:<port>/<image> <size>
519 qemu-system-i386 sheepdog://<hostname>:<port>/<image>
520
521 iSCSI LUNs
522
523 iSCSI is a popular protocol used to access SCSI devices across a
524 computer network.
525
526 There are two different ways iSCSI devices can be used by QEMU.
527
528 The first method is to mount the iSCSI LUN on the host, and make it
529 appear as any other ordinary SCSI device on the host and then to access
530 this device as a /dev/sd device from QEMU. How to do this differs
531 between host OSes.
532
533 The second method involves using the iSCSI initiator that is built into
534 QEMU. This provides a mechanism that works the same way regardless of
535 which host OS you are running QEMU on. This section will describe this
536 second method of using iSCSI together with QEMU.
537
538 In QEMU, iSCSI devices are described using special iSCSI URLs
539
540 URL syntax:
541 iscsi://[<username>[%<password>]@]<host>[:<port>]/<target-iqn-name>/<lun>
542
543 Username and password are optional and only used if your target is set
544 up using CHAP authentication for access control. Alternatively the
545 username and password can also be set via environment variables to have
546 these not show up in the process list
547
548 export LIBISCSI_CHAP_USERNAME=<username>
549 export LIBISCSI_CHAP_PASSWORD=<password>
550 iscsi://<host>/<target-iqn-name>/<lun>
551
552 Various session related parameters can be set via special options,
553 either in a configuration file provided via '-readconfig' or directly
554 on the command line.
555
556 If the initiator-name is not specified qemu will use a default name of
557 'iqn.2008-11.org.linux-kvm[:<uuid>'] where <uuid> is the UUID of the
558 virtual machine. If the UUID is not specified qemu will use
559 'iqn.2008-11.org.linux-kvm[:<name>'] where <name> is the name of the
560 virtual machine.
561
562 Setting a specific initiator name to use when logging in to the target
563 -iscsi initiator-name=iqn.qemu.test:my-initiator
564
565
566
567 Controlling which type of header digest to negotiate with the target
568 -iscsi header-digest=CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
569
570 These can also be set via a configuration file
571
572 [iscsi]
573 user = "CHAP username"
574 password = "CHAP password"
575 initiator-name = "iqn.qemu.test:my-initiator"
576 # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
577 header-digest = "CRC32C"
578
579 Setting the target name allows different options for different targets
580
581 [iscsi "iqn.target.name"]
582 user = "CHAP username"
583 password = "CHAP password"
584 initiator-name = "iqn.qemu.test:my-initiator"
585 # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
586 header-digest = "CRC32C"
587
588 Howto use a configuration file to set iSCSI configuration options:
589
590 cat >iscsi.conf <<EOF
591 [iscsi]
592 user = "me"
593 password = "my password"
594 initiator-name = "iqn.qemu.test:my-initiator"
595 header-digest = "CRC32C"
596 EOF
597
598 qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
599 -readconfig iscsi.conf
600
601 How to set up a simple iSCSI target on loopback and access it via QEMU:
602
603 This example shows how to set up an iSCSI target with one CDROM and one DISK
604 using the Linux STGT software target. This target is available on Red Hat based
605 systems as the package 'scsi-target-utils'.
606
607 tgtd --iscsi portal=127.0.0.1:3260
608 tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.qemu.test
609 tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 \
610 -b /IMAGES/disk.img --device-type=disk
611 tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 \
612 -b /IMAGES/cd.iso --device-type=cd
613 tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
614
615 qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
616 -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
617 -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
618
619 GlusterFS disk images
620
621 GlusterFS is a user space distributed file system.
622
623 You can boot from the GlusterFS disk image with the command:
624
625 URI:
626 qemu-system-x86_64 -drive file=gluster[+<type>]://[<host>[:<port>]]/<volume>/<path>
627 [?socket=...][,file.debug=9][,file.logfile=...]
628
629 JSON:
630 qemu-system-x86_64 'json:{"driver":"qcow2",
631 "file":{"driver":"gluster",
632 "volume":"testvol","path":"a.img","debug":9,"logfile":"...",
633 "server":[{"type":"tcp","host":"...","port":"..."},
634 {"type":"unix","socket":"..."}]}}'
635
636 gluster is the protocol.
637
638 type specifies the transport type used to connect to gluster management
639 daemon (glusterd). Valid transport types are tcp and unix. In the URI
640 form, if a transport type isn't specified, then tcp type is assumed.
641
642 host specifies the server where the volume file specification for the
643 given volume resides. This can be either a hostname or an ipv4 address.
644 If transport type is unix, then host field should not be specified.
645 Instead socket field needs to be populated with the path to unix domain
646 socket.
647
648 port is the port number on which glusterd is listening. This is
649 optional and if not specified, it defaults to port 24007. If the
650 transport type is unix, then port should not be specified.
651
652 volume is the name of the gluster volume which contains the disk image.
653
654 path is the path to the actual disk image that resides on gluster
655 volume.
656
657 debug is the logging level of the gluster protocol driver. Debug levels
658 are 0-9, with 9 being the most verbose, and 0 representing no debugging
659 output. The default level is 4. The current logging levels defined in
660 the gluster source are 0 - None, 1 - Emergency, 2 - Alert, 3 -
661 Critical, 4 - Error, 5 - Warning, 6 - Notice, 7 - Info, 8 - Debug, 9 -
662 Trace
663
664 logfile is a commandline option to mention log file path which helps in
665 logging to the specified file and also help in persisting the gfapi
666 logs. The default is stderr.
667
668 You can create a GlusterFS disk image with the command:
669
670 qemu-img create gluster://<host>/<volume>/<path> <size>
671
672 Examples
673
674 qemu-system-x86_64 -drive file=gluster://1.2.3.4/testvol/a.img
675 qemu-system-x86_64 -drive file=gluster+tcp://1.2.3.4/testvol/a.img
676 qemu-system-x86_64 -drive file=gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
677 qemu-system-x86_64 -drive file=gluster+tcp://[1:2:3:4:5:6:7:8]/testvol/dir/a.img
678 qemu-system-x86_64 -drive file=gluster+tcp://[1:2:3:4:5:6:7:8]:24007/testvol/dir/a.img
679 qemu-system-x86_64 -drive file=gluster+tcp://server.domain.com:24007/testvol/dir/a.img
680 qemu-system-x86_64 -drive file=gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
681 qemu-system-x86_64 -drive file=gluster+rdma://1.2.3.4:24007/testvol/a.img
682 qemu-system-x86_64 -drive file=gluster://1.2.3.4/testvol/a.img,file.debug=9,file.logfile=/var/log/qemu-gluster.log
683 qemu-system-x86_64 'json:{"driver":"qcow2",
684 "file":{"driver":"gluster",
685 "volume":"testvol","path":"a.img",
686 "debug":9,"logfile":"/var/log/qemu-gluster.log",
687 "server":[{"type":"tcp","host":"1.2.3.4","port":24007},
688 {"type":"unix","socket":"/var/run/glusterd.socket"}]}}'
689 qemu-system-x86_64 -drive driver=qcow2,file.driver=gluster,file.volume=testvol,file.path=/path/a.img,
690 file.debug=9,file.logfile=/var/log/qemu-gluster.log,
691 file.server.0.type=tcp,file.server.0.host=1.2.3.4,file.server.0.port=24007,
692 file.server.1.type=unix,file.server.1.socket=/var/run/glusterd.socket
693
694 Secure Shell (ssh) disk images
695
696 You can access disk images located on a remote ssh server by using the
697 ssh protocol:
698
699 qemu-system-x86_64 -drive file=ssh://[<user>@]<server>[:<port>]/<path>[?host_key_check=<host_key_check>]
700
701 Alternative syntax using properties:
702
703 qemu-system-x86_64 -drive file.driver=ssh[,file.user=<user>],file.host=<server>[,file.port=<port>],file.path=<path>[,file.host_key_check=<host_key_check>]
704
705 ssh is the protocol.
706
707 user is the remote user. If not specified, then the local username is
708 tried.
709
710 server specifies the remote ssh server. Any ssh server can be used,
711 but it must implement the sftp-server protocol. Most Unix/Linux
712 systems should work without requiring any extra configuration.
713
714 port is the port number on which sshd is listening. By default the
715 standard ssh port (22) is used.
716
717 path is the path to the disk image.
718
719 The optional host_key_check parameter controls how the remote host's
720 key is checked. The default is "yes" which means to use the local
721 .ssh/known_hosts file. Setting this to "no" turns off known-hosts
722 checking. Or you can check that the host key matches a specific
723 fingerprint:
724 "host_key_check=md5:78:45:8e:14:57:4f:d5:45:83:0a:0e:f3:49:82:c9:c8"
725 ("sha1:" can also be used as a prefix, but note that OpenSSH tools only
726 use MD5 to print fingerprints).
727
728 Currently authentication must be done using ssh-agent. Other
729 authentication methods may be supported in future.
730
731 Note: Many ssh servers do not support an "fsync"-style operation. The
732 ssh driver cannot guarantee that disk flush requests are obeyed, and
733 this causes a risk of disk corruption if the remote server or network
734 goes down during writes. The driver will print a warning when "fsync"
735 is not supported:
736
737 warning: ssh server "ssh.example.com:22" does not support fsync
738
739 With sufficiently new versions of libssh and OpenSSH, "fsync" is
740 supported.
741
742 NVMe disk images
743
744 NVM Express (NVMe) storage controllers can be accessed directly by a
745 userspace driver in QEMU. This bypasses the host kernel file system
746 and block layers while retaining QEMU block layer functionalities, such
747 as block jobs, I/O throttling, image formats, etc. Disk I/O
748 performance is typically higher than with "-drive file=/dev/sda" using
749 either thread pool or linux-aio.
750
751 The controller will be exclusively used by the QEMU process once
752 started. To be able to share storage between multiple VMs and other
753 applications on the host, please use the file based protocols.
754
755 Before starting QEMU, bind the host NVMe controller to the host vfio-
756 pci driver. For example:
757
758 # modprobe vfio-pci
759 # lspci -n -s 0000:06:0d.0
760 06:0d.0 0401: 1102:0002 (rev 08)
761 # echo 0000:06:0d.0 > /sys/bus/pci/devices/0000:06:0d.0/driver/unbind
762 # echo 1102 0002 > /sys/bus/pci/drivers/vfio-pci/new_id
763
764 # qemu-system-x86_64 -drive file=nvme://<host>:<bus>:<slot>.<func>/<namespace>
765
766 Alternative syntax using properties:
767
768 qemu-system-x86_64 -drive file.driver=nvme,file.device=<host>:<bus>:<slot>.<func>,file.namespace=<namespace>
769
770 host:bus:slot.func is the NVMe controller's PCI device address on the
771 host.
772
773 namespace is the NVMe namespace number, starting from 1.
774
775 Disk image file locking
776
777 By default, QEMU tries to protect image files from unexpected
778 concurrent access, as long as it's supported by the block protocol
779 driver and host operating system. If multiple QEMU processes (including
780 QEMU emulators and utilities) try to open the same image with
781 conflicting accessing modes, all but the first one will get an error.
782
783 This feature is currently supported by the file protocol on Linux with
784 the Open File Descriptor (OFD) locking API, and can be configured to
785 fall back to POSIX locking if the POSIX host doesn't support Linux OFD
786 locking.
787
788 To explicitly enable image locking, specify "locking=on" in the file
789 protocol driver options. If OFD locking is not possible, a warning will
790 be printed and the POSIX locking API will be used. In this case there
791 is a risk that the lock will get silently lost when doing hot plugging
792 and block jobs, due to the shortcomings of the POSIX locking API.
793
794 QEMU transparently handles lock handover during shared storage
795 migration. For shared virtual disk images between multiple VMs, the
796 "share-rw" device option should be used.
797
798 By default, the guest has exclusive write access to its disk image. If
799 the guest can safely share the disk image with other writers the
800 "-device ...,share-rw=on" parameter can be used. This is only safe if
801 the guest is running software, such as a cluster file system, that
802 coordinates disk accesses to avoid corruption.
803
804 Note that share-rw=on only declares the guest's ability to share the
805 disk. Some QEMU features, such as image file formats, require
806 exclusive write access to the disk image and this is unaffected by the
807 share-rw=on option.
808
809 Alternatively, locking can be fully disabled by "locking=off" block
810 device option. In the command line, the option is usually in the form
811 of "file.locking=off" as the protocol driver is normally placed as a
812 "file" child under a format driver. For example:
813
814 "-blockdev
815 driver=qcow2,file.filename=/path/to/image,file.locking=off,file.driver=file"
816
817 To check if image locking is active, check the output of the "lslocks"
818 command on host and see if there are locks held by the QEMU process on
819 the image file. More than one byte could be locked by the QEMU
820 instance, each byte of which reflects a particular permission that is
821 acquired or protected by the running block driver.
822
824 The HTML documentation of QEMU for more precise information and Linux
825 user mode emulator invocation.
826
828 Fabrice Bellard and the QEMU Project developers
829
830
831
832 2019-11-15 QEMU-BLOCK-DRIVERS.7(7)