文件存儲NAS是一種分布式的網(wǎng)絡(luò)文件存儲系統(tǒng),為ECS、HPC、Docker、BatchCompute等提供安全、高性能、高可靠、簡單易用的文件存儲服務(wù)。本文介紹如何通過函數(shù)計算控制臺配置NAS文件系統(tǒng)。

背景信息

阿里云函數(shù)計算支持與文件存儲NAS無縫集成。您可以在函數(shù)計算的服務(wù)上配置NAS,包括NAS的地域、掛載點、分組等信息。配置成功后,該服務(wù)下的函數(shù)就可以像訪問本地文件系統(tǒng)一樣訪問指定的NAS文件系統(tǒng)。

使用NAS作為函數(shù)計算的掛載點的優(yōu)勢如下。
  • 可以將臨時文件存儲到NAS中,臨時文件大小不受實例本地磁盤空間限制。
  • 多個函數(shù)可以共用一個NAS,實現(xiàn)文件共享。

前提條件

配置NAS

函數(shù)計算的NAS配置為服務(wù)級別,為一個服務(wù)配置NAS掛載點后,此服務(wù)下的所有函數(shù)都可以訪問指定NAS文件系統(tǒng)上的文件。

  1. 登錄函數(shù)計算控制臺,在左側(cè)導(dǎo)航欄,單擊服務(wù)及函數(shù)
  2. 在頂部菜單欄,選擇地域,然后在服務(wù)列表頁面,單擊目標(biāo)服務(wù)操作列的配置
  3. 在編輯服務(wù)頁面的存儲配置區(qū)域,配置以下參數(shù),然后單擊保存
    存儲配置
    • 掛載 NAS 文件系統(tǒng):是否啟用NAS文件系統(tǒng)。取值說明如下。
      • 啟用:啟用NAS文件系統(tǒng)。
      • 禁用:不啟用NAS文件系統(tǒng)。
    • NAS 配置方式:NAS文件系統(tǒng)的配置方式。取值說明如下。
      • 自動配置:系統(tǒng)自動為您配置NAS文件系統(tǒng)。
        說明
        • 選擇自動配置前,需先允許函數(shù)訪問VPC內(nèi)資源,并選擇一個專有網(wǎng)絡(luò)交換機安全組。如未選擇,系統(tǒng)將會為您自動創(chuàng)建以上資源并綁定到當(dāng)前服務(wù)。關(guān)于費用詳情,請參見VPC產(chǎn)品計費
        • 選擇自動配置,系統(tǒng)將為您創(chuàng)建一個新的通用型NAS文件系統(tǒng)。如您再次選擇自動配置,系統(tǒng)查詢到前一次選擇自動配置時創(chuàng)建的通用型NAS文件系統(tǒng)后,將不會再重新創(chuàng)建。關(guān)于費用詳情,請參見通用型NAS計費
      • 自定義配置:您需要手動配置如下參數(shù)才能配置NAS文件系統(tǒng)。
        • NAS 文件系統(tǒng):選擇已創(chuàng)建的NAS文件系統(tǒng)。如需創(chuàng)建新的NAS文件系統(tǒng),單擊下方的創(chuàng)建新的 NAS 文件系統(tǒng),跳轉(zhuǎn)到文件存儲控制臺手動創(chuàng)建。僅支持NFS協(xié)議類型的NAS文件系統(tǒng),不支持SMB協(xié)議類型。
        • (可選)用戶:在文本框中填寫自定義的用戶ID。如您不輸入任何值,系統(tǒng)將使用root用戶ID,即UID=0。更多信息,請參見NAS用戶和用戶組
        • (可選)用戶組:在文本框中填寫自定義的用戶組ID。如您不輸入任何值,系統(tǒng)將使用root用戶組ID,即GID=0。更多信息,請參見NAS用戶和用戶組
        • NAS 掛載點:選擇NAS掛載相關(guān)配置和設(shè)置相關(guān)目錄。關(guān)于目錄設(shè)置的更多信息,請參見地址配置
          • 掛載點:選擇與當(dāng)前服務(wù)配置的專有網(wǎng)絡(luò)和交換機匹配的NAS掛載點。
          • 數(shù)據(jù)傳輸方式:選擇普通傳輸方式或加密傳輸方式。僅通用型NAS支持加密傳輸,加密傳輸會對數(shù)據(jù)傳輸路徑進(jìn)行加密,但是存在一定的資源消耗。更多信息,請參見NFS文件系統(tǒng)傳輸加密
          • 遠(yuǎn)端 NAS 中的目錄:通用型NAS的該目錄必須以/開頭,極速型NAS的該目錄必須以/share開頭。若您配置的目錄在遠(yuǎn)端NAS中不存在,函數(shù)計算將會為您自動創(chuàng)建該目錄。目錄所有者為上述配置的用戶和用戶組,權(quán)限等級為777
          • 函數(shù)運行環(huán)境中的本地目錄:必須為/home/mnt/data的子目錄。
    說明
    • 配置NAS 掛載點之前,需先允許函數(shù)訪問VPC內(nèi)資源,并選擇同一地域下的一個專有網(wǎng)絡(luò)交換機。具體操作,請參見配置網(wǎng)絡(luò)
    • 一個服務(wù)最多可以掛載5個NAS掛載點。

