如何快速将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.-.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存储的更多相关文章
- 带你快速了解Linux文件系统
http://www.embeddedlinux.org.cn/emb-linux/file-system/201807/03-8197.html 这篇教程将帮你快速了解 Linux 文件系统. 早在 ...
- Oracle从文件系统迁移到ASM存储
环境:RHEL 6.4 + Oracle 11.2.0.4 需求:数据库存储由文件系统迁移到ASM 数据库存储迁移到ASM磁盘组 1.1 编辑参数文件指定新的控制文件路径 1.2 启动数据库到nomo ...
- 阿里云至 Windows Azure 的 Linux 虚拟机迁移
在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像.磁盘以及快照进行生成和下载.用户可以方便地将Azure中的虚拟机实例迁移到本地.私有云甚至其他公有云平台进行测试.扩展或者再 ...
- Linux 文件系统详解
作者: Paul Brown 译者: LCTT amwps290 这篇教程将帮你快速了解 Linux 文件系统. 早在 1996 年,在真正理解文件系统的结构之前,我就学会了如何在我崭新的 Linux ...
- Azure存储上传下载(断点续传)
最近有一个客户需要将文件系统(VM搭建)迁移到Azure存储上,对于Azure存储这里就不多做介绍,但是该客户由于网络原因下载文件的时候经常出现上传中断,所以想在Azure 存储上实现下载的断点续传. ...
- Linux文件系统应用---系统数据备份和迁移(用户角度)
1 前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的 “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...
- Autojump:一个可以在 Linux 文件系统快速导航的高级 cd 命令
相关博客:https://linux.cn/article-3401-1.html 对于那些主要通过控制台或终端使用 Linux 命令行来工作的 Linux 用户来说,他们真切地感受到了 Linux ...
- 【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
问题描述 如何把开启NFS协议的Azure Blob挂载到Linux虚拟机中呢? [答案]:可以使用 NFS 3.0 协议从基于 Linux 的 Azure 虚拟机 (VM) 或在本地运行的 Linu ...
- 使用 Azure Site Recovery 将内部部署虚拟化工作负荷迁移至 Azure
ABHISHEK A. HEMRAJANI 云 + Enterprise 项目经理 我们最近发布了微软的灾难恢复即服务 (DRaaS) 产品的预览版 - Azure SiteRecovery.此产 ...
随机推荐
- javascript的单例/单体模式(Singleton)
首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点:1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)3,向整个系统公开这个实例接口 Java中大概是这 ...
- 工欲善其事必先利其器,用Emmet提高HTML编写速度
HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板,在别人写好的骨架内,填入自己的内容.还有一种很炫的方法----简写法. 常用的简写法,目前主要是Emmet和Haml两种.这两种简写 ...
- AngularJs -- 指令中使用子作用域
下面将要介绍的指令会以父级作用域为原型生成子作用域.这种继承的机制可以创建一个隔离层,用来将需要协同工作的方法和数据模型对象放置在一起. ng-app和ng-controller是特殊的指令,因为它们 ...
- 20155305乔磊2016-2017-2《Java程序设计》第六周学习总结
20155305乔磊2016-2017-2<Java程序设计>第六周学习总结 教材学习内容总结 InputStream与OutputStream 串流设计 1.串流:Java将输入/输出抽 ...
- Linux - ssh 连接慢解决
解决 ssh 链接慢 sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config sed -i ...
- C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)【转】
转自:https://www.cnblogs.com/ransn/p/5081198.html 转载地址 : http://blog.csdn.net/21aspnet/article/details ...
- Android Studio之代码提示快捷键冲突设置
1.原代码提示快捷键为:Ctrl+空格,与Windows输入法冲突,所以将代码提示快捷键设置为:Ctrl+反斜杠.
- mybatis-config.xml 模板
ssm模板 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration ...
- P4186 【[USACO18JAN]Cow at Large G】
思路是覆盖子树,我们发现,农民想截住牛的最优策略是不断向上来尽可能地覆盖更大的子树 我们想要尽早地覆盖一个子树,一个显然的贪心是在这个子树中选取深度最小的一个放农民 如果我们在一个点放置了农民,那么其 ...
- .NetCore WebApi利用Swagger文档实现选择文件上传
介绍 实现这个功能主要还是依赖过滤器 在Swagger中利用 IOperationFilter 操作来实现文件上传 与之前处理结合Idr4授权一样的处理方式,不同的是授权处理的是Security,而文 ...