Linux磁盘分区

备份日志和数据库,USB接入Linux系统后fdisk -l查看为什么设备是以像sda1-sda4这样的形式展现,除了Linux系统一切皆文件的特性外,还因Linux针对硬件设备有专门的设备命名。

1.磁盘分区

为什么要分区?首先从使用习惯上来讲,我们不希望数据杂乱无章堆积在一起,其次,如果不分区就不能一块硬盘上使用不同的文件系统。分区将一个物理硬盘划分为几个逻辑上的硬盘,让各个分区都独立开来。同时硬盘分区让我们可以把不同的文件分开储存,这样大大节约了文件寻找时间。其根本目的:数据安全和性能。

磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。

分区表

我们电脑配置一块硬盘时,这块物理硬盘是无法被直接使用,而是需要在硬盘上划分出分区,在划分好的分区上创建文件系统挂载(在Linux系统中所有存储设备必须挂载后才能使用,windows没有这一步),这块硬盘才能够被正常使用。

这块物理硬盘可以划分成多个分区,这取决于使用者的需求而定,有些人喜欢分三个区,有些人喜欢分两个区。那,怎么把硬盘分成多个区?这就要使用到分区表了,分区表定义与保存了硬盘的分区信息,分区表位于硬盘开头的一段特定的物理空间内,操作系统等软件通过读取分区表内的信息,就能够获得该硬盘的分区信息。

分区表形式

  • MBR分区表(Master Boot Record,主引导记录)
    • 最大支持2.1TB银盘,最多支持4个分区
  • GPT分区表(Globally Unique Identifier Partition Table,全局唯一标识分区表)
    • GPT支持9.4ZB硬盘(1ZB=1024PB,1PB=1024EB,1EB=1024TB)。理论上支持的分区数量没有限制,但windows限制128个主分区。
分区表形式特性
MBR分区表
(Master Boot Record,主引导记录)
最大支持2.1TB银盘,最多支持4个分区
GPT分区表
(Globally Unique Identifier Partition Table,全局唯一标识分区表)
GPT支持9.4ZB硬盘(1ZB=1024PB,1PB=1024EB,1EB=1024TB)。理论上支持的分区数量没有限制,但windows限制128个主分区。

分区类型

  • 主分区:最多只能有4个
  • 扩展分区:
    • 最多只能有1个
    • 主分区加扩展分区最多有4个
    • 不能写入数据,只能包含逻辑分区
  • 逻辑分区

MBR主引导记录与硬盘分区

  • 在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。
  • 在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a表示硬盘编号可能是a、b、c等等,1表示分区号)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。
  • 在MBR分区表中,一个分区最大的容量为2.1TB,且每个分区的起始柱面必须在这个disk的前2.1TB内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2.1TB空间内。如果硬盘太大则必须改用GPT。

2.格式化

格式化目的并不是清空数据,而是写入文件系统。

格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(FAT16、FAT32、NTFS、EXT2、EXT3、EXT4、XFS等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用户文件管理的磁盘空间。

分区被格式化创建文件系统后 ,文件被大致被分为了两部分,分别是inodeblock。 每个inode节点的大小一般为128B或者256B,inode的总数在格式化文件系统的时候就已经确定。 block的大小与业务与磁盘的I/O性能有着密不可分的关系。 如果单个文件很大的情况下,block设置的很小,就需要读取多个block,这对磁盘I/O是一种消耗(因为每读取一个block都会消耗 磁盘I/O,磁盘每次读取都是以block为单位的) 。如果单个文件很大,适当的加大block的大小则会提高磁盘的读取效率,减少了磁盘的I/O。 block 的大小一般有1k,2k,4k,除引导分区1k外,其他分区为4k。

inode

**inode**就是索引节点(index node)的意思 ,用来存储文件属性信息,其中包括了文件大小,文件的归属者,文件的归属组,权限,类型,修改时间,以及指向文件实体数据(block)的指针。

block

**block**中存储的就是文件的实际数据,比如说,照片,视频,音频等等,但是有一点需要注意!就是inode当中不包含文件名!一个文件的文件名,存储在上级目录的block中!

inode与block的关系

其实inodeblock之间的关系就像是一本书一样,inode是一本书的目录,一本书会有很多内容,一个知识点或者一个故事会占很多页,一个block就相当于书中的一页内容。

正常情况一个文件创建有且只能占用一个inode和至少占用一个block,大文件占用多个block,如果一个block未占完,剩余空间也无法使用 。

多个文件可以占用同一个inode(linux的硬链接就是这个原理),但是一个block只能属于一个文件。

3.硬件设备文件名

Linux中所有内容都是以文件的形式保存和管理,硬件设备也是文件,这和windows不同。windows是通过设备管理器来管理硬件。Linux的设备保存在/dev/目录中,硬盘文件是/dev/sd[a-p],光盘文件是/dev/hdc等。

硬件设备文件名
IDE硬盘/dev/hd[a-d]
SCSI/SATA/USB硬盘/dev/sd[a-p]
光驱/dev/cdrom或/dev/sr0
软盘/dev/fd[0-1]
打印机(25针)/dev/lp[0-2]
打印机(USB)/dev/usb/lp[0-15]
鼠标/dev/mouse

注意:以SATA硬盘位例,在Linux系统中,硬盘分区命名为sda1-sda4(其中a表示硬盘编号可能是a、b、c等等,1表示分区号)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。如下图a与b对比所示。

4.挂载

挂载点必须是已经存在的空目录。设备挂载到目录的动作叫挂载。

  • 必须分区
    • /(根分区)
    • swap分区(交换分区)
      • 如果真是内存小于4GB,swap为内存的两倍(推荐)
      • 如果真是内存大于4GB,swap和内存一致(推荐)
      • 实验环境,不大于2GB
  • 推荐分区
    • /boot(启动分区,1GB)
  • 常用分区
    • /home(用于文件服务器)
    • /www(用于Web服务器)

文件系统结构

如果一个目录单独分区了,比如/home目录,那么往/home目录写文件时,这个目录的文件将单独保存在/home目录自己的硬盘空间里。如果往未分区的目录写数据,那么此目录文件的数据将保存在根目录/的存储空间里。

最后总结

分区:把大硬盘分为小的逻辑分区

格式化:写入文件系统

分区设备文件名:给每个分区定义设备文件名

挂载:给每个分区分配挂载点