Windows Server Core 管理与 PowerShell 笔记(五)———— 磁盘管理

2019-04-05 497 Words Windows Powershell

Windows Server Core 管理与 PowerShell 笔记(五)———— 磁盘管理

在这一部分,我们将会介绍 PowerShell 如何管理磁盘以及如何设置文件网络共享。磁盘管理是系统管理中非常重要的一部分。

本部分文章不包括分布式文件系统(DFS)。

一、磁盘管理

1.1 Windows Server 磁盘模型

Windows 使用了最多四层结构来构建磁盘模型和文件系统。这个模型非常类似于 Linux 的 lvm 的概念。五层结构是:

  • PhysicalDisk 物理磁盘:表征一个具有物理实体的磁盘对象。
  • StoragePool 存储池:可以将多个物理磁盘聚合成一个大的存储池。
  • VirtualDIsk 虚拟磁盘:在存储池中,可以分割成多个虚拟磁盘。可以指定多种 raid 级别。
  • Partition 分区。可以在物理磁盘和虚拟磁盘的基础上,划分多个分区并格式化成各种文件格式。
  • Volume 卷。在分区中安装文件系统构成卷。

1.2 通用磁盘管理命令

命令 Get-Disk 将会列出所有的物理磁盘和虚拟磁盘。而 Get-PhysicalDisk 将只列出所有的物理磁盘。

PS C:\Users\ertuil> Get-Disk

Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition
                                                                                                             Style
------ ------------- -------------                    ------------         -----------------      ---------- ----------
2      VMware Vir... VMWare NVME-0000                 Healthy              Online                      60 GB GPT
0      VMware Vir... 00000000000000000001             Healthy              Online                      10 GB RAW
1      VMware Vir... 02000000000000000001             Healthy              Online                      20 GB RAW

使用命令 Set-Disk 来设置磁盘的属性,比如是否可读、是否离线,文档中给出了一个例子:

>Set-Disk –Number 5 -IsReadonly $False

命令 Initialize-Disk命令来初始化磁盘,并建立分区表。参数 -VirtualDisk 指明该磁盘是虚拟磁盘,参数 -PartitionStyle 明确分区表(比如 MBR,GPT)。而 Clear-Disk 用于删除所有分区,抹除数据和分区表。

1.2 物理磁盘管理命令

与上面类似,我们使用 Get-PhysicalDisk 来获取磁盘列表和磁盘属性。使用 Set-PhysicalDisk 来设置磁盘属性。一个常见的磁盘属性是 -FriendlyName 类似磁盘名。Reset-PhysicalDisk 命令可以用来重置磁盘属性。

下面这个命令查询了所有不健康的物理磁盘。

Get-PhysicalDisk | where {$_.HealthStatus -Ne "Healthy"} | ft

1.3 存储池相关命令

使用 Get-StoragePool 来列出存储池及其属性。通过 Set-StoragePool 来设置存储池的属性(只读等)

命令 New-StoragePool 用于新建存储池。必须使用 -StorageSubSystemFriendlyName 一般写 “Windows Storage*” 。可以使用 -FriendlyName 来制定名称。使用 -PhysicalDisks 来制定所有加入存储池的磁盘。

PS C:\Windows\system32> $tmp = (Get-PhysicalDisk)[1]
PS C:\Windows\system32> New-StoragePool -StorageSubSystemFriendlyName  "Windows Storage*" -FriendlyName npn -PhysicalDisks $tmp

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly    Size AllocatedSize
------------ ----------------- ------------ ------------ ----------    ---- -------------
npn          OK                Healthy      False        False      9.48 GB        256 MB

命令 Remove-StoragePool 来取消一个存储池,需要使用 -FriendlyName 参数来制定存储池名称。

命令 Update-StoragePool 来将一个 Windows Server 2012 之前版本的存储池升级成最新版。

命令 Optimize-StoragePool 来优化存储池。

1.4 将物理磁盘加入和移除存储池

命令 Add-PhysicalDisk 可以将一个物理磁盘加入一个存储池。添加时可以使用存储池对象,也可以使用 -StoragePoolFriendlyName 参数来制定存储卷的名称。另外需要 -PhysicalDisks 参数来传入物理磁盘对象。

PS C:\Windows\system32>  $PDToAdd = Get-PhysicalDisk -CanPool $True
PS C:\Windows\system32> Add-PhysicalDisk -StoragePoolFriendlyName "npn" -PhysicalDisks $PDToAdd

Remove-PhysicalDisk 可以从存储池中移除一个物理磁盘。和添加类似,我们也需要指定物理磁盘和存储池的名称。

Remove-PhysicalDisk -StoragePoolFriendlyName "npn" -PhysicalDisks $PDToAdd

1.5 虚拟磁盘命令

使用 Get-VirtualDiskSet-VirtualDisk 来读取和设置虚拟磁盘的属性。

PS C:\Windows\system32> Get-VirtualDisk

FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus  Size FootprintOnPool StorageEf
                                                                                                               ficiency
------------ --------------------- --------------------- ----------------- ------------  ---- --------------- ---------
v1           Simple                0                     OK                Healthy      16 GB           17 GB    94.12%

