摘要 本文将讨论如何在 Linux 中查看硬盘和硬盘分区。 引言 首先,我们需要弄清楚 Linux 中硬盘和硬盘分区的命名规则。 硬盘命名规则 由于 Linux 中所有的设备都是以文件的形式出现,因此硬盘也不例外,也是用一个文件来表示。 硬盘设备文件名格式一般为 /dev/xxy。前两个字母 xx 标明硬盘类型: sd:表示这个硬盘是采用 SCSI SATA 或 USB 接口的硬盘 hd:表示这是一个采用 IDE 接口的硬盘(目前基本不用了) y 则表明硬盘是用此类接口的第几个硬盘。y 一般是 a-z 之间的英文字符。例如,/dev/shd 表示这是第四个使用 IDE 接口的硬盘。 分区命名规则 接下来,我们介绍 Linux 中硬盘分区的命令规则。分区同样以一个文件的形式出现,硬盘上分区文件的命令规则一般为 /dev/xxyn,比硬盘文件多了一个 n,n 表示分区,主分区或拓展分区用数字 1-4 表示,逻辑分区从5 开始。如 /dev/hda3 表示在第一个 IDE 硬盘上的第三个主分区或拓展分区。 用法 fdisk Linux 中使用 fdisk -l 硬盘名|分区名 命令可以显示或操作磁盘分区表。例如,查看系统中的第一个硬盘:
- root@centos:~# fdisk -l /dev/sda
- Disk /dev/sda:1.84 TiB,2000398934016 字节,3907029168 个扇区
- Disk model: ST2000NX0253
- 单元:扇区 / 1 * 512 = 512 字节
- 扇区大小(逻辑/物理):512 字节 / 4096 字节
- I/O 大小(最小/最佳):4096 字节 / 4096 字节
- 磁盘标签类型:gpt
- 磁盘标识符:27E8F38B-1909-4730-B931-D399FF19A594
- 设备 起点 末尾 扇区 大小 类型
- /dev/sda1 2048 4095 2048 1M BIOS 启动
- /dev/sda2 4096 976895 972800 475M Microsoft 基本数据
- /dev/sda3 976896 3726032895 3725056000 1.8T Linux LVM
输出信息分为两部分。第一部分显示硬盘的基本参数,包括容量、磁头数和扇区数等。第二部分显示硬盘的分区情况。如果硬盘没有分区,这部分是空白;如果已经分区,每行将代表一个分区,各个字段的定义如下: Device:分区名 Boot:是否允许标准 DOS PC 主引导记录引导该分区(该标记对 Linux 的 GRUB 引导装载程序没有意义) Start:分区起始柱面 End:分区结束柱面 Blocks:大小为 1k 的块的数量 Id:分区的预期用途(并不是真实用途,82 表示交互分区,83 表示数据分区) 值得一提的是,目前逐渐成为主流的固态硬盘中,虽然没有盘片、磁头、扇区这些物理零件,但固态硬盘的接口规范、定义功能及使用方法上与普通机械硬盘完全相同。因此,逻辑上固态硬盘也有柱面、扇区,磁头等参数。 上一篇文章介绍了使用 fdisk 命令查看指定硬盘设备或分区的信息。本文将介绍一个新的命令 lsblk,该命令以非常友好的方式列出系统中所有硬盘设备及分区的情况,为我们分区或创建文件系统做好准备。 lsblk 除 fdisk 外,我们更推荐使用 lsblk 命令来查看系统中所有的硬盘情况,lsblk 会显示系统中除了内存虚拟磁盘外的所有可用块设备的信息:
- root@centos:~# lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 1.8T 0 disk
- ├─sda1 8:1 0 1M 0 part
- ├─sda2 8:2 0 475M 0 part
- └─sda3 8:3 0 1.8T 0 part
- ├─centos-root 253:0 0 1.7T 0 lvm
- └─centos-swap 253:1 0 32G 0 lvm
- sdb 8:16 0 931.5G 0 disk
- ├─sdb1 8:17 0 512M 0 part /boot/efi
- └─sdb2 8:18 0 931G 0 part /
- sdc 8:32 0 1.8T 0 disk
- └─sdc1 8:33 0 1.8T 0 part /home1
- sdd 8:48 0 223.6G 0 disk
- └─sdd1 8:49 0 223.6G 0 part
从上述输出信息中,可以直观地了解到目前系统的硬盘分区及挂载情况。你也许可以发现,lsblk 显示的块设备的名字十分特别。事实上,Linux 中的块设备的命名是有一定规则的。 对于 SATA、SCSI 或 USB 接口的硬盘或 U 盘,其命名规则如下: 主设备文件名 次设置文件名(分区) sd[小写字母] 如 sda、sdb 等 sd[小写字母][正整数] 如 sda1、sdc1 等 对于 NVMe(M.2)接口的硬盘,其命名规则如下: 主设备文件名 次设置文件名(分区) nvme[非负整数] 如 nvme0、nvme1 等 sd[非负整数]n[正整数]p[正整数] 如 nvme0n1p1、nvme1n1p3 等 对于 CD 或 DVD (ROM)光驱设备,其命名规则如下: 主设备文件名 次设置文件名(分区) sr[非负整数] 如 sr0、sr1 等 光驱不能分区 特别要注意的是,Linux 中的存储设备的名字并非固定,在热插拔、重启等操作后,存储设备名字中的序号可能会发生改变。如 sda 变成 sdc,这种改变可能会让系统管理员犯一些低级错误,如误删数据,误分区等,因此通过设备文件操作硬盘之前,一定要确认好设备名称。在自动化管理和配置文件中,如开机自动挂载配置文件 /etc/fstab,强烈不建议使用设备文件名来指定存储设备,而是应该使用设备的 UUID。 像这种实际操作的话,还是建议去租一个服务器,为了方便做实验,和当web服务器