前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从PowerVM,KVM到Docker:存储池的配置与调优---第一篇(第1子篇)

从PowerVM,KVM到Docker:存储池的配置与调优---第一篇(第1子篇)

作者头像
魏新宇
发布2018-03-22 14:42:07
9820
发布2018-03-22 14:42:07
举报

作者说明:

针对虚拟化中存储池的配置,笔者将书写一个系列作品,介绍从PowerVM到KVM再到Docker中存储池的配置与调优。似乎看起来三种技术没有什么关联性,但IT技术本质上实现原理一致的地方很多。理解了PowerVM,理解X86虚拟化不存在障碍,理解了Wpar,去理解docker的原理也不会太困难。

具体而言, 第一篇引用我在2013年的作品,介绍PowerVM中存储池的配置和调优,由于公众号字数限制,将分为三个子篇阐述。第二篇将讲述在KVM中,存储池的配置和调优。第三篇将讲述在Docker中,存储持久化层的配置和调优。

前言

在 PowerVM 的发展史上,Shared Storage Pool 并不是一个全新的概念。但是由于之前版本的 PowerVM 中 SSP 的功能不是十分强大,所以用的不是很多。相比之下,Storage Pool 使用的非常广泛,常见于各类配置手册中,由于命名类似,不少工程师将 Storage Pool 与 Shared Storage Pool 混淆。为了彻底解释清楚这两个技术的区别以及配置方法,本文在前面将会介绍 Storage Pool 的概念、配置方法以及 Storage Pool 和 Shared Storage Pool 的区别。

Storage Pool 的概念和管理

在介绍 Shard Storage Pool 之前,需要先讲一下 Storage Pool 的概念。

Storage Pool 是一个存储池的概念,它有两种实现方式,基于文件和基于卷组。Storage Pool 可以由 VIOS 上的本地 SAS 盘或者存储映射过来的存储 LUN 进行创建。在存储池中,通过创建虚拟盘(有瘦体和胖体两种,相关概念本文后续会有详细介绍),通过 VIOS 和 VIOC 之间创建的 VSCSI 通路,将虚拟盘映射给 VIOC,向 VIOC 提供系统盘或者数据盘。一个 Storage Pool 只能由一个 VIOS 管理,不能被多个 VIOS 管理。而不能被多个 VIOS 管理,这点是 Storage Pool 和 Shared Storage Pool 最大的区别之一。

基于卷组方式的 Storage Pool 实际上是创建一个卷组,然后在卷组中创建逻辑卷并且映射给 VIOC。在 VIOS 系统装完以后,rootvg 就是一个默认的存储池。

代码语言:javascript
复制
 $lssp 
 Pool              Size(mb)   Free(mb)  Alloc Size(mb)    BDs Type     
 rootvg              139776     114688             256      0 LVPOOL
代码语言:javascript
复制
 $lspv |grep -i rootvg 
 hdisk11          00f6b486cfe494d1                     rootvg           active

我们可以在这个存储池中创建虚拟盘,通过 VSCSI 的方式将其映射给 VIOC,作为 VIOC 的系统盘,有关具体的配置方法,本文后续会有详细说明。

常见的 VSCSI 高可用方案

在目前现有的 VSCSI 高可用方案中,通常有两种。一种是将一个存储的 LUN 映射给两个(多个)VIOS,然后两个(多个)VIOS 以 PV 的方式,将这个 LUN 映射给一个 VIOC,VIOC 则通过 MPIO,实现磁盘的路径聚合,从而实现 VSCSI 高可用。这种高可用的实现方式可以参照下示意图:

图 1.VSCSI 高可用方案 1

在上图的配置方式中,在 VIOC 上用 lspath 进行查看,可以看到一个磁盘对应多个 VSCSI 通路,例如:

代码语言:javascript
复制
 # lspath |grep -i hdisk0 
 Enabled hdisk0 vscsi0
 Enabled  hdisk0 vscsi1

默认情况下,磁盘 I/O 优先从 Vscsi 优先级高的 VSCSI 通路走(默认情况下两条路径优先级相同,都是 1)当一个 VIOS 出现问题,所有的磁盘 I/O 将会切换到第二个 VIOS 的 VSCSI 上,从而实现 VSCSI 的高可用。

如果打算用 Storage Pool 实现高可用,那么在两个 VIOS 上分别创建两个 Storage Pool(可以是 VIOS 本地盘或者存储磁盘),然后创建一个虚拟盘(可以基于 lv 或者文件,通常是基于 lv 的方式),映射给 VIOC,VIOC 通过镜像的方式,将两个 VIOS 影映射过来的两个虚拟盘做成镜像,以实现 VSCSI 高可用。)这种高可用的实现方式可以参照下面示意图:

图 2.VSCSI 高可用方案 2

在上图中,任意一个 VIOS 出现宕机,都只会是 VIOC 上的一个磁盘出现问题,由于 VIOC 端 hdisk 磁盘做了镜像,因此不会引起业务中断和数据丢失。

基于卷组的 Storage Pool

创建基于卷组的 Storage Pool 和在 VIOS 上直接创建一个 vg 达到的效果是相同的,命令行使用下面两者之一即可:

代码语言:javascript
复制
mkvg -vg weixinyuvgpool hdisk10

或者

代码语言:javascript
复制
mksp -f weixinyuvgpool hdisk10

 $mksp -f weixinyuvgpool hdisk10 
 weixinyuvgpool

通过上面的命令,名为 weixinyu 的 storage pool 就创建成功了,里面有一块磁盘,hdisk10。

查看 storage pool,已经创建成功:

