Linux之磁盘管理及文件系统管理

存储设备----U盘、光盘、软盘、硬件、磁带、硬盘

目前硬盘比较普遍的有机械式硬盘(HDD)、固态硬盘(SSD)、混合硬盘(HHD)。按数据的接口类型,又分类IDE、STAT、SCSI、USB。

磁盘由众多盘片构成,将磁粉溅镀到基板上就形成了盘片,基板要求极高,不可有任何瑕疵。磁粉通过N\S磁极来表示0和1,这个数据需要磁头来读取和写入。磁头在读取数据时不与盘片接触,但是又要越近越好,因为太远无法感应到磁粉的极性,这个距离现在已经可以做到人类头发丝的千分之一了,真是足够精密了!盘片有电机带动做高速旋转,通常听见的7200转/分,就是指盘片每分钟转过的圈数,这样磁头就相对盘片做圆周运动,也就能够按磁道来读取数据。除此之外,磁头的机械臂还由步进电机控制,沿盘片半径做直线运动,以读取不同磁道的数据。一块磁盘拥有多个盘片,每个盘片的上下面都可以读写数据,而且每个盘面都有对应的磁头读写。例如,如果一块磁盘有4个盘面,那么磁头就有8个,分别编号0-7。虽然有多个磁头在工作,但是同一时刻只能有一个磁头在读写数据。 在整个数据的读取过程中,机械臂的移动称为寻道,寻道的时间和盘片旋转的时间远大于半导体电路的数据传输时间,是阻碍磁盘读写性能的最大因素。

机械硬盘的物理结构:

  • 磁道:上面提到了磁道的概念,磁道就是盘面上的一个个同心圆,一个盘面可以有成百上千个磁道。磁道从最外圈向内圈从0开始编号。每个磁道的宽度取决于磁头的大小,磁头如果能够做到原子级别的话,那么磁道的数量将可以大大增加,存储容量将几何倍数提升。
  • 扇区:磁道又被划分为一段段的圆弧,称为扇区,每个扇区中的数据总是同时读取或写入,是磁盘的最小读写单位。由于外圈的扇区拥有更高的线速度,所以外圈的数据读写要比内圈快一些。
  • 低级格式化:在盘片上划分磁道和扇区称为低级格式化(一般出厂完成低格)。
  • 高级格式化:对磁盘上的数据进行文件系统标记称为高级格式化。

MBR----我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。主引导扇区由三个部分组成(共占用512个字节)

  • Main Boot Record主引导记录位于整个硬盘的0磁道0柱面1扇区。
    • 446bytes:BootLoader,程序
    • 64bytes:分区标识
      • 16bytes:标识一个分区,因此主+扩展<=4
    • 2bytes:Magic Number(标记MBR是否有效)

硬链接与软件链接

硬链接示图                                                   软链接示图

硬链接只能作用于文件,不能对目录进入硬链接,且不能跨文件系统,而软件软链接则可以。

创建链接的命令ln

[root@shitouji shell]# ln test.sh abc     #创建硬链接

[root@shitouji shell]# ls -i
655375 abc 655386 log 1314251 test 655375 test.sh 658767 word 938509 xiti

ln -s 用于创建软件链接

设备文件分为字符设备和块设备

字符设备:以字符为单位,线性设备,是一个顺序流的设备,如终端、磁带机。

块设备:以块为单位,这里的块一般是逻辑块,随机存储

 

磁盘格式化----低级格式化和高级格式化。低级格式化一般由厂商出厂时进行格式化,低级格式化速度较慢,它会重新划分扇区,写入引导程序建立分区机制;高级格式化是用来建分区,创建文件系统。以ext2为例,

ext2最大支持16T的分区,2T的文件,

ext3最大支持16T的分区,2T的文件,但分区的时候,在数据区和元数据区上多了个日志功能区

ext4最大支持1EB的分区,16TB的文件,且做了很大的改变。为增加新的信息,大小由EXT3的128字节增加到默认的256字节,同时inode寻址索引不再使用EXT3的"12个直接寻址块+1个一级间接寻址块+1个二级间接寻址块+1个三级间接寻址块"的索引模式,而改为4个Extent片断流,每个片断流设定片断的起始block号及连续的block数量(有可能直接指向数据区,也有可能指向索引块区)。

xfs,单个磁盘支持128分区,最大支持8EB,最大分区128EB。XFS是一个64位文件系统,最大支持 8exbibytes 减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。

分配组是XFS抽象程度最高的概念。XFS文件系统内部被分为多个“分配组”,它们是文件系统中的等长线性存储区。每个分配组各自管理自己的inode和剩余空间。文件和文件夹可以跨越分配组。这一机制为XFS提供了可伸缩性和并行特性——多个线程和进程可以同时在同一个文件系统上并行执行I/O操作。这种由分配组带来的内部分区机制在一个文件系统跨越多个物理设备时特别有用,使得优化对下级存储部件的吞吐量利用率成为可能。

在一个磁盘上创建XFS文件系统之后,磁盘会被格式化成如下格式:

在CentOS7上默认的是创建4个AG。每个AG都相当于是1个独立的文件系统,维护着自己的free space以及inode,其主要包括以下信息:

  • superblock:描述整个文件系统的信息。
  • 空闲空间管理。
  • inode的分配和记录管理

结构如下:

解析上面的图,发现一个AG可以分为5个部分:

