Linux系统遵循的一个原则就是”一切操作皆文件”.所以在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件。
常见的硬件设备及其文件名称
| 硬件设备 | 文件名称 |
|---|---|
| IDE设备 | /dev/hd[a-d] |
| SCSI/SATA/U盘 | /dev/sd[a-p] |
| 软驱 | /dev/fd[0-1] |
| 打印机 | /dev/lp[0-15] |
| 光驱 | /dev/cdrom |
| 鼠标 | /dev/mouse |
| 磁带机 | /dev/st0或/dev/ht0 |
现在一般硬件设备都以“/dev/sd”开头。由于一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配)。
而硬盘的分区编号的规则是:
1.主分区或扩展分区的编号从1开始,到4结束。
2.逻辑分区从编号5开始。
下面分析一下”/dev/sda5 “这个设备文件名称都包含了哪些信息?
/dev : 保存了硬件设备文件的目录
sd : 存储设备
a : 系统中同类接口中第一个被识别到的设备
5 : 分区中编号为5的一个逻辑分区
所以,总体而言,“ /dev/sda5 ” 就表示系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件。
在创建磁盘分区时,用户一般会采用使用3个主分区加1个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而满足多分区的需求。
为什么一定是3个主分区呢?因为主分区是不能超过4个的。
然后我们可以通过下面的图例来看一下硬盘分区的规划。
我们在使用Linux的过程中,有时候会遇到需要挂载,我们都知道需要用到mount命令,但是什么是挂载?什么时候需要挂载?挂载:当你需要使用硬盘设备或分区中的数据时候,需要先将其与一个已存在的目录文件进行关联,而此关联的过程就是挂载。根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”。mount命令用于挂载文件系统,格式:mount 文件 挂载目录
eg:1
mount /dev/sdb2 /newfs
挂载点:mount_point,用于作为另一个文件系统的访问入口。作为挂载点应该具备以下条件:
1.事先存在
2.应该使用未被或不会被其它进程使用到的目录
3.挂载点下原有的文件将会被隐藏
我们可以用fdisk命令来管理硬盘设备。
终端下输入1
2
3
4
5
6
7
8
9
10
11
12lengyue@ubuntu:~$ sudo fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x25f0794b
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sda1 * 2048 39845887 39843840 19G 83 Linux
/dev/sda2 39847934 41940991 2093058 1022M 5 扩展
/dev/sda5 39847936 41940991 2093056 1022M 82 Linux 交换 / Solaris
当然此命令也是需要有管理员权限才能使用的。
fdisk命令的参数:
先使用df -h选项来查看一下挂载状态和硬盘使用量信息。
我们使用fdisk命令来管理/dev/sda硬盘设备。
下面通过虚拟机进行添加硬盘设备模拟,我以个人的Ubuntu16.04(LTS)为例进行操作。
首先关闭虚拟机中的系统,点击”编辑虚拟机设置”。
然后点击”添加”,点击”下一步”。
虚拟磁盘类型选择默认的SCSI(S)类型,然后点击”下一步”。
点击”创建新虚拟磁盘(V)”,然后继续”下一步”。
指定磁盘容量,你可以为其自定义容量。
再次点击”下一步”后,即可看到新添加的硬盘。
依照刚才说过的命名原则,刚才新增加硬盘将会被识别为/dev/sdb
可以查看是否和我说的一样。1
lengyue@ubuntu:~$ ls -l /dev/sdb
然后我们利用fdisk命令来管理硬盘设备,对刚添加的硬盘进行分区。输入参数”p”来查看一下当前硬盘设备内已有的分区信息。1
lengyue@ubuntu:~$ sudo fdisk /dev/sdb

输入参数”n”开始添加新的分区。
接着按照图示信息进行操作即可。
从图中我们可以了解到已经成功创建了一个分区。
然后利用file命令来查看一下该分区的信息。1
lengyue@ubuntu:~$ file /dev/sdb1

这个时候我们需要先格式化硬盘,一块未经使用的硬盘,一定要先格式化,否则Linux系统是不知道怎么在其上写入数据的。
如果你不格式化,在挂载时候你会得到如下的报错信息。1
2
3
4
5
6lengyue@ubuntu:~$ sudo mount /dev/sdb1 /newfs/
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.

当然你需要先安装xfsprogs工具才能对硬盘进行格式化。1
lengyue@ubuntu:~$ sudo apt install xfsprogs

开始格式化硬盘。1
lengyue@ubuntu:~$ sudo mkfs.xfs /dev/sdb1

创建一个挂载点1
lengyue@ubuntu:~$ sudo mkdir /newfs
然后开始进行挂载1
lengyue@ubuntu:~$ sudo mount /dev/sdb2 /newfs
查看一下是否成功挂载。1
lengyue@ubuntu:~$ df -h

看到如图所示的信息,就已经表明你已成功挂载了。
运行上述命令后,即可立即使用已经挂载好的分区,但是系统重启后挂载就会失效,所以我们需要在每次开机后再次挂载一次。但是这样是十分麻烦的。我们可以通过修改配置文件来进行用永久性的挂载,而不必为重启失效而担心。
下面就演示一下如何通过修改1
2```
lengyue@ubuntu:~$ sudo gedit /etc/fstab

接下来,添加交换分区。SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其目的是解决真实物理内存不足的问题。
交换分区的添加过程和和刚才的挂载管理硬件设备的过程是一样的。我只截图,就不给出命令了。
使用mkswap命令对新建的主分区进行格式化操作。1
lengyue@ubuntu:~$ sudo mkswap /dev/sdb2

我们先使用free命令来查看一下目前交换分区的情况。1
lengyue@ubuntu:~$ free -m

然后开始挂载,将刚才创建的SWAP分区挂载到系统中。1
lengyue@ubuntu:~$ sudo swapon /dev/sdb2

为了使新的交换分区设备在重启后依然生效,我们还是可以通过修改 /etc/fstab 配置文件,修改过程和修改方法和刚才的一样,把以下信息复制进最后一行即可,注意上下对齐。1
/dev/sdb2 swap swap defaults 0 0
好了,基本就是这些了,如果哪里不懂,可以联系我讨论。
扫码进群,我等待你的加入
本文作者:冰羽
本文地址: https://bingyublog.com/2018/08/08/Linux的存储结构与磁盘划分/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!