Linux磁盘分区以及目录挂载详解

1、背景
linux

    一直以来,对于磁盘的分区以及Linux目录挂载的概念都不是很清晰,如今趁着春暖花开周末在家没事就研究了下它们,如今来分享个人理解。windows

2、概念详解服务器

  1.磁盘分区网络

      磁盘分区是把物理的磁盘空间按照本身的要求分红N个不一样大小的区域,以便OS更好更高效的进行文件存储管理。像咱们常用的Windows系统中的C、D、E、F盘...等盘符实际就是一个个的磁盘分区。分区与操做系统没有任何关系,由于咱们对磁盘分区能够在安装操做系统以前进行。ide

      磁盘分区类型:主分区、扩展分区(N个逻辑分区的集合)。spa

      硬盘组成:硬盘主引导扇区+主分区+扩展分区操作系统

  2.硬盘主要组成部分:磁头、磁盘面、磁道、扇区、柱面命令行

     image.png

  3. 硬盘主引导扇区指针

    以机械硬盘为例,其中硬盘主引导扇区位于硬盘的 0磁头0柱面1扇区(也就是所谓的Boot Sector),它又分为:硬盘主引导记录(MBR) + 硬盘分区表(DPT),共512个字节,其中MBR446字节、分区表64字节以及2字节的结束标志。日志

  4. 硬盘主引导记录(MBR)

     位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操做系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操做系统(DOS)在对硬盘进行初始化时产生的。

  5.操做系统启动过程简述

    电脑开机时,操做系统经过BIOS(BIOS实际是一个基础输入输出系统,主要用于和计算机硬件打交道)程序把Boot Sector读入内存,而后执行其中的MBR,这个时候BIOS是把启动交给MBR控制, MBR在4个分区表中搜索标致为活动的分区,找到之后把活动分区的第一扇区读入内存,而后开始执行它,以此来运行特定系统的启动程序(LILO、GRUB、NT Loader),此时是操做系统的引导程序来控制系统的启动。接着操做系统进行一系列的初始化工做,最后把系统交给系统内核进行管理,就完成了开机启动的过程。

  6.主分区、扩展分区、逻辑分区 

     操做系统必须安装在主分区上,由于MBR中记录着主分区信息,系统启动的时候会到主分区来查找操做系统引导文件,不然系统将没法启动。由于磁盘分区表一共64个字节,而且每一个主分区的分区信息占16个字节,因此一个磁盘最多能有4个主分区。那么问题来了,咱们想要更多的分区怎么办呢?这个时候扩展分区的做用就来了,把最后一个主分区做为扩展分区,再在这个分区下分割出多个逻辑分区,扩展分区其实是一个相似容器的东西。扩展分区并非一个真实存在的分区,它只是内存管理链表中的一个指针,指示出哪一块区域是扩展分区。又由于这些扩展分区内的分区实际上都是在一个分区内,只是逻辑上分开,因此叫作逻辑分区。但这对于用户来讲看起来系统中有不少分区。

  7.linux磁盘命名方式

     IDE硬盘--->hda、hdb、hdc、hdd 

     SATA硬盘--->sda、sdb、sdc、sdd

  8. linux分区命名方式

     IDE硬盘--->hda(1-n)...hdb(1-n)...hdd(1-n)

     SATA硬盘--->sda(1-n)...sdb(1-n)...sdd(1-n)

     注:其中最后一位数字,主分区是1到4,而逻辑分区是5以上的数字。

  9.Linux文件系统结构

     Linux和Windows系统的文件系统不一样,它是树形结构的文件系统,其中/是系统的根目录,其余全部目录都是它的子节点,通常该目录下挂载的是一个主分区。并且不管什么设备对于linux系统来讲都是一个文件 。并且在linux系统中,咱们看不到盘符的概念,就连分区的概念都被淡化了,分区在linux系统中也和其余设备同样被当成了文件对待。那么也就是说,咱们要想对一个磁盘分区进行操做,必须经过文件进行。

  10.linux挂载

     挂载就是把文件目录和分区链接起来,与windows下盘符和分区进行映射的关系同样,不一样的是windows是把分区映射到一个盘符,而linux是把一个分区映射到一个目录。挂载完成之后,咱们在linux系统中对挂载的目录的任何操做都是对对应的磁盘分区的操做,例如文件保存固然也是保存到对应的磁盘分区上。 其中/根目录必须挂载在主分区上,不然启动系统的时候会因为找不到启动文件而启动失败。

  11.相关经常使用命令

    df -Th 查看当前系统的分区状况

    fdisk -l 查看当前系统分区信息详情

    mount 挂载分区

    unmount 卸载分区

  12.Linux分区挂载点介绍

  • /     根分区,全部未指定挂载点的目录都会放到这个挂载点下

  • /boot  启动分区,通常设置100M-200M,boot目录包含了操做系统的内核和在启动系统过程当中所要用到的文件

  • /home 用户目录,通常每一个用户100M左右,特殊用途,好比放大文件也可再加上G。分区大小取决于用户多少。对于多用户使用的电脑,建议把/home独立出来,并且还能够很好地控制普通用户权限等,好比对用户或者用户组实行磁盘配额限制、用户权限访问等.

  • /tmp   临时文件目录,通常设置1-5G,方便加载ISO镜像文件使用,对于多用户系统或者网络服务器来也有独立挂载的必要。临时文件目录,也是最常出现问题的目录之一

  • /usr  系统资源,通常设置要3-15G,大部分的用户安装的软件程序都在这里。就像是Windows目录和Program Files目录。不少Linux家族系统有时还会把/usr/local单独做为挂载点使用

  • /var  可变数据目录,包含系统运行时要改变的数据。一般这些数据所在的目录的大小是要常常变化的,系统日志记录也在/var/log下。通常多用户系统或者网络服务器要创建这个分区,设立这个分区,对系统日志的维护颇有帮助。通常设置2-3G大小,也能够把硬盘余下空间所有分为var.

  • /srv  系统服务目录,用来存放service服务启动所需的文件资料目录,不常改变。

  • /opt  附加应用程序目录,存放可选的安装文件,我的通常把本身下载的软件资料存在里面,好比Office、QQ等等.

  • /swap  交换分区,通常为内存2倍,最大指定2G便可

  • /bin    二进制可执行目录,存放二进制可执行程序,里面的程序能够直接经过命令行调用,而不须要进入程序所在的文件夹

  • /sbin  系统管理员命令存放目录,存放标准系统管理员文件

  • /dev   存放设备文件,驱动文件等

3、总结

     经过以上的描述,咱们就很容的弄明白了磁盘分区以及Linux目录挂载的概念,并且还了解到了一些别的概念好比 硬盘主引导扇区、硬盘主引导记录(MBR)、操做系统启动过程等等,经过这样一点一点的基积累,我相信咱们会离大神愈来愈近的。加油!