如何快速将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.此产 ...
随机推荐
- [转载]使用 NuGet 管理项目库
原文:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 Mi ...
- javascript构造函数强制使用new
如果有时候我们忘记对构造函数使用new的话,构造函数的this将指向window function Person(){ this.name = 'Julie'; } var good_moring = ...
- nmap - 网络扫描
NMap,Network Mapper 最早是Linux下的网络扫描和嗅探工具包 网络链接扫描; nmap -PT 192.168.1.1-111 # 先ping在扫描主机开放端口 nmap -O 1 ...
- (FFT)A+B Problem
题目链接:https://cn.vjudge.net/contest/280041#problem/B 题目大意:给你n个数,然后让你找满足a[i] + a[j] = a[k] 的情况总数. 具体思路 ...
- Android Studio 新建drawable-hdpi、drawable-mdpi等
在不同的模式“Project” / “Android”的文件夹中查看文件夹.如果文件夹丢失,您可以轻松添加它们. 1.在“res”文件夹上右键“New”->”Android Resource D ...
- JS脚本病毒调试脚本-Trojan[Downloader]:JS/Nemucod
1.前言 遇到Trojan[Downloader]:JS/Nemucod需要分析,这款病毒主要为js运行.从网上各种找js调试方法.发现52的帖子还挺沾边的. TrojanDownloader:JS/ ...
- Git 使用规范流程【转】
转自:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清 ...
- linux下brctl配置网桥
原文:http://zhumeng8337797.blog.163.com/blog/static/1007689142011643834429/ 先装好网卡,连上网线,这是废话,不用说了. 然后开始 ...
- ajax与302响应
在ajax请求中,如果服务器端的响应是302 Found,在ajax的回调函数中能够获取这个状态码吗?能够从Response Headers中得到Location的值进行重定向吗?让我们来一起看看实际 ...
- java 接口与工厂
接口时实现多重继承的途径,而生产遵循某个接口的对象的典型方式就是工厂方法设计模式,这与直接调用构造器不同,我们在工厂对象上调用的是某种方法,而该工厂对象将生成接口的某个实现的对象,理论上通过这种方式, ...