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