# 磁盘与分区

我们回忆一下，在安装windows操作系统的时候，一般的流程是：

* 1、在磁盘（就是硬盘）上创建一个主分区
* 2、剩下的空间用来创建一个扩展分区
* 3、在扩展分区中再创建若干个逻辑分区
* 4、格式化主分区及逻辑分区
* 5、设置主分区为活动分区
* 6、在主分区上安装操作系统

我们需要注意的是，一个硬盘最少要有一个主分区，最多四个主分区；最多一个扩展分区；主分区与扩展分区之和不能超过四个。扩展分区不能直接格式化，必须在扩展分区中创建逻辑分区，一个扩展分区可以创建若干个逻辑分区。主分区和逻辑分区可以直接格式化。操作系统只能安装在主分区中，不能安装在逻辑分区中。

比如我们安装windows操作系统，一般创建一个主分区，命名为C盘。其余的空间都来创建一个扩展分区，然后再在扩展分区中创建两个逻辑分区，命名为D盘与E盘。

当然，我们有时需要在一块硬盘上同时装windows与linux双系统。此时，我们一般创建两个主分区，分别用来装windows与linux；其余的空间我们用来创建一个扩展分区，然后再创建逻辑分区。由于有两个操作系统，如何指定启动哪一个操作系统呢？此时，活动分区就出来了。我们可以在两个主分区中指定其中一个为活动分区（且必须指定一个），那么启动的时候，就是从拉起活动分区中的操作系统。

接下来，我们从linux操作系统的视角下，来看一下磁盘与分区是什么样的。

首先我们查看一下所有的硬盘以及硬盘的分区情况。可以看出，系统中有两块硬盘`sda`与`sdb`。硬盘`sda`有一个分区`sda1`，大小为50G，且已经挂载到了目录`/`下。硬盘`sdb`还没有进行分区。

```
[root@localhost ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    1   837G  0 disk 
└─sda1   8:1    1    50G  0 part /
sdb      8:16   1 223.4G  0 disk
```

我们用`fdsik`命令来查看一下磁盘及分区情况，如下

```
[root@localhost ~]# fdisk -l

Disk /dev/sda: 898.7 GB, 898708275200 bytes, 1755289600 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
Disk label type: dos
Disk identifier: 0x0009613d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   104859647    52428800   83  Linux

Disk /dev/sdb: 239.9 GB, 239902654464 bytes, 468559872 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
```

我们发现，这两个命令看到的内容有些不一样。首先，硬盘与分区的名字不一样，`lsblk`中硬盘叫`sda`，`fdisk`中叫`/dev/sda`；`lsblk`中分区叫`/dev/sda1`，`fdisk`中分区叫`/dev/sda1`；那到底该怎么叫呢？我们这样理解，`/dev/sda`是全称，`sda`是缩写。第二个不同的地方是，两个命令看到的磁盘大小不一致，为什么呢？我们暂时这样理解：`fdisk`看到的是磁盘的实际大小，`lsblk`看到的是磁盘的可用大小；由于系统会占用磁盘一定的空间，所以可用大小与实际大小不一致。

通过这两个命令的输出可以判断`/dev/sda1`是主分区还是扩展分区或者是逻辑分区吗？其实`fdisk`命令的输出是可以的判断，不过这里先不讲，下一节有对比的时候再讲。

## Reference

\[1] <http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/03/2997098.html>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pshizhsysu.gitbook.io/linux/ci-pan-yu-fen-qu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
