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-VirtualDisk
和 Set-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-Partition
和 Set-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
这些,具体不再介绍。
五、总结
这里主要介绍了磁盘管理的相关内容。包括物理磁盘、存储池、虚拟磁盘、分区、卷、镜像等对象。
本人保留对侵权者及其全家发动因果律武器的权利
版权提醒
如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/tech/ps5/。
如有其它需要,请邮件联系!版权所有,违者必究!