概述

前一段时间一直在给一个客户将原先搭载在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.-.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.
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar zxvf Python-2.7..tgz
cd Python-2.7.
./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..tar.gz
cd setuptools-20.3.
python27 setup.py install --prefix=/usr/local/python27/
#安装pip-9.0.
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
tar zxvf pip-9.0..tar.gz
cd pip-9.0.
python27 setup.py install --prefix=/usr/local/python27/
ln -sv /usr/local/python27/bin/pip2. /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./bin/blobxfer /usr/bin/blobxfer

Blobxfer迁移命令

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

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

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

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

如何快速将Linux文件系统迁移到Azure存储的更多相关文章

  1. 带你快速了解Linux文件系统

    http://www.embeddedlinux.org.cn/emb-linux/file-system/201807/03-8197.html 这篇教程将帮你快速了解 Linux 文件系统. 早在 ...

  2. Oracle从文件系统迁移到ASM存储

    环境:RHEL 6.4 + Oracle 11.2.0.4 需求:数据库存储由文件系统迁移到ASM 数据库存储迁移到ASM磁盘组 1.1 编辑参数文件指定新的控制文件路径 1.2 启动数据库到nomo ...

  3. 阿里云至 Windows Azure 的 Linux 虚拟机迁移

    在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像.磁盘以及快照进行生成和下载.用户可以方便地将Azure中的虚拟机实例迁移到本地.私有云甚至其他公有云平台进行测试.扩展或者再 ...

  4. Linux 文件系统详解

    作者: Paul Brown 译者: LCTT amwps290 这篇教程将帮你快速了解 Linux 文件系统. 早在 1996 年,在真正理解文件系统的结构之前,我就学会了如何在我崭新的 Linux ...

  5. Azure存储上传下载(断点续传)

    最近有一个客户需要将文件系统(VM搭建)迁移到Azure存储上,对于Azure存储这里就不多做介绍,但是该客户由于网络原因下载文件的时候经常出现上传中断,所以想在Azure 存储上实现下载的断点续传. ...

  6. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  7. Autojump:一个可以在 Linux 文件系统快速导航的高级 cd 命令

    相关博客:https://linux.cn/article-3401-1.html 对于那些主要通过控制台或终端使用 Linux 命令行来工作的 Linux 用户来说,他们真切地感受到了 Linux ...

  8. 【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)

    问题描述 如何把开启NFS协议的Azure Blob挂载到Linux虚拟机中呢? [答案]:可以使用 NFS 3.0 协议从基于 Linux 的 Azure 虚拟机 (VM) 或在本地运行的 Linu ...

  9. 使用 Azure Site Recovery 将内部部署虚拟化工作负荷迁移至 Azure

    ABHISHEK A. HEMRAJANI 云 + Enterprise 项目经理 我们最近发布了微软的灾难恢复即服务 (DRaaS) 产品的预览版 - Azure SiteRecovery.此产 ...

随机推荐

  1. 使用WebHelper调用Asp.net WebAPI

    1.WebHelper using System; using System.Collections.Generic; using System.Collections.Specialized; us ...

  2. [转载]AngularJS之Factory vs Service vs Provider

    http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider http://tylermcginnis.com/a ...

  3. Ionic -- css

    Header 固定在头部,可以包含标题标签,可以有左右按钮 样式:bar bar-header bar-light 第一个小节 第二个表示的是头部 第三个表示颜色 子头部,需要在ion-content ...

  4. Integer中1000==1000为false而100==100为true

    查看Integer.java类,会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象.如果在这个区间内,他就会把变量当做一个变量,放到内存中:但如 ...

  5. 洛谷 P1525 【关押罪犯】种类并查集

    题解 P1525 [关押罪犯]:种类并查集 前言: 在数据结构并查集中,种类并查集属于扩展域并查集一类. 比较典型的题目就是:食物链(比本题难一些,有三个种类存在) 首先讲一下本题的贪心,这个是必须要 ...

  6. python爬虫:抓取下载电影文件,合并ts文件为完整视频

    目标网站:https://www.88ys.cc/vod-play-id-58547-src-1-num-1.html 反贪风暴4 对电影进行分析 我们发现,电影是按片段一点点加载出来的,我们分别抓取 ...

  7. Javascript - Vue - 过滤器

    过滤器 输出的数据由vue对象提供,但它的数据可能需要做进一步的处理才适合展示给用户看,为此,可以在静态的Vue上定义一个过滤器对实例vue对象的data数据进行过滤处理. //调用过滤器//msg是 ...

  8. Python多线程-2(线程共享全局变量)

    例子: from threading import Thread,Lock from time import sleep, ctime global_num = [] def func1(): glo ...

  9. postman发送json请求,使用案例

    介绍:  postman是一个很好的http模拟器,,可以发送get.post.put等各种请求,是测试服务接口相当好的工具. postman发送json请求,使用案例 发送json的具体步骤: 1. ...

  10. MongoDB 进阶模式设计

    原文链接:http://www.mongoing.com/mongodb-advanced-pattern-design 12月12日上午,TJ在开源中国的年终盛典会上分享了文档模型设计的进阶技巧,就 ...