本文介紹如何通過s3fs、goofys以及Rclone在不同作業系統中將OSS Bucket掛載到本地檔案系統,讓您能夠像操作本地檔案一樣操作OSS的對象(Object),實現資料的共用。
前提條件
已建立RAM使用者並擷取存取金鑰(AccessKey)。具體操作,請參見建立RAM使用者。
為已建立的RAM使用者授予系統許可權或自訂許可權。
系統許可權:您可以為RAM使用者授予管理OSS的許可權AliyunOSSFullAccess或者唯讀訪問OSS的許可權AliyunOSSReadOnlyAccess。
自訂許可權:您還可以結合業務情境,通過建立自訂許可權實現OSS的細粒度許可權控制。更多資訊,請參見RAM Policy常見樣本。
s3fs
s3fs支援您在Linux,macOS系統中,將儲存空間掛載到本地檔案系統,讓您能夠像操作本地檔案一樣操作對象,實現資料的共用。關於s3fs的更多資訊,請參見GitHub。如果您在s3fs使用過程中遇到問題,請參見常見問題進行排查。
主要特點
支援POSIX檔案系統的大部分功能,例如上傳和下載檔案、目錄、 軟連結、設定使用者權限等。
支援隨機寫和追加寫。
不支援永久連結。
大檔案通過分區方式上傳。
依賴本地檔案作為緩衝。
通過s3fs上傳或者下載檔案時,需要經過本機快取,其讀寫效能取決於磁碟的速度。由於s3fs緩衝可以無限增長,請確保定期清除。
操作步驟
通過s3fs掛載儲存空間的步驟如下:
安裝s3fs。
以下僅列舉Ubuntu、CentOS以及Mac系統安裝s3fs的命令。關於其他系統安裝s3fs的更多資訊,請參見s3fs安裝。
Ubuntu
sudo apt install s3fsCentOS
sudo yum install epel-release sudo yum install s3fs-fuseMac
brew install --cask macfuse brew install gromgit/fuse/s3fs-mac
配置帳號訪問資訊。
將具有Bucket存取權限的AccessKey ID和AccessKey Secret資訊存放在.passwd-s3fs檔案中。
echo ACCESS_KEY_ID:ACCESS_KEY_SECRET > ${HOME}/.passwd-s3fs將.passwd-s3fs檔案的使用權限設定為600。
chmod 600 ${HOME}/.passwd-s3fs掛載儲存空間。
建立掛載點。
mkdir /tmp/oss-bucket將華東1(杭州)地區的examplebucket掛載至/tmp/oss-bucket。
s3fs examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com說明如果是與OSS同地區的ECS訪問,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的內網endpoint。更多資訊,請參見訪問網域名稱和資料中心。
關於s3fs支援參數的更多資訊,請參見s3fs-fuse。
goofys
goofys支援您在Linux,macOS系統中,將儲存空間掛載到本地檔案系統中。goofys僅支援少量的POSIX檔案系統功能。關於goofys的詳細說明,請參考GitHub。
主要特點
僅支援順序寫。
不儲存檔案的許可權和屬性。
不支援軟連結和永久連結。
建立時間(ctime)、訪問時間(atime)與修改時間(mtime)保持一致。
不依賴本機快取。
由於不支援對檔案中繼資料的操作,在一些依賴檔案中繼資料的情境,goofys存在使用限制。
由於不依賴本機快取,相對於s3fs,goofys在cp,mv等操作上有更好的讀寫效能。更多資訊,請參見Benchmark。
由於不支援隨機寫,goofys更適用於唯讀情境上使用。
您可以根據實際的業務特性,靈活選擇。
操作步驟
通過goofys掛載儲存空間的步驟如下:
安裝goofys。
以下僅列舉Linux以及Mac系統安裝goofys的命令。關於其他系統安裝goofys的更多資訊,請參見goofys安裝。
Linux
curl -SL "https://github.com/kahing/goofys/releases/latest/download/goofys" -o $HOME/goofys chmod u+x $HOME/goofysMac
brew cask install osxfuse brew install goofys
配置帳號訪問資訊。
建立設定檔。
mkdir ~/.aws開啟設定檔。
vi ~/.aws/credentials配置存取金鑰AccessKey ID和AccessKey Secret。
[default] aws_access_key_id = 訪問OSS的AccessKey ID。 aws_secret_access_key = 訪問OSS的AccessKey Secret。
掛載儲存空間。
以將華東1(杭州)地區的examplebucket掛載到/mnt/oss-bucket下為例。
建立掛載點。
mkdir /mnt/oss-bucket將examplebucket掛載到/mnt/oss-bucket。
$HOME/goofys --endpoint http://oss-cn-hangzhou.aliyuncs.com --subdomain examplebucket /mnt/oss-bucket說明以上樣本中的--subdomain為必選項,用於啟用虛擬網域名稱。其他選項,例如掛載的Bucket,Bucket所在地區對應的endpoint以及掛載點資訊,請根據實際情況替換。
如果是與OSS同地區的ECS訪問,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的內網endpoint。
Rclone
Rclone是一個命令列程式,用於管理雲端儲存中的資料,支援在50多種雲端儲存產品間同步資料。相對於s3fs和goofys,Rclone還支援將儲存空間掛載到Windows系統上,作為本地磁碟共用資料。
主要特點
Rclone支援檔案同步、檔案傳輸、加密、掛載等。
Rclone支援多種系統,能讓您將儲存空間掛載到本地檔案系統中,並通過多種協議提供服務。
關於Rclone的介紹,請參見Rclone。
操作步驟
在Windows作業系統下,通過Rclone掛載儲存空間的步驟如下:
下載並按照頁面指引安裝Winfsp。
以下載winfsp-1.12.22339版本為例。下載地址,請參見Winfsp。
下載Rclone工具。
以下載rclone-v1.60.1-windows-amd64版本為例。下載地址,請參見Rclone。Rclone是一個命令列程式,下載後,只需解壓到本地任意目錄即可,此處以解壓到D:\Rclone目錄為例。
配置Rclone。
將D:\Rclone添加到環境變數。
開啟命令列視窗,輸入rclone --version,然後按下Enter。
返回rclone v1.60.1,表明Rclone已成功安裝。
輸入rclone config命令,然後按下Enter。
輸入n,按下Enter,然後建立new remote。
以new remote命名為test-remote為例。
輸入磁碟名稱,例如oss-disk,然後按下Enter。
選擇包含Amazon S3 Compliant Storage的選項,即輸入5,然後按下Enter。
選擇包含Alibaba Cloud Object Storage System (OSS)的選項,即輸入2,然後按下Enter。
執行到env_auth>,按下Enter。
執行到access_key_id>,輸入OSS的存取金鑰AccessKey ID,然後按下Enter。
執行到secret_access_key> ,輸入OSS的存取金鑰AccessKey Secret,然後按下Enter。
執行到endpoint>,輸入訪問OSS的endpoint,然後按下Enter。
以訪問華東1(杭州)外網為例,endpoint填寫為oss-cn-hangzhou.aliyuncs.com。如果是ECS上的Windows環境,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的內網endpoint。
執行到acl>,選擇Object讀寫權限。
該選項僅對新上傳的Object有效。您可以根據實際需求選擇合適的讀寫權限。此處以選擇default(私人許可權)為例,即輸入1,然後按下Enter。
執行到storage_class>,選擇Object的儲存類型。
此處以選擇default(繼承Bucket儲存類型)為例,即輸入1,然後按下Enter。
執行到Edit advanced config? (y/n) ,輸入n,然後按下Enter。
輸入q,完成所有配置。
掛載儲存空間。
以將examplebucket掛載到E:盤,並以D:\disk-cache路徑作為緩衝目錄為例。
rclone mount oss-disk:/examplebucket E: --cache-dir D:\disk-cache --vfs-cache-mode writes返回The service rclone has been started資訊,表示掛載成功。此時,您還可以查看到examplebucket(E:)的磁碟。