]> git.proxmox.com Git - mirror_qemu.git/blame - docs/system/device-url-syntax.rst.inc
Merge tag 'for_upstream' of https://git.kernel.org/pub/scm/virt/kvm/mst/qemu into...
[mirror_qemu.git] / docs / system / device-url-syntax.rst.inc
CommitLineData
bf87bef0
PM
1
2In addition to using normal file images for the emulated storage
3devices, QEMU can also use networked resources such as iSCSI devices.
4These are specified using a special URL syntax.
5
6``iSCSI``
7 iSCSI support allows QEMU to access iSCSI resources directly and use
8 as images for the guest storage. Both disk and cdrom images are
9 supported.
10
11 Syntax for specifying iSCSI LUNs is
12 "iscsi://<target-ip>[:<port>]/<target-iqn>/<lun>"
13
14 By default qemu will use the iSCSI initiator-name
15 'iqn.2008-11.org.linux-kvm[:<name>]' but this can also be set from
16 the command line or a configuration file.
17
5135fe71 18 Since version QEMU 2.4 it is possible to specify a iSCSI request
bf87bef0
PM
19 timeout to detect stalled requests and force a reestablishment of the
20 session. The timeout is specified in seconds. The default is 0 which
21 means no timeout. Libiscsi 1.15.0 or greater is required for this
22 feature.
23
24 Example (without authentication):
25
26 .. parsed-literal::
27
353a06b4
LE
28 |qemu_system| -iscsi initiator-name=iqn.2001-04.com.example:my-initiator \\
29 -cdrom iscsi://192.0.2.1/iqn.2001-04.com.example/2 \\
bf87bef0
PM
30 -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
31
32 Example (CHAP username/password via URL):
33
34 .. parsed-literal::
35
36 |qemu_system| -drive file=iscsi://user%password@192.0.2.1/iqn.2001-04.com.example/1
37
38 Example (CHAP username/password via environment variables):
39
40 .. parsed-literal::
41
353a06b4
LE
42 LIBISCSI_CHAP_USERNAME="user" \\
43 LIBISCSI_CHAP_PASSWORD="password" \\
bf87bef0
PM
44 |qemu_system| -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
45
46``NBD``
47 QEMU supports NBD (Network Block Devices) both using TCP protocol as
48 well as Unix Domain Sockets. With TCP, the default port is 10809.
49
50 Syntax for specifying a NBD device using TCP, in preferred URI form:
51 "nbd://<server-ip>[:<port>]/[<export>]"
52
53 Syntax for specifying a NBD device using Unix Domain Sockets;
54 remember that '?' is a shell glob character and may need quoting:
55 "nbd+unix:///[<export>]?socket=<domain-socket>"
56
57 Older syntax that is also recognized:
58 "nbd:<server-ip>:<port>[:exportname=<export>]"
59
60 Syntax for specifying a NBD device using Unix Domain Sockets
61 "nbd:unix:<domain-socket>[:exportname=<export>]"
62
63 Example for TCP
64
65 .. parsed-literal::
66
67 |qemu_system| --drive file=nbd:192.0.2.1:30000
68
69 Example for Unix Domain Sockets
70
71 .. parsed-literal::
72
73 |qemu_system| --drive file=nbd:unix:/tmp/nbd-socket
74
75``SSH``
76 QEMU supports SSH (Secure Shell) access to remote disks.
77
78 Examples:
79
80 .. parsed-literal::
81
82 |qemu_system| -drive file=ssh://user@host/path/to/disk.img
83 |qemu_system| -drive file.driver=ssh,file.user=user,file.host=host,file.port=22,file.path=/path/to/disk.img
84
85 Currently authentication must be done using ssh-agent. Other
86 authentication methods may be supported in future.
87
bf87bef0
PM
88``GlusterFS``
89 GlusterFS is a user space distributed file system. QEMU supports the
90 use of GlusterFS volumes for hosting VM disk images using TCP, Unix
91 Domain Sockets and RDMA transport protocols.
92
93 Syntax for specifying a VM disk image on GlusterFS volume is
94
95 .. parsed-literal::
96
97 URI:
98 gluster[+type]://[host[:port]]/volume/path[?socket=...][,debug=N][,logfile=...]
99
100 JSON:
101 'json:{"driver":"qcow2","file":{"driver":"gluster","volume":"testvol","path":"a.img","debug":N,"logfile":"...",
102   "server":[{"type":"tcp","host":"...","port":"..."},
103   {"type":"unix","socket":"..."}]}}'
104
105 Example
106
107 .. parsed-literal::
108
109 URI:
110 |qemu_system| --drive file=gluster://192.0.2.1/testvol/a.img,
111   file.debug=9,file.logfile=/var/log/qemu-gluster.log
112
113 JSON:
114 |qemu_system| 'json:{"driver":"qcow2",
115   "file":{"driver":"gluster",
116   "volume":"testvol","path":"a.img",
117   "debug":9,"logfile":"/var/log/qemu-gluster.log",
118   "server":[{"type":"tcp","host":"1.2.3.4","port":24007},
119   {"type":"unix","socket":"/var/run/glusterd.socket"}]}}'
120 |qemu_system| -drive driver=qcow2,file.driver=gluster,file.volume=testvol,file.path=/path/a.img,
121   file.debug=9,file.logfile=/var/log/qemu-gluster.log,
122   file.server.0.type=tcp,file.server.0.host=1.2.3.4,file.server.0.port=24007,
123   file.server.1.type=unix,file.server.1.socket=/var/run/glusterd.socket
124
125 See also http://www.gluster.org.
126
127``HTTP/HTTPS/FTP/FTPS``
128 QEMU supports read-only access to files accessed over http(s) and
129 ftp(s).
130
131 Syntax using a single filename:
132
133 ::
134
135 <protocol>://[<username>[:<password>]@]<host>/<path>
136
137 where:
138
139 ``protocol``
140 'http', 'https', 'ftp', or 'ftps'.
141
142 ``username``
143 Optional username for authentication to the remote server.
144
145 ``password``
146 Optional password for authentication to the remote server.
147
148 ``host``
149 Address of the remote server.
150
151 ``path``
152 Path on the remote server, including any query string.
153
154 The following options are also supported:
155
156 ``url``
157 The full URL when passing options to the driver explicitly.
158
159 ``readahead``
160 The amount of data to read ahead with each range request to the
161 remote server. This value may optionally have the suffix 'T', 'G',
162 'M', 'K', 'k' or 'b'. If it does not have a suffix, it will be
163 assumed to be in bytes. The value must be a multiple of 512 bytes.
164 It defaults to 256k.
165
166 ``sslverify``
167 Whether to verify the remote server's certificate when connecting
168 over SSL. It can have the value 'on' or 'off'. It defaults to
169 'on'.
170
171 ``cookie``
172 Send this cookie (it can also be a list of cookies separated by
173 ';') with each outgoing request. Only supported when using
174 protocols such as HTTP which support cookies, otherwise ignored.
175
176 ``timeout``
177 Set the timeout in seconds of the CURL connection. This timeout is
178 the time that CURL waits for a response from the remote server to
179 get the size of the image to be downloaded. If not set, the
180 default timeout of 5 seconds is used.
181
182 Note that when passing options to qemu explicitly, ``driver`` is the
183 value of <protocol>.
184
185 Example: boot from a remote Fedora 20 live ISO image
186
187 .. parsed-literal::
188
189 |qemu_system_x86| --drive media=cdrom,file=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly
190
191 |qemu_system_x86| --drive media=cdrom,file.driver=http,file.url=http://archives.fedoraproject.org/pub/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly
192
193 Example: boot from a remote Fedora 20 cloud image using a local
194 overlay for writes, copy-on-read, and a readahead of 64k
195
196 .. parsed-literal::
197
198 qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"http",, "file.url":"http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Images/x86_64/Fedora-x86_64-20-20131211.1-sda.qcow2",, "file.readahead":"64k"}' /tmp/Fedora-x86_64-20-20131211.1-sda.qcow2
199
200 |qemu_system_x86| -drive file=/tmp/Fedora-x86_64-20-20131211.1-sda.qcow2,copy-on-read=on
201
202 Example: boot from an image stored on a VMware vSphere server with a
203 self-signed certificate using a local overlay for writes, a readahead
204 of 64k and a timeout of 10 seconds.
205
206 .. parsed-literal::
207
208 qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"https",, "file.url":"https://user:password@vsphere.example.com/folder/test/test-flat.vmdk?dcPath=Datacenter&dsName=datastore1",, "file.sslverify":"off",, "file.readahead":"64k",, "file.timeout":10}' /tmp/test.qcow2
209
210 |qemu_system_x86| -drive file=/tmp/test.qcow2