我想通过终端查看硬盘上未分配的可用空间。我绞尽脑汁在互联网上寻找可能的解决方案,但都是徒劳的。
我使用了各种命令,如df
、du
、fdisk
、parted
等。它告诉我装载和卸载的磁盘,但我留下的空闲未分配空间又如何呢?
当然,我可以使用Fedora提供的"磁盘实用程序"应用程序查看它,但由于我喜欢在终端中,我想在其中查看。
有人能帮我解决问题吗?
使用GNU parted
和print free
命令:
root@sandbox:~# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 256MB 255MB primary ext2 boot
256MB 257MB 1048kB Free Space
2 257MB 64.4GB 64.2GB extended
5 257MB 64.4GB 64.2GB logical lvm
64.4GB 64.4GB 1049kB Free Space
在TB中查看:
# parted /dev/sda unit TB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
在GB中查看:
# parted /dev/sda unit GB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
在MB中查看:
# parted /dev/sda unit MB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
以字节为单位查看:
# parted /dev/sda unit B print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
查看百分比:
# parted /dev/sda unit '%' print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
在扇区中查看:
# parted /dev/sda unit s print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
将/dev/sda
更改为您试图查找有关信息的任何设备。如果在任何计算中使用该结果,请确保修剪尾部字符。
在单个命令中显示未分配可用空间的最简单方法:
$ sudo sfdisk --list-free /dev/sdX
(如果您不需要有关扇区大小等的额外信息,请添加--quiet
选项。)
除了关于如何查找未分区空间的所有答案外,您可能还将空间分配给LVM卷,但实际未使用。您可以使用pvdisplay
列出物理卷,并查看每个物理卷与哪些卷组相关联。如果物理卷没有与任何卷组关联,则可以安全地重新分配或销毁。假设it与卷组关联,则下一步是使用vgdisplay
来显示这些卷组。除其他外,这将显示您是否有任何可用的"物理扩展数据块",即可以分配给逻辑卷的存储块。您可以使用vgs
:以简洁的形式获得此信息
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
fedora 1 3 0 wz--n- 237.46g 0
在这里你可以看到我什么都没有。如果我这样做了,最后一个数字会大于零。
这一点很重要,因为对于du
、df
等,可用空间是不可见的,并且如果您使用fdisk
或其他分区工具,可用空间也将显示为已分配的分区。
我在fedora 26和LVM分区上遇到了同样的问题,似乎我在安装过程中忘记检查了什么,所以,我的15G根目录已经增加到了227G。
我在这里发布了我遵循的步骤:
resize2fs:试图打开时,超级区块中的错误幻数
0) #df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 824K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/fedora-root 15G 2.1G 13G 14% /
tmpfs 1.9G 0 1.9G 0% /tmp
/dev/md126p1 976M 119M 790M 14% /boot
tmpfs 388M 0 388M 0% /run/user/0
1) # vgs
VG #PV #LV #SN Attr VSize VFree
fedora 1 2 0 wz--n- 231.88g 212.96g
2) # vgdisplay
--- Volume group ---
VG Name fedora
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 231.88 GiB
PE Size 4.00 MiB
Total PE 59361
Alloc PE / Size 4844 / 18.92 GiB
Free PE / Size 54517 / 212.96 GiB
VG UUID 9htamV-DveQ-Jiht-Yfth-OZp7-XUDC-tWh5Lv
3) # lvextend -l +100%FREE /dev/mapper/fedora-root
Size of logical volume fedora/root changed from 15.00 GiB (3840 extents) to 227.96 GiB (58357 extents).
Logical volume fedora/root successfully resized.
4) #lvdisplay
5) #fd -h
6) # xfs_growfs /dev/mapper/fedora-root
meta-data=/dev/mapper/fedora-root isize=512 agcount=4, agsize=983040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0 rmapbt=0
= reflink=0
data = bsize=4096 blocks=3932160, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 3932160 to 59757568
7) #df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 828K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/fedora-root 228G 2.3G 226G 2% /
tmpfs 1.9G 0 1.9G 0% /tmp
/dev/md126p1 976M 119M 790M 14% /boot
tmpfs 388M 0 388M 0% /run/user/0
尊敬的
这是一个老问题,但我也想给出我的答案。
既然我们谈论的是空闲可用空间,我们就应该谈论扇区,因为没有对扇区进行分区或调整大小。
对我们人类来说,这没有多大意义。为了获得人类可读的信息,我们必须将这个数字转换成字节。因此,我们已经对磁盘进行了分区,我们想知道我们可以使用多少空间。我个人不喜欢parted
解决方案,因为我的大脑对命令的记忆已经被占用了。还有cfdisk
,它给你自由的空间。但我认为fdisk是最快的解决方案:它简单明了,无需安装:执行fdisk /dev/sdx
,然后在交互式shell中输入v。它将为您提供仍然免费的扇区数量。
2004-54-0 [17:03:33][root@minimac:~]$> fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
..
Command (m for help): v
Remaining 1713 unallocated 512-byte sectors
我们仍然有1713个扇区,每个扇区512字节。所以,因为你喜欢终端(2012年,现在谁知道呢?)我们做echo $(((1713*512)/1024))k
,它是1713个扇区乘以512字节(除以1024得到KB),得到856k。。甚至不到900 KB。。我需要另一张磁盘。。
请按照下面的操作。
-
找出dev类型,是否为/dev/sda/dev/hda/dev/vda等
-
查找vi/etc/fstab,找出已安装的分区和UUID等
-
例如,您的硬盘被标记为/dev/sda,并且您知道df-hT 下/dev/sda的编号
然后您需要找出剩余的/dev/sda*。
所以,
fdisk-l/dev/sda*将给出ALL/dev/sda*-例如,您会发现/dev/sda4或/dev/sda5
然后找出挂载分区的UUID,而那些没有在/etc/fstab中列出的UUID是您可以格式化和挂载的。
就这样吧。一个明智的世界就足够了。
图形化使用磁盘实用程序时,它显示所有文件系统使用的磁盘空间,并使用终端中的命令,如df -H
。换句话说,它使用的是1000的幂,而不是1024。(注:-h
和-H
有区别。)
同时使用命令行查找硬盘中未分配的空间# fdisk /dev/sda
将显示总空间和总气缸值。
现在检查最后一个圆柱体值,并将其从圆柱体总值中减去。因此,最终值*1000会为您提供未分配的磁盘空间。
注意:圆柱体值在df -H
中显示为1000的幂,也可能使用df -h
显示为1024的幂。
答案的简单解决方案:
parted /dev/sda
显示有关单元的帮助。然后将其切换到所需的单位。
要显示设备上的可用空间,请使用:
print free
如果您需要查看具有可用空间的分区和/或文件管理器,则需要上述实用程序。你只需要使用选项。
例如:df -h
会以"人类可读"的形式打印这些信息。如果你只需要关于可用空间的信息,你可以使用:df -h | awk '{print $1" "$4}'
。
您可能需要使用fdisk -l /dev/sda
命令来查看sda
磁盘的分区。"可用空间"应该是一些未使用的分区(或缺少)。
文件系统大小可以与空间大小不同。要修复你需要做这个
df-h
看看分区的名称是什么,比如/dev/sda3
resize2fs/dev/sd3
当您通过fdisk在分区中切割磁盘时,您可能会小心,以免留下可用空间的间隙。所以命令会自动对齐分区,这样零件之间就会有一些间隙。网络上有很多文章为什么要这样做。原因是它给出了错误较少的解决方案。那是很多年前的事了。现在我不知道如果你做所有的事情都没有任何间隙,会不会出现错误。但首先。如果你不允许对齐,你可以从下一部分开始=上一部分结束+1。但第一部分总是从2048扇区开始。所以调用专家部分,您可以将其转换为0。但是,如果您计划从此磁盘启动,强烈建议您这样做。如果仅用于数据,您将获得1Mb的额外磁盘空间。这是一个MBR空间。如果您计划在此磁盘上安装操作系统,则不使用GPT分区类型。此外,并非所有操作系统都能看到磁盘的GPT部分,这一点更为合适。但有些人看到了。如果你不确定它使用msdos。格式化时,块大小为4096字节(逻辑),物理块大小为512字节。我不这么做,但您也可以将块大小设置为512。对此有很多讨论。这会导致磁盘错误。但你也会给一些可用的磁盘空间,尤其是当你有很多小文件的时候。您的磁盘将填充得更紧凑。如果你给已经分区的磁盘上装满了数据,并且可能已经安装了操作系统,你可能想这么做,这是非常困难的。但对于Linux来说是可能的。对于Windows否…您也必须保存备份和mbr,写入每个部分的UUID,然后使用fdisk和format为每个部分设置正确的UUID和LABEL,使用dd命令还原mbr,如果您没有做任何错误,所有操作都将像以前一样,但没有任何间隙。