jinhucheung / blog

学习笔记

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linux 学习之磁盘分区

jinhucheung opened this issue · comments

commented

1. Linux与硬件

1.1 各硬件设备在Linux中的文件名

在Linux系统中,每个设备都被当成一个文件来对待。举例说,IDE接口连接的硬盘的文件名即为/dev/hd[a-d],其中,括号内的字母为a-d当中的任意一个。

下面列出几个常见设备与其在Linux当中的文件名,更多Linux内核支持的硬件与文件名,可以参考Linux内核支持硬件列表

设备 Liunx中的文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
U盘 /dev/sda-p
软驱 /dev/fd[0-1]
打印机 25针:/dev/lp[0-2] ; USB:/dev/usb/lp[0-15]
鼠标 USB:/dev/usb/mouse[0-15] ; PS2:/de/pxaux
当前CD ROM/DVD ROM /dev/cdrom
当前鼠标 /dev/mouse
磁带机 IDE:/dev/ht0 ; SCSI:/dev/st0

需要特别留意的是硬盘(IDE,SCSI,USB,SATA都一样),每个磁盘驱动器的磁盘分区不同时,其磁盘文件名还会改变。以SATA/USB接口的磁盘为例,Linux内核会根据检测到磁盘的顺序来决定磁盘的设备文件名。

比如:
如果你的PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有六个SATA的插槽,这两个SATA磁盘分别安插在主板上的SATA1,SATA5插槽上,请问这三个磁盘在Linux中的设备文件名是什么?

  1. SATA1插槽上的文件名是:/dev/sda
  2. SATA5插槽上的文件名是:/dev/sdb
  3. USB磁盘(开机完成后才被系统识别):/dev/sdc
commented

2. 磁盘分区

2.1 磁盘的物理结构

磁盘主要由盘片、机械手臂、磁头与主轴马达所组成。

  • 盘片:数据存储的物理结构,可以理解成光盘,磁盘由多个盘片叠加而成。
  • 磁道:磁盘旋转时,磁头保持不动,在磁盘上划出的圆形轨道。
  • 柱面:不同盘片的面,处于同一半径源的多个磁道组成的一个圆柱面。
  • 扇区:将每个磁道等分为若干个弧段,这些弧段为扇区。每个扇区占512字节。其中磁盘的第一个扇区主要记录了两个重要的信息:
    • 主引导分区(Master Boot Recode,MBR):可以安装引导加载程序的地方,有446字节。
    • 分区表(Partition table):记录整块磁盘的分区状况,有64字节。


2.2 磁盘分区表

所谓“分区”是指对分区表进行设置,在分区表所在的64字节容量中,最多只能容纳4个分区,这4个分区被称为主或扩展分区,每个分区以其的起始、结束的柱面号码为划分,一组的分区柱面号码占16字节,即一个分区信息用16字节表示,所在分区表最多只能容纳4个分区。而分区的最小单位是柱面。总结下:

  • 其实所谓的“”分区”只是针对那个64字节的分区表进行设置
  • 磁盘的默认分区表最多能写入4组分区信息
  • 这4组分区信息称为主或扩展分区
  • 分区的最小单位是柱面

为了记录更多的分区信息,我们可以利用扩展分区来建立逻辑分区,扩展分区的目的是使用额外的扇区来记录分区信息。注意逻辑分区的设备名称号码由5号开始,前面4个号码保留给主分区或扩展分区使用。总结下:

  • 主分区与扩展分区最多可以有4个(磁盘的限制)
  • 扩展分区最多只能有一个(操作系统的限制)
  • 逻辑分区是由扩展分区连续切割出来的分区
  • 能够被格式化后作为数据访问的分区为主分区与逻辑分区,扩展分区无法格式化
  • 逻辑分区的数量依操作系统而不同,Linux下,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)

2.3 开机流程与主引导分区(MBR)

整个开机流程到操作系统之前的动作如下:

  1. BIOS:开机主动执行的固件,会到硬盘中读取第一扇区的MBR。(硬件支持)
  2. MBR:MBR包含引导加载程序。(硬件支持,安装操作系统时,操作系统会修改MBR)
  3. 引导加载程序(Boot loader):一个读取操作系统内核文件来执行的软件。(操作系统在安装时提供)
  4. 内核文件:开始操作系统的功能。

引导加载程序主要任务有以下:

  • 提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能。
  • 载入内核文件:直接指向可开机的程序区段来开始操作系统。
  • 转交其他loader:将引导加载功能转交给其他loader负责。

当你的计算机系统有两个以上的引导加载程序,我们可以使用多重引导。引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区。

举个例子:
假设你的计算机只有一块硬盘,里面分成4个分区,其中第1,2分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是同时识别Windows/Linux操作系统的引导加载程序,那么整个流程如下:


2.4 文件系统与目录树

  • 目录树结构
    Linux所有数据都是以文件形态来呈现的,整个Linux系统重要的地方就是在于目录树结构,所谓目录树结构就是以根目录(表示方法为‘’/‘’)为主,然后向下呈现分支状的目录结构的一种文件结构。整个系统只有一个目录树。
    我们文件数据其实是放置在磁盘分区当中的,现在的问题是如何结合目录树的架构与磁盘内数据,这就是挂载的概念了
  • 文件系统与目录树的关系(挂载)
    挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下。进入点的目录我们称为挂载点。Linux最重要的是根目录,因此根目录一定要挂载到某个分区。
commented

3. 主机硬盘的规划

3.1 基本硬盘分区模式

  • 最简单的分区方法
    仅分出根目录与内存交换空间(Swap),然后再预留一些剩余磁盘以供后续练习之用。
  • 稍微麻烦一点的方式
    • /
    • /usr (程序安装)
    • /home (用户主目录基点)
    • /var (经常变动的数据)
    • Swap

详细请查看Liunx各目录作用