在 Compute Engine 用戶端掛接檔案共用區

本頁說明如何在同一個 Google Cloud專案和 VPC 網路中,將 Filestore 檔案共用區掛接至 Compute Engine 虛擬機器 (VM) 執行個體。如要瞭解如何在遠端網路的用戶端上掛接檔案共用區,請參閱「在遠端用戶端上掛接檔案共用區」。如要從 Google Kubernetes Engine 叢集存取 Filestore 執行個體,請參閱「透過 Filestore CSI 驅動程式存取 Filestore 執行個體」。

事前準備

確認網路防火牆已正確設定,可搭配 Filestore 使用。詳情請參閱設定防火牆規則

在 Compute Engine VM 執行個體中掛接檔案共用區

請執行下列其中一個程序,在 Compute Engine VM 上掛接 Filestore 檔案共用區。為確保最佳效能,建議您掛接至 n1-standard-8 VM 或更高版本。

Linux:掛接

如要手動將檔案共用區掛接到 Linux 用戶端 VM,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 找到您要做為用戶端使用的 Linux VM,然後按一下「SSH」SSH,在該 VM 上開啟終端機。

  3. 選用:透過次要網路,在具備多個網路介面的用戶端 VM 上掛接檔案共用區。

    詳細資料 (按一下即可展開)

    如要透過次要網路 (也就是 nic0 以外的介面) 掛接檔案共用區,請修改用戶端 VM 的路由政策。執行作業:

    sudo ip route \
        add filestore-reserved-address-range \
        via default-gateway-of-nic-to-filestore
    

    其中:

    • filestore-reserved-address-range 是 Filestore 執行個體使用的保留位址範圍。
    • default-gateway-of-nic-to-filestore 是連線至與 Filestore 執行個體共用虛擬私有雲網路的 NIC 預設閘道 IP 位址。

    如要進一步瞭解如何使用多個 NIC 搭配 Compute Engine 執行個體,請參閱「為額外網路介面設定路由」。

  4. 安裝 NFS:

    Debian/Ubuntu

    使用下列指令在 Debian 或 Ubuntu 上安裝 NFS。

    sudo apt-get -y update &&
    sudo apt-get install nfs-common

    RHEL/CentOS

    使用下列指令在 Red Hat Enterprise Linux 或 CentOS 上安裝 NFS。

    sudo yum update &&
    sudo yum install nfs-utils

    SUSE

    使用下列指令在 SUSE 上安裝 NFS。

    sudo zypper update &&
    sudo zypper -n install nfs-client
  5. 建立對應至 Filestore 檔案共用區的本機目錄:

    sudo mkdir -p mount-point-directory
    

    其中 mount-point-directory 是要建立的目錄,例如 /mnt/filedir

  6. 執行 mount 指令,從 Filestore 執行個體掛接檔案共用區。您可以使用任何 NFS 掛接選項。如要獲得最佳效能,建議使用下列 NFS mount 選項:

    選項 說明
    hard NFS 用戶端會無限期重試 NFS 要求。為減少 Filestore 執行個體重新啟動時發生 I/O 中斷的可能性,建議 Linux 和 Windows 用戶端都使用 hard 掛接選項。
    timeo=600 NFS 用戶端會等待 600 分秒 (60 秒),然後重試 NFS 要求。
    retrans=3 NFS 用戶端會嘗試 NFS 要求三次,然後採取進一步的復原動作。
    rsize=524288 每個 READ 要求,NFS 用戶端最多可從 NFS 伺服器接收 524,288 個位元組。
    注意:如果是基本層級執行個體,請將 rsize 值設為 1048576
    wsize=1048576 每個 WRITE 要求,NFS 用戶端最多可從 NFS 伺服器接收 1,048,576 個位元組。
    resvport NFS 用戶端與這個掛接點的 NFS 伺服器通訊時,會使用具備權限的來源通訊埠。
    async NFS 用戶端會延遲將應用程式寫入作業傳送至 NFS 伺服器,直到符合特定條件為止。
    注意:使用 sync 選項會大幅降低效能。

    • 如要減少掛接延遲時間,請指定 -o tcp 選項。
    • 如果將區域、可用區或企業執行個體掛接至執行 Linux 核心 5.3 以上版本的用戶端 VM,建議指定 nconnect 掛接選項,以提升 NFS 效能。對於特定服務層級,建議您指定用戶端與伺服器之間的連線數如下:

      級別 容量 連線數量
      區域、可用區 1 至 9.75 TiB nconnect=2
      區域、可用區 10 至 100 TiB nconnect=7
      Enterprise - nconnect=2
      高可擴充性固態硬碟 - nconnect=7

      一般來說,檔案共用容量越大,連線的用戶端 VM 越少,指定額外連線數可帶來的效能提升就越大。nconnect

    使用偏好選項執行 mount 指令,類似於下列指令:

    sudo mount -o rw ip-address:/file-share mount-point-directory
    

    其中:

    • ip-address 是 Filestore 執行個體的 IP 位址。
    • file-share 是執行個體上的檔案共用區名稱。
    • mount-point-directory 是您要對應 Filestore 檔案共用區的路徑。

    您可透過以下頁面或指令來查詢執行個體的 IP 位址與檔案共用區名稱:

    舉例來說,假設有一個 Filestore 執行個體,其 IP 位址為 10.0.1.2,檔案共用區名稱為 share1,以下指令就可將檔案共用區掛接至本機掛接點目錄 /mnt/render

    sudo mount 10.0.1.2:/share1 /mnt/render
    
  7. 選用:執行 chmod,在掛接目錄中設定權限,讓超級使用者以外的使用者也能寫入掛接目錄。如要設定目錄權限,請執行下列指令:

    sudo chmod permissions mount-point-directory
    

    其中:

    • permissions 是要授予的權限集。舉例來說,chmod go+rw 可讓目錄擁有群組的成員和所有其他使用者讀取及寫入目錄。如要進一步瞭解如何設定權限,請參閱設定檔案共用區的存取權
    • mount-point-directory 是掛接 Filestore 檔案共用區的所在目錄路徑。
  8. 選用:確認已掛接 Filestore 檔案共用區:

    df -h --type=nfs
    

    輸出內容應包含類似以下的項目:

    Filesystem        Size    Used  Avail  Use%  Mounted on
    10.0.1.2:/share1  1018G   76M   966G   1%    /mnt/render
    10.0.2.2:/vol3    1018G   76M   966G   1%    /mnt/filestore3
  9. 如需使用 NFS 檔案鎖定功能,您可能需要設定 statdnlockmgr Daemon 使用的通訊埠,並設定防火牆規則,開放這些通訊埠。

