將檔案從虛擬機器傳輸至主機的最有效方法

虛擬機器具備許多優勢,例如靈活性、資源的合理運用,以及能在隔離環境中運作。在虛擬環境中,常見的任務之一就是在虛擬機器與主機之間複製檔案。請繼續閱讀,了解如何將檔案從主機複製到虛擬機器、如何將檔案從虛擬機器傳輸至主機,以及如何在虛擬機器之間複製檔案。

NAKIVO for VMware vSphere 備份

NAKIVO for VMware vSphere 備份

為 VMware vSphere 虛擬機器提供全面資料保護及快速還原選項。支援本地、異地及雲端的備份目標。具備防勒索軟體功能。

環境的組成部分

首先,讓我們來了解相關術語:

  • A 主機 是一台安裝了虛擬管理程式的實體機器。
  • A 虛擬機器管理程式 是一種用於在主機上執行虛擬機器的虛擬化軟體。超監控程式主要分為兩種類型:
    • 類型 1:使用 ESXi 伺服器,即主機
    • 類型 2:使用 VMware 工作站,在此使用情境下,主機系統的作業系統可以是 Windows 或 Linux

在本操作指南中,用於說明如何將檔案從虛擬機器傳輸至主機的環境由以下元件組成:

  • ESXi 主機 1:192.168.101.201
  • ESXi 主機 2:192.168.101.202
  • Ubuntu Linux 電腦:192.168.101.210
  • 安裝了 VMware 工作站的 Windows 主機
  • 網路:192.168.101.0/24
  • 連接到同一網路的 ESXi 虛擬機器與 VMware 工作站虛擬機器

我們使用以下技術在虛擬機器與主機之間複製檔案:

  • 共用資料夾
  • 共用剪貼簿與拖放 & 放下
  • USB 儲存裝置
  • PowerCLI
  • SSH 與 SCP
  • NFS 共用
  • 在 VMware 網頁介面中下載/上傳檔案
  • ISO 檔案

使用共用資料夾將虛擬機器檔案傳輸至主機

共用資料夾 這是 VMware Workstation 的特點,可讓您在安裝了 VMware Workstation 的 Windows 或 Linux 實體主機,以及在 VMware Workstation 上運行的虛擬機器之間傳輸檔案。對於 macOS 系統,VMware Fusion 相當於 VMware Workstation,並支援類似的功能。

現在,讓我們來了解如何使用 VMware 共用資料夾,在虛擬機器與主機之間傳輸檔案。

