Written by Sk January 16, 2021
在这篇简短的指南中,我们将看到在Linux和类Unix操作系统中查找和列出磁盘分区的所有可能方法。在开始讨论这个话题之前,让我们先快速了解一下什么是磁盘分区以及在Linux中如何命名磁盘分区。
Linux下的磁盘分区磁盘分区或磁盘切片是一种将物理存储磁盘设备划分为多个逻辑区域的方法,这些逻辑区域被称为分区。一个硬盘驱动器可以包含一个或几个分区。
在Linux和类Unix系统中,磁盘通常被划分为三个分区:
其中一个分区用于存放系统文件。它通常挂载在/(“根”目录)上。其中一个分区用于存放用户配置文件和个人数据。通常被挂载在/home目录上。以及一个交换分区在安装操作系统或在其中保存任何数据之前,所有分区都应该被格式化为某种类型的文件系统,比如EXT4。
在基于BIOS的系统上,分区表信息通常被存储在主引导记录分区(MBR)中。而在基于UEFI的系统上,分区表信息的存储位置变味了GUID分区表(GPT)中。
系统启动时, BIOS或UEFI会扫描所有存储设备,检测MBR / GPT分区,发现引导磁盘,在内存中加载引导程序(如grub2)从默认引导磁盘,执行启动代码来读取分区表并识别/boot所属的分区,进而在内存中加载内核,最后将控制权传递给内核。内核负责引导过程的余下部分,并完成操作系统的加载工作。
Linux下的磁盘和分区名称在创建、挂载和删除分区时,您需要知道在Linux系统中如何对分区进行命名。
Linux操作系统的磁盘名称和分区与其他操作系统不同。Linux操作系统的基本命名方案如下:
第一个软驱的名称为/dev/fd0。第二块软驱的名称为/dev/fd1,以此类推。检测到的第一个硬盘(主硬盘)命名为/dev/sda。检测到的第二个硬盘名称为/dev/sdb,以此类推。第一张SCSI 光盘名称为/dev/scd0。它也被称为/dev/sr0。您可能想知道sda代表什么。sd最初是指scsi磁盘设备,但现在它是用来代表SATA设备以及其常见的可移动存储设备。
每个磁盘上的分区通过在磁盘名后面追加一个十进制数来进行命名。例如,sda1是第一个SCSI硬盘驱动器中的第一个分区,sda2表示第一个磁盘驱动器的第二个分区,sdb1是第二个硬盘驱动器中的第一个分区,以此类推。在外行术语中,s表示接口(电脑SATA、SAS或SCSI), d表示磁盘,a表示设备id,数字表示分区id。后续添加到系统中的磁盘也同样适用。
了解Linux磁盘和分区的名称对于本指南来说就足够了。如果你想知道更多的细节,在网上快速搜索可能会得到很多相关的结果。让我们回到正题上来吧。在Linux中有许多查看磁盘分区的方法。首先,我们将从lsblk命令开始。
1. Linux下使用lsblk命令列出磁盘分区lsblk命令行工具可用于显示关于指定块设备以及所有可用块设备的信息,以及它们在Linux系统中对应的分区方案。它读取sysfs文件系统和udev db来收集磁盘和分区的信息,并以树状格式显示输出。
要使用lsblk命令列出磁盘和分区信息,只需不带任何选项运行它:
$ lsblk
或者,
$ sudo lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTloop0 7:0 0 55M 1 loop /snap/core18/1705loop1 7:1 0 55M 1 loop /snap/core18/1754loop2 7:2 0 69.4M 1 loop /snap/lxd/15223loop3 7:3 0 71.2M 1 loop /snap/lxd/15913loop4 7:4 0 27.1M 1 loop /snap/snapd/7264loop5 7:5 0 29.8M 1 loop 电脑 /snap/snapd/8140sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1M 0 part └─sda2 8:2 0 20G 0 part /sr0 11:0 1 1024M 0 rom
在Linux中使用lsblk命令获取磁盘分区列表
在上面的输出中可以看到,lsblk命令列出了一个名为sda的20GB容量大小的磁盘,它有两个分区,即sda1和sda2。可以注意一下上面输出的Type列,它显示了设备的类型,即disk或part分别代表磁盘和分区。
你注意到还有一个分区名为sr0吗? 它表示作为光学存储介质挂载的ISO映像。
您的系统中可能有多个设备。在这种情况下,只需像下面这样指定磁盘设备名:
$ lsblk /dev/sda
上面的命令将显示第一个磁盘驱动器中的分区详细信息。
你甚至可以显示更多的细节,包括文件系统类型,UUID,挂载点等,如下所示:
$ lsblk -io KNAME,TYPE,SIZE,MODEL,FSTYPE,UUID,MOUNTPOINT
或者,你可以使用-fm选项来显示挂载点,大小,所有者,模式:
$ lsblk -fm
2. 在Linux下使用fdisk命令显示磁盘分区
Fdisk是一个命令行、对话驱动程序,用于在Linux下管理硬盘上的分区表和分区。
通过root用户或sudo命令使用fdisk -l命令
$ sudo fdisk -l
输出示例:
[...]Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectorsDisk model: VBOX HARDDISK Units: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: gptDisk identifier: 46F42576-F542-4AD4-9BE4-31E59BAFE3C1Device Start End Sectors Size Type/dev/sda1 2048 4095 2048 1M BIOS boot/dev/sda2 4096 41940991 41936896 20G Linux filesystem
在Linux中使用fdisk命令显示磁盘分区
在上面的输出中,您将看到所有可用的磁盘分区。
要查看特定磁盘驱动器中的分区表,如下所示显式地提到它的名称:
$ sudo fdisk -l /dev/sda
3. Linux操作系统下使用sfdisk检查硬盘分区
Sfdisk is是一个面向脚本的工具,用于检查块设备上的分区。 sfdisk的使用方法与fdisk相同。
使用sfdisk命令检查Linux下的硬盘分区:
$ sudo sfdisk -l
您还可以检查特定设备中的分区。
$ sudo sfdisk -l /dev/sda
4. 使用cfdisk检查Linux磁盘分区
Cfdisk是一个基于多视窗模式的命令行程序,用于在Linux和类unix系统中对块设备进行分区。
要使用cfdisk检查Linux中所有可用的磁盘分区,执行以下命令:
$ sudo cfdisk
输出示例:
使用cfdisk查看Linux磁盘分区
按q或用方向键选择Quit选项,按ENTER键退出。
默认情况下,Cfdisk会列出/dev/sda磁盘的分区详细信息。
5. 使用blkid查找Linux中的磁盘分区blkid是另一个命令行程序,它能够列出所有可识别的分区及其UUID (Universal Unique Identifier)。
要列出Linux机器上的所有分区,以root用户或sudo运行blkid:
$ sudo blkid
输出示例
/dev/sda2: UUID="81bb4976-a820-4e0d-92ab-1a754f9837bd" TYPE="ext4" PARTUUID="ea153271-0c12-4b95-9dee-3dab58a1fd03"/dev/loop0: TYPE="squashfs"/dev/loop1: TYPE="squashfs"/dev/loop2: TYPE="squashfs"/dev/loop3: TYPE="squashfs"/dev/loop4: TYPE="squashfs"/dev/loop5: TYPE="squashfs"/dev/sda1: PARTUUID="02fcad04-66ea-41e0-8673-4e3fbbf1883a"
使用blkid查找磁盘分区
你也可以在一个表中列出所有的分区,包括当前的挂载点:
$ sudo blkid -o list
输出示例
device fs_type label mount point UUID------------------------------------------------------------------------/dev/sda2 ext4 / 81bb4976-a820-4e0d-92ab-1a754f9837bd/dev/loop0 squashfs /snap/core18/1705 /dev/loop1 squashfs /snap/core18/1754 /dev/loop2 squashfs /snap/lxd/15223 /dev/loop3 squashfs /snap/lxd/15913 /dev/loop4 squashfs /snap/snapd/7264 /dev/loop5 squashfs /snap/snapd/8140 /dev/sda1 (not mounted)
6. 使用hwinfo工具获取磁盘分区的详细信息
Hwinfo是一个免费的、开源命令行工具可用于查看Linux系统的硬件信息。它几乎能够探测Linux系统中所有现有的硬件,并显示每个硬件设备的详细信息。
运行以下命令,使用“hwinfo”工具获取Linux系统中的磁盘分区列表:
$ hwinfo --block --short
输出示例
disk: /dev/sda VBOX HARDDISKpartition: /dev/sda1 Partition /dev/sda2 Partitioncdrom: /dev/sr0 VBOX CD-ROM
使用hwinfo获取磁盘分区信息
这里使用的--short选项可以精确地显示磁盘名、分区名和CD ROM,而不显示其它冗余信息。
如果您想显示分区的完整信息,只需删除--short选项。
7. 使用inxi列出Linux分区的详细信息Inxi是一个命令行系统信息工具。这个脚本是专门为控制台和IRC构建的。它还同时被用作论坛技术支持的调试工具,快速确定用户的系统配置和硬件。
使用inxi列出分区详细信息,使用-P参数:
$ inxi -P
输出示例
Partition: ID-1: / size: 19.56 GiB used: 5.72 GiB (29.3%) fs: ext4 dev: /dev/sda2
如果你想显示完整的分区信息,使用-p(小写字母):
$ inxi -p
输出示例
Partition: ID-1: / size: 19.56 GiB used: 5.72 GiB (29.3%) fs: ext4 dev: /dev/sda2 ID-2: /snap/core18/1705 raw size: 54.9 MiB size: <superuser/root required> used: <superuser/root required> fs: squashfs dev: /dev/loop0 ID-3: /snap/core18/1754 raw size: 54.9 MiB size: <superuser/root required> used: <superuser/root required> fs: squashfs dev: /dev/loop1 ID-4: /snap/lxd/15223 raw size: 69.3 MiB size: <superuser/root required> used: <superuser/root required> fs: squashfs dev: /dev/loop2 ID-5: /snap/lxd/15913 raw size: 71.2 MiB size: <superuser/root required> used: <superuser/root required> fs: squashfs dev: /dev/loop3 ID-6: /snap/snapd/7264 raw size: 27.1 MiB size: <superuser/root required> used: <superuser/root required> fs: squashfs dev: /dev/loop5 ID-7: /snap/snapd/8140 raw size: 29.8 MiB size: <superuser/root required> used: <superuser/root required> fs: squashfs dev: /dev/loop4
使用Inxi显示Linux分区信息
8. 通过探测proc文件系统手动列出所有磁盘分区Proc Filesystem(简称procfs)是一个由Linux内核维护的虚拟文件系统。它有时也被称为进程信息伪文件系统。它不包含“真正的”文件,却存储了系统的运行时信息,如系统内存,设备,硬件配置等。在Linux中,所有这些信息都可以通过一个名为/proc的特殊目录获取。
磁盘和分区的详细信息可以在/proc/partitions文件中找到。因此,我们可以通过cat命令查看该文件的内容来列出所有磁盘分区:
$ cat /proc/partitions
输出示例
major minor #blocks name 7 0 56264 loop0 7 1 56268 loop1 7 2 71008 loop2 7 3 72952 loop3 7 4 30540 loop4 7 5 27740 loop5 11 0 1048575 sr0 8 0 20971520 sda 8 1 1024 sda1 8 2 20968448 sda2
通过proc文件系统查看Linux中的分区信息
9. 使用parted查看Linux操作系统下的磁盘分区Parted是一个命令行程序,被用来在Linux和类unix系统中操作磁盘分区。它支持多种分区表格式,包括MS-DOS和GPT。Parted专门用于在大于2TB的磁盘上创建和管理分区。
要查看Linux下的磁盘分区,可以使用带-l参数的parted命令:
$ sudo parted -l
输出示例
Model: ATA VBOX HARDDISK (scsi)Disk /dev/sda: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 21.5GB 21.5GB ext4
使用parted查看Linux分区
前面提到的所有工具都是基于命令行的。如果您是一个不太熟悉Terminal的新手,您可以使用以下两个图形工具查看Linux中的分区信息。
10. Linux下使用GParted查看磁盘分区详细信息GNOME Partition Editor(简称GParted)是parted 命令行工具的图形前端。使用GParted,您可以通过一个简单易用的图形界面创建和管理磁盘分区。
GParted不是默认安装的,但是它可以在几个Linux发行版的默认存储库中使用。因此,您可以使用发行版的默认包管理器安装GParted。例如,Gpated可以安装在Debian, Ubuntu和其他基于deb的系统上,如下所示:
$ sudo apt install gparted
要查看您的磁盘分区表,只需从Dash中打开GParted程序。
使用GParted查看分区信息
重要提示: 除非你知道你在做什么,否则不要改变任何东西。
11. 使用GNOME Disks查看磁盘分区GNOME Disks是一个图形实用程序,被用来在Linux下查看、修改和配置磁盘和存储介质。它预先安装在具有GNOME桌面环境的Linux发行版中。
打开GNOME磁盘实用程序,找到硬盘上所有可用的分区。
使用GNOME Disks查看磁盘分区
以上便是本文所总结的查看Linux磁盘分区的几种方法。事实上,还有许多其他工具可用来查找磁盘中的分区。我想我已经讲得够多了。如果你认为我遗漏了任何重要工具,请在下面的评论部分留言。
往期文章本文译自: How To List Disk Partitions In Linux
作者: Sk
译者: 生材有道
校对: 开源科学计算
原文及本文遵循: [CC BY-NC 4.0协议]
Linux下无法挂载exfat格式的分区
如何在Linux和Unix上使用Duf查看磁盘使用情况
Linux下常用的图形应用下载工具
解决Linux下无线网卡驱动问题
Linux下挂载使用Windows的NTFS分区
使用inxi来获得Linux系统详细信息
Linux下使用redshift来启用护眼模式
Linux中那些我们赖以为生的Bash别名
在Linux中使用Bashtop与Bpytop监管系统资源
DuMux: 基于Dune的多孔介质流体输运研究工具
喜欢使用Linux办公、学习、hack的朋友们可以点击关注小编,小编将竭力提供更多内容给大家交流~
电脑