MacOS 磁盘管理工具 diskutil 介绍
https://www.jianshu.com/p/6a1f365617ad
電腦上的操作系統、應用程序和應用數據一般都需要保存在永久存儲器中(通常就是硬盤),這樣電腦斷電后應用數據等就不會丟失。
為了更有效地組織磁盤上的數據信息,通常將磁盤預先劃分成一個或多個磁盤分區,創建對應的文件系統,以方便計算機對各分區分別進行管理。
MacOS 系統自帶一個圖形化的磁盤管理工具(Disk Utility),同時還有一個命令行版本的 diskutil。通過該命令的使用,可以很快捷地對本地磁盤進行擦除數據、調整分區大小、格式化等操作。
一、verb
diskutil 命令的格式為:diskutil <verb> <options>
不帶任何選項的 diskutil 命令會列出該命令支持的 verb 及其對應的介紹:
上面列出的 verb 主要分為以下幾類:
- 獲取磁盤和分區信息:如 list、info、activity 等
- 掛(卸)載磁盤或卷:如 mount、eject、mountDisk 等
- 驗證、修復磁盤分區或文件系統:如 verifyVolume、repairDisk 等
- 分區操作:如 splitPartitions、mergePartitions 等
- 其他:如 appleRAID、apfs 等
如不清楚某個 verb 的具體命令格式,可以直接使用 diskutil 命令加上該 verb 并且不帶任何其他選項,命令行即輸出該 verb 的使用介紹。如 eraseDisk 的使用介紹:
? ~ diskutil eraseDisk Usage: diskutil eraseDisk format name [APM[Format]|MBR[Format]|GPT[Format]]MountPoint|DiskIdentifier|DeviceNodeCompletely erase an existing whole disk. All volumes on this disk will be destroyed. Ownership of the affected disk is required.Format is the specific file system name you want to erase it as (HFS+, etc.).Example: diskutil eraseDisk JHFS+ UntitledUFS disk3二、獲取磁盤分區信息
1. list
可以使用 list 選項簡要列出 MacOS 系統的磁盤及分區信息,包括分區類型(TYPE)、分區名(NAME)、容量大小(SIZE)和標志符(IDENTIFIER)等。如此時系統掛載了 dmg 映像文件,其信息也會顯示在列表中(下表中的 disk3 )。
? ~ diskutil list /dev/disk0 (internal, physical):#: TYPE NAME SIZE IDENTIFIER0: GUID_partition_scheme *121.3 GB disk01: EFI EFI 209.7 MB disk0s12: Apple_APFS Container disk1 121.1 GB disk0s2/dev/disk1 (synthesized):#: TYPE NAME SIZE IDENTIFIER0: APFS Container Scheme - +121.1 GB disk1Physical Store disk0s21: APFS Volume Mac OS 78.4 GB disk1s12: APFS Volume Preboot 22.5 MB disk1s23: APFS Volume Recovery 517.8 MB disk1s34: APFS Volume VM 3.2 GB disk1s4/dev/disk2 (external, physical):#: TYPE NAME SIZE IDENTIFIER0: FDisk_partition_scheme *7.8 GB disk21: Windows_FAT_32 UNTITLED 7.8 GB disk2s1/dev/disk3 (disk image):#: TYPE NAME SIZE IDENTIFIER0: Apple_partition_scheme +39.1 MB disk31: Apple_partition_map 32.3 KB disk3s12: Apple_HFS Wireshark 39.1 MB disk3s2其中的 /dev/disk0 為內置磁盤,/dev/disk2 為外置磁盤(U 盤,已在 Windows系統下格式化為 FAT32 格式),/dev/disk3 為 DMG 映像文件。而 /dev/disk1 其實就是 disk0s2 作為 APFS 文件系統容器的具體信息。
2. info
info 選項可以列出指定磁盤或分區的詳細信息。如查看 disk2 (即 8 G 優盤)的信息:
~ diskutil info disk2Device Identifier: disk2Device Node: /dev/disk2Whole: YesPart of Whole: disk2Device / Media Name: DataTraveler 2.0Volume Name: Not applicable (no file system)Mounted: Not applicable (no file system)File System: NoneContent (IOContent): FDisk_partition_schemeOS Can Be Installed: NoMedia Type: GenericProtocol: USBSMART Status: Not SupportedDisk Size: 7.8 GB (7807696896 Bytes) (exactly 15249408 512-Byte-Units)Device Block Size: 512 BytesRead-Only Media: NoRead-Only Volume: Not applicable (no file system)Device Location: ExternalRemovable Media: RemovableMedia Removal: Software-ActivatedVirtual: No輸出的信息包括設備標志符(Device Identifier)、設備節點(Device Node)、設備名(Device / Media Name)、容量大小(Disk Size)、塊大小(Block Size)等。
也可以查看某個分區的詳細信息:
~ diskutil info disk1s1Device Identifier: disk1s1Device Node: /dev/disk1s1Whole: NoPart of Whole: disk1Volume Name: Mac OSMounted: YesMount Point: /Partition Type: 41504653-0000-11AA-AA11-00306543ECACFile System Personality: APFSType (Bundle): apfsName (User Visible): APFSOwners: EnabledOS Can Be Installed: YesBooter Disk: disk1s2Recovery Disk: disk1s3Media Type: GenericProtocol: PCISMART Status: VerifiedVolume UUID: E9D63DEC-29D7-3EE0-B9BB-3614E31EA747Disk / Partition UUID: E9D63DEC-29D7-3EE0-B9BB-3614E31EA747Disk Size: 121.1 GB (121123069952 Bytes) (exactly 236568496 512-Byte-Units)Device Block Size: 4096 BytesVolume Total Space: 121.1 GB (121123069952 Bytes) (exactly 236568496 512-Byte-Units)Volume Used Space: 80.0 GB (79982071808 Bytes) (exactly 156214984 512-Byte-Units) (66.0%)Volume Free Space: 41.1 GB (41140998144 Bytes) (exactly 80353512 512-Byte-Units) (34.0%)Allocation Block Size: 4096 BytesRead-Only Media: NoRead-Only Volume: NoDevice Location: InternalRemovable Media: FixedSolid State: YesHardware AES Support: No三、擦除磁盤或分區
eraseDisk 選項用于擦除整個磁盤并重新格式化。該命令的格式為:
diskutil eraseDisk <format> <name> [APM|MBR|GPT] MountPoint|DiskIdentifier|DeviceNode
format 用于指定擦除數據后需要重新建立的文件系統類型。可以為 %noformat% 來跳過初始化文件系統的操作。其他支持的類型可以通過 listFilesystems 選項查看。
用來測試的優盤如下所示,已在 Windows 下格式化為 FAT32 格式。
U 盤 FAT32
可以使用 diskutil eraseDisk ExFAT StarkyDisk disk2 命令將優盤數據擦除并格式化為 ExFAT 格式。
?
? ~ diskutil eraseDisk ExFAT StarkyDisk disk2 Started erase on disk2 Unmounting disk Creating the partition map Waiting for partitions to activate Formatting disk2s2 as ExFAT with name StarkyDisk Volume name : StarkyDisk Partition offset : 411648 sectors (210763776 bytes) Volume size : 14835712 sectors (7595884544 bytes) Bytes per sector : 512 Bytes per cluster: 32768 FAT offset : 2048 sectors (1048576 bytes) # FAT sectors : 2048 Number of FATs : 1 Cluster offset : 4096 sectors (2097152 bytes) # Clusters : 231744 Volume Serial # : 5ad7f879 Bitmap start : 2 Bitmap file size : 28968 Upcase start : 3 Upcase file size : 5836 Root start : 4 Mounting disk Finished erase on disk2?
?
此時的優盤信息為:
U 盤 ExFAT
?
分區表變為 GPT 類型,且多了一個 EFI 分區。
也可以在擦除磁盤時指定分區表類型:
? ~ sudo diskutil eraseDisk ExFAT StarkyDisk MBR disk2 Password: Started erase on disk2 Unmounting disk Creating the partition map Waiting for partitions to activate Formatting disk2s1 as ExFAT with name StarkyDisk Volume name : StarkyDisk Partition offset : 2 sectors (1024 bytes) Volume size : 15249406 sectors (7807695872 bytes) Bytes per sector : 512 Bytes per cluster: 32768 FAT offset : 2048 sectors (1048576 bytes) # FAT sectors : 2048 Number of FATs : 1 Cluster offset : 4096 sectors (2097152 bytes) # Clusters : 238207 Volume Serial # : 5ad80e37 Bitmap start : 2 Bitmap file size : 29776 Upcase start : 3 Upcase file size : 5836 Root start : 4 Mounting disk Finished erase on disk2?
?
此時的優盤分區表變為 MBR 類型:
U 盤 MBR
其他擦除命令如 eraseVolume (完全擦除整個磁盤或某個磁盤分區,創建新的文件系統)、zeroDisk (向整個磁盤或某個分區全部寫入 '0')
使用 zeroDisk 命令擦除磁盤(該過程會花費很長的時間,我試了)后,該磁盤上的全部信息被抹除,同時也不再包含分區和文件系統信息:
zeroDisk
則再次插入此優盤會提示你『初始化』或『格式化』該磁盤。
zeroDisk
?
四、創建磁盤分區
可以通過 partionDisk 選項完成對磁盤的分區操作。該命令的格式為:
diskutil partitionDisk MountPoint|DiskIdentifier|DeviceNode[numberOfPartitions] [APM|MBR|GPT][part1Format part1Name part1Size part2Format part2Name part2Sizepart3Format part3Name part3Size ...]命令選項中的 Size 用來指定分區的大小(以扇區數計量),合法的值包括帶有指定后綴的浮點數。其中的后綴有 B(ytes), S(512-byte-
blocks), K(ilobytes), M(egabytes), G(igabytes), T(erabytes), P(etabytes),也可以是 % 來表示對整個磁盤的占比。
最后一個分區會自動擴展到占用整個磁盤的剩余空間,如果想為最后一個分區指定固定的大小,可在其后再創建一個類型為『free space』的分區。
上面的命令在優盤(disk2)上創建了 3 個分區,第一個(F01)格式為 FAT32,大小是 3 Gb。第二個(F02)格式為 JHFS+,大小為 3 Gb。最后一個是『自由空間』,大小為剩余的容量。所以實際上只是分了兩個區,整體的分區表類型為 MBR。
五、分割/合并磁盤分區
splitPartition 選項可以用來將已存在的某個分區再分割成數個更小的分區,注意原分區上的所有數據都會丟失。
該選項的第一個參數為需要分割的分區的掛載點/標志符/設備節點,其余參數和使用 partitionDisk 時相同。
上面的命令將優盤的第二個分區(disk2s2)又分割成了兩個更小的分區,分別是 FAT32 格式的 F01(disk2s2),和 JHFS+ 格式的 F02(disk2s3)。雖然命令中指定了 F02 的大小是 3G,因為是最后一個分區,所以自動擴展到占用剩余的磁盤空間。最后它的實際大小是 4.5G。
mergePartitions 選項用來將多個已存在的分區合并為一個大的分區。該選項的格式為:
diskutil mergePartitions [force] format name DiskIdentifier|DeviceNode DiskIdentifier|DeviceNode
第一個分區參數為起始分區,第二個分區參數為結束分區。這兩個分區之間的所有分區都將被合并。
如果 force 選項沒有被指定,且合并前的第一個分區是可調整大小的文件系統(如 JHFS+),則第一個分區上的數據會保留到合并后的分區。
mergePatitions 合并前
?
mergePatitions 合并后
六、調整分區大小(無損)
resizeVolume 選項可以無損調整(增加或縮減)分區大小。
將 disk2s2 分區縮減為 4g 大小,騰出的空間作為『free space』:
? ~ diskutil list | grep disk2 /dev/disk2 (external, physical):0: GUID_partition_scheme *7.8 GB disk21: EFI EFI 209.7 MB disk2s12: Apple_HFS F01 7.5 GB disk2s2 ? ~ sudo diskutil resizeVolume disk2s2 4g Resizing to 4000000000 bytes Started partitioning on disk2s2 F01 Verifying the disk Verifying file system Volume was successfully unmounted Performing fsck_hfs -fn -x /dev/rdisk2s2 Checking Journaled HFS Plus volume Checking extents overflow file Checking catalog file Checking multi-linked files Checking catalog hierarchy Checking extended attributes file Checking volume bitmap Checking volume information The volume F01 appears to be OK File system check exit code is 0 Restoring the original state found as mounted Resizing Shrinking file system Modifying partition map Finished partitioning on disk2s2 F01 /dev/disk2 (external, physical):#: TYPE NAME SIZE IDENTIFIER0: GUID_partition_scheme *7.8 GB disk21: EFI EFI 209.7 MB disk2s12: Apple_HFS F01 4.0 GB disk2s2此時 disk2s2 內的文件如下:
?
resizeVolume
將 disk2s2 分區擴展,并盡可能占用所有可用的自由空間。
? ~ sudo diskutil resizeVolume disk2s2 R Resizing to full size (fit to fill) Started partitioning on disk2s2 F01 Verifying the disk Verifying file system Volume was successfully unmounted Performing fsck_hfs -fn -x /dev/rdisk2s2 Checking Journaled HFS Plus volume Checking extents overflow file Checking catalog file Checking multi-linked files Checking catalog hierarchy Checking extended attributes file Checking volume bitmap Checking volume information The volume F01 appears to be OK File system check exit code is 0 Restoring the original state found as mounted Resizing Modifying partition map Growing file system Finished partitioning on disk2s2 F01 /dev/disk2 (external, physical):#: TYPE NAME SIZE IDENTIFIER0: GUID_partition_scheme *7.8 GB disk21: EFI EFI 209.7 MB disk2s12: Apple_HFS F01 7.5 GB disk2s2此時 disk2s2 內的文件如下:
?
resizeVolume
參考文章
man diskutil
?
?
?
?
總結
以上是生活随笔為你收集整理的MacOS 磁盘管理工具 diskutil 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【身份证识别】基于matlab GUI形
- 下一篇: 多宫格视频是什么软件_抖音上的四/多宫格