本文介紹如何使用rsync工具實現阿里雲Apsara File Storage NAS NFS協議檔案系統之間的資料移轉。
前提條件
已擁有一個存有資料的NFS協議檔案系統,並且擁有一個專用網路類型掛載點。
費用說明
NAS與NAS之間的遷移,會涉及如下費用:
準備工作
NAS檔案系統之間進行資料移轉時,需要雲端服務器可以同時訪問源NAS和目的NAS。因此,您需要確保通過同一個阿里雲Virtual Private Cloud可以同時訪問兩個NAS。
查看源檔案系統掛載點資訊。
配置目標檔案系統掛載點。
檔案系統同地區
目標檔案系統與源檔案系統的掛載點屬於同一VPC下時,在擷取目標掛載點資訊後,即可參照實施遷移進行資料移轉。
目標檔案系統與源檔案系統的掛載點不屬於同一VPC下時,可以採用以下三種方式準備掛載點:
在目標地區和可用性區域建立新的檔案系統,自動建立新的掛載點。具體操作,請參見通過控制台建立通用型NAS檔案系統。
說明如果您購買隨用隨付的通用型NAS(容量型/效能型/進階型)NFS協議檔案系統,請選擇與源掛載點相同的VPC網路和虛擬交換器,即可自動產生目標掛載點。在新的檔案系統建立之後,可以購買資源套件進行抵扣,以節省費用。
在已有的檔案系統上建立新的掛載點。具體操作,請參見添加掛載點。
通過雲企業網將目標掛載點與源掛載點的VPC網路互相連通。具體操作,請參見通過雲企業網實現同地區跨VPC掛載NAS。
檔案系統跨帳號或跨地區
如果您的目標檔案系統與源檔案系統的掛載點資訊不在同一個帳號或同地區下時,則需通過雲企業網將您的VPC網路互相連通。具體操作,請參見通過雲企業網實現跨帳號跨地區掛載NAS。
實施遷移
在準備好源和目標掛載點後,建立新的ECS,同時掛載兩個NFS協議檔案系統後,使用rsync工具進行複製即可實現資料移轉。遷移資料的操作如下所示。
掛載源和目標檔案系統。
重要推薦購買新的臨時ECS執行遷移操作。如果使用已有的ECS執行遷移操作,會與正在啟動並執行業務爭搶CPU和網路頻寬資源。
登入ECS管理主控台單擊建立執行個體後,配置如下重要訊息。
地區:選擇源檔案系統所在的地區。
網路及可用性區域:選擇源檔案系統所在的VPC及可用性區域。
執行個體規格:一般選擇最低規格即可。
鏡像:選擇CentOS 7.6。
儲存:單擊共用盤NAS(選填),選擇添加檔案儲存體進行配置,詳情請參考下圖樣本。
說明如果源和目標掛載點都在同一個VPC網路中,可以在ECS購買頁面中配置NAS掛載資訊,ECS啟動後,源和目標NAS檔案系統會自動掛載。
如果源和目標掛載點不在同一個VPC網路或同一地區或同一帳號中時,在ECS購買頁面中只需配置源檔案系統。在ECS完成建立後,手動掛載目標檔案系統。關於手動掛載目標檔案系統的操作,請參見掛載NFS協議檔案系統。
在ECS建立成功後,源和目標NAS檔案系統掛載完成,請執行以下命令確認。
mount | grep nas.aliyuncs.com
如果掛載成功,介面會顯示以下資訊。源檔案系統掛載到了
/mnt/volumeA
目錄,目標檔案系統掛載到了/mnt/volumeB
目錄。安裝遷移工具。
執行以下命令安裝遷移工具。
sudo yum install -y rsync tmux
說明rsync是負責執行複製的工具。
tmux是協助查看進度的工具。
遷移存量資料。
執行以下命令,將源檔案系統中的存量資料同步到目標檔案系統中。
tmux sudo rsync -avP /mnt/volumeA/ /mnt/volumeB/
您還可以利用rsync並發拷貝上傳資料,命令如下。
threads=<線程數量>; src=<源路徑/>; dest=<目標路徑/>; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )
例如,線程數量為10,原路徑為/abc ,目標路徑為
/mnt1
。threads=10; src=/abc/; dest=/mnt1/; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )
說明rsync命令中的源路徑結尾必須帶有/,否則同步後資料路徑不能匹配。
tmux命令會建立tmux session。在tmux session中運行
rsync
可以協助查看進度。如果在遷移過程中,與ECS的串連斷開了,重新登入ECS後執行tmux attach
恢複tmux session,即可繼續觀察遷移進度。在測試使用的源檔案系統中,共有一百萬個100 KiB的檔案,實際容量100 GiB,使用rsync遷移共耗時320分鐘。
遷移增量資料。
在存量資料移轉過程中,如果源檔案系統被其它ECS上啟動並執行業務應用寫入,那麼在存量資料移轉結束後,需要另外同步新的增量資料。
停止業務應用。
為了避免不斷有新的資料寫入,需要在同步增量資料之前,在所有ECS和容器上停止使用源檔案系統的業務應用。
重要在停止業務應用後,請不要手動刪除源檔案系統的任何資料,否則會在下一步操作中造成資料丟失。
請妥善選擇業務低峰期操作。可以使用
fuser -mv <dir>
命令找到讀寫NAS的進程PID。
同步增量資料。
執行rsync命令,將存量資料移轉開始後的增量資料同步到目標檔案系統中。
sudo rsync -avP --delete /mnt/volumeA/ /mnt/volumeB/
rsync命令會先掃描源路徑,所以即使增量資料不多,也可能需要較長的時間完成。
警告--delete選項代表從目標檔案系統中刪除已在源檔案系統中被刪除的資料,請謹慎使用,避免將目標檔案系統中的資料意外刪除。
檢查遷移結果。
在遷移完成後,執行以下rsync命令,檢查目標檔案系統是否與源檔案系統一致。
sudo rsync -rvn /mnt/volumeA/ /mnt/volumeB/
如果兩者資料一致,應該顯示以下資訊,中間不包含任何檔案路徑。
切換應用到新的檔案系統
在資料移轉完成後,如果您需要將現有業務從舊的檔案系統切換到新的檔案系統上,請在所有ECS和容器上卸載舊的檔案系統,然後掛載新的檔案系統。
使用ECS直接掛載NAS檔案系統。
執行
mount | grep nas.aliyuncs.com
記錄現有NAS掛載資訊,注意NAS掛載到的本地路徑<dir>。使用
fuser -mv <dir>
找到讀寫NAS的進程PID,將其全部通過kill -9
命令停止。執行
umount <dir>
卸載舊的檔案系統。掛載新檔案系統到原本的<dir>路徑。更多有關掛載參數的資訊,請參見掛載NFS協議檔案系統。
啟動訪問NAS的進程,確認讀寫正常。
修改/etc/fstab中的自動掛載資訊,將舊的掛載點替換為新的掛載點。
使用K8s管理的容器掛載NAS檔案系統。
修改現有的動態磁碟區或靜態卷YAML設定檔,將舊的掛載點替換為新掛載點。
用修改後的設定檔產生新pod,確認其掛載新的檔案系統成功並可正常讀寫。
回收使用舊的檔案系統的所有pod。
在業務切換到新的檔案系統後,請繼續保留舊的檔案系統的資料至少一個星期。不要立刻刪除舊的檔案系統裡的資料,以避免因資料誤刪除或誤同步而造成資料丟失。