
# SFS容量型文件系统迁移至SFS Turbo文件系统（fpart工具）
#### 方案概述
本次使用fpart工具将SFS容量型文件系统迁移至SFS Turbo文件系统，迁移目标是高效、安全地完成数据迁移，同时确保数据完整性和一致性，整个流程包含全量迁移（业务无影响）、第一次增量迁移（业务无影响）、解除SFS容量型文件系统挂载（需保持业务中断）、第二次增量迁移（保持业务中断），切换挂载点（保持业务中断）。
#### 约束与限制
- 此方案仅适用于使用Linux系统的云服务器进行数据迁移。
- Linux系统云服务器、SFS容量型文件系统和SFS Turbo文件系统需在同一VPC下。
- 使用CIFS协议或者需要挂载到Windows上的SFS容量型文件系统暂时无法迁移。
- 如果是CCE集群使用，CCE集群需要升级到1.15+版本，且everest插件版本要高于1.1.13才能使用SFS Turbo。
 
#### 方案架构
图1SFS容量型文件系统迁移至SFS Turbo文件系统流程图   
![](https://support.huaweicloud.com/bestpractice-sfs/zh-cn_image_0000002381131769.png "点击放大")
#### 资源规划
本章节介绍案例中使用的资源信息。具体如[表1]所示。
 表1资源规划 
| 产品         | 配置示例                                                                                                                                                                                                                                                                                                                    | 说明                      |
|:---|:---|:---|
| 弹性云服务器 ECS | 规格：8vCPUs \| 16GiB \| c7.2xlarge.2 操作系统：Linux 区域：华北-北京四 VPC名称：VPC1 | 已创建/mnt/src和/mnt/dst的目录 |
   
#### 准备工作
1. 在华为云官网创建SFS Turbo文件系统，VPC选择与SFS容量型文件系统相同的VPC。如果没有VPC，则在同区域创建虚拟私有云VPC，然后再去创建SFS Turbo文件系统。创建SFS Turbo文件系统的具体操作请详见[创建SFS Turbo文件系统](https://support.huaweicloud.com/usermanual-sfsturbo/sfsturbo_01_0359.html)。创建虚拟私有云VPC的具体操作请详见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
2. 如果有可用的Linux云服务器可以使用则跳过该步骤，如果没有请在华为官网上购买一个Linux云服务器，建议购买机型8U或16U机型，配置ECS的VPC，保证ECS与SFS容量型文件系统、SFS Turbo文件系统可以互通。
3. 在Linux云服务器中执行以下命令安装fpart工具：
   ```
   yum -y install fpart rsync
   ```
   
4. 在Linux云服务器中分别执行以下命令创建挂载地址：
   ```
   mkdir /mnt/src
   ```
   ```
   mkdir /mnt/dst
   ```
   
5. 从控制台获取SFS容量型文件系统和SFS Turbo文件系统的挂载地址，分别执行挂载命令将SFS容量型文件系统和SFS Turbo文件系统分别挂载到/mnt/src和/mnt/dst目录下（挂载目录名称必须是/mnt/src和/mnt/dst）：
   ```
   mount -t nfs -o vers=3,timeo=600,nolock SFS容量型挂载地址 /mnt/src
   ```
   ```
   mount -t nfs -o vers=3,timeo=600,nolock SFS Turbo挂载地址 /mnt/dst
   ```
   
6. 如果无法挂载，请参考《弹性文件服务快速入门》的"挂载NFS协议类型文件系统到云服务器（Linux）"章节安装对应的工具包。
 
#### 操作步骤
1. 全量迁移：SFS容量型文件系统中的文件全量复制到SFS Turbo文件系统中。 
   1. 使用控制台提供的VNC方式登录，执行以下命令进行数据同步：
      ```
      fpsync -n 500 -f 500 -o "-lptgoDvu --numeric-ids" -v /mnt/src/ /mnt/dst/
      ```
      ![](https://support.huaweicloud.com/bestpractice-sfs/public_sys-resources/note_3.0-zh-cn.png)
      - n：并行的拷贝线程数量。
      
      - f：每个线程拷贝的文件数量。
      
      - o：rsync的拷贝配置选项，具体说明可参考 [rsync 命令](https://wangchujiang.com/linux-command/c/rsync.html)。
      
      - v：输出详细日志。
      
      - 如果文件量比较大，可以对/mnt/src下面的子文件夹并行执行同步命令。
      
      - n和f参数可以根据文件和目录的结构进行相应调整。
        
   
   2. 默认运行的日志文件保存在 /tmp/fpsync下，其中log目录为任务的运行日志，parts目录为文件分区的日志，queue目录为执行配置，work目录为执行的拷贝命令。可基于此日志观察任务的运行状态。
   
   
   
   
2. 第一次增量迁移：执行下方命令，将全量同步后的增量数据写入到SFS Turbo文件系统中。 
   ```
   fpsync -n 500 -f 500 -o "-lptgoDvu --numeric-ids" -v /mnt/src/ /mnt/dst/
   ```
   ![](https://support.huaweicloud.com/bestpractice-sfs/public_sys-resources/notice_3.0-zh-cn.png)
   记录本轮开始和结束时间，约等于以下步骤中客户需要中断业务的时间。
   
   
3. 解除SFS容量型文件系统挂载：为了避免不断有新的数据写入，需要在同步增量数据之前，在所有ECS和容器上停止使用源文件系统的业务应用。 
   ![](https://support.huaweicloud.com/bestpractice-sfs/public_sys-resources/caution_3.0-zh-cn.png)
   - 请务必确保所有执行业务的云服务器（云容器）节点解除挂载SFS容量型文件系统，否则后续迁移完可能有SFS容量型文件系统和SFS Turbo文件系统数据不一致的问题。
   
   - 请不要在执行迁移的ECS机器上解除SFS容量型挂载文件系统。
   
   - ECS和CCE挂载方式不同，请按场景选择。
   
   - 本步骤执行过程中需保证业务中断。
    
   **ECS** **挂载场景：**
   1. 登录到挂载SFS容量型文件系统的云服务器。
   
   2. 执行以下命令解除SFS容量型文件系统的挂载：
      ```
      umount -f 挂载目录
      ```
      
   
   
   **CCE** **挂载场景：**
   1. 登录到CCE控制台，找到使用该存储卷的工作负载，并缩容到0。 ![](https://support.huaweicloud.com/bestpractice-sfs/zh-cn_image_0000002381251497.png "点击放大")
      
   
   2. 等待实例被删除，确保为空，进行下一步操作。
   
   
   
   
4. 第二次增量迁移：执行以下命令，将第一轮增量迁移后到中断业务期间产生的增量数据同步到SFS Turbo文件系统中。本轮同步后，SFS容量型和SFS Turbo文件系统中的数据即可完全一致。 
   ```
   fpsync -n 500 -f 500 -o "-lptgoDvu --numeric-ids" -v /mnt/src/ /mnt/dst/
   ```
   ![](https://support.huaweicloud.com/bestpractice-sfs/public_sys-resources/caution_3.0-zh-cn.png)
   - 保证SFS容量型文件系统和SFS Turbo文件系统中的数据完全一致。
   
   - 本步骤执行过程中需保证业务中断。
    
   
   
5. 挂载SFS Turbo文件系统：解除挂载SFS容量型文件系统并重新挂载到SFS Turbo文件系统，业务切到SFS Turbo文件系统上运行。 
   **ECS** **挂载场景：**
   1. 登录到挂载SFS容量型文件系统的云服务器，执行以下命令解除SFS容量型文件系统的挂载：
      ```
      umount -f 挂载目录
      ```
      
   
   2. 执行以下命令挂载SFS Turbo文件系统：
      ```
      mount -t nfs -o vers=3,nolock  SFS Turbo文件系统挂载地址
      ```
      
   
   
   **CCE挂载场景：** 请参考[将容器应用从SFS 1.0迁移到通用文件系统或SFS Turbo](https://support.huaweicloud.com/usermanual-cce/cce_10_0429.html)进行挂载。
   ![](https://support.huaweicloud.com/bestpractice-sfs/public_sys-resources/caution_3.0-zh-cn.png)
   - 请务必确保挂载参数和目录正确，否则可能会影响业务。
   
   - ECS和CCE挂载方式不同，请按场景选择。
    
   
   
6. 客户可恢复业务，校验业务是否正常。
7. 观察一段时间业务运行情况后，释放释放SFS容量型文件系统资源的资源，防止额外收费。
 
