Linux物理存储结构以及磁盘划分

在上一篇讲解mount命令的时候,有提到过挂载光驱或U盘,那么我们如何知道光驱就是在/dev/cdrom呢?在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev设备管理器会自动把硬件名称规范起来,并且一直管理/dev目录下的设备文件。Linux系统中常见的硬件设备的文件名称如下表:

设备名称 文件名称
SCSI/SATA/U盘 /dev/sd[a-p]
软盘驱动器 /dev/fd[0-7]
打印机 //dev/lp[0-2] (25 针打印机);/dev/usb/lp[0-15] (USB 界面)
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0或/dev/tape
IDE设备 /dev/hd[a-d]

由于 IDE 界面的磁盘驱动器几乎已经被淘汰,太少见了!因此现在连 IDE 界面的磁盘文件名也都被仿真成 /dev/sd[a-p] 了。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘。

我们拿一个设备名称分析一下/dev/sda5:

  • \dev:硬件设备文件所在目录
  • sd:表示是存储设备,SCSI/SATA/U盘
  • a:硬盘的顺序号,表示系统中同类接口中第一个被识别到的设备
  • 5:表示这个设备是一个逻辑分区,主分区或扩展分区的编号从1开始,到4结束;逻辑分区从编号5开始。

一、在虚拟机中添加新的硬盘设备

首先我们需要关闭我们的系统,在虚拟的控制界面,点击设置:
image

添加一个存储器,这里我们选 创建新的虚拟机盘
image

虚拟硬盘设置接着进入硬盘向导界面,这里有很多类型的硬盘。这里我们用默认的vdi即可
image

硬盘大小这里有2种类型,固定大小就是分配之后就占用这么大。动态就是用了才占用这么多空间,这个在第一章讲解环境安装的时候有说过,这个看个人的习惯了,这里我选择固定分配
image

确认设置设置好大小和路径之后,点击确定。

在虚拟机中模拟添加了硬盘设备后就应该能看到抽象成的硬盘设备文件了。按照前文讲解的udev服务命名规则,第二个被识别的SCSI设备应该会被保存为/dev/sdb,这个就是硬盘设备文件了,但在开始使用该硬盘之前还需要进行分区操作。

二、fdisk命令

我们在安装操作系统的过程中已经对系统硬盘进行了分区,但如果新添加了一块硬盘,想要正常使用,该如何操作呢?在 Linux 中有专门的分区命令 fdiskparted。其中 fdisk 命令较为常用,但不支持大于 2TB 的分区;如果需要支持大于 2TB 的分区,则需要使用 parted 命令。 fdisk命令中的参数以及作用如下表:

参数 作用
-m 查看全部可用的参数
-n 添加新的分区
-d 删除某个分区信息
-l 列出所有可用的分区类型
-t 改变某个分区的类型
-p 查看分区表信息
-w 保存并退出
-q 不保存直接退出

$ fdisk -l

image

使用 “fdisk -l” 查看分区信息,能够看到我们添加的两块硬盘(/dev/sda 和 /dev/sdb)的信息。其上半部分态是硬盘的整体状态,/dev/sda 硬盘的总大小是 20 GB,/dev/sdb的硬盘总大小是10GB。

信息的下半部分是分区的信息,共 7 列,含义如下:

  • Device:分区的设备文件名。
  • Boot:是否为启动引导分区,在这里 /dev/sda1 为启动引导分区。
  • Start:起始柱面,代表分区从哪里开始。
  • End:终止柱面,代表分区到哪里结束。
  • Blocks:分区的大小,单位是 KB。
  • id:分区内文件系统的 ID。在 fdisk 命令中,可以 使用 “i” 查看。
  • System:分区内安装的系统是什么。

我们以硬盘 /dev/sdb 为例来做练习,命令如下:

fdisk /dev/sdb

image

交互界面的等待输入指令的位置,输入 m 得到帮助,这里我们输入m来看下帮助信息:

image

命令 说 明
a 设置可引导标记
b 编辑 bsd 磁盘标签
c 设置 DOS 操作系统兼容标记
d 删除一个分区
1 显示已知的文件系统类型
m 显示帮助菜单
n 新建分区
P 显示分区列表
q 不保存退出
s 新建空白 SUN 磁盘标签
t 改变一个分区的系统类型
w 保存退出

这里我们输入参数n尝试添加新的分区。系统会要求您是选择继续输入参数p来创建主分区,还是输入参数e来创建扩展分区。这里输入参数p来创建一个主分区:

image

在确认创建一个主分区后,系统要求您先输入主分区的编号。在前面提到,主分区的编号范围是1~4,因此这里输入默认的1就可以了。接下来系统会提示定义起始的扇区位置,这里敲击回车键保留默认设置即可,系统会自动计算出最靠前的空闲扇区的位置。最后,系统会要求定义分区的结束扇区位置,这其实就是要去定义整个分区的大小是多少。我们不用去计算扇区的个数,只需要输入+3G即可创建出一个容量为3GB的硬盘分区。

image

上述几步执行完成后,Linux系统会自动把这个硬盘主分区抽象成/dev/sdb1设备文件。我们可以使用file命令查看该文件的属性。

$ file /dev/sdb1

image

三、格式化分区以及挂载分区

如果硬件存储设备没有进行格式化,则Linux系统无法得知怎么在其上写入数据。因此,在对存储设备进行分区后还需要进行格式化操作。在Linux系统中用于格式化操作的命令是mkfs。

$mkfs /dev/sdb1

终于完成了存储设备的分区和格式化操作,接下来就是要来挂载并使用存储设备了。与之相关的步骤也非常简单:首先是创建一个用于挂载设备的挂载点目录;然后使用mount命令将存储设备与挂载点进行关联;最后使用df -h命令来查看挂载状态和硬盘使用量信息。

image

这里我们就完成了硬盘的添加、格式化以及挂载。

image

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!