本文主要介紹Lightning CubeII型如何建立和執行資料移轉任務,以及如何查看任務日誌,以實現從資料來源端讀取資料並將其儲存至Lightning Cube中。
注意事項
使用Lightning Cube遷移資料時需要注意以下事項:
填寫源路徑待遷移目錄請使用絕對路徑,必須以正斜線(/)開頭和結尾,不支援環境變數和特殊字元,並且需確保待遷移目錄存在且正確有效。
Lightning Cube遷移時會佔用源路徑的資源,可能會影響業務正常運行。若您的業務比較重要,請提前做好評估後對源端設定限速,或在空閑時間啟動遷移任務。
若您源路徑和目的OSS中有相同檔案名稱的檔案,遷移時預設會採用全部覆蓋的方式,源路徑中的檔案會覆蓋目的OSS中的檔案,若兩個檔案內容不同,請您務必變更檔名或做好備份。
Lightning Cube預設會保留源檔案的最後修改時間屬性,請您注意,如果目的Bucket設定了生命週期規則,且遷移後檔案處於該生命週期規則生效的時間範圍內,則該檔案可能會在規則生效時被刪除或轉為指定的歸檔類型。
如無需要保留最後修改時間,可聯絡阿里雲工作人員進行設定,並請您確認已充分瞭解不保留最後修改時間所對應的風險。
遷移限制說明
若您源路徑中有字元裝置檔案或塊裝置檔案、Socket檔案和管道檔案,此類資料均不會被遷移。
若您遷移的源路徑中有軟連結,資料移轉時,僅transfer_symlink設定為true時,會隨即轉移軟連結,否則將不遷移。關於軟連結的詳細資料,請參見軟連結
若您源路徑存在永久連結關係,遷移後會變成普通檔案。
不支援檔案父目錄屬性的遷移。
SUID、SGID、SBID等檔案許可權不支援遷移。
遷移目錄+檔案名稱總長度不得超過1024個位元組,每層目錄名稱長度不得超過200個位元組,且目錄下的檔案名稱長度不得超過255個位元組,超過該長度則不遷移。
支援遷移的屬性:Permissions -> X-Oss-Meta-Perms(OSS)、Uid:Gid -> X-Oss-Meta-Owner(OSS)、mtime -> X-Oss-Meta-Mtime(OSS)、atime -> X-Oss-Meta-Atime(OSS)、ctime -> X-Oss-Meta-Ctime(OSS)。
說明Permissions:包含讀、寫、執行等9個許可權。
Uid:Gid:使用者ID:使用者所屬分組ID,中間以半形冒號(:)做分隔字元。
不支援遷移的屬性(包括但不限於):AccessTime、Attr、Acl等。
說明不支援遷移的屬性包括但不限於以上列舉的內容,其他未列舉的屬性行為暫無法確定,以實際遷移完成的內容為準。
準備工作
一、解密並掛載儲存池
開機後,儲存池處於鎖定狀態。您可通過初始秘鑰進行解密,或添加新秘鑰以實現解密。如需擷取初始秘鑰,請聯絡阿里雲工作人員。
使用初始秘鑰對儲存池進行解密如下:
輸入
crypt open <password>。
添加新秘鑰並解密儲存池如下:
輸入
crypt addsecret <old_password> <new_password>。如需刪除初始秘鑰,請執行
crypt deletesecret <old_password>。使用新秘鑰開啟儲存池,輸入
crypt open <new_password>。
建議設定新秘鑰時,包含大小寫字母、數字和特殊符號,並確保長度不少於8位,例如:Hello@12345!。
二、初始化mgwserver
當前Lightning Cube中僅支援單個Bucket,如需建立多個Bucket,請聯絡阿里雲工作人員。
建立用於本次遷移的Bucket、AK和SK。
確認mgwserver服務狀態是否正常,輸入
mgwserver status,如狀態異常時,請聯絡阿里雲工作人員。建立Bucket,並設定AK和SK,輸入
mgwserver create-bucket <Bucket> <AK> <SK>。說明Bucket:Bucket名稱,建議與雲上OSS Bucket名稱保持一致,例如 xxx-xxx-data。
AK:使用者名稱 ,格式為英文小寫字母、數字和特殊字元短劃線(-)和底線(_),例如 aliyuncs@2024-xx-xx。
SK:密碼,格式為英文小寫字母、數字和特殊字元短劃線(-)和底線(_),例如 xxxxxxxxx。
建立遷移任務
任務需明確指定到目錄層級。如果需要遷移源端的所有資料,則只需建立一個遷移任務。如果僅遷移源端N個目錄下的資料,須建立N個任務。請確認所需建立的任務數量,並根據任務數量決定需要複製的job.cfg檔案數量,每個任務對應一個job.cfg檔案。
配置任務檔案
執行命令
cdmgwclient && cd conf切換至指定目錄下。請確認需要建立的任務數量,並根據該數量決定複製多少份
demo-job.properties檔案。每個任務對應一份demo-job.properties檔案。說明注意請將demo-job.properties檔案做好區分,例如:job1.properties、job2.properties。
如果涉及整個目錄的資料移轉,則只需建立一個任務。
如果僅遷移部分目錄的資料,則每個目錄應單獨建立一個任務。以下操作將以檔案job1.properties為例進行說明。
請開啟其中一個properties檔案,例如 job1.properties,並配置以下資訊:
參數名
是否必選
舉例值
job_name
是
任務名,例如:example_job。
src_path
是
填寫源路徑,注意格式要求必須以正斜線(/)開頭和以正斜線(/)結尾。
例如:源路徑為
/mnt/nas/example_dir/,此路徑下有檔案example.jpg,設定目的路徑為mgw:example_bucket/dest/,則遷移後檔案example.jpg的完整路徑為mgw:example_bucket/dest/example.jpgdest_path
是
目的Lightning Cube的儲存路徑,格式為
mgw:BucketName/prefix/,例如mgw:example_bucket/dest/。BucketName:為初始化mgwserver的Bucket名稱。
prefix:指定Bucket下的首碼,格式要求必須以正斜線(/)結尾。
指定首碼:例如源路徑為
/mnt/nas/example_dir/,此路徑下有檔案example.jpg,設定目的Bucket首碼為example/dest/,則遷移後檔案example.jpg的完整路徑為mgw:example_bucket/example/dest/example.jpg。不指定首碼:例如源路徑為
/mnt/nas/example_dir/,此路徑下有檔案example.jpg,不設定目的Bucket的首碼,則遷移後檔案的完整路徑為mgw:example_bucket/example.jpg
transfer_dir
是
是否遷移目錄。設定為true表示啟用遷移,設定為false表示禁用。
啟用時,源路徑中掃描到的所有目錄自身也會被加入待遷移隊列,同時會被統計到遷移任務的記錄檔中。會在目的OSS中建立對應的'/'結尾的Null 物件,並將來源目錄(支援遷移)的屬性設定到目的對象的UserMeta中。
禁用時,源路徑中掃描到的所有目錄自身將會被忽略,不會被統計到遷移任務記錄檔中。不會在目的OSS建立對應的'/'結尾的Null 物件。
transfer_symlink
是
是否遷移軟串連,設定為true表示啟用遷移,設定為false表示禁用。
啟用時,源路徑中所有軟連結類型的檔案自身也會被加入待遷移隊列,同時會被統計到遷移任務的【檔案數】、【儲存量】欄位。會在目的OSS中建立對應的Symlink對象,並將源軟連結檔案(支援遷移)的屬性設定到Symlink對象的UserMeta中。關於Symlink對象的Target屬性值,先(以此軟連結所在目錄為基準)將Target屬性解析成最短絕對路徑(字元長度最短的等效路徑,AbsTarget),然後執行字串替換操作,將AbsTarget中的src_path(若匹配)替換成dest_path中的prefix,並將替換後的結果值設定到目的OSS Symlink對象的Target屬性上。
說明樣本:假設遷移任務配置的src_path="/mnt/nas/example_dir/",
dest_path中的prefix="example/dest/",/mnt/nas/example_dir/links/a.lnk是源路徑下的一個軟連結類型檔案,假設其Target屬性:
為"../data/./a.txt"。則解析後的最短絕對路徑為"/mnt/nas/example_dir/data/a.txt"。則替換後的最終Target結果值為"example/dest/data/a.txt"。
為"/mnt/nas/example_dir/verbose/../data/./a.txt"。則解析後的最短絕對路徑為"/mnt/nas/example_dir/data/a.txt",替換後的最終Target結果值為"example/dest/data/a.txt"。
禁用時,源路徑中所有軟連結類型的檔案將會被忽略,不會被統計到遷移任務的【檔案數】、【儲存量】欄位。
重要任何情況下,都不會額外遷移源地址中軟連結檔案所指向的目標檔案或目錄(除非該目標檔案或目錄也在本次遷移範圍內)
transfers
否
每個任務的並發數,預設為16,若為大檔案遷移,推薦保持預設值,如為小檔案遷移推薦設定為256,最大值256。
log_level
否
日誌等級,預設為INFO層級,如需更詳細的日誌可設定為DEBUG層級。
啟動任務
請注意,請執行cdmgwclient進入該目錄進行以下操作。
執行bash console.sh start conf/properties檔案名稱啟動任務,例如:bash console.sh start conf/job1.properties。
查看任務狀態
請注意使用bash console.sh相關的命令,均在執行cdmgwclient進入該目錄後完成。
查看任務狀態的方法,具體如下:
執行
bash console.sh status <job_name>查看任務狀態。(請替換為實際任務名)。如JobStatus為running狀態,表示任務還在遷移中,尚未遷移結束,並可查看當前遷移進度,如下圖所示:

