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

简介: 一、背景     一直以来,对于磁盘的分区以及Linux目录挂载的概念都不是很清晰,现在趁着春暖花开周末在家没事就研究了下它们,现在来分享我的理解。 二、概念详解   1.磁盘分区       磁盘分区是把物理的磁盘空间按照自己的要求分成N个不同大小的区域,以便OS更好更高效的进行文件存储管理。

一、背景

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

二、概念详解

  1.磁盘分区

      磁盘分区是把物理的磁盘空间按照自己的要求分成N个不同大小的区域,以便OS更好更高效的进行文件存储管理。像我们经常使用的Windows系统中的C、D、E、F盘...等盘符实际就是一个个的磁盘分区。分区与操作系统没有任何关系,因为我们对磁盘分区可以在安装操作系统之前进行。

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

      硬盘组成:硬盘主引导扇区+主分区+扩展分区

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

     

  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  存放设备文件,驱动文件等

三、总结

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

相关文章
|
25天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
65 3
|
29天前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
34 2
|
19天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
59 3
|
24天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下文件数量是常见的需求。本文介绍了四种方法:使用 `ls` 和 `wc` 组合、`find` 命令、`tree` 命令以及编程实现(如 Python)。每种方法都附有详细说明和示例,适合不同水平的用户学习和使用。掌握这些技巧,可以有效提升系统管理和日常使用的效率。
133 6
|
21天前
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
22 1
|
29天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
34 4
|
1月前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
55 2
|
2月前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
44 4
|
2月前
|
Linux
linux开机挂载镜像
【10月更文挑战第1天】在 Linux 系统中,开机挂载镜像通常涉及几个关键步骤,包括创建挂载点、编辑配置文件以及重新加载配置
86 0
|
2月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
48 2