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

摘要:作为 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
Workload imagemgrcli/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中。

 

你可能感兴趣的:(通过实例对一些常用的VMControl&vmtouch命令行进行剖析介绍)