我可以在 /dev 下跨主機共享設備嗎?
這是情況。我在 VMware 伺服器上有一個影片設備
/dev/video0
,我想從虛擬機中訪問這個設備。但是無論出於何種原因,我都無法將設備直接連接到虛擬機,它必須連接到主機。由於在 unix 哲學下一切都只是一個文件,我可以
/dev
在兩台主機之間使用 NFS、Samba、sshfs 或其他協議共享一個設備,以便一台伺服器上的 linux 可以訪問另一台伺服器上的設備嗎?
不。
您可以通過 NFS 或其他一些網路文件系統導出設備文件。但是設備文件的含義取決於你打開它的機器。如果您
/dev/video0
通過 NFS 從伺服器機器導出到客戶端機器,則客戶端機器只會看到“字元設備 81:0”,並將其解釋為自己的影片擷取設備。客戶端機器甚至不需要與伺服器分配相同的設備編號;例如,OpenBSD 客戶端會看到與偽終端驅動程序相同的文件,因為這就是 OpenBSD 下的 char 81:0。您所要求的將非常好,但也非常困難。客戶端上的每個請求都必須轉發到伺服器,反之亦然。必須對個別驅動程序提供特定支持。例如,一些驅動程序依賴於程序和核心之間的共享記憶體,並且在許多情況下通過網路透明地支持將是困難的並且非常昂貴。我不知道影片擷取驅動程序是否使用共享記憶體,但鑑於它可能會非同步傳輸大量數據,我希望它會。
Linux 對網路塊設備有一些特定的支持。它們不依賴網路文件系統;設備文件僅存在於客戶端上,伺服器上的守護程序模擬物理塊設備(它可能會中繼與真實物理設備之間的操作,但通常它會讀取和寫入圖像文件)。
您應該尋找特定於影片擷取的解決方案。嘗試在物理設備所連接的機器上執行盡可能多的數據密集型部分。或者找一個支持從虛擬機內部直接訪問物理設備的虛擬機解決方案(我不知道是否有任何主機/訪客解決方案,基於管理程序的解決方案更有可能)。