Windows Storage Spaces-part3(安装篇)
Contents
理论和工具已就绪,接下来开始DIY
- 这块主板自带5个sata 3.0,而组一套堪用的storage space需要7个sata口,其中4块HDD,2块SSD和一块系统盘。所以还需要配一块通道卡,前面提到买了一块IBM的M1015,这是一块lsi 2008芯片的阵列卡,其硬件配置跟公版的lsi sas 9211-8i一致,所以可以刷lsi sas 9211-8i固件。刷机过程中遇到一些小问题,不过也能很快解决,参考这里(link1)和这里(link2)。M1015自带两个mini SFF8087接口,需要用到1*SFF 8087转4*sata/sas的数据线,深水宝有售;
- 航嘉电源的sata电源接口只有5个,需买方口转sata口电源线。
- 由于机箱的散热不好,所以还买了两个5.25转3.5光驱位硬盘盒,将4块机械盘分开放置,便于散热。
- 8G的内存未免太少了,于是翻出两条2G的同频内存插上,内存从原来的8G升级至12G。
- 1块intel series 320 160G SSD担任系统盘,接入主板的sata1接口,4块机械盘接入M1015的port0,2块ssd接入port1。在bios中,将启动顺序的第一顺位设为intel 160G SSD
物理连线就绪,开始安装OS。我使用了serva32这个工具来安装windows server,它是一款pxe网络安装工具,需要第二台电脑担任pxe/dhcp/tftp服务器。相比USB的安装方式,pxe安装省去了写盘的痛苦,特别是需要频繁重装测试的时候尤其方便,特此推荐。安装过程可参考官网,前提条件是网卡支持pxe。
完成操作系统的安装和激活后开始storage spaces的探秘之旅。
NOTE
Storage Spaces可以通过GUI或powershell两种方式进行配置,不过GUI有很多限制,所以本系列的配置全部在powershell下进行。
下面先练练手,创建一个简单的纯机械硬盘组成的3盘位的parity虚拟盘。大体步骤如下:
<
1 诞生
1.1 创建storagepool
|
|
PhysicalDisk
,指的是添加到存储池中的机械硬盘,由于本次创建的是纯机械硬盘组成的,所以在后面的括号里面,需要限定条件- 每块硬盘只能存在于一个存储池中,所以只有
canpool
为$true
的机械盘才能添加的存储池; - 本次只用机械硬盘,因而
MediaType
限定为HDD,假如需要用到SSD,则MediaType则改成SSD;
- 每块硬盘只能存在于一个存储池中,所以只有
StorageSubSystemFriendlyName
,不知道干什么用的,照抄吧;FriendlyName
,顾名思义就是别名,起个容易记的名字就行了,我的习惯是pool+序号
,简单粗暴。
1.2 创建stroage space
敲黑板,重点来了,下面是必考题:
|
|
StoragePoolFriendlyName
,从pool01这个存储池中创建一块虚拟盘FriendlyName
,给虚拟盘起的别名。存储空间也叫虚拟盘,为了简便起见,我以vdisk来作为虚拟盘别名的前缀。ResiliencySettingName
,就上面说到的raid类型,本次创建的是parityNumberOfColumns
,这个参数指定了物理硬盘的数量,也是数据条带化的数量,譬如说一个3 columns的parity虚拟盘,每一个数据块将条带化成3份数据并分别写到3块硬盘中。物理硬盘数量越多,io性能越好。Interleave
,条带大小,它跟NumberOfColumns
关系密切,默认值为256KB。
1.3 创建volume/partition
获得虚拟盘的编号
1
Get-VirtualDisk -FriendlyName "vdisk01" | Get-Disk
新建的虚拟盘编号为xx,为了便于统一描述,下面将以$numOfDisk
变量代替该编号。所以还得执行以下命令:
|
|
- 上线虚拟盘
新建的虚拟盘处于离线状态,需先上线才能执行后续的操作。
|
|
isOffline
,此处应用了负负得正的原理,这种骚操作还挺少见。
初始化虚拟盘
1
Initialize-Disk -Number $numOfDisk -PartitionType GPT
PartitionType
,也可以用MBR,不过都现在已经是9102了,再用MBR就显得不合时宜了。
添加卷/分区
1
New-Partition -DiskNumber $numOfDisk -UseMaximumSize -AssignDriveLetter E
UseMaxmumSize
, 新建分区的大小等于虚拟盘的容量。这意味着此块虚拟盘只能创建一个分区,如果希望在该虚拟盘中创建多个分区,则多个分区的大小之和不得超过虚拟盘的容量。
AssignDriveLetter
,为该分区分配盘符。
分区格式化
1
Format-Volume -DriveLetter E -FileSystem ReFS -NewFileSystemLabel "archive_ds" -Cluster
DriverLetter
,对盘符为E的分区进行格式化。FileSystem
,一般选ntfs或refsClusterSize
,默认是64KB
这时候在“我的电脑”中就看到了E盘。可以正常的读写,先测试一把看下性能。
<
纳尼?!微软的东西这么垃圾?!我不甘心,寻思着创建了一块mirror类型的虚拟盘再试一下,为了减少干扰,我决定删掉parity vdisk,然后重建。
2. 毁灭
死亡是生命的开始,删除的步骤跟创建的正好相反,依次是删除分区-删除虚拟盘-删除存储池。
2.1 删除volume/partition
实际上这一步骤是多余的,因为SS允许直接删除虚拟盘。
1
|
Remove-partition -disknumber $disknumber |
$disknumber
可以通过Get-Disk | select-object disknumber
来查看
1
|
PS C:\Windows\system32> get-disk |
get-disk
命令既可以查看virtualdisk,也可以查看简单卷的物理硬盘,而get-physicaldisk和get-virtualdisk目的性就很强。
2.2 删除storage space
1
|
Remove-VirtualDisk -FriendlyName $virtualdiskFriendlyName |
2.3 删除storage pool
1
|
Remove-StoragePool -FriendlyName $storagepoolfriendlyname |
紧接着创建一个mirror vdisk,脚本如下:
|
|
<
看起来也不怎么地,这令我陷入了深深的思考…
就这样了吗?显然不是,我还指望下半生靠微软续命呢,于是又踏上了优化的不归路。
如果等不及看一场的,下面的花絮可以忽略。
花絮
在创建存储池的时候如果使用旧硬盘,容易遇到这样或那样的问题,下面的操作专治各种不服,任君选用。
- 更改physicaldisk的friendlyname
添加硬盘后,windows会自动分配friendlyname。不知为何,我的4块wd硬盘全部分配了同样的friendlyname,不利于区分,所以要更名:
1 2 3 4 |
get-physicaldisk | where-object { $_.uniqueid -eq '50024e290210e739' } ` | set-physicaldisk -newfriendlyname "hdd-wd2t-e739" get physicaldisk | ft model, uniqueid, friendlyname |
hdd-wd2t-xxxx
,其中hdd表示这是一块机械盘,wd2t表示西数的2T,xxxx为该硬盘的序列号后四位,或者该硬盘区别于其它的特定标识。
- 重置硬盘
当将一块使用过的硬盘插入服务器时,执行get-physicaldisk
命令后将发现其canpool
的状态为false
,这意味着storage space还无法使用该硬盘,需要先对该硬盘进行重置
|
|
- 重使能硬盘
这是什么鬼。我实在想不出有更言简意赅的表述,简言之,先disable硬盘,再enable硬盘。
重置硬盘后,其canpool
状态仍然为false
,这时候需要通过windows中的disk management
将该硬盘disable
,随后enable
,这时canpool
状态将变为true
。非常诡异的现象,windows就是这么任性。
查看storagepool中的硬盘
1 2
Get-StoragePool -FriendlyName $StoragePoolName | Get-PhysicalDisk ` | Select FriendlyName, MediaType
Author zlinuxboy
LastMod 2020-08-24