使用命令 New-VirtualDisk 来新建虚拟磁盘,主要参数有:

  • -StoragePoolFriendlyName 存储池名称
  • -FriendlyName 虚拟磁盘名称
  • -Size 大小
  • -ProvisioningType Thin 指定了精简(而非固定大小,最大使用指定 Size 的大小)。可选。
  • –ResiliencySettingName 有 “Mirror” ““Parity” 和 “Single” 选项,给出了可靠性级别。具体参见文档。可选。

命令 Remove-VirtualDisk 来删除一个虚拟磁盘,需要指定虚拟磁盘名称。

其他命令具体使用请参见文档。具体主要有如下这些:

  • New-VirtualDiskClone 建立虚拟磁盘的克隆
  • New-VirtualDiskSnapShot 建立快照
  • Hide-VirtualDisk 隐藏虚拟磁盘
  • Show-VirtualDisk 现实虚拟磁盘
  • Repair-VirtualDisk 修复虚拟磁盘
  • Resize-VirtualDisk 重新指定大小

二、分区和创建文件系统(Partition)

当我们创建虚拟磁盘或者直接从磁盘上创建分区(卷)时,将会需要如下命令:

查看和修改分区属性: Get-PartitionSet-Partition。例如:

PS C:\Users\ertuil> Get-Partition

   DiskPath:\\?\scsi#disk&ven_nvme&prod_vmware_virtual_n#5&2d15267&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
PartitionNumber  DriveLetter Offset                                        Size Type
---------------  ----------- ------                                        ---- ----
1                            1048576                                     200 MB System
2                            210763776                                   128 MB Reserved
3                C           344981504                                 59.68 GB Basic

   DiskPath:\\?\storage#disk#{d73842ad-4948-4a53-b0ac-262e2815aaf3}#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
PartitionNumber  DriveLetter Offset                                        Size Type
---------------  ----------- ------                                        ---- ----
1                            17408                                     15.98 MB Reserved
2                E           16777216                                  15.98 GB Basic

通常会使用命令 Get-PartitionSupportedSize 来获取当前分区可以获得的最大和最小大小,比如:

PS C:\Windows\system32> Get-PartitionSupportedSize -DiskNumber 2 -PartitionNumber 3

    SizeMin     SizeMax
    -------     -------
12704501760 64079511040

使用命令 New-Partition 来新建分区,使用 -DiskNumber 来指定磁盘编号;使用 -UseMaximumSize 指定使用最大大小,使用 -AssignDriveLetter 来分配磁盘分卷号。使用命令 Remove-Partition 来删除一个分区。例如:

New-Partition -DiskNumber 1 -UseMaximumSize -AssignDriveLetter`

命令 Format-Volume 用来格式化分卷。-DriveLetter 指定卷号; -FileSystem 指定文件系统。

命令 Add-PartitionAccessPath 来为分区分配卷号。而使用 Remove-PartitionAccessPath 来移除卷号。

PS C:\>Add-PartitionAccessPath -DiskNumber 1 -PartitionNumber 2 -AccessPath F:
PS C:\>Remove-PartitionAccessPath -DiskNumber 1 -PartitionNumber 2 -AccessPath F:

Resize-Partition 用来压缩或者扩展分区。用 -Size 参数指定大小。

Volume 的相关命令主要有:

  • Get-Volume 获取卷信息(可以查看卷的使用情况)
  • Set-Volume 修改卷信息
  • Get-VolumeCorruptionCount 获取卷错误数
  • Repair-Volume 修复卷
  • Optimize-Volume 优化卷
  • New-Volume 新建分区,并在此之上创建卷

等。

三、挂载和取消挂载磁盘镜像(ISO等)

命令 Mount-DiskImage 来挂载一个磁盘镜像文件。例如:

PS C:\>Mount-DiskImage -ImagePath "E:\ISO-Files\My US Visit Fall 2010 Pictures.iso"

命令 DisMount-DiskImage 来卸载一个磁盘镜像文件。可以使用 -ImagePath 来制定镜像文件。或者使用 -DevicePath 指定挂载位置。

PS C:\>Dismount-DiskImage -ImagePath "E:\ISO-Files\My US Visit Fall 2010 Pictures.iso"

四、内存虚拟文件系统

内存虚拟文件系统的相关命令有:

Cmdlet          Get-PmemDisk                                       1.0.0.0    PersistentMemory
Cmdlet          Get-PmemPhysicalDevice                             1.0.0.0    PersistentMemory
Cmdlet          Get-PmemUnusedRegion                               1.0.0.0    PersistentMemory
Cmdlet          Initialize-PmemPhysicalDevice                      1.0.0.0    PersistentMemory
Cmdlet          New-PmemDisk                                       1.0.0.0    PersistentMemory
Cmdlet          Remove-PmemDisk                                    1.0.0.0    PersistentMemory

这些,具体不再介绍。

五、总结

这里主要介绍了磁盘管理的相关内容。包括物理磁盘、存储池、虚拟磁盘、分区、卷、镜像等对象。