.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_CN.rst :Original: :ref:`Documentation/filesystems/virtiofs.rst <virtiofs_index>` 译者 :: ä¸æ–‡ç‰ˆç»´æŠ¤è€…: 王文虎 Wang Wenhu <wenhu.wang@vivo.com> ä¸æ–‡ç‰ˆç¿»è¯‘者: 王文虎 Wang Wenhu <wenhu.wang@vivo.com> ä¸æ–‡ç‰ˆæ ¡è¯‘者: 王文虎 Wang Wenhu <wenhu.wang@vivo.com> =========================================== virtiofs: virtio-fs 主机<->客机共享文件系统 =========================================== - Copyright (C) 2020 Vivo Communication Technology Co. Ltd. ä»‹ç» ==== Linuxçš„virtiofs文件系统实现了一个åŠè™šæ‹ŸåŒ–VIRTIO类型“virtio-fsâ€è®¾å¤‡çš„驱动,通过该\ 类型设备实现客机<->主机文件系统共享。它å…许客机挂载一个已ç»å¯¼å‡ºåˆ°ä¸»æœºçš„目录。 客机通常需è¦è®¿é—®ä¸»æœºæˆ–者远程系统上的文件。使用场景包括:在新客机安装时让文件对其\ å¯è§ï¼›ä»Žä¸»æœºä¸Šçš„æ ¹æ–‡ä»¶ç³»ç»Ÿå¯åŠ¨ï¼›å¯¹æ— 状æ€æˆ–临时客机æä¾›æŒä¹…å˜å‚¨å’Œåœ¨å®¢æœºä¹‹é—´å…±äº«ç›®å½•ã€‚ 尽管在æŸäº›ä»»åŠ¡å¯èƒ½é€šè¿‡ä½¿ç”¨å·²æœ‰çš„网络文件系统完æˆï¼Œä½†æ˜¯å´éœ€è¦éžå¸¸éš¾ä»¥è‡ªåŠ¨åŒ–çš„é…ç½®\ æ¥éª¤ï¼Œä¸”å°†å˜å‚¨ç½‘络暴露给客机。而virtio-fs设备通过æä¾›ä¸ç»è¿‡ç½‘络的文件系统访问文件\ 的设计方å¼è§£å†³äº†è¿™äº›é—®é¢˜ã€‚ å¦å¤–,virto-fs设备å‘挥了主客机共å˜çš„优点æ高了性能,并且æ供了网络文件系统所ä¸å…·å¤‡ 的一些è¯ä¹‰åŠŸèƒ½ã€‚ 用法 ==== 以``myfs``æ ‡ç¾å°†æ–‡ä»¶ç³»ç»ŸæŒ‚载到``/mnt``: .. code-block:: sh guest# mount -t virtiofs myfs /mnt 请查阅 https://virtio-fs.gitlab.io/ 了解é…ç½®QEMUå’Œvirtiofsd守护程åºçš„详细信æ¯ã€‚ 内幕 ==== 由于virtio-fs设备将FUSEåè®®ç”¨äºŽæ–‡ä»¶ç³»ç»Ÿè¯·æ±‚ï¼Œå› æ¤Linuxçš„virtiofs文件系统与FUSEæ–‡\ 件系统客户端紧密集æˆåœ¨ä¸€èµ·ã€‚客机充当FUSE客户端而主机充当FUSEæœåŠ¡å™¨ï¼Œå†…æ ¸ä¸Žç”¨æˆ·ç©º\ 间之间的/dev/fuse接å£ç”±virtio-fs设备接å£ä»£æ›¿ã€‚ FUSE请求被置于虚拟队列ä¸ç”±ä¸»æœºå¤„ç†ã€‚主机填充缓冲区ä¸çš„å“应部分,而客机处ç†è¯·æ±‚的完æˆéƒ¨åˆ†ã€‚ å°†/dev/fuseæ˜ å°„åˆ°è™šæ‹Ÿé˜Ÿåˆ—éœ€è¦è§£å†³/dev/fuse和虚拟队列之间è¯ä¹‰ä¸Šçš„差异。æ¯æ¬¡è¯»å–\ /dev/fuse设备时,FUSE客户端都å¯ä»¥é€‰æ‹©è¦ä¼ 输的请求,从而å¯ä»¥ä½¿æŸäº›è¯·æ±‚优先于其他\ 请求。虚拟队列有其队列è¯ä¹‰ï¼Œæ— 法更改已入队请求的顺åºã€‚在虚拟队列已满的情况下尤 å…¶å…³é”®ï¼Œå› ä¸ºæ¤æ—¶ä¸å¯èƒ½åŠ 入高优先级的请求。为了解决æ¤å·®å¼‚,virtio-fs设备采用“hiprioâ€\ (高优先级)虚拟队列,专门用于有别于普通请求的高优先级请求。