Linux 磁盘分区详解

Linux 系统中所有的硬件设备都是用文件的形式来表示和使用的,也就是说,如果你想使用某个硬件设备首先你就需要将其挂载到某个目录下面,通过对这个目录的操作来操作设备;如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录

磁盘也是一样的,磁盘的文件是存放在/dev目录下,磁盘设备文件的命名规则为:

主设备号+次设备号+磁盘分区号

常见的主设备号有:sd,hd;它们是代表的不同的磁盘类型:sd代表的IDE硬盘,hd代表的是SCSI硬盘

次设备号就是同一类型设备的次序,用[a-z]来表示,/dev/sda表示第一块IDE类型的磁盘,/dev/sdb表示第二块IDE类型的磁盘

磁盘分区编号,每一块磁盘都会被划分为多个磁盘分区(这个下面会介绍),每一个分区都会有一个编号,比如:/dev/sda1表示这是该磁盘的第一个分区,以此类推

磁盘分区

在 Linux 中,每一个硬盘设备都只能划分四个主分区;若是划分了一个扩展分区那最多可以划分三个主分区;可以表示为:

P+P+P+P 或者 P+P+P+E

主分区加扩展分区最多只有四个;可以全部划分为主分区,也可以之划分一个主分区;但是扩展分区最多只有一个;扩展分区是不能直接使用的,还有进一步划分为逻辑分区才能使用;一个扩展分区可以划分为多个逻辑分区;

主分区的分区编号是:1,2,3,4;从扩展分区划分出来的逻辑分区的编号是从 5开始,以次累加

为什么最多只能划分四个主分区呢

这跟系统启动有关系;当你启动电脑时,首先就会加载 BIOS 信息,这里面包含了 Cpu和其他硬件设备的信息;找到它计算机就知道怎么启动了

接下来,它会去找 MBR(Master Boot Record),也就是主引导记录;为了方便BIOS的查找,所以就会把它放在磁盘上第0磁道上的第一个扇区中,磁盘中每个扇区有 512字节;虽然只有这么大一点,但是要存三部分信息:

  • MBR 占 446 字节
  • 磁盘分区表占 64字节
  • 结束标识符占两个字节

磁盘分区表总共只有 64 字节,而每个分区信息占 16 个字节,所以就只能有四个主分区了

主分区和扩展分区有什么区别吗

这应该是历史遗留的问题了,一开始只有四个分区,后来发现四个分区不够用,就引入了扩展分区,而扩展分区是不能直接使用的,它必须再划分为逻辑分区,逻辑分区的数量可以是任意多个。

对用户而言,主分区和逻辑分区使用起来没有任何的区别,同时还能够达到无限分区的目的

为什么要对磁盘进行分区呢

我想很多人都思考过这个问题,我再了解了之后才发现磁盘分区还是有很多的好处的。具体例子:

现在给你一个仓库,你打算存放快递,一开始你一股脑的把所有的快递直接放进去,等到别人来取快递的时候你就发愁了,几十甚至上百个快递得找到啥时候啊

所以你打算开始分区管理,因为你代理了中通,圆通,百世等好几个快递,所以你打算按照不同的快递分为三个货架;

过一段时间发现同一种快递如果量大的时候还是会混乱;因此你又想了个办法就是按照日期给快递编号,然后按照不同的日期将货架分为多层,每一层存放某一天的快递,同时你又找了个表记录了每个分区快递存放的位置,这大大增加了存取的效率

磁盘分区的目的,

  • 将常用的数据挂载在同一分区,可以加快读取的速率
  • 分区之间相互独立,当某一个分区的数据受损时不会影响其他分区
  • 多个分区可以支持安装多个操作系统
  • 每个分区可以是不同的文件系统
那如何进行分区呢

Linux 常见目录:

  • / :作为系统文件系统的根目录 ,所有的挂载点都要直接或间接的挂载在根分区上。
  • /swap :交换分区,作为虚拟内存使用,通常分成内存的两倍。
  • /boot :引导分区,存放引导文件,如Linux内核等。
  • /home:用户主目录,类似于 Windows 下的 Users目录,保存个人设置和信息
  • /tmp :用来存放不同程序执行时产生的临时文件,系统重启时不会保存
  • /usr :储存所安装的程序和系统的配置等文件,用户的很多应用程序和文件都存放在这个目录下。
  • /root :如果你是以超级用户的身份登录的,这个就是超级用户的主目录。
  • /sbin :这个目录用来存放系统管理员的系统管理程序。
  • /etc :存放了系统管理时要用到的各个配置文件和子目录。
  • /dev :包含了所有 Linux系统中使用的外部设备。但是这里并不是放外部设备的驱动程序。

一般要是新手,可以只建立两个分区:

  • /swap交换分区:一般设置为内存的两倍,设置大了也没用
  • / 根分区:剩下容量的分给根分区就可以了

这种分区方式比较简单,如果只是测试可以用这种;要是想当成一个常用的系统,就需要更细一点划分了,常用的分区方案如下(假如有磁盘有100G):

  • / 根分区: 20G
  • /boot 启动分区: 200M
  • /swap 交换分区:一般设置内存的两倍
  • /home分区:剩下的全部放在该分区

你可能感兴趣的:(Linux 磁盘分区详解)