NAS用戶和用戶組

在配置函數(shù)的NAS掛載時,首先需要配置UserID(用戶ID)和GroupID(用戶組ID),這兩個值等同于文件系統(tǒng)中的用戶和組的概念。請根據(jù)需求設(shè)置文件的擁有者和相應(yīng)的組權(quán)限,確保文件讀寫權(quán)限一致。

UserID和GroupID取值范圍為[0, 65534]。UserID和GroupID值配置可選,如果不填寫UserID,系統(tǒng)會使用root用戶ID,即0UserID值為0;如果不填寫GroupID,系統(tǒng)會使用root用戶組ID,即GroupID值為0

函數(shù)計算使用非root權(quán)限執(zhí)行用戶代碼時,如果需要掛載遠(yuǎn)端NAS的子目錄,需確保函數(shù)實例中執(zhí)行用戶具有子目錄的讀寫權(quán)限。建議您選擇以下兩種方法中任意一種進(jìn)行操作。
  • 使用NAS實例掛載遠(yuǎn)端NAS的根目錄。具體操作,請參見配置NAS

    掛載成功后使用以下示例創(chuàng)建子目錄,例如fc-1。然后將NAS掛載點中的遠(yuǎn)端 NAS 中的目錄由根目錄修改為創(chuàng)建的子目錄(由/修改為/fc-1),實現(xiàn)遠(yuǎn)端掛載子目錄。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import os
    
    def handler(event, context):
      print('uid : ' + str(os.geteuid()))
      print('gid : ' + str(os.getgid()))
    
      # 請手動更改為 NAS 掛載的本地目錄
      local_nas_dir = "/home/app"
      # 請手動更改為目標(biāo)子目錄名
      target_sub_dir = "fc-1"
    
      # 在 FC 中利用當(dāng)前實例執(zhí)行用戶權(quán)限創(chuàng)建目標(biāo)目錄
      new_dir = local_nas_dir + '/' + target_sub_dir + '/'
      print('new_dir : ' + str(new_dir))
    
      os.mkdir(new_dir)
      return 'success'
    掛載子目錄
  • 使用云服務(wù)器ECS掛載NAS。具體操作,請參見使用ECS掛載NAS文件系統(tǒng)

    掛載成功后創(chuàng)建子目錄,然后執(zhí)行chmod 777為子目錄授權(quán)。

說明
  • 系統(tǒng)默認(rèn)的用戶和用戶組無文件的讀寫權(quán)限,因此建議您將UserId和GroupId設(shè)置為具體的值,即1~65534的任意數(shù)字。此時,該服務(wù)下不同函數(shù)可以共享這些文件資源。
  • 上傳至NAS的文件權(quán)限與本地文件權(quán)限完全相同。

地址配置

每個NAS 掛載點地址由遠(yuǎn)端 NAS 中的目錄函數(shù)運行環(huán)境中的本地目錄組成。遠(yuǎn)端目錄與本地目錄結(jié)合,實現(xiàn)從NAS文件系統(tǒng)中的某個目錄到本地文件系統(tǒng)中的某個目錄的映射。

  • 遠(yuǎn)端 NAS 中的目錄

    遠(yuǎn)端NAS中的目錄是指服務(wù)需要訪問的NAS文件系統(tǒng)的目錄,由掛載點和絕對目錄兩部分組成。掛載點可以通過NAS控制臺來添加。將掛載點和絕對目錄拼接得到遠(yuǎn)端目錄。例如,如果NAS文件系統(tǒng)的掛載點是xxxx-nas.aliyuncs.com,您希望被訪問的絕對目錄是/workspace/document,對應(yīng)完整的遠(yuǎn)端目錄就是xxxx-nas.aliyuncs.com:/workspace/document

    您可以登錄NAS控制臺,在文件系統(tǒng)列表中,單擊目標(biāo)文件系統(tǒng),然后單擊掛載使用,在掛載點列表中獲取掛載點。

  • 函數(shù)運行環(huán)境中的本地目錄

    函數(shù)運行環(huán)境中的本地目錄是指本地文件系統(tǒng)的掛載點。不能使用通用的Linux和Unix系統(tǒng)目錄,例如binoptvardev等掛載NAS,函數(shù)計算允許您使用非系統(tǒng)目錄mnthomedata掛載NAS。

更多信息

您還可以使用Serverless Devs為服務(wù)掛載NAS系統(tǒng)。具體操作,請參見使用s nas相關(guān)命令掛載硬盤