CentOS 7:获取硬盘总容量和剩余容量

CentOS 7:获取硬盘总容量和剩余容量

我正在制作一个简单的脚本来显示有关我的 CentOS 7 PC 的一些信息,类似于System InformationWindows 上的应用程序。

我想知道是否有一个命令可以显示我的虚拟磁盘的总容量和剩余容量?

目前,我知道df我在此配置中使用的命令为我提供了剩余容量:

df -Ph | grep sda1 | awk '{print $4}' | tr -d '\n'

我也知道该lsblk命令,它确实显示了我的虚拟磁盘的总大小。

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0   37G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.1G  0 lvm  /home
sr0              11:0    1 1024M  0 rom  

我还可以lsblk通过以下方式过滤命令:lsblk -o NAME,SIZE给出:

NAME             SIZE
sda               60G
├─sda1             1G
└─sda2            59G
  ├─centos-root   37G
  ├─centos-swap  3.9G
  └─centos-home 18.1G
sr0             1024M

我想知道如何过滤输出以仅显示60G的容量sda

我对此一无所知,awk但我看到它弹出了许多对类似问题的其他答复,所以也许这是我需要进一步研究的内容。

答案1

使用:

lsblk -no SIZE /dev/sda | head -1

带有lsblk -n标题的将不会被打印。所以如果你运行:

lsblk -no SIZE /dev/sda

输出将是这样的:

970.5M
970.4M

第一个值970.5M是 的总磁盘容量/dev/sda。在本例中,它将head -1仅获得输出的第一行970.5M。另一个值是(在我的例子中)970.4M的容量。/dev/sda1

lsblk -no PATH,NAME,SIZE /dev/sda
#Output:
/dev/sda  sda    970.5M
/dev/sda1 └─sda1 970.4M

您可以使用上面的命令来指定任何分区。例如,如果我想获取有关的信息/dev/sda1/dev/nvme0n1p1我应该使用:

lsblk -no PATH,NAME,SIZE /dev/nvme0n1p1 /dev/sda1
#Output:
/dev/sda1      sda1      970.4M
/dev/nvme0n1p1 nvme0n1p1   260M

关于你的问题:我如何只显示 sda3 的结果你可以使用这个:

lsblk -no SIZE  /dev/sda3

答案2

要得到磁盘总容量您可能会发现有用的另一种方法是使用smartctl.

例如:

smartctl --scan

smartctl --xall /dev/sda

# in my case a scan results in

  Smartctl open device: /dev/sda failed: DELL or MegaRaid controller, please try adding '-d megaraid,N'

# therefore for me a    smartctl -d megaraid,0 --all /dev/bus/0       shows

=== START OF INFORMATION SECTION ===
Vendor:               TOSHIBA
Product:              KPM5WRUG3T84
Revision:             B322
Compliance:           SPC-4
User Capacity:        3,840,755,982,336 bytes [3.84 TB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
LU is resource provisioned, LBPRZ=1
Rotation Rate:        Solid State Device
Form Factor:          2.5 inches
Logical Unit id:      0x58ce38ee20abca2d
Serial number:        
Device type:          disk
Transport protocol:   SAS (SPL-3)
Local Time is:        Wed Oct 12 14:26:53 2022 EDT
SMART support is:     Available - device has SMART capability.
SMART support is:     Enabled
Temperature Warning:  Disabled or Not Supported
Read Cache is:        Enabled
Writeback Cache is:   Enabled

=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK

Percentage used endurance indicator: 4%
Current Drive Temperature:     29 C
Drive Trip Temperature:        70 C

Manufactured in week 33 of year 2019
Elements in grown defect list: 0

smartctl -d megaraid,0 --all /dev/bus/0 | grep Capacity | awk '{print $3}'您可以3,840,755,982,336使用的摘录。

检查man smartctl有关如何使用 smartctl 选项而不是管道到 grep 和 awk 来完成这一切的选项。

smartctl不会告诉你已用或剩余容量,但我认为这将是获得可靠的总磁盘容量数的好方法

另外,您lshw -class disk可能lshw -short -C disk会感兴趣:

lshw -short -C disk
H/W path         Device        Class          Description
=========================================================
/0/2/0/2.0.0     /dev/sda      disk           3840GB PERC H740P Adp    {my one OS disk}
/0/2/0/2.1.0     /dev/sdb      disk           19TB PERC H740P Adp      {the 7 other disks as RAID-5 making 19tb volume I mount as /data}

相关内容