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