Disk-Usage

如何使用命令獲得可用的可用磁碟空間?

  • April 24, 2021

使用 fdisk 顯示磁碟空間:

sudo fdisk -l  /dev/sda
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: ST500DM002-1BD14
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0C7DCAA1-CBD0-4A33-B210-F8D027B84A09

Device         Start       End   Sectors   Size Type
/dev/sda1       2048 390819839 390817792 186.4G Linux filesystem
/dev/sda2  390819840 422070271  31250432  14.9G Linux swap
/dev/sda3  422070272 423120895   1050624   513M EFI System
/dev/sda4  423120896 423153663     32768    16M Microsoft reserved
/dev/sda5  423153664 628613119 205459456    98G Microsoft basic data

空閒未使用的可用空間約為:

total space for dev/sda - space for /dev/sda1,/dev/sda2,/dev/sda3,/dev/sda4,/dev/sda5
= 465.8G - 186.4G - 14.9G - 513M - 16M - 98G
= 166G

如何直接用命令獲取號碼?

最好不要使用方法:解析所有數字fdisk並組合成一個計算表達式465.8 - 186.4 - 14.9 - (513+16/1000) - 98

sfdisk -F /dev/sdX將列印可用空間的總和和可用空間區域的列表:

# sfdisk -F /dev/sde
Unpartitioned space /dev/sde: 477.77 MiB, 500973568 bytes, 978464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Start     End Sectors  Size
22528   32527   10000  4.9M
53248   69391   16144  7.9M
71680  479231  407552  199M
479232 1023999  544768  266M

所以如果你只對總和感興趣,你可以從第一行解析它:

# sfdisk -F /dev/sde | head -1 | cut -d":" -f2 | cut -d"," -f1
477.77 MiB

請注意,像這樣計算可用空間很棘手。在這裡,我有 478 MiB 的可用空間,但這並不意味著我可以全部使用它,我製作的分區使前兩個可用區域無法使用(太小而無法使用)以及末尾的空間磁碟不是單個連續的可用空間。這是一個誇張的例子,但我見過比這更糟糕的分區:-)

如果您想獲得“可用於分區的最大可用連續空間”,您需要檢查開始和結束、分區類型等,而這很難從 bash 輸出中解析,您可能需要使用庫(例如libfdisklibblockdev)來獲取準確的資訊(這意味著用 C 或 Python 程式)。

引用自:https://unix.stackexchange.com/questions/646473