如JobStatus為failed狀態,代表有檔案遷移失敗,您可自行根據日誌排查失敗原因或聯絡Lightning Cube工作人員協助排查。

如JobStatus為succeed狀態:代表全部檔案遷移完成,且無遷移失敗檔案,可查看已遷移完成的總資料量和總檔案數,如下圖所示:

返回參數說明如下:
第一個Transferred: 已掃描到資料量/已遷移成功資料量,按資料量遷移百分比,平均遷移速度。
第二個Transferred:已掃描到檔案數/已遷移成功檔案數,按檔案數遷移百分比。
Checks:跳過檔案數,僅存在跳過檔案時展示,無跳過檔案則不展示,如首次遷移後有部分失敗檔案需重新遷移,首次任務遷移成功檔案會計入跳過檔案數中。
Errors:失敗檔案數,僅存在遷移失敗檔案時展示,無失敗檔案則不展示。
Elapsed time:總遷移時間長度。
ScanComplete:是否掃描完成(true 表示掃描完成,false 表示未掃描完成)。
如果來源資料為大平鋪目錄,則掃描所需時間將較長,進度顯示也會相對緩慢。
刪除任務
如您發現啟動了錯誤的任務,您可以通過以下命令刪除指定任務及其對應的日誌目錄:
執行
bash console.sh delete <job_name>刪除指定任務。(請替換為實際任務名稱,已完成遷移的檔案將不會被刪除)。
遷移後續操作
請注意,以下操作均在/home/aliyuncs/log/mgwclient/job_name目錄下完成。
當遷移任務結束後,如任務的狀態為failed,您可自行根據日誌排查失敗原因或聯絡Lightning Cube工作人員協助排查。
如果遷移任務狀態為succeed,您可根據CRC64列表比對源端檔案做校正,請您務必做好資料校正。
查看日誌
以下路徑或檔案名稱中包含的job_name請替換為實際任務名。
在/home/aliyuncs/log/mgwclient/job_name 目錄下,會存放一些日誌用於記錄檔案的上傳狀態以及任務的狀態。
日誌名稱 | 記錄檔說明 |
job_name-status.log | 任務遷移進度檔案。 |
job_name-folder.log | 遷移的目錄列表。 |
job_name-transfers-error.log | 遷移失敗檔案清單。 |
job_name-crc64-succeed.log | 遷移成功檔案CRC64列表。 |
job_name-crc64-error.log | 遷移中校正檔案CRC64失敗列表。 |
job_name-crc64-skipped.log | 遷移中跳過檔案清單。 |
遷移失敗分兩種情況,一種為遷移中失敗,一種為CRC64校正失敗,兩種合并後為總失敗檔案數。
任務進度日誌
job_name-status.log該檔案用於簡單記錄任務遷移進度資訊。第一個Transferred: 已掃描到資料量/已遷移成功資料量,按資料量遷移百分比,平均遷移速度。
第二個Transferred:已掃描到檔案數/已遷移成功檔案數,按檔案數遷移百分比。
Checks:跳過檔案數,僅存在跳過檔案時展示,無跳過檔案則不展示,如首次遷移後有部分失敗檔案需重新遷移,首次任務遷移成功檔案會計入跳過檔案數中。
Errors:失敗檔案數,僅存在遷移失敗檔案時展示,無失敗檔案則不展示。
Elapsed time:總遷移時間長度。
ScanComplete:是否掃描完成(true 表示掃描完成,false 表示未掃描完成)。
遷移目錄日誌
job_name-folder.log記錄上傳目錄的日誌,僅在任務設定檔設定transfer_dir為true有效,每個目錄上傳成功都會列印一條日誌。檔案記錄如下資訊:第1列:目錄路徑名稱。
遷移失敗日誌
job_name-transfers-error.log記錄任務遷移失敗的檔案,日誌為即時更新,直到所有任務都結束為止。檔案記錄如下資訊:第1列:檔案路徑名稱。
第2列:遷移失敗資訊。
遷移成功CRC64列表日誌
job_name-crc64-succeed.log記錄任務遷移成功CRC64列表檔案,日誌為即時更新,直到所有任務都結束為止。檔案記錄如下資訊:第1列:檔案CRC64值。
第2列:檔案路徑名稱。
遷移失敗CRC64列表日誌
job_name-crc64-error.log記錄任務遷移失敗CRC64列表檔案,日誌為即時更新,直到所有任務都結束為止。檔案記錄如下資訊:第1列:檔案CRC64值。
第2列:檔案路徑名稱。
遷移跳過日誌
job_name-crc64-skipped.log記錄任務中跳過檔案日誌,日誌為即時更新,直到所有任務都結束為止。檔案記錄如下資訊:第1列:檔案路徑名稱。