1) 第一个区(共1个block):全局信息描述区,包括:superblock、free space描述(AGF)、inode信息描述(AGI)、预留free space信息描述(AGFL)。每一部分都对应一个结构,用于描述其整体信息。

2) 第二个区(共3个block):B+树根节点描述区,包括:inode对应的B+树的根节点(通过AGI中对应字段指向)、管理free space对应的两颗B+树的根节点(AGF中对应的字段指向),这两颗B+树的索引key不同,一个以block number为key,一个以block count为key。

3) 第三个区(共4个block):存放预留freespace节点数据的区域,由AGFL中对应的字段指向。

4) 第四个区:存放inode树型节点的区域。

5) 第五个区:存放文件系统具体数据和元数据的区域。

所以从整个结构来看,核心的结构为superblock、AGF以及AGF中指向的管理freespace的B+树、AGI以及AGI所包含的inode的B+树以及AGFL和其对应的B+树。
摘自原文:https://blog.csdn.net/scaleqiao/article/details/52098546

注意:大于2T的分区,只能使用gpt的分区类型,硬件上需要设置UEFI模式

分区工具fdisk/parted用法介绍

fdisk命令参数介绍

  • -l、列出磁盘分区信息

fdisk 设备(/dev/sda)----进入分区交互模式

  •  p、打印分区表。
  •  n、新建一个新分区。
  •  d、删除一个分区。
  •  q、退出不保存。
  •  w、把分区写进分区表,保存并退出。

parted命令参数

  • -h, ––help — 显示求助信息
  • -i, ––interactive — 在必要时提示用户
  • -l, ––list — 显示所有磁盘设备的分区表
  • -s, ––script — 从不提示用户
  • -v, ––version — 显示版本

parted 设备(/dev/sda)----进入分区交互模式

  • help [COMMAND],打印命令的帮助信息,或指定命令的帮助信息
  • print [free|NUMBER|all] ,显示分区表, 指定编号的分区, 或所有设备的分区表
  • mkpart PART-TYPE [FSTYPE] START END 创建新分区。PART-TYPE 是以下类型之一:primary(主分 区)、extended(扩展分区)、logical(逻辑分区)。START 和 END 是新分区开始和结束的具体位置。
  • rm NUMBER ,删除指定编号 NUMBER 的分区。
  • set NUMBER FLAG STATE 对指定编号 NUMBER 的分区设置分区标记 FLAG。对于 PC 常用的 msdos 分区表来说,分区标记 FLAG 可有如下值:”boot”(引导), “hidden”(隐藏), “raid”(软RAID磁盘阵), “lvm”(逻辑卷), “lba” (LBA,Logic Block Addressing模式)。 状态STATE 的取值是:on 或 off
  • unit UNIT 设置默认输出时表示磁盘大小的单位为 UNIT,UNIT 的常用取值可以为:‘MB’、‘GB’、‘%’(占整个磁盘设备的百分之多少)、‘compact’(人类易读方式,类似于 df 命令中 -h 参数的用)、‘s’(扇区)、‘cyl’ (柱面)、‘chs’ (柱面cylinders:磁头 heads:扇区 sectors 的地址)
  • mkfs NUMBER FS-TYPE 对指定编号 NUMBER 的分区创建指定类型 FS-TYPE 的文件系统。
  • mkpartfs PART-TYPE FSTYPE START END 创建新分区同时创建文件系统。FS-TYPE 是以下类型一:ext2、fat16、fat32、linuxswap、NTFS、reiserfs、ufs 等
  • cp [FROM-DEVICE] FROM-NUMBER TONUMBER 将分区 FROM-NUMBER 上的文件系统完整地复制到分区TO-NUMBER 中,作为可选项还可以指定一个来源硬盘的设备名称FROM-DEVICE,若省略则在当前设备上进行复制。
  • move NUMBER START END 将指定编号 NUMBER 的分区移动到从 START 开始 END 结束的位置上。注意:(1)只能将分区移动到空闲空间中。(2)虽然分区被移动了,但它的分区编号是不会改变的
  • resize NUMBER START END 对指定编号 NUMBER 的分区调整大小。分区的开始位置和结束位置由 START 和 END 决定
  • check NUMBER,检查指定编号 NUMBER 分区中的文件系统是否有什么错误
  • rescue START END 恢复靠近位置 START 和 END 之间的分区
  • mklabel,mktable LABELTYPE 创建一个新的 LABEL-TYPE 类型的空磁盘分区表,对于PC而言 msdos 是常用的 LABELTYPE。 若是用 GUID 分区表,LABEL-TYPE 应该为 gpt

mkfs 创建文件系统,对分区进行格式化
-t FSTYPE
mkfs -t ext2 = mkfs.ext2
ext3 是日志文件系统(journal file system)

blkid:查看或查询磁盘设备的相关属性
UUID、TYPE、LABEL

lsblk:查看磁盘

partprobe /dev/sda  重新读取加载分区列表信息,或者重启才会把新分区加载进来

分区格式化完成后,需要挂载,如果需要开机自动挂载,需要更改/etc/fstab,其格式如下

  • UUID=eb448abb-3012-4ded-bcde-94434d586a39 / ext4 defaults 1 1
    /swap swap swap defaults 0 0      #swap分区不能使用UUID
  • 挂载方式 mount 挂载设备 挂载路径,而挂载交换分区时,用swapon 挂载设备 的方式,卸载时用swapoff

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章