代码语言:javascript
复制
 $lssp 
 Pool              Size(mb)   Free(mb)  Alloc Size(mb)    BDs Type     
 rootvg              139776      88832             256      4 LVPOOL     
 weixinyuvgpool    139904     139904             128      0 LVPOOL   
 filestoragepool       1016        985             256      1 FBPOOL     
 weixinyu               244        243             256      0 FBPOOL
代码语言:javascript
复制
 $lspv |grep -i weixinyuvgpool 
 hdisk10          00f6b486cfe49436                     weixinyuvgpool   active

在默认的 rootvg storage pool 中创建一个 lv:

代码语言:javascript
复制
$mklv -lv lvtest1 rootvg 10G
 lvtest1

确认被映射 VIOC 的 VSCSI 设备:

代码语言:javascript
复制
 $lsdev -vpd|grep vhost 
  vhost0           U8233.E8B.06B486P-V6-C11                                        
 Virtual SCSI Server Adapter

然后新创建将 lv 映射给 VIOC:

代码语言:javascript
复制
$mkvdev -vdev lvtest1 -vadapter vhost0 -devStoragePoolTestStoragePoolTestAvailable

在 VIOC 上用 cfgmgr 扫描后,可以识别到新增加的磁盘。

代码语言:javascript
复制
 # bootinfo -s hdisk4 
 10240

基于文件的 Storage Pool

基于文件的 Storage Pool 必须创建在基于一个卷组的父存储池之上。

创建基于文件的 storage pool 命令如下:

代码语言:javascript
复制
mksp -fb weixinyufilebase -sp rootvg -size 1000M

也可用通过 VIOS 上的 cfgassist 命令进行创建:

进行确认,名为 file base storage 的 storage pool 已经创建成功: $lssp Pool Size(mb) Free(mb) Alloc Size(mb) BDs Type rootvg 139776 100352 256 3 LVPOOL filestoragepool 1016 1015 256 0 FBPOOL 然后查看 rootvg 中的 lv 设备: $lsvg -lv rootvg |grep -i file filestoragepool jfs2 4 4 1 open/syncd /var/vio/storagepools/filestoragepool # df -g |grep -i filestoragepool /dev/filestoragepool 1.00 0.99 1% 4 1% /var/vio/storagepools/filestoragepool 可以看到,基于文件的存储池实际上是 rootvg 的一个文件系统。 下面,我们在基于文件的存储池中创建一个基于文件的虚拟盘,并且映射给 VIOC: $mkbdsp -sp filestoragepool 30m -bd weixinyufile1 -vadapter vhost0 Creating file "weixinyufile1" in storage pool "filestoragepool". Assigning file "weixinyufile1" as a backing device. vtscsi5 Available weixinyufile1 在 VIOS 上查看 VSCSI 映射关系: $lsmap -all |grep -i weixinyufile1 Backing device /var/vio/storagepools/filestoragepool/weixinyufile1 新创建的基于文件的虚拟盘,就是基于文件的 storage pool 中的一个文件: # cd /var/vio/storagepools/filestoragepool # ls -al total 61448 drwxr-xr-x 3 root system 256 Jan 14 19:24 . drwxr-xr-x 4 root staff 256 Jan 14 18:49 .. -rw-r--r-- 1 root staff 176 Jan 14 19:24 .weixinyufile1 drwxr-xr-x 2 root system 256 Jan 14 18:49 lost+found -rw-r--r-- 1 root staff 31457280 Jan 14 19:24weixinyufile1

Storage Pool 简单的管理方法

Storage Pool 和虚拟盘的配置除了使用命令行的方式 , 还有比较简单的维护方法。如果仅仅是创建、查看、扩容、减小容量的话,可以使用 VIOS 中的 cfgassist 工具或者使用 HMC 管理。

我们先看一下 cfgassist 工具管理:

在 VIOS 上执行 cfgassist-Storage Pool。

在界面中,我们可以查看 Storage Pool 中的内容、创建 Storage Pool、修改 Storage Pool(增加或者减小 Storage Pool 的空间)。但需要注意的是,通过 cfgassist 工具,只能创建 Storage Pool,而不能创建“虚拟盘”。 第二个方法是,通过 HMC,对 Storage Pool 进行创建和配置。使用这个方法的好处是除了可以创建和维护 Storage Pool,还可以创建和映射虚拟盘: 首先登陆 HMC,选择一台装有 VIOS 的 Power 服务器,点击“虚拟资源”中的“虚拟存储器管理”

图 3.HMC 上的虚拟资源管理

在接下来的界面中,选择要创建 Storage Pool 的 VIOS(此处也说明一个 storage pool 只能基于一个 VIOS),点击“查询”:

图 4. 点击“查询”

我们可以看到已有的存储池,即 VIOS 上的 rootvg:

图 5. 查看存储池

接下来,点击“创建虚拟盘”,并且映射给 VIOC:

图 6.HMC 上创建虚拟盘

我们可以看到,创建虚拟盘的时候,我们除了可以看到默认的 Storage Pool,还可以看到 Shared Storage Pool(也就是说,在 SSP cluster 创建以后,后续的 SSP 的管理也可以由 HMC 界面进行管理)

图 7. 创建虚拟盘

我们选择 rootvg Storage Pool 中的空间,映射给 weixinyuvioc。点击“确认”

图 8. 创建虚拟盘

虚拟盘已经识别到,并且映射给了 weixinyuvioc1 分区:

图 9. 虚拟盘创建并且映射成功

从上图中可以看到,虚拟盘已经创建成功,并且映射给了指定的 VIOC。

在 VIOC 上执行 cfgmgr,可以扫描出现新创建的磁盘设备。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Storage Pool 的概念和管理
  • 常见的 VSCSI 高可用方案
  • 基于卷组的 Storage Pool
    • 基于文件的 Storage Pool
      • Storage Pool 简单的管理方法
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档