Linux:/etc/fstab

如要讓檔案共用區在啟動時自動掛接到用戶端 VM,請修改用戶端的 /etc/fstab 檔案:

  1. 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 找到您要做為用戶端使用的 Linux VM,然後按一下「SSH」SSH,在該 VM 上開啟終端機。

  3. 選用:透過次要網路,在具備多個網路介面的用戶端 VM 上掛接檔案共用區。

    詳細資料 (按一下即可展開)

    如要透過次要網路 (也就是 nic0 以外的介面) 掛接檔案共用區,請修改用戶端 VM 的路由政策:

    • /etc/default/instance_configs.cfg 中,將 NetworkInterfacessetup 標記設為 false
      [NetworkInterfaces]
      dhclient_script = /sbin/google-dhclient-script
      dhcp_command =
      ip_forwarding = true
         setup = false
    • /etc/network/interfaces 中新增下列程式碼:

      auto eth1
      iface eth1 inet dhcp
          up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
      

    其中:

    • filestore-reserved-address-range 是 Filestore 執行個體使用的保留位址範圍。
    • default-gateway-of-nic-to-filestore 是連線至與 Filestore 執行個體共用虛擬私有雲網路的 NIC 預設閘道 IP 位址。

    如要進一步瞭解如何使用多個 NIC 搭配 Compute Engine 執行個體,請參閱「為額外網路介面設定路由」。

  4. 安裝 NFS:

    Debian/Ubuntu

    使用下列指令在 Debian 或 Ubuntu 上安裝 NFS。

    sudo apt-get -y update &&
    sudo apt-get install nfs-common

    RHEL/CentOS

    使用下列指令在 Red Hat Enterprise Linux 或 CentOS 上安裝 NFS。

    sudo yum update &&
    sudo yum install nfs-utils

    SUSE

    使用下列指令在 SUSE 上安裝 NFS。

    sudo zypper update &&
    sudo zypper -n install nfs-client
  5. 建立對應至 Filestore 檔案共用區的本機目錄:

    sudo mkdir -p mount-point-directory
    

    其中 mount-point-directory 是要建立的目錄,例如 /mnt/filedir

  6. 開啟 /etc/fstab 檔案:

    sudo vim /etc/fstab
    
  7. /etc/fstab 檔案中新增下列程式碼:

    ip-address:/file-share mount-point-directory nfs options,_netdev 0 0
    

    其中:

    • ip-address 是 Filestore 執行個體的 IP 位址。
    • file-share 是執行個體上的檔案共用區名稱。
    • mount-point-directory 是要對應 Filestore 檔案共用區的路徑。
    • options 是 NFS 掛接選項。建議保留預設的 NFS 掛接選項,但下列情況除外:

      • 如要自動掛接,建議您指定 -o tcp,以減少掛接和卸載時的延遲。
      • 如果將區域、可用區或企業執行個體掛接至執行 Linux 核心 5.3 以上版本的用戶端 VM,建議指定 nconnect 掛接選項,以提升 NFS 效能。對於特定服務層級,建議您指定用戶端與伺服器之間的連線數如下:
      級別 容量 連線數量
      區域、可用區 1 至 9.75 TiB nconnect=2
      區域、可用區 10 至 100 TiB nconnect=7
      Enterprise - nconnect=2
      高可擴充性固態硬碟 - nconnect=7

      一般來說,檔案共用容量越大,連線的用戶端 VM 越少,指定額外連線數可帶來的效能提升就越大。nconnect

    範例/etc/fstab 中的下列程式碼會使用預設掛接選項,將 IP 位址為 10.0.0.2 的 Filestore 執行個體檔案共用區 vol1 掛接至掛接點目錄 /mnt

      10.0.0.2:/vol1 /mnt nfs defaults,_netdev 0 0
    
  8. /etc/fstab 中掛接所有項目:

        sudo mount -a
    

    現在,用戶端 VM 每次啟動時,系統都會自動掛接檔案共用區。

