linux 磁盘系统,系统(磁盘)分区

[TOC]

>[success] # 系统(磁盘)分区

**系统(磁盘)分区**是使用**分区编辑器(partition editor)**在**磁盘**上划分几个**逻辑部分**。**碟片**一旦划分成**数个分区(Partition)**,**不同类的目录与文件可以储存进不同的分区**,**跟电脑的硬盘分区一样**。

**大白话理解**:假如我有一个柜子(**磁盘**),我平时会有很多的衣服和裤子(**文件**)放在里面,但是有一天我想找一个裤子(**文件**),我要翻遍整个柜子(**磁盘**)去找,很麻烦。

![](https://img.kancloud.cn/e5/3a/e53a3b82264368745c5d4b9abf82a4b3_247x321.png)

如果给柜子做(**分区**)出来一个隔板,衣服裤子(文件分类放不同的分区)分开放,这样就会方便很多很好找。

![](https://img.kancloud.cn/da/bc/dabcd7745de541de0bfaf639ae460230_300x396.png)

>[success] ## 分区类型

| 主分区 | 扩展分区 | 逻辑分区 |

| --- | --- | --- |

| 1. **一块硬盘最多有4个主分区**,可以**写入数据**。 | 1. **最多只能有1个**
2. **主分区**加**扩展分区**最多有**4**个(**2**种类型的分区加在一起**最多4个**。
3. **不能写入数据,不能格式化**,只能包含**逻辑分区**。| 1. **逻辑分区**,可以**写入数据**和**格式化**。|

**大白话理解**:假如我现在有4个柜子,但是有一天,女朋友来家里住,但是没有位置放她的衣服,这时候就需要用一个柜子来腾出来个柜子隔出来一点空间,女朋友没来之前柜子是这样:

![](https://img.kancloud.cn/f8/80/f880558a6fe649aba91359321348d390_679x446.png)

女朋友来了给她腾出空间后的柜子是下面这样,如下图:下面的**1、2、3**柜子就是**主分区**可以**写入数据**,**柜子4**是**扩展分区**,他里面**不可以放入数据,也不能格式化**,柜子**5、6**是**逻辑分区**,**逻辑分区**可以**写入数据**跟**格式化**

![](https://img.kancloud.cn/d8/6a/d86a8d022b23a2e39d5aed821e994f93_675x448.png)

>[success] ## 格式化

**格式化**(**高级格式化**)又称**逻辑格式化**,它是指根据用户选定的**文件系统**(**FAT16、FAT32、NTFS、EXT2、EXT3、EXT4**),在磁盘的**特定区域写入特定数据**,**在分区中划出一片用于存放文件分配表等用于文件管理的磁盘空间**。

**硬盘**必须经过**格式化**后才可以**写入数据**,**格式化的目的**:就是为了在硬盘中**写入文件系统**。

**对应系统(Windows、Linux**)可以识别的**文件系统**:

| Windows | Linux |

| --- | --- |

| | **EXT:单文件最大2GB** |

| **FAT16** | **EXT2:单文件最大2TB** |

| **FAT32** | **EXT3:单文件最大16TB**|

| **NTFS**| **EXT4:单文件最大32TB**** |

| | **XFS:单文件最大8EB** |

**大白话理解**:难道有了柜子就可以直接放入衣服了吗,其实生活中不是这个样子的,我们还要**给柜子打入相应的隔断(格式化就是给柜子打入隔断)**,只是这个**隔断必须遵守一定的规则**,在**Linux**中**格式化成EXT4文件系统时**,**会把柜子内部用隔断隔成一个一个同等大小的小格子,每个格子默认标准大小是4KB**,假设我有一个数据是**10kb**,会向下图一样用**3个格子(12kb)**来放这个数据(10kb),当然他剩余的**2kb多余空间**是**不能被其他数据占用**的。而且这个数据**不会向下图那样有顺序的置放,而是打乱位置的置放**,数据变成了**碎片化数据**,而**Windows系统**有**专门的软件**会来对这个**碎片化数据**做一个顺序处理,为了更方便的**读取数据**,**Linux**系统去读取这些数据时候是根据**i节点号(iNode)**去这些**碎片化数据**中查找对应符合条件的**数据,就是根据一个标识去查找这些碎片化数据**。

![](https://img.kancloud.cn/88/ce/88ce5afd2a9a918bc8da024737741ab5_744x477.png)

>[success] ## 硬件设备文件名

**Windows系统和Linux系统安装流程如下**:

1. **Windows系统安装流程**

1.1 先给硬盘**分区**、**分配盘符( C D E 等盘符)**

1.2 格式化硬盘

1.3 安装操作系统

2. **Linux系统安装流程**

2.1 给**硬盘分区(大硬盘、小硬盘)**

2.2 格式化硬盘

2.3 **Linux**中**分配盘符**时候,**要给每一个(盘符)分区起一个设备文件名(类似Windows的C D E盘的名字)才可以分配盘符**

3. **Linux**如果想**分配盘符**,就需要到某个**硬盘**下,给某个**硬盘**的**盘符起名字**,才可以进行**分区**,下面的**Linux指令**是如何进入到某个**硬件设备**下

| 硬件 | 设备文件名 |

| --- | --- |

| **IDE硬盘** | **/dev/hd/[a-d]** |

| **SCSI/SATA/USB硬盘** | **/dev/sd/[a-p]** |

| **光驱** | **/dev/cdrom** 或 **/dev/sr0** |

| **软盘** | **/dev/fd[0-1]** |

| **打印机(25针)** | **/dev/lp[0-2]** |

| **打印机(USB)** | **/dev/usb/lp[0-15]** |

| **鼠标** | **/dev/mouse** |

如果我有**2**个**IDE硬盘(普通硬盘)**,我想进入到第**2**个**硬盘**中就要向下面这样:

~~~

/dev/hdb

~~~

' / ' 斜杠代表**Linux**的**根目录**,意思就是说,从**Linux**的**根目录**中的**dev**文件夹中找到**IDE硬盘**的第**2**个**硬盘**

>[success] ### 分区(盘符)设备文件名

上面说到了如何通过**Linux指令**找到某个**硬盘**,接下来讲如何通过指令找到某个**硬盘**下的某个**分区(盘符)**

| 设备文件名 |

| --- |

| /dev/hdb1(IDE硬盘接口) |

| /dev/sdb1(SCSI硬盘接口、SATA硬盘接口) |

| PCI-E接口 |

上面的 **/dev/hdb1**,意思就是**IDE硬盘**的第**2**个硬盘,**1**代表是这个**硬盘**中的第**1**个**分区**,**分区**的**文件名**就是在**硬盘**的**文件名**后加入**数字**。

上面表格中所提到的硬盘接口又是什么?

1. **IDE硬盘接口**

最高传输速度**每秒钟133MB**

![](https://img.kancloud.cn/01/f9/01f918789177a4d03f40bbf1302674fa_542x333.png)

2. **SCSI硬盘接口**

理论传输速递**每秒钟200MB**,**这种硬盘主要用在服务器上,原因是因为价格昂贵**

![](https://img.kancloud.cn/55/01/5501853189e613accddba0139ae979ee_559x346.png)

3. **SATA硬盘接口(串行接口简称串口)**

上面说的**IDE硬盘**和**SCSI硬盘**,已经**基本被淘汰**了,现在基本上都是用**SATA硬盘**,而且现在出到了**SATA3.0**,**SATA3.0理论每秒钟可以达到500MB**

![](https://img.kancloud.cn/b2/02/b2022478bf7dedda3bb2e2d296c564ce_556x343.png)

4. **PCI-E接口**

**PCI-E接口**的**固态硬盘**和**SATA接口**的区别是**通信总线**不同;**最大传输速度**方面,前者可以达到**16Gbps**,实际传输速度约为**1560MBps**,后者只有**8Gbps**,实际传输速度约为**560MBps**;此外,**PCI-E接口总线结构简单、成本低、设计简单,SATA具备较强的纠错能力**。

![](https://img.kancloud.cn/5b/15/5b15d35b5104e372f3fb8bc7f66f92f8_659x342.png)

5.分区表示

下图就是代表着**SCSI/SATA/USB硬盘**的分区,**sda1**到**sda3**是**主分区**,**sda4**是**扩展分区**,**sda5**和**sda6**是**逻辑分区**

![](https://img.kancloud.cn/97/25/9725ac1f7baa3699e1e2f54db0e87536_673x441.png)

接下来**换种分法**,下面的sda硬盘的分区看着很正常,但是**sdb硬盘的分区号2(扩展分区)里的逻辑分区为什么是从5 - 7 的排序? 而不是从3 - 5的排序, 这是因为 1 2 3 4 这4个分区号只能给主分区或者扩展分区使用,就算我的硬盘中只有2个主分区,逻辑分区也不能占用 1 2 3 4这四个分区号,也就是说不管你如何分区,分区号5 就代表第一个逻辑分区**

![](https://img.kancloud.cn/38/64/3864d91bc6af3518efd7ec3a22aeccb3_818x785.png)

>[success] ## 挂载(分配盘符)

>[success] ### 先分区

| 必须分区 | 推荐分区 |

| --- | --- |

| /(根分区) | /boot(启动分区,200MB) |

| swap分区(交换分区,内存2倍,不超过2GB) | |

1. **/跟分区**

**根分区包含Linux系统所有的目录**

2. **swap分区**

**swap分区**在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到**swap分区**中,等到那些程序要运行时,再从**swap分区**中恢复保存的数据到内存中。

3. **/boot分区**

**/boot分区**就是**操作系统**的内核及在引导过程(启动)中使用的文件,一般是几年前的版本要求划分的一个区,大小为**100MB**左右,但现在的新版本都不需要对这个分区进行单独划分,也就是说你完全可以不分 **/boot**。

安装**Linux**只要求两个**基本分区**,即**根分区及交换分区**,如果你的磁盘空间足够大,可以多划分空间给根分区,你也可以把常用的目录新建到桌面,如下载的软件包,放到桌面不影响你进入**Linux系统**的速度,当然这要求你有**足够大的根分区**

>[success] ### 再挂载

**挂载的理解**:

如果说**Linux**的整个**根目录**就是一本书的目录,记载着**根目录**下每一个**文件夹/文件所在的页码**。当你按照这个目录,翻到某个文件夹(**例如/etc**)所在的那一页的时候,你会发现这一页上记载的还是一个**目录**,上面写着 **/etc** 下面有哪些**文件夹/文件**,以及每个**文件夹/文件**所在的页码;如果你翻到 **/etc/shadow** 这个文件所在的页码,你可以看到这一页上面写的就是这个**文件**的**内容**。

如果某个**文件夹**是**挂载**了某个**分区**,例如 **/home挂载** 的是 **/dev/sdb2**,那么当你翻到 **/home**这个文件夹的时候,你会看到上面写着"本节内容参看另外一本书,书名叫 **/dev/sdb2**",然后你就高高兴兴的去找这本书去了。如果这个时候你把 **/home**卸载了,那么你会看到这一行字消失了,只剩一张白纸,上面什么都没有,如下图:

![](https://img.kancloud.cn/c4/17/c41768aca4efe983c44611bfb5f7fd46_474x590.png)

>[warning] ### 关于挂载的作用的解释

1. **Windows**下,**mount(挂载)**,就是给磁盘分区提供一个**盘符(C, D, E, ...)**。比如插入**U盘**后系统自动分配给了它**I:盘符**其实就是**挂载**,退优盘的时候进行安全弹出,其实就是**卸载unmount**。

2. **Linux**下,不像**Windows**可以有**C,D,E,** 多个目录,**Linux**只有一个**根目录/**。在装系统时,我们分配给**Linux**的所有**分区**都在**根目录/** 下的某个位置,比如 **/home** 等等。

3. **提问者**插入了**新硬盘**,分了**新磁盘区sdb1**。它现在还不属于**根目录/**。

4. **提问者**使用了 **mount /dev/sdb1 ~/Share/** ,**把新硬盘的区sdb1挂载到工作目录的~/Share/文件夹下**,之后访问这个**~/Share/文件夹**就相**当于访问这个硬盘的sdb1分区**了。对**/Share/**的任何操作,都相当于对 **sdb1** 里文件的操作。

5. 所以**Linux**下,**mount(挂载)** 的作用,就是**将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备**。

6. **Linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。**

7. **问**:我们不是有 **/dev/sdb1** 吗,直接对它操作不就行了?这不是它的**目录**吗?

**答**:这不是它的**目录**。**虽然/dev是个目录,但/dev/sdb1不是目录**。可以发现**ls /dev/sdb1无法执行。/dev/sdb1,是一个类似指针的东西,指向这个分区的原始数据块。mount前,系统并不知道这个数据块哪部分数据代表文件,如何对它们操作。**

8. 插入**CD**,系统其实自动执行了 **mount /dev/cdrom /media/cdrom**。所以可以直接在**/media/cdrom**中对CD中的内容进行管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值