zoukankan      html  css  js  c++  java
  • 如何快速将Linux文件系统迁移到Azure存储

     

    概述

    前一段时间一直在给一个客户将原先搭载在Linux(客户使用的是CentOS 7.0)上的NFS快速迁移到Azure存储上,并且为了保证数据完整性还需要另开一个存储做冷备,架构图如下:

    通过Cli迁移

    而对于将NFS上的文件迁移到Azure存储,首先想到的是通过Cli工具进行迁移。

    在CentOS上安装CLI

    yum install -y epel-release
    
    yum install nodejs -y
    
    yum install npm -y
    
    npm install -g azure-cli

    使用cli迁移的脚本

    #!/bin/bash
    container={storage container}
    btype=block
    storageaccount={storage account}
    storagekey={storage key}
    upload(){
      files=`ls -l | awk '/rw/ {print $9}'`
      for file in $files
        do
          blobname=''
          if [$* -f ''];then
           blobname=$file
          else
           blobname=$*"/"$file
          fi
          
          
          if [ -f $file ]; then
            azure storage blob upload -f ./$file --container $container -b $blobname -t $btype -a $storageaccount -k $storagekey
          else
            #echo "$file is a Directory"
            cd $file
            upload $blobname
            cd ..
          fi
        done
    }
    upload

    部分迁移信息如下:

    但是经过实测,发现使用cli迁移的效果并不理想,根据我当时的测试结果(不代表官方),大概1小时才上传200MB左右。

    通过Powershell迁移

    然后想到了使用Powershell迁移,而在linux上玩Powershell应该也挺有趣的。

    开始在CentOS上安装Powershell

    #安装Powershell
    yum install ./ powershell-6.0.0_alpha.18-1.el7.centos.x86_64.rpm
    mkdir -p /usr/local/share/powershell/Modules
    #进入PS
    Powershell
    #安装Azure Powershell模板
    Install-Package -Name AzureRM.NetCore.Preview -Source https://www.powershellgallery.com/api/v2 -ProviderName NuGet -ExcludeVersion -Destination /usr/local/share/powershell/Modules
    #导入AzureRm包
    Import-Module AzureRM.NetCore.Preview

    一些准备就绪,发现AzureRm(ARM)并没有提供上传文件的命令,而我也一直没有找到如何在Linux上安装Azure(ASM)模板,到此想通过Powershell做迁移也不了了之。

    通过blobxfer快速迁移

    在后来,听Azure群里一位老师说可以通过blobxfer来快速迁移,但是blobxfer是什么鬼?查资料(https://github.com/Azure/blobxfer),发现blobxfer是通过python实现的类似于AzCopy(只能在Windows下使用)的工具,而且上传下载非常快速。

    Blobxfer安装

    yum install gcc openssl-devel
    #下载并安装Python-2.7.13
    wget   https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
    tar zxvf Python-2.7.13.tgz
    cd Python-2.7.13
    ./configure --prefix=/usr/local/python27
    make && make install 
    #安装setuptools
    wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-20.3.1.tar.gz
    tar xf setuptools-20.3.1.tar.gz
    cd setuptools-20.3.1
    python27 setup.py install --prefix=/usr/local/python27/
    #安装pip-9.0.1
    wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
    tar zxvf pip-9.0.1.tar.gz
    cd pip-9.0.1
    python27 setup.py install --prefix=/usr/local/python27/
    ln -sv /usr/local/python27/bin/pip2.7 /usr/bin/pip27
    #解决依赖关系以及安装blobxfer
    yum install python-urllib3
    yum install libffi-devel
    pip27 install blobxfer --prefix=/usr/local/python27          
    pip27 install pyopenssl ndg-httpsclient pyasn1
    ln -sv   /usr/local/python2.7/bin/blobxfer   /usr/bin/blobxfer

    Blobxfer迁移命令

    blobxfer --no-overwrite --storageaccountkey {storage key} --endpoint core.chinacloudapi.cn {storage account} {storage container} {本地目录路径}

    而且根据实测,迁移速率大大提升。

    介绍一个很low的迁移方案(数据量不大时)

    先将NFS中的文件复制到一台Windows机器中,再使用AzCopy迁移

  • 相关阅读:
    ASP.NET中读取Excel内容,并显示在界面上
    SQL SERVER 的 CLR表值函数
    nowrap要与回车换行符结合才有意义
    何时使用 FILESTREAM?
    case 用在 UPDATE
    查看分区在哪个文件组
    C#里面的随机对象Random
    CLR程序里引用System.Web.dll
    不用写成 if @i=1 OR @i=2 OR ... 这么蠢
    SQL SERVER定期转移海量数据方案
  • 原文地址:https://www.cnblogs.com/rampb/p/6823742.html
Copyright © 2011-2022 走看看