Linux:autofs

您可以設定 autofs,讓檔案共用區只在存取時自動掛接,並在未使用時保持卸載狀態。相較於在 /etc/fstab 中靜態掛接檔案共用區,如果用戶端需要對應多個掛接點,這個方法有助於節省用戶端 VM 資源。

在用戶端 VM 上安裝 NFSautofs

  1. 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 找到您要做為用戶端使用的 Linux VM,然後按一下 [SSH],在該 VM 上開啟終端機。

  3. 選用:透過次要網路,在具備多個網路介面的用戶端 VM 上掛接檔案共用區。

    詳細資料 (按一下即可展開)

    如要透過次要網路 (也就是 nic0 以外的介面) 掛接檔案共用區,請修改用戶端 VM 的路由政策:

    • /etc/default/instance_configs.cfg 中,將 NetworkInterfacessetup 標記設為 false
      [NetworkInterfaces]
      dhclient_script = /sbin/google-dhclient-script
      dhcp_command =
      ip_forwarding = true
         setup = false
    • /etc/network/interfaces 中加入以下幾行: auto eth1 iface eth1 inet dhcp up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore

    其中:

    • filestore-reserved-address-range 是 Filestore 執行個體使用的預留位址範圍。
    • default-gateway-of-nic-to-filestore 是連線至與 Filestore 執行個體共用之 VPC 網路的 NIC 預設閘道 IP 位址。

    如要進一步瞭解如何使用多個 NIC 搭配 Compute Engine 執行個體,請參閱「為額外網路介面設定路由」。

  4. 執行下列指令,安裝 NFS:

    Debian/Ubuntu

    使用下列指令在 Debian 或 Ubuntu 上安裝 NFS。

    sudo apt-get -y update &&
    sudo apt-get install nfs-common

    RHEL/CentOS

    使用下列指令在 Red Hat Enterprise Linux 或 CentOS 上安裝 NFS。

    sudo yum update &&
    sudo yum install nfs-utils

    SUSE

    使用下列指令在 SUSE 上安裝 NFS。

    sudo zypper update &&
    sudo zypper -n install nfs-client
  5. 在用戶端 VM 的終端機視窗中,安裝 autofs

    Debian/Ubuntu

    sudo apt-get install autofs
    

    RHEL/CentOS

    sudo yum install autofs
    

    SUSE

    sudo zypper -n install autofs
    

