[QEMU]塊設備選項

-fda?file
-fdb?file
將文件用作軟盤 0/1 映像(請參閱《系統(tǒng)仿真用戶指南》中的“磁盤映像”一章)。
-hda?file
-hdb?file
-hdc?file
-hdd?file
將文件用作硬盤 0、1、2 或 3 映像(請參閱《系統(tǒng)仿真用戶指南》中的“磁盤映像”一章)。
-cdrom?file
使用文件作為 CD-ROM 映像(不能同時使用 和)。您可以通過使用文件名來使用主機 CD-ROM。
-hdc
-cdrom
/dev/cdrom
-blockdev?option[,option[,option[,...]]]
定義新的塊驅(qū)動程序節(jié)點。某些選項適用于所有塊驅(qū)動程序,其他選項僅適用于特定的塊驅(qū)動程序。有關通用選項和最常見塊驅(qū)動程序的選項列表,請參閱下文。
期望引用另一個節(jié)點(例如 )的選項可以通過兩種方式給出。您可以指定現(xiàn)有節(jié)點的節(jié)點名稱(file=node-name),也可以內(nèi)聯(lián)定義一個新節(jié)點,在點之后為引用的節(jié)點添加選項(file.filename=path,file.aio=native)。
file
通過在定義塊設備的參數(shù)中為屬性指定其節(jié)點名稱,可以將 與 創(chuàng)建的塊驅(qū)動程序節(jié)點節(jié)點用于來賓設備。
-blockdev
drive
-device
file
引用或定義數(shù)據(jù)源塊驅(qū)動程序節(jié)點(例如驅(qū)動程序節(jié)點)
file
backing
引用或定義支持文件塊設備(默認取自映像文件)。允許在此處傳遞以禁用默認支持文件。
null
lazy-refcounts
是否啟用惰性引用計數(shù)功能(開/關;默認值取自圖像文件)
cache-size
L2 表和 refcount 塊緩存的最大總大小(以字節(jié)為單位)(默認值:l2 緩存大小和 refcount-cache-size 之和)
l2-cache-size
L2 表高速緩存的最大大?。ㄒ宰止?jié)為單位)(默認值:如果未指定高速緩存大小 - Linux 平臺上為 32M,非 Linux 平臺上為 8M;否則,在高速緩存大小內(nèi)盡可能大,同時允許請求的或最小的 refcount 高速緩存大?。?/p>
refcount-cache-size
refcount 塊緩存的最大大小(以字節(jié)為單位)(默認值:簇大小的 4 倍;或者,如果指定了緩存大小,則為其中不用于 L2 緩存的部分)
cache-clean-interval
清理 L2 中未使用的條目并引用緩存。間隔以秒為單位。在支持平臺上,默認值為 600,在其他平臺上為 0。將其設置為 0 將禁用此功能。
pass-discard-request
是否應將對 qcow2 設備的丟棄請求轉(zhuǎn)發(fā)到數(shù)據(jù)源(開/關;默認值:如果指定了 discard=unmap,則為 on,否則關閉)
pass-discard-snapshot
當快照操作(例如刪除快照)釋放 qcow2 文件中的集群時,是否應發(fā)出對數(shù)據(jù)源的丟棄請求(開/關;默認:開)
pass-discard-other
是否應在釋放群集的其他情況下發(fā)出對數(shù)據(jù)源的丟棄請求(開/關;默認值:關)
overlap-check
對映像的寫入執(zhí)行哪些重疊檢查(無/常量/緩存/全部;默認值:緩存)。有關詳細信息或更精細的粒度控制,請參閱 的 QAPI 文檔。
blockdev-add
file
引用或定義數(shù)據(jù)源塊驅(qū)動程序節(jié)點(例如驅(qū)動程序節(jié)點)
file
filename
本地文件系統(tǒng)中映像文件的路徑
aio
指定 AIO 后端(線程/本機/io_uring,默認值:線程)
locking
指定圖像文件是否使用 Linux OFD/POSIX 鎖進行保護。默認設置是使用 Linux 開放文件描述符 API(如果可用),否則不應用任何鎖定。(自動/開/關,默認值:自動)
driver
指定要用于給定節(jié)點的塊驅(qū)動程序。
node-name
這定義了塊驅(qū)動程序節(jié)點的名稱,稍后將通過該節(jié)點引用該節(jié)點。該名稱必須是唯一的,即它不得與不同塊驅(qū)動程序節(jié)點的名稱匹配,或者(如果您也使用)驅(qū)動器的ID不匹配。
-drive
如果未指定節(jié)點名稱,則會自動生成節(jié)點名稱。生成的節(jié)點名稱不是可預測的,而是在 QEMU 調(diào)用之間更改的。對于頂層,必須指定顯式節(jié)點名稱。
read-only
以只讀方式打開節(jié)點。來賓寫入嘗試將失敗。
請注意,某些塊驅(qū)動程序僅支持只讀訪問,無論是在一般情況下還是在某些配置中。在這種情況下,默認值不起作用,必須顯式指定該選項。
read-only=off
auto-read-only
如果設置了,QEMU 即使在請求時也可以回退到只讀用法,甚至可以根據(jù)需要在模式之間切換,例如,根據(jù)圖像文件是否可寫或?qū)懭胗脩羰欠窀郊拥焦?jié)點。
auto-read-only=on
read-only=off
force-share
通過強制節(jié)點利用較弱的共享訪問權(quán)限來獲得通常請求獨占訪問權(quán)限的權(quán)限,從而覆蓋QEMU的映像鎖定系統(tǒng)。當多個實例有可能打開同一個文件時(無論 QEMU 的此調(diào)用是第一個實例還是第二個實例),兩個實例都必須允許共享訪問,以便第二個實例成功打開文件。
啟用需要 。
force-share=on
read-only=on
cache.direct
使用 可以避免主機頁面緩存。這將嘗試將磁盤 IO 直接執(zhí)行到來賓的內(nèi)存。QEMU 仍可能執(zhí)行數(shù)據(jù)的內(nèi)部復制。
cache.direct=on
cache.no-flush
如果您不關心主機故障的數(shù)據(jù)完整性,可以使用 。此選項告訴QEMU,它永遠不需要將任何數(shù)據(jù)寫入磁盤,而是可以將內(nèi)容保存在緩存中。如果出現(xiàn)任何問題,例如主機斷電,磁盤存儲意外斷開連接等,您的圖像很可能會變得不可用。
cache.no-flush=on
discard=discard
discard 是“忽略”(或“關閉”)或“取消映射”(或“打開”)之一,并控制是否(也稱為或)請求被忽略或傳遞給文件系統(tǒng)。某些計算機類型可能不支持丟棄請求。
discard
trim
unmap
detect-zeroes=detect-zeroes
detect-zeroes 為“off”、“on”或“unmap”,并允許操作系統(tǒng)自動將純零寫入轉(zhuǎn)換為驅(qū)動程序特定的優(yōu)化零寫入命令。如果 discard 設置為 “unmap” 以允許將零寫入轉(zhuǎn)換為操作,您甚至可以選擇“取消映射”。
unmap
Valid?options?for?any?block?driver?node:
Driver-specific?options?for?file
這是用于訪問常規(guī)文件的協(xié)議級塊驅(qū)動程序。
例:
-blockdev driver=file,node-name=disk,filename=disk.img
Driver-specific?options?for?raw
這是原始圖像的圖像格式塊驅(qū)動程序。它通常堆疊在協(xié)議級塊驅(qū)動程序(如 .)之上。
file
示例 1:
-blockdev driver=file,node-name=disk_file,filename=disk.img-blockdev driver=raw,node-name=disk,file=disk_file
示例 2:
-blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
Driver-specific?options?for?qcow2
這是 qcow2 映像的映像格式塊驅(qū)動程序。它通常堆疊在協(xié)議級塊驅(qū)動程序(如 .)之上。
file
示例 1:
-blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2-blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216
示例 2:
-blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
Driver-specific?options?for?other?drivers
請參閱 QMP 命令的 QAPI 文檔。
blockdev-add
-drive?option[,option[,option[,...]]]
定義新驅(qū)動器。這包括創(chuàng)建塊驅(qū)動程序節(jié)點(后端)以及來賓設備,并且主要是定義相應和選項的快捷方式。
-blockdev
-device
-drive
接受 接受 接受的所有選項。此外,它還知道以下選項:-blockdev
默認情況下,使用該模式。一旦數(shù)據(jù)出現(xiàn)在主機頁面緩存中,它就會將數(shù)據(jù)寫入報告為已完成。只要來賓操作系統(tǒng)確保在需要時正確刷新磁盤緩存,這是安全的。如果來賓操作系統(tǒng)未正確處理易失性磁盤寫入緩存,并且主機崩潰或斷電,則來賓可能會遇到數(shù)據(jù)損壞。
cache.writeback=on
對于此類來賓,應考慮使用 。這意味著主機頁面緩存將用于讀取和寫入數(shù)據(jù),但只有在 QEMU 確保將每次寫入刷新到磁盤之后,才會向來賓發(fā)送寫入通知。請注意,這會對性能產(chǎn)生重大影響。
cache.writeback=off
使用該選項時,始終使用不安全的緩存。
-snapshot
讀取時復制可避免重復訪問相同的支持文件扇區(qū),當支持文件通過慢速網(wǎng)絡時非常有用。默認情況下,讀取時復制處于關閉狀態(tài)。
您可以使用以下命令代替:
-cdrom
qemu-system-x86_64 -drive file=file,index=2,media=cdrom
您可以使用以下命令代替 、 、 、
-hda
-hdb
-hdc
-hdd
qemu-system-x86_64 -drive file=file,index=0,media=disk qemu-system-x86_64 -drive file=file,index=1,media=disk qemu-system-x86_64 -drive file=file,index=2,media=disk qemu-system-x86_64 -drive file=file,index=3,media=disk
您可以使用 fd 集中預先打開的文件描述符打開圖像:
qemu-system-x86_64 \ -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \ -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \ -drive file=/dev/fdset/2,index=0,media=disk
您可以將 CDROM 連接到 ide0 的從屬位置:
qemu-system-x86_64 -drive file=file,if=ide,index=1,media=cdrom
如果未指定“file=”參數(shù),則定義一個空驅(qū)動器:
qemu-system-x86_64 -drive if=ide,index=1,media=cdrom
您可以使用以下命令代替 、
-fda
-fdb
qemu-system-x86_64 -drive file=file,index=0,if=floppy qemu-system-x86_64 -drive file=file,index=1,if=floppy
默認情況下,接口為“ide”,索引自動遞增:
qemu-system-x86_64 -drive file=a -drive file=b"
解釋如下:
qemu-system-x86_64 -hda a -hdb b
file=file
此選項定義要與此驅(qū)動器一起使用的磁盤映像(請參閱《系統(tǒng)仿真用戶指南》中的“磁盤映像”一章)。如果文件名包含逗號,則必須將其加倍(例如,“file=my,,file”才能使用文件“my,file”)。
可以使用特定于協(xié)議的 URL 指定特殊文件(如 iSCSI 設備)。有關詳細信息,請參閱“設備 URL 語法”部分。
if=interface
此選項定義驅(qū)動器在接口上的哪個類型上連接??捎玫念愋桶ǎ篿de、scsi、sd、mtd、軟盤、pflash、virtio、none。
bus=bus,unit=unit
這些選項通過定義總線編號和設備 ID 來定義驅(qū)動器的連接位置。
index=index
此選項通過使用給定接口類型的可用連接器列表中的索引來定義驅(qū)動器的連接位置。
media=media
此選項定義媒體的類型:磁盤或 CDROM。
snapshot=snapshot
快照為“開”或“關”,并控制給定驅(qū)動器的快照模式(請參閱)。
-snapshot
cache=cache
cache 為“無”、“寫回”、“不安全”、“直接同步”或“直寫”,并控制如何使用主機緩存來訪問塊數(shù)據(jù)。這是一個設置 和 選項的快捷方式(如 中所示),另外 ,它為阻止來賓設備選項提供了默認值(如 中所示)。這些模式對應于以下設置:
cache.direct
cache.no-flush
-blockdev
cache.writeback
write-cache
-device
cache.writeback
cache.direct
cache.no 齊平
寫回
上
關閉
關閉
沒有
上
上
關閉
直寫
關閉
關閉
關閉
直接同步
關閉
上
關閉
不安全的
上
關閉
上
默認模式為 。
cache=writeback
aio=aio
aio 是“線程”、“本機”或“io_uring”,可在基于 pthread 的磁盤 I/O、本機 Linux AIO 或 Linux io_uring API 之間進行選擇。
format=format
指定將使用哪種磁盤格式,而不是檢測該格式??捎糜谥付?format=raw,以避免解釋不受信任的格式標頭。
werror=action,rerror=action
指定要對寫入和讀取錯誤執(zhí)行的操作。有效的操作包括:“忽略”(忽略錯誤并嘗試繼續(xù))、“停止”(暫停 QEMU)、“報告”(向來賓報告錯誤)、“enospc”(僅當主機磁盤已滿時才暫停 QEMU;否則向來賓報告錯誤)。默認設置為 和 。
werror=enospc
rerror=report
copy-on-read=copy-on-read
讀取時復制為“開”或“關”,并允許是否將讀取支持文件扇區(qū)復制到映像文件中。
bps=b,bps_rd=r,bps_wr=w
以字節(jié)/秒為單位指定帶寬限制,適用于所有請求類型或僅針對讀取或?qū)懭?。較小的值可能會導致來賓內(nèi)部超時或掛起。磁盤的安全最小值為 2 MB/s。
bps_max=bm,bps_rd_max=rm,bps_wr_max=wm
以字節(jié)/秒為單位指定突發(fā),適用于所有請求類型或僅用于讀取或?qū)懭?。突發(fā)允許來賓 I/O 暫時峰值超過限制。
iops=i,iops_rd=r,iops_wr=w
以每秒請求數(shù)為單位指定請求速率限制,適用于所有請求類型或僅針對讀取或?qū)懭搿?/p>
iops_max=bm,iops_rd_max=rm,iops_wr_max=wm
指定每秒請求數(shù)的突發(fā)數(shù),適用于所有請求類型或僅針對讀取或?qū)懭搿M话l(fā)允許來賓 I/O 暫時峰值超過限制。
iops_size=is
讓請求的每個字節(jié)都算作 iops 限制目的的新請求。使用此選項可防止來賓通過發(fā)送較少但較大的請求來規(guī)避 iops 限制。
group=g
加入具有給定名稱 g 的限制配額組。屬于同一組的所有驅(qū)動器都一起考慮在內(nèi)。使用此選項可防止來賓通過使用許多小磁盤而不是單個較大的磁盤來規(guī)避限制。
-mtdblock?file
使用文件作為板載閃存映像。
-sd?file
使用文件作為安全數(shù)字卡圖像。
-pflash?file
使用文件作為并行閃存映像。
-snapshot
寫入臨時文件而不是磁盤映像文件。在這種情況下,您使用的原始磁盤映像不會寫回。但是,您可以通過按 C-a s 強制回寫(請參閱《系統(tǒng)仿真用戶指南》中的“磁盤映像”一章)。
-fsdev?local,id=id,path=path,security_model=security_model?[,writeout=writeout][,readonly=on][,fmode=fmode][,dmode=dmode]?[,throttling.option=value[,throttling.option=value[,...]]]
-fsdev?proxy,id=id,socket=socket[,writeout=writeout][,readonly=on]
-fsdev?proxy,id=id,sock_fd=sock_fd[,writeout=writeout][,readonly=on]
-fsdev?synth,id=id[,readonly=on]
定義新的文件系統(tǒng)設備。有效選項包括:
-fsdev 選項與 -device 驅(qū)動程序“virtio-9p-...”一起使用。
local
對文件系統(tǒng)的訪問由 QEMU 完成。
proxy
對文件系統(tǒng)的訪問由 virtfs-proxy-helper(1) 完成。
synth
合成文件系統(tǒng),僅由 QTests 使用。
id=id
指定此設備的標識符。
path=path
指定文件系統(tǒng)設備的導出路徑。此路徑下的文件將可供來賓上的 9p 客戶端使用。
security_model=security_model
指定要用于此導出路徑的安全模型。支持的安全模型是“直通”、“映射 xattr”、“映射文件”和“無”。在“直通”安全模型中,文件使用與在來賓上創(chuàng)建的憑據(jù)相同的憑據(jù)進行存儲。這要求 QEMU 以 root 身份運行。在“mapped-xattr”安全模型中,某些文件屬性(如 uid、gid、模式位和鏈接目標)存儲為文件屬性。對于“映射文件”,這些屬性存儲在隱藏的.virtfs_metadata目錄中。此安全模型導出的目錄無法與其他 unix 工具交互?!皀one”安全模型與直通相同,只是服務器在無法設置文件屬性(如所有權(quán))時不會報告失敗。安全模型僅對本地 fsdriver 是必需的。其他 fsdrivers(如代理)不將安全模型作為參數(shù)。
writeout=writeout
這是一個可選參數(shù)。唯一受支持的值是“立即”。這意味著主機頁面緩存將用于讀取和寫入數(shù)據(jù),但僅當數(shù)據(jù)已報告為由存儲子系統(tǒng)寫入時,才會向來賓發(fā)送寫入通知。
readonly=on
允許將 9p 共享導出為來賓的只讀裝載。默認情況下,將授予讀寫訪問權(quán)限。
socket=socket
使代理文件系統(tǒng)驅(qū)動程序能夠使用傳遞的套接字文件與 virtfs-proxy-helper(1) 進行通信。
sock_fd=sock_fd
使代理文件系統(tǒng)驅(qū)動程序能夠使用傳遞的套接字描述符與 virtfs-proxy-helper(1) 進行通信。通常,像libvirt這樣的助手會創(chuàng)建套接字對,并將其中一個fd作為sock_fd傳遞。
fmode=fmode
指定主機上新創(chuàng)建文件的默認模式。僅適用于安全模型“mapped-xattr”和“mapped-file”。
dmode=dmode
指定主機上新創(chuàng)建的目錄的默認模式。僅適用于安全模型“mapped-xattr”和“mapped-file”。
throttling.bps-total=b,throttling.bps-read=r,throttling.bps-write=w
以字節(jié)/秒為單位指定帶寬限制,適用于所有請求類型或僅針對讀取或?qū)懭搿?/p>
throttling.bps-total-max=bm,bps-read-max=rm,bps-write-max=wm
以字節(jié)/秒為單位指定突發(fā),適用于所有請求類型或僅用于讀取或?qū)懭?。突發(fā)允許來賓 I/O 暫時峰值超過限制。
throttling.iops-total=i,throttling.iops-read=r,?throttling.iops-write=w
以每秒請求數(shù)為單位指定請求速率限制,適用于所有請求類型或僅針對讀取或?qū)懭搿?/p>
throttling.iops-total-max=im,throttling.iops-read-max=irm,?throttling.iops-write-max=iwm
指定每秒請求數(shù)的突發(fā)數(shù),適用于所有請求類型或僅針對讀取或?qū)懭?。突發(fā)允許來賓 I/O 暫時峰值超過限制。
throttling.iops-size=is
讓請求的每個字節(jié)都算作 iops 限制目的的新請求。
-device?virtio-9p-type,fsdev=id,mount_tag=mount_tag
virtio-9p-...驅(qū)動程序是:
type
指定要使用的變體。支持的值為“pci”、“ccw”或“設備”,具體取決于計算機類型。
fsdev=id
指定與 -fsdev 選項一起指定的 id 值。
mount_tag=mount_tag
指定來賓用來掛載此導出點的標記名稱。
-virtfs?local,path=path,mount_tag=mount_tag?,security_model=security_model[,writeout=writeout][,readonly=on]?[,fmode=fmode][,dmode=dmode][,multidevs=multidevs]
-virtfs?proxy,socket=socket,mount_tag=mount_tag?[,writeout=writeout][,readonly=on]
-virtfs?proxy,sock_fd=sock_fd,mount_tag=mount_tag?[,writeout=writeout][,readonly=on]
-virtfs?synth,mount_tag=mount_tag
定義一個新的虛擬文件系統(tǒng)設備,并使用 virtio-9p-device(又名 9pfs)將其公開給來賓,這實質(zhì)上意味著來賓可以使用 9P 網(wǎng)絡協(xié)議作為傳遞文件系統(tǒng)直接訪問主機和來賓之間的通信,如果需要,甚至可以訪問,由多個來賓同時共享。
請注意,這實際上只是其廣義形式的便利快捷方式。
-virtfs
-fsdev?-device?virtio-9p-pci
傳遞文件系統(tǒng)選項的一般形式包括:
local
對文件系統(tǒng)的訪問由 QEMU 完成。
proxy
對文件系統(tǒng)的訪問由 virtfs-proxy-helper(1) 完成。
synth
合成文件系統(tǒng),僅由 QTests 使用。
id=id
指定文件系統(tǒng)設備的標識符
path=path
指定文件系統(tǒng)設備的導出路徑。此路徑下的文件將可供來賓上的 9p 客戶端使用。
security_model=security_model
指定要用于此導出路徑的安全模型。支持的安全模型是“直通”、“映射 xattr”、“映射文件”和“無”。在“直通”安全模型中,文件使用與在來賓上創(chuàng)建的憑據(jù)相同的憑據(jù)進行存儲。這要求 QEMU 以 root 身份運行。在“mapped-xattr”安全模型中,某些文件屬性(如 uid、gid、模式位和鏈接目標)存儲為文件屬性。對于“映射文件”,這些屬性存儲在隱藏的.virtfs_metadata目錄中。此安全模型導出的目錄無法與其他 unix 工具交互?!皀one”安全模型與直通相同,只是服務器在無法設置文件屬性(如所有權(quán))時不會報告失敗。安全模型僅對本地 fsdriver 是必需的。其他 fsdrivers(如代理)不將安全模型作為參數(shù)。
writeout=writeout
這是一個可選參數(shù)。唯一受支持的值是“立即”。這意味著主機頁面緩存將用于讀取和寫入數(shù)據(jù),但僅當數(shù)據(jù)已報告為由存儲子系統(tǒng)寫入時,才會向來賓發(fā)送寫入通知。
readonly=on
允許將 9p 共享導出為來賓的只讀裝載。默認情況下,將授予讀寫訪問權(quán)限。
socket=socket
使代理文件系統(tǒng)驅(qū)動程序能夠使用傳遞的套接字文件與 virtfs-proxy-helper(1) 進行通信。通常,像libvirt這樣的助手會創(chuàng)建套接字對,并將其中一個fd作為sock_fd傳遞。
sock_fd
使代理文件系統(tǒng)驅(qū)動程序能夠使用傳遞的“sock_fd”作為套接字描述符,以便與 virtfs-proxy-helper(1) 接口。
fmode=fmode
指定主機上新創(chuàng)建文件的默認模式。僅適用于安全模型“mapped-xattr”和“mapped-file”。
dmode=dmode
指定主機上新創(chuàng)建的目錄的默認模式。僅適用于安全模型“mapped-xattr”和“mapped-file”。
mount_tag=mount_tag
指定來賓用來掛載此導出點的標記名稱。
multidevs=multidevs
指定如何處理使用 9p 導出共享的多個設備。支持的行為是“重新映射”、“禁止”或“警告”。后者是默認行為,其中 virtfs 9p 期望只有一個設備與相同的導出共享,如果通過相同的 9p 導出共享和訪問多個設備,則主機端的 qemu 僅記錄警告消息(一次)。為了避免來賓上的文件ID沖突,您應該為要與來賓共享的每個設備創(chuàng)建單獨的 virtfs 導出(推薦方式),或者您可以使用“remap”代替,它允許您僅通過一個導出來共享多個設備,這是通過以一種防止此類沖突的方式將原始inode編號從主機重新映射到來賓來實現(xiàn)的。在此類用例中,需要重新映射 inode,因為來自主機的原始設備 ID 永遠不會傳遞并在來賓上公開。相反,與 virtfs 共享的所有導出文件始終在來賓上共享相同的設備 ID。因此,具有相同inode編號但來自主機上實際不同設備的兩個文件將導致文件ID沖突,從而導致來賓上的潛在不當行為。另一方面,“禁止”假設“警告”同一導出僅共享一個設備,但它不僅會記錄警告消息,還會拒絕訪問來賓上的其他設備。請注意,“禁止”目前不會阻止所有可能的文件訪問操作(例如,readdir()仍將從其他設備返回條目)。
-iscsi
配置 iSCSI 會話參數(shù)。