
# SFS容量型文件系统迁移至通用文件系统（fpart工具）
#### 方案概述
本次使用fpart工具将SFS容量型文件系统迁移至通用文件系统，迁移目标是高效、安全地完成数据迁移，同时确保数据完整性和一致性，整个流程包含全量迁移（业务无影响）、第一次增量迁移（业务无影响）、解除SFS容量型文件系统挂载（需保持业务中断）、第二次增量迁移（保持业务中断），切换挂载点（保持业务中断）。
#### 约束与限制
- 此方案仅适用于使用Linux系统的云服务器进行数据迁移。
- 使用CIFS协议或者需要挂载到Windows上的SFS容量型文件系统暂时无法迁移。
- Linux系统云服务器、SFS容量型文件系统和通用文件系统需在同一VPC下。
- 如果是CCE集群使用，CCE集群需要升级到1.19.10版本，且everest插件版本要高于2.0.9 才能使用通用文件系统。
 
#### 方案架构
图1SFS容量型文件系统迁移至通用文件系统流程图   
![](https://support.huaweicloud.com/bestpractice-sfs/zh-cn_image_0000002377672905.png "点击放大")
#### 资源规划
本章节介绍案例中使用的资源信息。具体如[表1]所示。
 表1资源规划 
| 产品         | 配置示例                                                                                                                                                                                                                                                                                                                    | 说明                      |
|:---|:---|:---|
| 弹性云服务器 ECS | 规格：8vCPUs \| 16GiB \| c7.2xlarge.2 操作系统：Linux 区域：华北-北京四 VPC名称：VPC1 | 已创建/mnt/src和/mnt/dst的目录 |
   
#### 准备工作
1. 在华为云官网创建通用文件系统，VPC选择与SFS容量型文件系统相同的VPC。如果没有VPC，则在同区域创建虚拟私有云VPC，然后再去创建通用文件系统。创建虚拟私有云VPC的具体操作请详见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
2. 已创建通用文件系统，绑定VPC，且VPC需要购买VPC终端节点（免费）。
   VPCEP服务名称如下所示：
   表2VPCEP服务名称 
   | 区域          | 服务名称                                                    |
   |:---|:---|
   | 华北-北京四      | cn-north-4.com.myhuaweicloud.v4.storage.lz13            |
   | 华南-广州（可用区6） | cn-south-1.com.myhuaweicloud.v4.obsv2.storage.lz06      |
   | 华东-上海一      | cn-east-3.com.myhuaweicloud.v4.storage.lz07             |
   | 中国-香港       | ap-southeast-1.com.myhuaweicloud.v4.obsv2.storage.lz005 |
      
   
3. 如果有可用的Linux云服务器则跳过该步骤，如果没有请在华为官网上购买一个Linux云服务器，建议购买机型8U或16U机型，云服务器的VPC需要和SFS容量型文件系统、通用文件系统的VPC一致，保证云服务器与SFS容量型文件系统、通用文件系统可以互通。
4. 在Linux云服务器中执行以下命令安装fpart工具：
   ```
   yum -y install fpart rsync
   ```
   
5. 在Linux云服务器中分别执行以下命令创建挂载地址：
   ```
   mkdir /mnt/src
   ```
   ```
   mkdir /mnt/dst
   ```
   
6. 从控制台获取SFS容量型文件系统和通用文件系统的挂载地址，分别执行挂载命令将SFS容量型文件系统和通用文件系统分别挂载到/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  通用文件系统挂载地址 mnt/dst
   ```
   
7. 如果无法挂载，请参考《弹性文件服务快速入门》的"挂载NFS协议类型文件系统到云服务器（Linux）"章节安装对应的工具包。
 
#### 操作步骤
1. 全量迁移：SFS容量型文件系统中文件全量复制到通用文件系统中。 
   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目录为执行的拷贝命令。fpsync命令运行之后会产生一个Run ID，可基于此观察任务的运行状态。
   
   
   
   
2. 第一次增量迁移：在全量数据迁移过程中，如果源文件系统被其他ECS上运行的业务应用写入，那么在全量数据迁移结束后，需要另外同步新的增量数据。 
   执行以下命令，进行增量迁移。
   ```
   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)
   记录本轮开始和结束时间，约等于以下步骤中客户需要中断业务的时间。
   
   
3. 解除SFS容量型文件系统挂载：为了避免不断有新的数据写入，需要在同步增量数据之前，在所有ECS和容器上停止使用源文件系统的业务应用。 
   ![](https://support.huaweicloud.com/bestpractice-sfs/public_sys-resources/caution_3.0-zh-cn.png)
   - 请务必确保所有执行业务的云服务器（云容器）节点解除挂载SFS容量型文件系统，否则后续迁移完可能有SFS容量型文件系统和通用文件系统数据不一致的问题。
   
   - 请不要在执行迁移的ECS机器上解除SFS容量型挂载文件系统。
   
   - ECS和CCE挂载方式不同，请按场景选择。
   
   - 本步骤执行过程中需保证业务中断。
    
   **ECS** **挂载场景：**
   1. 登录到挂载SFS容量型文件系统的云服务器。
   
   2. 执行以下命令解除SFS容量型文件系统的挂载：
      ```
      umount -f 挂载目录
      ```
      
   
   
   **CCE** **挂载场景：**
   1. 登录到CCE控制台，找到使用该存储卷的工作负载，并缩容到0。 ![](https://support.huaweicloud.com/bestpractice-sfs/zh-cn_image_0000002344308104.png "点击放大")
      
   
   2. 等待实例被删除，确保为空，进行下一步操作。
   
   
   
   
4. 第二次增量迁移：执行以下命令，将第一轮增量迁移后到中断业务期间产生的增量数据同步到通用文件系统中。本轮同步后，SFS容量型和通用文件系统中的数据即可完全一致。 
   ```
   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容量型文件系统和通用文件系统中的数据完全一致。
   
   - 本步骤执行过程中需保证业务中断。
    
   
   
5. 挂载通用文件系统：解除挂载SFS容量型文件系统并重新挂载到通用文件系统，业务切到通用文件系统上运行。 
   **ECS** **挂载场景：**
   1. 登录到挂载SFS容量型文件系统的云服务器，执行以下命令解除SFS容量型文件系统的挂载：
      ```
      umount -f 挂载目录
      ```
      
   
   2. 执行以下命令挂载通用文件系统：
      ```
      mount -t nfs -o vers=3,timeo=600,noresvport,nolock 通用文件系统挂载地址  挂载目录
      ```
      
   
   
   **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容量型文件系统资源的资源，防止额外收费。
 