設定 autofs,將檔案共用區動態掛接至用戶端 VM

  1. 啟用 autofs

    sudo systemctl enable --now autofs
    
  2. 建立對應至 Filestore 檔案共用區的本機目錄:

    sudo mkdir -p mount-point-directory
    

    其中 mount-point-directory 是要建立的目錄。不得含有任何子目錄。在本指南中,我們使用 /nfs 做為掛接點目錄。

  3. 開啟 /etc/auto.master 檔案:

    sudo vim /etc/auto.master
    
  4. /etc/auto.master 檔案中新增下列程式碼:

    /nfs /etc/auto.nfs --timeout seconds
    

    其中 seconds 是掛接逾時前的時間長度 (以秒為單位)。預設值為 300。將這個值設為 0,即可透過 autofs 停用解除掛接功能。

  5. 建立名為 /etc/auto.nfs 的檔案:

    sudo vim /etc/auto.nfs
    
  6. /etc/auto.nfs 檔案中新增下列程式碼:

    mount-point-subdir options ip-address:/file-share
    

    其中:

    • mount-point-subdir 是要對應 Filestore 檔案共用區的 /nfs 子目錄。這個子目錄是動態產生,不應存在於用戶端 VM 中。
    • options 是 NFS 掛接選項。建議保留預設的 NFS 掛接選項,但下列情況除外:

      • 如要自動掛接,建議您指定 -o tcp,以減少掛接和卸載時的延遲。
      • 如果將區域、可用區或企業執行個體掛接至執行 Linux 核心 5.3 以上版本的用戶端 VM,建議指定 nconnect 掛接選項,以提升 NFS 效能。對於特定服務層級,建議您指定用戶端與伺服器之間的連線數如下:
      級別 容量 連線數量
      區域、可用區 1 至 9.75 TiB nconnect=2
      區域、可用區 10 至 100 TiB nconnect=7
      Enterprise - nconnect=2
      高可擴充性固態硬碟 - nconnect=7

      一般來說,檔案共用容量越大,連線的用戶端 VM 越少,指定額外連線數可帶來的效能提升就越大。nconnect

      • ip-address 是 Filestore 執行個體的 IP 位址。
      • file-share 是執行個體上的檔案共用區名稱。

    範例/etc/auto.nfs 中的下列行會將 IP 位址為 10.0.0.2 的 Filestore 執行個體檔案共用區 vol1 掛接至動態產生的子目錄 file-shares,並授予 read/write 存取權:

    file-shares -rw 10.0.0.2:/vol1
    

測試您的設定

  1. 如果已掛接檔案共用,請取消掛接:

    sudo umount mount-point-directory
    

    其中 mount-point-directory 是 Filestore 檔案共用區對應的路徑。

    如果 /etc/fstab 項目會在系統開機時掛接檔案共用,請務必移除該項目。

  2. 重新載入 autofs

    sudo service autofs reload
    
  3. 確認設定是否正常運作:

    ls mount-point-directory/mount-point-subdir
    

    其中:

    • mount-point-directory/etc/auto.master 檔案中指定的掛接點目錄。
    • mount-point-subdir/etc/auto.nfs 檔案中指定的掛接點子目錄。

    以我們的範例來說,指令會是:

    ls /nfs/file-shares
    

    如果自動掛接設定正確,系統會先掛接檔案共用,然後傳回 ls 指令的結果。閒置一段時間後,系統會自動卸載檔案共用,這段時間是在 /etc/auto.master 檔案中指定的 timeout 值。

Windows

連線至 Windows VM

  1. 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 找到要做為用戶端的 Windows VM,然後按一下「遠端桌面協定」,開啟與該 VM 的遠端桌面連線。詳情請參閱「連線至 Windows 執行個體」。

在 Windows VM 上安裝 NFS

  1. 在 Windows VM 中,以管理員身分開啟 PowerShell,確保 NFS 存取權和權限正確無誤。
  2. 在 PowerShell 中安裝 NFS 用戶端:

    Install-WindowsFeature -Name NFS-Client
    
  3. 依照系統提示重新啟動 Windows VM 執行個體,然後開啟新的遠端桌面連線。

設定 NFS 用戶端所用的使用者 ID

  1. 在 PowerShell 中執行下列指令,建立兩個新的登錄項目 AnonymousUidAnonymousGid

    New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
        -Name "AnonymousUid" -Value "0" -PropertyType DWORD
    
    New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
        -Name "AnonymousGid" -Value "0" -PropertyType DWORD
    
  2. 重新啟動 NFS 用戶端服務:

    nfsadmin client stop
    
    nfsadmin client start
    