註: 要讓此特點正常運作, VMware Tools 必須安裝在虛擬機器上。主機與虛擬機器之間的資料傳輸,是透過 VMware Tools 在主機與客體作業系統之間進行互動,而無需使用網路。

  1. 請選擇您要為其設定 VMware 檔案分享的虛擬機器。我們選擇其中一台 Windows 虛擬機器。
  2. 點擊 VM > Settings 在 VMware Workstation 工作站圖形使用者介面中 (編輯虛擬機器設定)。
  3. Virtual Machine Settings 視窗中,選取 Options 按一下"分頁"並點擊 Shared Folders. 在 Folder sharing 區段,選擇 Always enabled. 若需更方便的使用體驗,您可勾選此核取方塊,將共用資料夾在 Windows 虛擬機器中映射為網路磁碟機進行網路對應。
  4. 點擊 Add 選擇一個要作為共用資料夾的資料夾。

    VMware sharing folder – how to enable shared folders in VMware Workstation

  5. 請輸入主機上要分享的資料夾路徑,或點擊 Browse 並選取所需的資料夾。我們選取 C:tempshare-VM

    請輸入共用資料夾的名稱,例如: share-VM

    點擊 Next.

    VMware file sharing – configuring shared folders in VMware Workstation

  6. 選擇 Enable this share. 若要讓虛擬機器以唯讀模式存取共用資料夾,請選取 Read-only 核取方塊。點擊 Finish.

    VMware sharing folder in VMware Workstation and enabling this share

  7. 新建立的共用資料夾現在已顯示在 Options 的""分頁 Virtual machine settings 視窗。若檔案名稱旁的對應核取方塊被勾選,則表示該共用資料夾已啟用。

    點擊 OK 以儲存設定。

    VMware sharing folder – a shared folder is created

  8. 開啟用於與 Shared folders 特點.
  9. 點擊 Network (My Network Places) 在 My Computer (This PC) 或 Windows 檔案總管,以查看網路上可用的電腦。
  10. 選擇 vmware-host 作為配置共用資料夾的電腦名稱。此名稱為預設設定,並會與您的實體電腦(主機)及其上的共用資料夾建立對應關係。

    How to access a shared folder to copy VMware virtual machine files

  11. 點擊 Shared Folders 並選取所需的共用資料夾 (share-VM (在我們的範例中)。在此情況下,共用資料夾的完整路徑為

    vmware-hostShared Foldersshare-VM

您可以將檔案從主機複製到虛擬機器,也可以將檔案從虛擬機器複製到主機。我們已經複製了 Test01.txt 在本範例中,我們將透過 VMware Workstation 的檔案分享功能,將檔案從 Windows 主機傳輸至 Windows 虛擬機器。

VMware transfer files from a VMware VM using a shared folder

對於 Linux 虛擬機器,您可以使用以下命令掛載所有 VMware 共用資料夾:

  • 在 Linux 系統中,若使用 4.0 之前的內核:

    mount -t vmhgfs .host:/ /home/user1/shares

  • 在採用 4.0 或更新版本核心的 Linux 系統中:

    /usr/bin/vmhgfs-fuse .host:/ /home/user1/shares -o subtype=vmhgfs-fuse,allow_other

若您希望在虛擬機器重新啟動後仍保持共用資料夾掛載,請根據註解和設定內容,在 /etc/fstab 例如:

#

透過 VMware 檔案分享在 VMware 虛擬機器與主機之間傳輸檔案

.host:/ /mnt/hgfs/ fuse.vmhgfs-fuse defaults,allow_other,uid=1000 0 0

在進入下一節之前,請注意,共用資料夾特點僅在 VMware 工作站中提供(以及 macOS 上的 VMware Fusion),且此功能不適用於在 ESXi 主機上執行的虛擬機器。對於 ESXi 主機,您可以手動共享資料夾,並透過網路在 Windows 電腦之間複製檔案。若要將檔案從虛擬機器複製到 ESXi 主機,您應使用額外的工具,或結合從手動共享的資料夾複製檔案與以下所述的方法之一。

還有其他方法可用於 在 Windows 10 中分享資料夾 以及 Windows Server 2019. 您也可以進一步了解 SMB 檔案分享 協定。

如果您擁有具備管理員權限的 Windows 帳戶,且安全性原則允許存取預設可用的隱藏管理共用,則可透過以下共用路徑存取 Windows 電腦上的本地磁碟檔案:

IP-Addressc$

地點:

IP-Address 是遠端 Windows 電腦的 IP 位址或主機名稱。

C$ 是遠端 Windows 電腦上所需磁碟機代號,該磁碟機為隱藏的系統共用資料夾。

使用共用剪貼簿將檔案從主機傳輸至虛擬機器

"共用剪貼簿"是一項特點,可讓您將文字或整個檔案等內容從虛擬機器複製並貼上至安裝了 VMware Workstation 的主機。此流程類似於在 Windows 或 Linux 系統中,透過圖形使用者介面(GUI)在不同應用程式視窗之間進行複製貼上。

完整特點請參閱 VMware 工作站,此功能可讓您將檔案從主機傳輸至虛擬機器,或從虛擬機器傳輸至主機。您也可以透過拖放檔案,取代傳統的複製貼上操作。

VMware 工作站 中的共用剪貼簿

讓我們來看看如何透過共用剪貼板和拖放功能,將檔案傳輸至 VMware Workstation 虛擬機器 & 刪除。在我們的範例中,VMware 工作站安裝在 Windows 主機上。

  1. 請在左側窗格中(該處列出了所有虛擬機器)選取您的虛擬機器。
  2. 點擊 Edit virtual machine settings (VM > Settings).

    Opening virtual machine settings

  3. 請選擇 Options 按一下"分頁"並點擊 Guest Isolation.

    請勾選兩個核取方塊:

    • Enable drag and drop
    • Enable copy and paste

    點擊 OK 以儲存設定並關閉視窗。

    Enabling shared clipboard and drag & drop to transfer files to VMware VMs

VMware ESXi 中的共用剪貼簿

至於在 VMware ESXi 上運行的虛擬機器,您無法透過拖放來複製任何檔案 & 透過拖放或共用剪貼板,在 ESXi 主機上的虛擬機器與任何其他電腦之間傳輸。唯一的選項是在 ESXi 上運行的虛擬機器與您的本地電腦(安裝了 VMware 工作站或 VMware 遠端主控台 已安裝)。複製貼上及拖曳 & 基於安全考量,不支援直接拖放檔案。

不過,如果您無法複製設定檔(例如),可以透過共用剪貼簿複製該檔案的文字內容。預設情況下,ESXi 虛擬機器設定中會停用共用剪貼簿。請在 ESXi 主機上執行以下操作,以啟用共用剪貼簿並複製貼上文字資料:

  1. 編輯虛擬機器設定時,必須先關閉虛擬機器的電源。若虛擬機器正在運行,請先將其關機。
  2. 開啟 VM settings. 您可以使用 VMware Host Client 和 VMware vSphere Client。選取一台虛擬機器,然後按一下 Edit VM settings 並選取 VM options 分頁。

    展開 Advanced Settings 該區段並點擊 Edit Configuration.

    Advanced VM configuration to enable shared clipboard in ESXi

  3. 您需要在虛擬機器設定中新增三個設定參數(這些參數會寫入虛擬機器的 VMX 設定檔)。請按一下 Add parameter.

    Enabling shared clipboard for a VM on VMware ESXi

  4. 請新增以下三個參數:

    isolation.tools.copy.disable FALSE

    isolation.tools.paste.disable FALSE

    isolation.tools.setGUIOptions.enable TRUE

  5. 點擊 OK 並儲存設定。

    Configuration parameters to enable shared clipboard are added

此外,您也可以手動編輯位於 ESXi 資料存放區中 VM 目錄內的 VMX 檔案(該檔案包含虛擬機器設定)。

  1. 請透過本地端或 SSH 登入 ESXi 命令列介面。
  2. 前往虛擬機器目錄(即資料存放區中存放虛擬機器檔案的目錄)。在本例中,我們前往以下目錄:

    cd /vmfs/volumes/datastore10a/Windows-VM/

    Locating a VMX configuration file of the VM to enable a shared clipboard

  3. 編輯 VMX 設定檔。在我們的情況下,該檔案是 Windows-VM.vmx

    vi Windows-VM.vmx

  4. 請將上述三個參數新增至此設定檔的末尾。
  5. 儲存變更並關閉檔案(退出文字編輯器)。

    Adding configuration parameters to a VMX file to enable shared clipboard for a VM on an ESXi host

現在,我們可以透過 VMware Remote Console 和 VMware 工作站連線至虛擬機器,在本地端電腦與運行於 ESXi 主機上的遠端虛擬機器之間複製並貼上文字。

使用 USB 儲存裝置

VMware ESXi 和 VMware 工作站支援 USB 直通特點,此特點可讓您將 USB 裝置插入主機,並將該 USB 裝置連接到在此主機上運行的虛擬機器。您可以依序將 USB 儲存裝置連接到主機和虛擬機器,以便在這些機器之間雙向複製檔案。

註: 若要使用 USB 直通特點,必須在虛擬機器 (VM) 的客體作業系統 (OS) 上安裝 VMware Tools。

在 VMware 工作站虛擬機器與主機之間複製檔案

請依照以下步驟,在安裝於 Windows 或 Linux 主機上的 VMware 工作站中將檔案從虛擬機器傳輸至主機(介面設計統一):

  1. 開啟虛擬機器。
  2. 將 USB 儲存裝置(例如 USB 硬碟或 USB 隨身碟)插入作為主機的實體電腦中。
  3. New USB Device Detected 視窗將在 VMware 工作站中開啟。請選擇您要連接 USB 裝置的位置:
    • 連線至主機
    • 連線至虛擬機器

    現在我們選擇第二個選項,並將 USB 隨身碟連接至虛擬機器。本範例中,我們正在執行一台 Windows 虛擬機器。若 VMware 工作站上同時執行多台虛擬機器,您必須從清單中選取所需的虛擬機器。USB 裝置一次只能連接至一台虛擬機器。點擊 OK 繼續。

    How to transfer files to virtual machines by using a USB storage device

    如果您的 USB 儲存裝置已插入安裝了 VMware 工作站的實體主機的 USB 埠,系統將不會自動顯示包含 USB 直通選項的彈出視窗。您可以在選單中將 USB 裝置連接到虛擬機器(並從主機斷開連接):

    前往 VM > Removable Devices > Your USB Storage Device Name > Connect (Disconnect from host).

    在我們的範例中,USB 隨身碟的名稱為 Kingston DataTraveler 2.0。

    Connecting a USB flash drive to a VM to copy files between a host and VM

  4. 現在,我們可以在"我的電腦"(Windows 檔案總管)的磁碟機清單中看到已連接至 Windows 7 虛擬機的 USB 隨身碟。要檢查 USB 儲存裝置:
    • 右鍵點擊 My Computer 並點擊 Manage.
    • 前往 Computer Management > Device Manager and Computer Management > Disk Management 在右鍵點擊後,於相應的套入式模組中。

    如果磁碟機代號未自動指派,請在 Disk Management 快拆式。

    Linux 虛擬機的工作流程完全相同。在某些 Linux 發行版中,您可能需要在 Linux 作業系統中手動掛載已連接的 USB 儲存裝置(例如隨身碟)。

  5. 一旦 USB 儲存裝置已掛載至虛擬機器並被客體作業系統識別,請將所需檔案從虛擬機器複製到 USB 儲存裝置。目前,將檔案從 USB 儲存裝置複製到虛擬機器的功能亦已正常運作。

    A USB flash drive is connected to a VM

  6. 將所有所需檔案從虛擬機器複製到 USB 隨身碟後,請將 USB 隨身碟從虛擬機器拔除,並將此 USB 裝置連接至主機:

    點擊 VM > Removable Devices > Your USB Storage Device Name > Disconnect (Connect to host).

    How to transfer files from VM to host – disconnecting a USB flash drive from a VM

  7. 目前已將 USB 儲存裝置連接至主機(在本例中,是指執行 VMware Workstation 的 Windows 電腦)。我們可以將從虛擬機器複製到 USB 隨身碟的檔案傳輸至您的主機。

從 VMware 工作站將 USB 裝置傳輸至 ESXi 虛擬機器

您可以將 USB 隨身碟插入 ESXi 伺服器,並將該隨身碟插入您用於遠端管理 ESXi 主機的本地 Windows 或 Linux 電腦(需已安裝 VMware 工作站或 VMware Remote Console (VMRC)),藉此將此 USB 隨身碟連接到 ESXi 虛擬機器。在第一種情況下,該 連接至主機 此處採用 USB 直通功能,而在第二種使用情境下,該 已連線至客戶端 使用 USB 直通特點。

讓我們將插入本地實體 Windows 10 電腦的 USB 隨身碟,連接到運行於 ESXi 主機 v7.0 上的 Windows XP 虛擬機器(使用"客戶端連接的 USB 直通"特點)。我們的實體 Windows 電腦已安裝 VMware Workstation,並透過網路(192.168.101.0/24)連接到 ESXi 主機。

操作步驟如下:

  1. 若要編輯虛擬機器設定,必須先關閉該虛擬機器的電源。
  2. 請確保 USB controller 已出現在虛擬機器的虛擬硬體清單中。您可以在 VMware Host Client 中查看虛擬機器的設定。選取您的虛擬機器(Windows-VM (在我們的情況下),請點擊 Edit Settings 並選取 Virtual Hardware 分頁。

    A USB controller must be present on a VM to transfer files to virtual machine with a USB flash drive

  3. 讓我們回到安裝在本地(實體)Windows 10 電腦上的 VMware 工作站。點擊 File > Connect to a server 在 VMware 工作站中用於連線至遠端 ESXi 主機。

    Connecting to a remote ESXi server

  4. 輸入 ESXi 伺服器名稱或 IP 位址、使用者名稱及密碼。點擊 Connect.

    Connecting to a remote ESXi host – entering credentials

  5. 在 VMware Workstation 的左側窗格中展開 ESXi 主機,該處會顯示遠端主機、這些主機上的遠端虛擬機器,以及本機的 VMware Workstation 虛擬機器。
  6. 選擇一台在遠端 ESXi 主機上運行的虛擬機器。我們選擇 Windows-VM 持續運行 192.168.101.201. 隨後,我們將看到所選虛擬機器中客體作業系統的使用者介面。
  7. 點擊 VM > Removable Devices > Your USB Storage Device Name > Connect (Disconnect from Host).

    請注意,我們選擇的是連接至安裝了 VMware 工作站的實體 Windows 電腦上的 USB 裝置。此 USB 裝置並非連接至我們已遠端連線的實體 ESXi 主機上的裝置。

    Connecting a USB flash drive to a VM running on an ESXi host using client-connected USB passthrough

  8. 現在,我們可以看到我們的 USB 隨身碟已連接到在遠端 ESXi 主機上執行的 Windows XP 虛擬機器: Start > CMD > compmgmt.msc > Device Manager.

    A USB flash drive is connected to a VM running on an ESXi host and is ready to copy files

  9. 如果尚未為已連接的 USB 隨身碟分區指派磁碟機代號,請為其指派一個磁碟機代號。在虛擬機器與 USB 隨身碟之間複製所需的檔案。您可以將檔案傳輸至虛擬機器,也可以從虛擬機器傳輸檔案。

    Using a USB flash drive to transfer files from VM to host

  10. 複製完檔案後,您可以將 USB 儲存裝置從虛擬機器中拔除,並將該裝置重新連接回正在執行 VMware 工作站的本地實體 Windows 10 電腦。在 VMware 工作站圖形使用者介面中,請按一下 VM > Removable Devices > Your USB Storage Device Name > Disconnect (Connect to host).

在 ESXi 上連接 USB 隨身碟

在某些使用情境下,此方法極為實用,例如當您需要在 ESXi 主機上更新網路驅動程式,卻無法使用網路時。將 USB 隨身碟連接至 ESXi 的步驟,比連接至執行 VMware 工作站的主機更為複雜。

ESXi 對於可掛載至系統的支援檔案系統存在限制。採用 FAT32 和 NTFS 檔案系統的 USB 隨身碟或 USB 硬碟均不被支援。 因此,我們需要在 USB 隨身碟上建立一個分割區,並將該分割區格式化為 VFAT(Windows 系統中識別為 FAT12)。VFAT 存在某些限制,例如最大分割區大小與最大檔案大小。因此,此方法不適用於大型檔案,例如超過 4 GB 的虛擬磁碟或 ISO 映像檔。不過,這些限制對於傳輸設定檔、驅動程式等檔案已綽綽有餘。

在 USB 隨身碟上建立分割區

首先,讓我們在 USB 隨身碟上建立一個新分割區,並將該分割區格式化為 VFAT。我們可以透過將插入 ESXi 伺服器的 USB 隨身碟連接至虛擬機器(使用"主機連接的 USB 直通"特點)來執行此操作。 或者,我們也可以將 USB 隨身碟插入實體的 Windows 或 Linux 電腦中。

在此範例中,我們使用 Windows 7 電腦來為 ESXi 準備 USB 隨身碟。Windows Server 2008 R2、Windows 10 及其他較新版本的 Windows 系統,其指令皆相同。

  1. 若要確認 USB 隨身碟是否已連接至您的 Windows 電腦,請按右鍵 My Computer This PC (或執行 diskmgmt.msc (透過 CMD)開啟 Disk Management.
  2. 開啟 Windows 命令提示字元:

    Start > Run > cmd

  3. 類型 diskpart 在命令列中輸入並按下 Enter.

    您會看到一個 diskpart 提示符:

    Diskpart

  4. 列出連接至您的 Windows 電腦的磁碟:

    list disk

    請在輸出清單中找出您的 USB 隨身碟,並記下磁碟編號。在本例中, Disk 1 這是我們的 USB 隨身碟編號(請參閱下方的螢幕截圖)。

  5. 請根據上述指令的輸出結果,指定對應的磁碟編號來選取您的 USB 隨身碟(disk 1 (就我們的情況而言)。

    select disk 1

  6. 列出選取的 USB 隨身碟上的分割區:

    list partition

    我們有一個分割區(Partition 1) 存放在我們的 USB 隨身碟中(請參閱下方的螢幕截圖)。USB 隨身碟上僅有一個分割區是最常見的情況。

    Listing disks to identify a USB flash drive that can be used to copy files from a VM to an ESXi host

    接下來,我們需要刪除 USB 隨身碟上的分割區。

    重要: USB 隨身碟中的所有資料都將被刪除。如有需要,您可以在進行下一步操作之前,先將隨身碟中的資料備份出來。

  7. 請選取 USB 隨身碟上即將被刪除的分區:

    select partition 1

  8. 執行以下指令以刪除選定的分割區:

    delete partition

  9. 請再次選擇您的 USB 隨身碟:

    select disk 1

    Selecting the first partition on a USB flash drive in Diskpart

  10. 建立一個採用 VFAT 檔案系統的新分割區。在此範例中,我們將在 USB 隨身碟上建立一個 4 GB 的分割區。請注意,VFAT 無法儲存大於 4 GB 的檔案。此外,請留意 VFAT 僅支援 8.3 格式檔名。

    create partition primary size=4000 id=6

  11. 請按照以下方式格式化所建立的分區,以確保與 ESXi 相容:

    format fs=fat quick

    Formatting a partition in VFAT transfer files from VM to host (ESXi)

  12. 退出 diskpart 工具(執行 exit (指令)。

USB 隨身碟已準備就緒,可供 ESXi 識別並進行檔案複製。完成一些額外的 ESXi 設定步驟後,即可將 USB 隨身碟掛載至虛擬機器,並將所需檔案複製到 USB 隨身碟中。

假設我們需要複製一個包含驅動程式的 ZIP 壓縮檔。在本範例中,我們已將 net-tulip.zip 複製到 USB 隨身碟中。接下來,我們需要在 ESXi 命令列中掛載插入 ESXi 伺服器中的 USB 隨身碟分區。

設定 ESXi 主機以使用 USB 隨身碟

假設我們需要將一個包含驅動程式的 ZIP 壓縮檔從 USB 隨身碟複製到 ESXi 資料存放區,然後將一個虛擬機器設定檔從 ESXi 資料存放區複製到 USB 隨身碟。檔案名稱是 net-tulip.zip 在我們的範例中,請在 ESXi 主機上執行以下操作,將檔案從 USB 隨身碟傳輸至 VMware ESXi,並進行反向傳輸:

  1. 設定是在 命令列介面. 因此,您必須在 ESXi 主機.
    • 要在 DCUI 中啟用遠端 SSH 存取,請前往 Troubleshooting options > Enable SSH.
    • 要在 VMware Host Client 中啟用 ESXi 上的遠端 SSH 存取及 SSH 伺服器,請前往 Host > Manage 並選取 Services 標籤。右鍵點擊 TSM-SSH 然後點擊 Start 以啟動此服務。您可以永久啟用此服務。

    Starting the SSH server service on an ESXi host to allow remote management in the command line

  2. 透過 SSH 連線至 ESXi 主機以使用命令列介面。您可以使用您慣用的 SSH 客戶端。
  3. 停止 USB 仲裁服務:

    /etc/init.d/usbarbitrator stop

    USB 仲裁器會自動為位於 ESXi 主機上的虛擬機器啟用 USB 直通特點(您只需在對應虛擬機器的設定中選取 USB 隨身碟,即可使用此特點)。

  • 若您希望在 ESXi 重新啟動後(永久性地)停用 USB 仲裁服務,可使用以下指令:

    chkconfig usbarbitrator off

    若要啟用 USB 仲裁器服務,請使用以下適當的指令:

    /etc/init.d/usbarbitrator start

    chkconfig usbarbitrator on

  1. 用於檢查連接至 ESXi 主機的 USB 裝置的可選指令:

    lsusb

    esxcli storage core device list | grep -i usb

    esxcli storage filesystem list

    你可以看到 /var/log/usb.log 查看 USB 裝置的狀態。

  2. 停止 USB 仲裁服務後,您可能需要先拔除 USB 儲存裝置,然後再重新連接。
  3. 列出區塊儲存裝置,以找出/識別已連接的 USB 隨身碟(或 USB 硬碟)。

    ls -ltrh /vmfs/devices/disks/

    我們的 USB 隨身碟是 mpx.vmhba32:C0:T0:L0: (請參閱下方的螢幕截圖)。

    因此,完整的磁碟位址/位置為:

    /dev/disks/mpx.vmhba32:C0:T0:L0:

    Viewing disk devices connected to an ESXi host to identify a USB flash drive

  4. 請檢查 USB 裝置的分區編號,以確認您已識別出正確的磁碟裝置:

    ls /dev/disks/mpx.vmhba32:C0:T0:L0:*

    根據輸出結果,完整的裝置識別碼(在我們的情況下已包含分割區編號)為:

    /dev/disks/mpx.vmhba32:C0:T0:L0:1

  5. 請找到 USB 隨身碟的根目錄位置,以設定複製檔案的來源/目標路徑。執行以下指令並按下 Tab 查看 volumes 目錄中的可用項目。該 /volumes/ ESXi 檔案系統的目錄是指用於掛載具備檔案系統的分區的目錄。

    ls -al /vmfs/volumes/ [press Tab]

    USB 隨身碟上的磁碟區稱為 NO NAME

    A USB flash drive connected to an ESXi host has the NO NAME volume label

  6. 檢查 USB 隨身碟根目錄的內容

    ls -al /vmfs/volumes/NO NAME/

    我們的 ZIP 壓縮檔位於 USB 隨身碟的磁碟區中。

    How to transfer files from VM to host using a USB flash drive connected to ESXi

  7. 我們已創建了 install ESXi 資料存放區上的資料夾 (datastore10a) 並輸入以下指令:

    cd /vmfs/volumes/datastore10a

    mkdir install

    在下方的螢幕截圖中,您也可以看到該虛擬機器的目錄,我們稍後將把其設定檔從 ESXi 資料存放區複製到 USB 隨身碟中。

    Selecting a VM file that can be copied to a USB flash drive from an ESXi datastore

  8. 將 ZIP 壓縮檔從 USB 隨身碟複製到 安裝 我們 ESXi 主機上的資料夾(位於 datastore10a).

    cp /vmfs/volumes/NO NAME/net-tulip.zip /vmfs/volumes/datastore10a/install/

  9. 檢查檔案是否已複製:

    ls -al /vmfs/volumes/datastore10a/install/

    檔案已成功複製。

    How to copy file from VM to host in the ESXi command line interface

同樣地,您也可以反向複製檔案——將檔案從 ESXi 複製到 USB 隨身碟,然後從該 USB 隨身碟將所需檔案複製到虛擬機器或另一台電腦上。

  1. 檢查 VM 資料夾的內容:

    ls -al /vmfs/volumes/datastore10a/Windows-VM/

  2. 複製 Windows-VM.vmx 將設定檔從 ESXi 資料存放區複製到 USB 隨身碟:

    cp /vmfs/volumes/datastore10a/Windows-VM/Windows-VM.vmx /vmfs/volumes/NO NAME/

  3. 請確認檔案是否已複製到 USB 隨身碟:

    ls -al /vmfs/volumes/NO NAME/

    Copying a VM file from an ESXi host to a USB flash drive

在 ESXi 主機上完成檔案複製後,您可以彈出 USB 隨身碟,並在 ESXi 主機上啟動 USB 仲裁服務。接著,您可以插入 USB 隨身碟,並利用主機連接的 USB 直通特點,將 USB 隨身碟連接至虛擬機器。

進一步了解 ESXi 的 USB 直通功能 並將插入 ESXi 主機的 USB 儲存裝置連接到該 ESXi 主機上的虛擬機器。

使用 PowerCLI 將檔案傳輸至 VMware 虛擬機器

另一種將檔案從虛擬機器傳輸至主機的方法是使用 PowerCLI 指令 (cmdlets)。VMware Tools 必須安裝在虛擬機器內的客體作業系統中。這些 PowerShell cmdlets 會利用 VMware Tools 將檔案複製到位於 ESXi 主機上的虛擬機器,或從該虛擬機器複製檔案出來。因此,若您在位於來源或目標 ESXi 主機上的虛擬機器內執行指令,則無需透過網路。

若要在虛擬機器之間複製檔案,您可以使用 Copy-VMGuestFile 該 cmdlet 以及 vSphere PowerCLI 中的其他 cmdlet。

  1. 連線至 ESXi 主機或 vCenter Server。在此範例中,我們將連線至 ESXi 主機。

    Connect-VIServer 192.168.101.201

    Connecting to an ESXi host in VMware PowerCLI

  • 若要避免出現憑證警告,請執行以下指令:

    Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

    How to disable a certificate warning in VMware vSphere PowerCLI

複製 VM 來客檔案 (本地 > ESXi 虛擬機器)

請使用以下指令,將檔案從本地端電腦(即執行 PowerCLI 的電腦)複製到 ESXi 主機上的遠端虛擬機器:

Copy-VMGuestFile -Source "c:temptest.txt" -LocalToGuest -VM Windows-VM -Destination "c:temp-VM" -GuestUser user1 -GuestPassword Password

地點:

c:temptest.txt 這是我們想要從本地電腦複製的原始檔案

-LocalToGuest 是指從本地主機到運行於 ESXi 上的目標虛擬機器中的客體作業系統的方向

-VM Windows-VM 這是目標虛擬機器名稱的定義

c:temp-VM 是目標虛擬機器上的目標資料夾(我們希望將檔案副本儲存於此處)

user1 是目標虛擬機器 (VM) 上客體作業系統 (OS) 的使用者名稱。此使用者必須具備存取已定義目標資料夾的權限。

Password 是此使用者的密碼。

我們忽略有關 VMware Tools 版本的警告,並檢查我們的 text.txt 檔案已複製完成。

How to copy file to virtual machine in PowerCLI

我們可以看到,我們的 test.txt 大小為 29 位元的檔案已成功複製到運行於 ESXi 主機上的 Windows XP 虛擬機器中。

A file has been copied to a VMware VM

Copy-VMGuestFile (ESXi 虛擬機器 > 本機)

現在,讓我們將一個檔案從虛擬機的客體作業系統複製到執行該指令的電腦的本地目錄中:

Copy-VMGuestFile -Source "c:temp-VMtest2.txt" -GuestToLocal -Destination "c:temp" -VM Windows-VM -GuestUser user1 -GuestPassword Password

地點:

-Source "c:temp-VMtest2.txt" 是運行於 ESXi 上的虛擬機器中,原始檔案的路徑

-GuestToLocal 是指方向(從 ESXi 虛擬機的客體作業系統,指向執行該指令的本地主機)

"c:temp" 是本地電腦上目標資料夾的路徑

user1 是目標虛擬機器上客體作業系統中的使用者名稱。此使用者必須具備存取已定義目標資料夾的權限。

Password 是此使用者在客體作業系統中的密碼

How to copy a file from a virtual machine in PowerCLI

您可以查看使用該功能的範例 Copy-VMGuestFile 使用以下指令的 cmdlet:

get-help Copy-VMGuestFile -examples

使用 Copy-DatastoreItem

Copy-DatastoreItem PowerShell cmdlet 可用於將檔案複製到 ESXi 資料存放區,或從該資料存放區複製檔案。使用此 cmdlet 將檔案複製到 VMware ESXi 資料存放區有兩種方法:

  • 如果已在虛擬機器內的 Windows 來賓系統上安裝 PowerCLI,您可以執行指令,將檔案直接從 ESXi 資料存放區複製到虛擬機器,反之亦然。
  • 如果您無法在位於 ESXi 主機上的虛擬機器上安裝 PowerCLI,您可以從本地的 Windows 電腦執行 PowerCLI 指令,並使用資料存放區中的檔案將其複製到本地的電腦上 Copy-VMGuestFile 指令,然後將這些檔案從您的本地電腦複製到一個具有 Copy-VMGuestFile.

您必須已連線至 ESXi 伺服器或 vCenter Server。您可以透過以下指令執行此操作:

ViConnect

我們已直接連線至 ESXi 主機。

現在,讓我們將虛擬機器配置檔從資料存放區複製到當前的 Windows 電腦(即執行這些指令的電腦——這台電腦也可以是 ESXi 主機上的虛擬機器):

  1. 取得資料存放區的相關資訊:

    Get-Datastore "datastore10a"

  2. 取得 ESXi 資料存放區物件:

    $datastore = Get-Datastore "datastore10a"

  3. 建立一個新的 PowerShell 磁碟機,並命名為 ds: 對應至 $datastore:

    New-PSDrive -Location $datastore -Name ds -PSProvider VimDatastore -Root ""

  4. 將您的資料存放區設為當前位置:

    Set-Location ds:

  5. 若要列出選定目錄中的檔案和目錄,請使用以下指令:

    Get-ChildItem

    Preparing to copy files from an ESXi host

  6. 您可以將 VM 目錄設定為新的位置。在我們的情況下,此目錄是 Windows-VM

    Set-Location "Windows-VM"

  7. 將虛擬機器檔案(即虛擬機器配置 VMX 檔案)從指定的 ESXi 資料存放區複製到當前機器上的暫存資料夾的指令:

    Copy-DatastoreItem -Item ds:Windows-VMWindows-VM.vmx -Destination c:temp

    地點:

    ds:Windows-VMWindows-VM.vmx 是必須複製的檔案路徑,以及 ds: 是通往資料存放區的預設捷徑(datstore10a (在此情況下)。

    Copying a file from an ESXi datastore in PowerCLI

  • 如果您已連線至 vCenter(而非如本範例中所示連線至特定的 ESXi 主機),您可以使用以下指令,並指定 vCenter 資料中心中的某個資料存放區,將檔案從 ESXi 資料存放區複製到本機電腦上的某個資料夾:

    Copy-DatastoreItem vmstore:Datacenter1datastore10aWindows-VMWindows-VM.vmx c:temp

  • 若要將檔案複製至反方向(透過連線至 ESXi 主機),請使用以下指令:

    Copy-DatastoreItem -Item c:tempdarwin.iso -Destination ds:install

    我們複製 darwin.iso (這是一張顯示 VMware Tools 的圖片) macOS) 從 Windows 電腦複製到 ESXi 資料存放區中的安裝目錄。

    Copy file to VMware ESXi datastore in PowerCLI

  • 如果您已連線至 vCenter,可以使用此指令將檔案從本機 Windows 電腦複製到遠端 ESXi 主機上的資料存放區:

    Copy-DatastoreItem c:tempdarwin.iso -Destination vmstore:Datacenter1datastore10ainstall

您可以使用這些 PowerCLI 指令,並建立 PowerShell 腳本,將檔案從虛擬機器傳輸至主機,反之亦然。

在 VMware 工作站中將檔案從虛擬機器複製到主機的指令

如果您在 Windows 或 Linux 主機上使用 VMware 工作站(這是一種第 2 類虛擬化程式),或在 macOS 上使用 VMware Fusion,您也可以透過命令列介面將檔案從虛擬機器複製到主機,反之亦然。您可以使用 vmrun 用於管理虛擬機器的命令列工具。其命令語法在 Windows、Linux 和 macOS(VMware Fusion)上均相同。本教學將使用安裝於 Windows 10 系統上的 VMware Workstation 15。

  1. 前往 VMware 工作站目錄:

    cd "C:Program Files (x86)VMwareVMware Workstation"

  2. 請使用以下指令,將虛擬機器內客體作業系統中的檔案複製到本機 Windows 主機:

    CopyFileFromHostToGuest

    在我們的情況下,確切的指令是:

    vmrun copyFileFromGuestToHost d:virtualWinServer2019WinServer2019.vmx "c:temptest.txt" "c:tempcopied"

  3. 系統提示時,請輸入此使用者的使用者名稱及密碼(該使用者必須具備足夠的權限才能存取所指定的檔案)。

    地點:

    d:virtualWinServer2019WinServer2019.vmx 這是虛擬機器的虛擬磁碟,我們將從中複製該檔案。

    c:temptest.txt 是一個儲存於虛擬機器虛擬磁碟上的檔案;這是我們要複製的檔案。

    c:tempcopied 是一個用於在主機上儲存檔案副本的目錄。

    請務必使用反斜線 設定路徑時,請勿使用特殊字元。我們已複製 test.txt 這是一個從虛擬機器傳輸到主機的文字檔。

    此外,您也可以透過在命令中定義憑證來執行該命令:

    vmrun -T ws -gu Administrator -gp Password000 copyFileFromGuestToHost d:virtualWinServer2019WinServer2019.vmx "c:temptest.txt" "c:tempcopied"

    How to transfer files from VM to host by using the vmrun command

若要以反向方式複製檔案(從主機複製到虛擬機器),請使用以下指令:

CopyFileFromHostToGuest

本範例中的具體指令是:

vmrun copyFileFromHostToGuest d:virtualWinServer2019WinServer2019.vmx "c:temptest3.txt" "c:temptest3-copy.txt"

How to copy files to virtual machine by using vmrun

如何使用 SSH 和 SCP 傳輸檔案

SSH(安全外殼)是一種常見的協定,透過加密機制來安全地管理遠端主機。SCP 則是一種依賴 SSH 的協定,用於透過網路安全地複製檔案。您可以使用 SCP 將檔案從虛擬機器傳輸至主機,特別是當虛擬機器上運行的是 Linux 系統時。只需幾個步驟,即可在 Linux 機器和 ESXi 上啟用 SCP 及 SSH 伺服器。

如何在 ESXi 中啟用 SSH 伺服器

若要使用此方法將檔案傳輸至 VMware ESXi 以及從 ESXi 傳輸檔案,必須在 ESXi 主機上啟用 SSH 伺服器服務。

  1. 要在 VMware Host Client 中啟用 SSH 伺服器,請前往 Host > Manage > Services 並開始 TSM-SSH 服務。
  2. 必須在 ESXi 防火牆中啟用 SSH,才能允許 SCP 流量,以便從 ESXi 主機傳輸檔案,以及從該 ESXi 主機使用 SCP 連線至其他機器:
    • 前往 NetworkingNavigator 窗格中,選取 Firewall rules 按一下"標籤"並選擇 SSH Client.
    • 點擊 Actions > Enable 以啟用防火牆規則。

    Enabling SSH access in the ESXi firewall

  3. 若要檢查主機之間的 SSH 連線,您可以在 ESXi 主機上執行此指令:

    nc -z 192.168.101.202 22

    地點:

    192.168.101.202 是遠端主機的 IP 位址。

    22 是 SSH 連線的連接埠號碼(預設連接埠號碼為 22)。

該的通用語法為 scp 透過 SCP 在網路上複製檔案的指令:

scp [OPTION] [user]@[SRC_HOST]:path_to_file1 [user]@[DEST_HOST]:path_to_file2

[user]@[SRC_HOST]:path_to_file1 – 一個原始檔案

[user]@[DEST_HOST]:path_to_file2 – 目標檔案

-P 指定 SSH 連線的埠號(若埠號非 22,請使用此參數)。

以下將針對實際應用中的具體範例進行說明。

如何透過 SCP 將本機檔案複製到遠端電腦

若要透過 SCP 將本機檔案複製到遠端電腦,請使用類似以下的指令:

scp file.txt remote_username@remote_host_ip:/remote/directory

來自 Linux

我們來複製 LinuxDir.txt 使用 SCP 透過網路將檔案從本地的 Ubuntu Linux 電腦(也可以是虛擬機器)傳輸至 ESXi 主機。遠端 ESXi 主機上的目標位置是 install 位於 datastore10a 資料存放區。遠端 ESXi 主機的 IP 位址是 192.168.101.201.

在本例中,將檔案從本地 Linux 電腦複製到遠端 ESXi 主機的指令是:

scp LinuxDir.txt root@192.168.101.201:/vmfs/volumes/datastore10a/install/

How to copy a file to a remote ESXi host via SCP

您可以將複製的檔案以新的檔案名稱儲存至目標電腦:

scp LinuxDir.txt root@192.168.101.201:/vmfs/volumes/datastore10a/install/LinuxDir-copy.txt

請使用 -r 用於複製目錄及其所有內容的選項:

scp -r /local/directory remote_username@192.168.101.201:/remote/directory

來自 ESXi

您可以使用 scp ESXi 主機上的指令。該 scp Linux 與 ESXi 的命令列語法相同。必須在遠端主機上設定 SSH 伺服器。

讓我們登入 ESXi 主機(192.168.101.201) 並複製 install 將該目錄及其所有內容複製到 user1 在遠端 Linux 機器上 (192.168.101.210).

scp -r /vmfs/volumes/datastore10a/install/ user1@192.168.101.210:/home/user1/

How to copy a file from an ESXi host to a remote machine via SCP

如果 SSH 伺服器監聽的端口號碼不是 22,請使用 -P 參數;例如,如果 SSH 埠號是 8022, 該指令是:

scp -P 8022 -r /vmfs/volumes/datastore10a/install/ user1@192.168.101.210:/home/user1/

如何透過 SCP 將檔案從遠端電腦複製到本地電腦

SCP 非常適合將檔案從遠端機器複製到本地機器,這也讓您能夠將檔案從虛擬機器傳輸到主機。以下我們將說明如何在 Linux 和 ESXi 中執行相應的指令。

將檔案複製到本地的 Linux 電腦

我們將使用 SCP 將檔案從遠端 ESXi 主機複製到當前的 Linux 機器上。要執行此操作,請使用類似以下的指令:

scp remote_username@remote_ip_address:/remote/file.txt /local/directory

我們來複製一個 darwin.iso 將遠端 ESXi 伺服器上的檔案傳輸至 Linux 機器上的指定主目錄:

scp root@192.168.101.201:/vmfs/volumes/datastore10a/install/winPreVista.iso /home/user1/

How to copy a file from a remote ESXi datastore to the current Linux machine via SCP

將檔案複製到本機 ESXi 主機

如果我們登入 ESXi 主機,即可執行指令,將虛擬機器檔案從遠端 Linux 機器複製到本機 ESXi 主機上的資料存放區。現在讓我們來複製 VM_file.txt 透過 SCP 從 Linux 機器經由網路將檔案傳輸至 ESXi 資料存放區的目錄:

scp user1@192.168.101.210:/home/user1/VM_file.txt /vmfs/volumes/datastore10a/install/

How to copy a file from a remote Linux machine to the ESXi host via SCP

如何在兩台遠端電腦之間複製檔案

SCP 提供多種指令,可將檔案從一台遠端電腦複製到另一台遠端電腦,其中包含透過當前本地電腦傳輸資料與不透過本地電腦傳輸資料的兩種方式。指令語法如下:

scp user1@remote-host1.com://directory/file.txt user2@remote-host2.com://directory/

使用上述指令時,資料會直接從一個遠端主機傳輸至另一個遠端主機(不會先複製到您當前的本地電腦)。若您希望將流量路由至您正在執行該指令的本地電腦,請使用 -3 旗幟。

註: 若兩台遠端主機的憑證相同,請使用此指令。

以下是在本地 Linux 機器上執行此指令以複製檔案的範例(vim.v00) 從遠端 ESXi 主機 (192.168.101.202) 移轉至本地 ESXi 主機 (192.168.101.201):

scp root@192.168.101.202://vmfs/volumes/BOOTBANK1/vim.v00 root@192.168.101.201://vmfs/volumes/datastore10a/install/

如果你看到 Host key verification failed 此錯誤表示主機金鑰未儲存於其中一台主機上。若此錯誤是由於遠端伺服器上的主機金鑰變更所導致,請刪除儲存於 ~/.ssh/known_hosts

刪除舊主機金鑰的指令是:

ssh-keygen -R hostname_or_IP_address

例如,在 192.168.101.202 上執行此指令,以移除遠端主機 192.168.101.201 的舊主機金鑰:

ssh-keygen -R 192.168.101.201

使用範例 -3 在透過本機複製檔案的指令中:

scp -3 root@192.168.101.202://vmfs/volumes/BOOTBANK1/vim.v00 root@192.168.101.201://vmfs/volumes/datastore10a/install/

用於此目的的替代指令是:

scp -o "ForwardAgent yes" root@192.168.101.202://vmfs/volumes/BOOTBANK1/vim.v00 root@192.168.101.201://vmfs/volumes/datastore10a/install/

如何透過 SCP 從 Windows 複製檔案

您也可以在 Windows 中將檔案複製到虛擬機器或 ESXi 主機。為此,您需要使用 SCP 客戶端,例如 WinSCP,它具備直觀且方便的圖形介面。您可以 下載 WinSCP 免費。

  1. 執行 WinSCP。
    • 選擇一個協定,例如, SFTP.
    • 請輸入遠端主機(例如 ESXi 主機或 Linux 電腦)的主機名稱與連接埠號碼。
    • 請輸入遠端電腦的使用者名稱和密碼。
    • 點擊 Login.

    在此範例中,我們將連線至遠端 ESXi 主機。

    Connecting to an ESXi host in WinSCP to copy files

  2. 系統顯示一則通知訊息:

    Continue connecting to unknown server and add its host key to a cache?

    點擊 Yes 繼續。

  3. 連線成功後,您會看到一個類似命令列介面的視窗,其中包含兩個面板。其中一個面板顯示本地主機的目錄,另一個面板則顯示遠端主機的目錄。您可以透過在兩個面板之間拖放檔案,在本地主機與遠端主機之間複製檔案。

    Using WinSCP to copy a VM file from and to an ESXi host

您可以透過 WinSCP 連線至遠端 ESXi 主機,並利用該 Windows 機器上的 SMB 共用,將檔案從該 ESXi 主機的資料存放區複製到遠端的 Windows 虛擬機器或實體機器上。

不過,您無法在 WinSCP 面板中直接輸入共用路徑(例如, 192.168.101.117c$)。您只能選取磁碟機代號。若要繞過此限制,請在 Windows 檔案總管中連線至檔案分享,並將此檔案分享映射為網路磁碟機。為其指派一個磁碟機代號,例如: S: 如同本範例所示,要連線至位於 192.168.101.211.

現在我們可以選取 S: 在 WinSCP 左側窗格的下拉式選單中,將其設為網路磁碟機,選取遠端 ESXi 伺服器資料存放區中的所需檔案或目錄,並將檔案雙向複製。

Copying files between a remote ESXi host and remote SMB share by using WinSCP in Windows

使用 NFS 共用資料夾

您可以使用 NFS 共用資料夾,將檔案從 ESXi 資料儲存區傳輸至虛擬機器,反之亦然。ESXi 不支援 SMB 共用資料夾(Windows 原生功能),但支援 NFS 共用資料夾(Linux 原生功能),並可將 NFS 共用資料夾掛載為資料存放區。此特點支援將 NFS 共用資料夾掛載為資料存放區。透過此特點,您可以採用以下任一方法在 ESXi 與 Linux 機器之間傳輸檔案:

方法 1:

  • 在 Linux 虛擬機器上設定 NFS 伺服器與 NFS 共用資料夾
  • 將 NFS 共用資料夾掛載為 ESXi 上的資料存放區
  • 將檔案從虛擬機器複製到 ESXi 資料存放區,反之亦然

方法 2:

  • 在實體 Linux 機器上設定 NFS 伺服器,或 NAS
  • 將 NFS 共用資料夾掛載為 ESXi 上的資料存放區
  • 連線至 Linux 虛擬機器上的 NFS 共用資料夾
  • 將檔案從 Linux 虛擬機器複製到 NFS 共用資料夾,然後將這些檔案複製到 ESXi 主機。將檔案從 ESXi 主機複製到 NFS 共用資料夾,並將這些檔案從 NFS 共用資料夾複製回 Linux 虛擬機器。

閱讀 NFS 與 SMB 比較以進一步了解這些檔案分享協定。

在 Linux 上設定 NFS 共用資料夾

本教學使用 Linux Ubuntu 20.04。我們以一般使用者身分登入 Linux,並使用 sudo 當執行該指令需要 root 權限時。請依照以下步驟安裝 NFS 伺服器並設定 NFS 共用資料夾。

  1. 在 Linux 中更新儲存庫樹:

    sudo apt-get update

  2. 在 Linux 上安裝 NFS 伺服器套件:

    sudo apt-get install nfs-kernel-server -y

  3. 建立一個目錄(即匯出目錄),並將其共用至 NFS 伺服器:

    sudo mkdir -p /srv/nfs/share1/

  4. 設定已建立目錄的所有者與權限:

    sudo chown -R nobody:nogroup /srv/nfs/share1/

    sudo chmod 0777 /srv/nfs/share1/

    nobody 是一個虛擬使用者,用以代表權限最低且無 shell 存取權限的使用者。其目的是 nogroup 該群組類似於 nobody 使用者。

    Creating a directory for an NFS share

  5. 設定 exports 檔案,以共用已建立的目錄。

    sudo nano /etc/exports

    sudo vim /etc/exports

  6. 在設定檔底部加入以下這行:

    /srv/nfs/share1/ CLIENT_IP(rw,sync,no_subtree_check)

    在我們的情況下,包含 ESXi 主機允許 IP 位址的那一行是:

    /srv/nfs/share1/ 192.168.101.201(rw,sync,no_subtree_check)

    您可以透過新增以下這行,允許子網內所有主機存取:

    /srv/nfs/share1/ 192.168.101.0/24(rw,sync,no_subtree_check)

    您可以新增以下這行,以允許另一台主機(IP 位址)存取。

    將變更儲存至設定檔,並關閉文字編輯器。

  7. 若要檢查資料是否已寫入檔案,您可以使用以下指令:

    cat /etc/exports

  8. 請使用以下指令套用新設定:

    sudo exportfs -a

  9. 請確認安裝有 NFS 伺服器的 Linux 機器上的防火牆允許存取。您可以使用類似以下的指令,授予特定 IP 位址存取權限:

    sudo ufw allow from IP to any port nfs

    就我們的情況而言:

    sudo ufw allow from 192.168.101.201 to any port nfs

    若要允許整個子網中的主機存取:

    sudo ufw allow from SUBNET to any port nfs

    在我們的情況下,該指令應為:

    sudo ufw allow from 192.168.101.0/24 to any port nfs

  10. 您可以使用以下指令檢查防火牆的狀態:

    sudo ufw status

  11. 重新啟動 NFS 伺服器,使設定變更生效:

    sudo systemctl restart nfs-kernel-server

  12. 已在 Linux 中設定好 NFS 共用資料夾。
  13. 將 Linux 系統中任一目錄的檔案複製到透過 NFS 共享的目錄中。我們複製 VM_file.txt 連接到我們的 NFS 共用資料夾,然後檢查該目錄的內容:

    cp VM_file.txt /srv/nfs/share1/

    ls -al /srv/nfs/share1/

    Copying a file to a directory configured as an NFS share

在 ESXi 中掛載 NFS 資料存放區

在設定 NFS 共用資料夾後,您需要在 ESXi 中新增 NFS 資料存放區。本範例中,我們將使用 VMware Host Client 來執行此操作。

前往 Storage > Datastores 然後點擊 New datastore.

Creating a new datastore to mount the NFS as a datastore

New datastore 精靈已開啟。

  1. 選擇 Mount NFS datastore. 點擊 Next 繼續。

    How to mount an NFS datastore in ESXi

  2. 請提供 NFS 掛載的詳細資訊:
    • 姓名: NFS-share (將顯示為資料存放區名稱的名稱)
    • NFS 伺服器: 192.168.101.210
    • NFS 共用資料夾: /srv/nfs/share1/
    • NFS 版本: NFS4

    在 NFS4 中,使用者名稱和密碼皆為選用項目。我們將這兩個欄位留空。

    Entering the details to mount an NFS datastore in ESXi

  3. 準備就緒。請檢查您的設定,然後點擊 Finish 如果一切都沒問題的話。

將檔案從虛擬機器複製到主機

NFS 資料存放區已成功掛載。您可以在 Storage > Datastores.

現在我們可以將儲存於 NFS 共用資料夾中的虛擬機器檔案複製到本機 ESXi 資料存放區(將檔案從虛擬機器傳輸至主機)。

  1. 點擊 Datastore Browser.

    Browsing the NFS datastore to copy a VM file

  2. 請在資料存放區瀏覽器中選取您的 NFS 資料存放區 (NFS-share (以我們的情況為例)。在 NFS 資料存放區中瀏覽所需檔案。選取所需檔案,然後按一下 Copy.

    How to copy a VM file from a virtual machine to an ESXi datastore using an NFS share

  3. 選擇目的地。請在目標資料存放區中選取您要儲存複製檔案的位置(datastore10b (就我們而言)。點擊 Copy.

    Copying a VM file to an ESXi datastore in VMware Host Client

    或者,您也可以在 ESXi 伺服器的命令列中複製所需的檔案:

    cp /vmfs/volumes/NFS-share/VM_file.txt /vmfs/volumes/datastore10b/VM_file-copy.txt

使用 VMware Web Interface 下載/上傳檔案

您可以使用 VMware Host Client 的網頁介面,或 VMware vSphere Client 用於將檔案上傳至或從 ESXi 資料存放區下載檔案。只要安裝了網頁瀏覽器且能連線至 ESXi 主機,即可從任何實體或虛擬機器存取此網頁介面。因此,若客體作業系統具備圖形使用者介面,您可直接從虛擬機器開啟此網頁介面;若無,則可使用任何本地端機器作為中介機器,將檔案從虛擬機器傳輸至主機,或反之。

How to copy a VM file - downloading a virtual disk file from an ESXi datastore in VMware Host Client

還有另一種方法可以將檔案從虛擬機器傳輸到 VMware ESXi,但這種方法較為複雜:

  1. 將虛擬機的虛擬磁碟下載至您的本地電腦或另一台電腦。
  2. 從此虛擬機器磁碟中提取所需的檔案(.vmdk 以及 -flat.vmdk) 至本機。此外,若已安裝 VMware 工作站,您亦可將虛擬磁碟掛載至虛擬磁碟機。
  3. 請使用上述說明的方法之一(例如 VMware Host Client、vSphere Client 或 SCP 客戶端等),將解壓縮後的檔案或掛載的虛擬磁碟中的檔案上傳至 ESXi 主機的資料存放區。

    How to map a VMDK file as a virtual disk drive in Windows

閱讀關於……的詳細部落格文章 如何從 VMDK 虛擬磁碟中提取檔案.

使用 ISO 檔案將資料傳輸至虛擬機器

如果虛擬機器無法連線至網路,您可以透過 ISO 映像檔將檔案傳輸至 VMware 虛擬機器:

  1. 使用 UltraISO 等 Windows 軟體建立 ISO 映像檔。
  2. 將所需檔案寫入您本機或另一台電腦上的 ISO 映像檔。您可以使用上述任一種方法從 ESXi 複製檔案,並將其寫入 ISO 映像檔。
  3. 請使用虛擬機器(VM)的虛擬 CD/DVD 光碟機,將 ISO 映像檔掛載至虛擬機器(您可直接從本地端電腦掛載 ISO 檔案,或先將 ISO 檔案上傳至 ESXi 資料存放區,再進行此操作)。請使用 VMware Host Client、VMware vSphere Client、VMware 工作站或 VMware Remote Console,將 ISO 檔案掛載至 ESXi 虛擬機器。

此方法無法用於將檔案從虛擬機器傳輸至主機,因為虛擬機器是透過唯讀模式的虛擬 CD/DVD 光碟運作的。

結論

有許多方法可以將檔案從主機複製到虛擬機器,反之亦然。其中有些方法需要網路連線,有些則即使在沒有網路的情況下也能運作。您可以根據自身情境選擇適合的方法,並將這些方法結合使用。請記得備份您的虛擬機器,以避免資料遺失。透過 NAKIVO Backup & Replication,您可以保護 VMware vSphere 中的虛擬機器,並 還原個別檔案 直接從虛擬機器備份中。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read