虚拟磁盘     
创建/修改/调整/连接/分离/删除虚拟磁盘      
在windows server 2012 (R2)中虚拟磁盘最为存储最上层供应用程序,    
服务,以及用户使用。弹性设置(磁盘布局),分层存储,都在虚拟磁盘上体现。    
在本节中将开始进行简单的虚拟磁盘操作,对于存储层,存储布局(弹性设置)    
将在之后的章节中进行综合讲解。

Get-VirtualDisk     
此命令用于获取在存储池之上建立的虚拟磁盘以及其属性    
(VHDX,VHD等文件不能通过此命令获得)    
在默认输出下此命令将返回全部虚拟磁盘    
此命令可以在存储池,存储层,物理磁盘,存储节点,存储子系统,逻辑磁盘上筛选虚拟磁盘    
下面将演示在指定的存储池上获取虚拟磁盘

Get-Virtualdisk -StoragePool (Get-StoragePool -FriendlyName ssdpool)


也许你会很疑惑这次标识存储池没有使用 name 等一系列的属性    
而是将整个存储池对象作为了参数值,这也是powershell 中的用法之一    
当你不知道参数需要什么类型的数据时 将整个对象作为参数值传递当cmdlet中(如果此时参数需要    
CIM类型的数据 个人觉得把整个对象放进去比获得cim数据要简单的多)    
事实上 上图中的确需要的是CIM 数据 如下图    

在上图中我伪造了数据 提示我asdas 不是有效CIM类型数据,注意 这也是探明参数需要的数据类型方法之一    
默认输出如上图 依照惯例上图不是要介绍的重点下图才是    

虽然这里是重点 但是其中涉及太多弹性设置/存储布局的内容这部分将放在后面进行解释    
或许你会觉得为什么要在弹性设置/存储布局之前介绍虚拟磁盘,请你随着文档认真的看下去。 

提问:如何找出虚拟磁盘所使用的物理磁盘   
请自行查找get- VirtualDisk 命令属性在GUI的位置

New-VirtualDisk     
此命令用于在指定的存储池上创建虚拟磁盘    
请注意 如果存储池由单一物理磁盘组成在使用此命令创建虚拟磁盘时    
请务必指定-ResiliencySettingName (即磁盘布局/弹性设置)为simple     
否则你将收到红色提示    
(除非在创建存储池时指定参数ResiliencySettingNameDefault 为simple,或者后续进行更改     
默认为mirror    
获取存储池默认ResiliencySettingName 使用get-storagepool 获取ResiliencySettingNameDefault    
属性进行查看    
)    

上图为存储池中成员磁盘    

提示说当前选定存储池中没有足够的物理磁盘用于创建虚拟磁盘    
下面的将演示物理磁盘使用方式为auto 即自动,创建虚拟磁盘    
在物理磁盘使用方式为auto 下我们不需要指定虚拟磁盘要使用那个物理磁盘    
这一切均由系统自动完成,(不论那种磁盘布局)    
要成功完成这条命令,必须要指定的有虚拟磁盘名称,磁盘大小,以及将要承载虚拟磁盘的存储池。

New-VirtualDisk -StoragePoolFriendlyName SSDpool -FriendlyName SDD_VD –UseMaximumSize   
上面的命令在存储池SSDPOOL 上创建了一个使用全部容量,名为SDD_VD的虚拟磁盘。

下面将演示物理磁盘使用方式为手动的情况下创建虚拟磁盘   
在物理磁盘使用方式为Manual-Select 即手动选择,我们需要手动指定承载虚拟磁盘的物理磁盘    
在本次演示中我们将磁盘布局设定为simlpe,同时精简配置为fixed,    
以更为直观的了解在powershell下的使用方式

环境 延续上次的演示使用ssdpool 此池中成员物理磁盘使用方式如下图   
(Get-StoragePool -FriendlyName ssdpool |Get-PhysicalDisk) |Select-Object friend*,us*,si* |ft –AutoSize    
上面的命令中我使用friend*,us*,si*这种用法用于对属性进行模糊显示 “*”是通配符相信大家都不会陌生


在这种情况下 创建虚拟磁盘除了要指定存储池,友好名称,大小还需要指定要使用的物理磁盘    
首先要计算 创建虚拟磁盘的大小与物理磁盘大小的关系用来确定使用的物理磁盘    
在磁盘空间使用上除去国际惯例的缺斤短两之外,存储池保留每个成员物理磁盘256M的空间    
用于存储其在存储池的元数据。图中的物理磁盘 标称容量均为10GB 在存储池中实际可使用空间为    
9.25GB     
如果此时我要创建20GB的虚拟磁盘就要最少使用三个物理磁盘

步骤一 确定要使用物理磁盘同时确定其标识   
我们假定使用deviceID 为4,7,10的磁盘    
$pd_to_use = Get-PhysicalDisk -FriendlyName PhysicalDisk4,PhysicalDisk7,PhysicalDisk10    
第二步创建虚拟磁盘    
New-VirtualDisk -FriendlyName SSD_VD -StoragePoolFriendlyName ssdpool `    
-Size 20GB -ResiliencySettingName simple -PhysicalDisksToUse $pd_to_use |ft –AutoSize    
在上面的命令中 我们ResiliencySettingName 参数指定虚拟磁盘所使用的磁盘布局,    
同时使用PhysicalDisksToUse 指定要使用的物理磁盘 如下图    

细心的你已经发现虽然命令成功完成但是虚拟磁盘容量并不是20GB 而是21GB     
微软的官方解释 在使用固定设置以及使用simple 简单布局时 虚拟磁盘容量将大于实际创建容量    
同时微软官方还强烈建议不要在同一存储池中同时存在手动和自动两种使用方式的磁盘

思考:如何找出池中未被虚拟磁盘使用的物理磁盘

在本节中只是简单的进行创建虚拟磁盘,随着后面不断的深入将会继续对虚拟磁盘更多功能进行发掘

Set-VirtualDisk     
此命令用于修改虚拟磁盘的友好名称,是否手动挂载,描述信息,访问方式,使用方式    
(请注意 无法通过此命令同时修改友好名称,否手动挂载以及访问方式)    
Set-VirtualDisk -FriendlyName "SDD_VD" -NewFriendlyName SSD_vd -OtherUsageDescription "this VD is on ssdpool"    
上面的命令 将在New-virtualdisk 一节中创建的虚拟磁盘sdd_vd 进行重命名为SSD_vd    
同时为其添加描述 this VD is on ssdpool    
上面的命令演示了修改友好名称以及描述    
下面对手动挂载以及访问方式的参数进行介绍    
-IsManualAttach     此为是否进行手动挂载 当设为 $true 时候需要手动将虚拟磁盘进行挂载/连接    
                                                 $false 时系统将自动挂载/连接 此为默认值

-Access               此为访问方式   
Readable 可读    
Writeable 可写    
WriteOnce 可写一次    
ReadWrite 读/写 此为默认

---本文档由联科教育(http://www.iLync.cn)田梦博 原创提供,如有问题请咨询我们的专家团队!---