將檔案共用區對應至 Windows VM

  1. 結束 PowerShell,離開管理員工作階段。如果省略這個步驟,在標準使用者工作階段中執行的應用程式就無法查看或存取這個檔案共用。

    exit
    
  2. 選用:透過次要網路,在具備多個網路介面的用戶端 VM 上掛接檔案共用區。

    詳細資料 (按一下即可展開)

    如要透過次要網路 (也就是 nic0 以外的介面) 掛接檔案共用區,請修改用戶端 VM 的路由政策。執行作業:

    route -p ^
        add filestore-reserved-address-range ^
        mask address-range-subnet-mask ^
        default-gateway-of-nic-to-filestore
    

    其中:

    • filestore-reserved-address-range 是 Filestore 執行個體使用的保留位址範圍。
    • address-range-subnet-maskfilestore-reserved-address-range 的子網路遮罩。舉例來說,/29 保留位址範圍會使用 255.255.255.248 子網路遮罩。
    • default-gateway-of-nic-to-filestore 是連線至與 Filestore 執行個體共用虛擬私有雲網路的 NIC 預設閘道 IP 位址。

    範例

    route -p add 10.65.21.176 mask 255.255.255.248 10.128.0.1
    

    如要進一步瞭解如何使用多個 NIC 搭配 Compute Engine 執行個體,請參閱「為額外網路介面設定路由」。

  3. Command Prompt 將檔案共用對應至磁碟機代號:

    net use drive-letter: \\filestore-ip\file-share-name
    

    其中:

    • filestore-ip 是 Filestore 執行個體的 IP 位址。
    • file-share-name 是 Filestore 執行個體上的檔案共用區名稱。
    • drive-letter 是您要指派給對應項目的磁碟機代號。

    示例

    下列指令會將 IP 位址為 10.0.0.2 的 Filestore 執行個體上的檔案共用區 vol1,對應至用戶端 Windows VM 上的磁碟機 z:

    net use Z: \\10.0.0.2\vol1
    
  4. 選用步驟:如要使用 NFS 檔案鎖定功能,請確認下列事項:

    1. 確認已為所有必要的 NFS 連接埠 (包括 statdnlockmgr) 設定防火牆規則

    2. 請使用類似下列 PowerShell 指令,確保 Windows NFS 用戶端已設定保留的連接埠:

      nfsadmin client config protocol=tcp UseReservedPorts=yes
      nfsadmin client stop
      nfsadmin client start
      

在檔案共用區中建立及掛接子目錄

將檔案共用區掛接至用戶端 VM 後,您可以在檔案共用區中建立子目錄,用戶端可以直接掛接這些子目錄,不必掛接整個檔案共用區:

  1. 如要在掛接的檔案共用區中建立子目錄,請執行下列指令:

    sudo mkdir -p mount-point-directory/file-share-sub-dir
    

    其中:

    • mount-point-directory 是您要對應檔案共用區的路徑。
    • file-share-sub-dir 是您要在檔案共用中建立的子目錄路徑。

    這項指令會在用戶端 VM 和檔案共用區建立子目錄。舉例來說,如果您將檔案共用區 10.0.0.2:/vol1 掛接到用戶端 VM 的 /mnt 目錄,指令 sudo mkdir -p /mnt/nfs 會在檔案共用區建立 10.0.0.2:/vol1/nfs,並在用戶端 VM 建立 /mnt/nfs

  2. 選用:如要將檔案共用子目錄掛接到檔案共用區掛接所在用戶端 VM 的目錄,請先解除掛接檔案共用區:

    sudo umount mount-point-directory
    

    其中 mount-point-directory 是檔案共用區對應的目錄。

  3. 掛接子目錄:

    sudo mount ip-address:/file-share/file-share-sub-dir mount-point-directory
    

    其中:

    • ip-address 是 Filestore 執行個體的 IP 位址。
    • file-share 是執行個體上的檔案共用區名稱。
    • file-share-sub-dir 是要掛接的檔案共用子目錄路徑。
    • mount-point-directory 是您要對應 Filestore 檔案共用區的路徑。

    範例:在下列指令中:

    sudo mount 10.0.0.2:/vol1/nfs /mnt/nfs
    
    • 10.0.0.2 是 Filestore 執行個體的 IP 位址。
    • vol1 是檔案共用區的名稱。
    • nfs 是檔案共用子目錄。
    • /mnt/nfs 是檔案共用子目錄 nfs 對應的用戶端 VM 目錄。

後續步驟