您的位置:首页 > 其它

通过实例对一些常用的VMControl&vmtouch命令行进行剖析介绍

2013-12-02 22:45 295 查看
摘要:作为 IBM Systems Director 的高级管理插件,VMControl 提供了一系列的 PowerVM 虚拟化环境的管理和监控功能,用户可以可以通过 Director 的图形界面(GUI)使用这些功能,但对一些习惯于命令行操作的高级 Power 系统管理员来说,使用命令行操作可以节约界面
熟练使用常用的 VMControl 命令行,结合一些必要的界面操作,无疑可以使日常管理维护工作更加得心应手,事半功倍。本文将通过实例对一些常用的 VMControl 命令行进行介绍。

在 VMControl 的最新版本中,提供了较为完善的 PowerVM 虚拟化环境的管理和监控方案,用户可以对每台 Power
服务器进行虚拟机(LPAR)
创建、捕获(Capture)、部署(Deploy)、迁移 (Relocation)等生命周期的管理;也可以把被管理的 Power
服务器组合成为服务器池(System
Pool),作为一个整体进行管理,从而把部署在服务器池中的虚拟机组合成 Workload,进行 Workload 的生命周期管理、优化和监控。对服务器池和 Workload 的管理和监控,也就是 VMControl 的核心功能。


一般而言,服务器池中的 Workload 捕获(Capture)和部署(Deploy)可以帮助用户轻松实现一个和多个业务系统的安装和备份;而 Resilience(弹性)的设置可以实现 Workload 的 HA(High Availability,高可用性),当某台服务器发生一些故障时,能够自动对服务器上的 Workload 进行迁移,使得运行在 Workload 上的业务无中断的运行;在本文中我们将会以这些常用的管理任务为例探讨如何使用
VMControl 命令行,简化系统管理员日常工作。


下面首先对 VMControl 的命令行做简单的介绍。

VMControl 命令行一览

常用的 VMControl 命令行通常是在 vsm、availability、sccli 和 imagemgrcli 几个命令包(Bundle)下,可以通过 Director 的命令行 lsbundle 查询这几个命令包下的命令行列表。

 # smcli lsbundle | grep -i imagemgrcli
# smcli lsbundle | grep -i vsm
# smcli lsbundle | grep – I Availability

这几个命令包的输出,也即是 VMControl 命令行的全集,包含了将近 70 个相关的命令行。可见,VMControl 还是提供了相当丰富的命令行供管理员使用。

根据命令行应用对象的不同,这些命令行可以分为五类:服务器池相关命令、Workload 相关命令、虚拟镜像相关命令、存储相关命令、虚拟机相关命令和服务器相关命令。下表给出了各分类的一些常用命令行,使用这些 VMControl 命令行,可以完成最基本的 Power 服务器的管理任务。

表 1.VMControl 命令行的分类和部分命令行

命令行应用相关对象常用命令行
服务器池imagemgrcli/mksyspool

imagemgrcli/lscandidatestorage
Workloadimagemgrcli/lsworkloads

imagemgrcli/chworkload
虚拟镜像imagemgrcli/lsva

imagemgrcli/lscustomization

imagemgrcli/deployva

imagemgrcli/lsrepos

imagemgrcli/lscapsrv

imagemgrcli/captureva
存储sccli/dumpstcfg

sccli/svsrelationships

sccli/svsresources
虚拟机vsm/lsvrtsys
服务器Availability/mkfarm
对于这里黑体标注的命令行,将会在后面通过实例以帮助了解其用法。

一般而言,通过命令行的作用对象和命名规则,我们也可以猜到大部分命令的用途,比如命令行带前缀 ch(change)表示改变,rm(remove)表示删除,ls(list)表示列出,add 表示添加,start 表示启动,有兴趣的读者也可以通过结合使用命令行 man < 命令 > ,或者 –help 查询获得命令行使用指南。

下面我们将通过实例学习上表中这些常用的命令行,包括准备 VMControl 管理环境,对管理的 Power 服务器创建服务器池,部署和创建 Workload 到服务器池,配置 Workload 的属性自动实现 Workload 的动态迁移;并且,我们也会对 Workload 进行备份,对 Workload 的生命周期进行管理,并对资源使用情况进行监控。

 

vmtouch is a tool for learning about and controlling the file system cache of unix and unix-like systems.

从介绍可以看出vmtouch是一个管理和控制Unix和类Unix文件系统缓存的工具。

vmtouch的主要功能如下:

查看一个文件(或者目录)哪些部分在内存中;
把文件调入内存;
把文件清除出内存;
把文件锁住在内存中而不被换出到磁盘上;
由于vmtouch是个比较小众的命令,很多Linux发行版不带这个命令,所以如果要使用这个命令要自己先编译一个。

抄了几个vmtouch的用法:

1. 看看/bin目录有多少内容在内存中

$ vmtouch /bin/
Files: 92
Directories: 1
Resident Pages: 348/1307  1M/5M  26.6%
Elapsed: 0.003426 seconds


2. 看看某文件(big-dataset.txt)有多少在内存中


How much of big-dataset.txt is currently in memory?

$ vmtouch -v big-dataset.txt
big-dataset.txt
[                                                            ] 0/42116

Files: 1
Directories: 0
Resident Pages: 0/42116  0/164M  0%
Elapsed: 0.005182 seconds



然后读入部分文件,

$ tail -n 10000 big-dataset.txt > /dev/null


然后在用vmtouch查看一下:


$ vmtouch -v big-dataset.txt
big-dataset.txt
[                                                    oOOOOOOO] 4950/42116

Files: 1
Directories: 0
Resident Pages: 4950/42116  19M/164M  11.8%
Elapsed: 0.006706 seconds



我们可以看出big-datset.txt开始时没有数据在内存中,在用tail命令读入了部分数据后,有19MB的数据进入了内存。

3. 把文件(a.txt)清除出内存


$ vmtouch -ve a.txt
Evicting a.txt

Files: 1
Directories: 0
Evicted Pages: 42116 (164M)
Elapsed: 0.076824 seconds



vmtouch主要作用是做数据的warmup,即对于将要用到的数据,通过vmtouch把它们事先读入内存,而不是在需要时再从硬盘上读入,这样可以提高系统效率。

 

对于vmtouch的实现,一个核心的函数是mincore(), 看一下它的manual:

mincore - determine whether pages are resident in memory

       #include <unistd.h>

       #include <sys/mman.h>

       int mincore(void *addr, size_t length, unsigned char *vec)


mincore()需要调用者传入文件的地址(通常由mmap()返回),它会把文件在内存中的情况写在vec中。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: