linux笔记 磁盘分区及挂载详解

一、背景
linux系统中,当我们新加入一块硬盘时,并不能直接使用。首先要对硬盘进行分区(fdisk),即对存储空间的扇区进行空间划分。分区便于数据管理,各分区之间相互隔离,某个分区损坏也不会影响其他分区的功能,提高数据读写效率。分区之后需要进行格式化,规定数据的存储和读写格式。分区上文件的组织方法和数据结构即为文件系统,不同的文件系统类型所规定的存储文件的方式/大小等都有所不同,linux上主要有ext2/ext3/ext4/xfs等。做完格式化之后,仍然不可以进行数据存储读写,因为分区格式化之后,/dev/sda1等只是一个文件,不是目录,使用cd命令无法进入,因此硬盘仍然无法使用。需要进行挂载(mount),将存储设备与原有目录进行关联,使得访问目录即访问设备。挂载之后源目录中的文件会被隐藏,只保留被挂载的设备中的文件。如果要取消关联,卸载(umount)即可。
 
二、重点概念
1.  磁盘分区
 
      磁盘分区是把物理的磁盘空间按照自己的要求分成N个不同大小的区域,以便OS更好更高效的进行文件存储管理。像我们经常使用的Windows系统中的C、D、E、F盘...等盘符实际就是一个个的磁盘分区。分区与操作系统没有任何关系,因为我们对磁盘分区可以在安装操作系统之前进行。
 
      磁盘分区类型:主分区、扩展分区(N个逻辑分区的集合)。
 
      硬盘组成:硬盘主引导扇区+主分区+扩展分区
 
  2.硬盘主要组成部分:磁头、磁盘面、磁道、扇区、柱面(详细见笔记“硬盘的DOS管理结构”)
 
  
 
  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系统中对挂载的目录的任何操作都是对对应的磁盘分区的操作,例如文件保存当然也是保存到对应的磁盘分区上。 其中/根目录必须挂载在主分区上,否则启动系统的时候会由于找不到启动文件而启动失败。
 
三、常用命令
fdisk -l #查看系统分区详细信息
fdisk /dev/sda  #对sda磁盘进行分区

df #查看文件系统(-h 以合适的单位示系统大小 -T 显示系统类型)
du #查看文件夹大小,包含文件夹里面文件
du -s #仅仅查看文件夹大小
du -h #以M方式显示大小,方便查看

ls -i 文件名  #查看文件存储在哪个innode中
ls -id 文件夹名  #查看文件夹存储在哪个innode中
filefrag -v 文件名 # 查看文件存储block具体位置


dumpe2fs /dev/sda1 #查看分区superblock 和blockgroup等详细信息
 fsck /dev/sda #检查硬盘情况 -C 显示检查过程 -f 强制检查
badblocks /dev/sda5 #检查硬盘坏道 -sv 显示进度和结果 

fuser -mv /mnt  #当显示设备正在忙的时候,可以使用这个命令查看使用进程
tune2fs -l /dev/sda #查看磁盘参数(-h 查看可选选项,进行选项更改)

  

参考:https://www.cnblogs.com/hafiz/p/6682591.html

           https://www.cnblogs.com/sangmu/p/6629594.html

原文地址:https://www.cnblogs.com/dumpling-z/p/11145993.html