Linux

Linux磁盘与文件系统管理

2018-11-09  本文已影响4人  wangchuang2017

Linux磁盘与文件系统管理

Linux磁盘与文件管理系统 2017-06-12 09:41:28 64 0 0

一:磁盘与储存设备

image

实际运行时,主轴马达让盘片转动,然后机械手臂可伸展让磁头在盘片上头进行读写的动作。

由于单一盘片的容量有限,因此有的磁盘内部会有两个以上的盘片

image

每个小区块就是磁盘的最小物理储存单位,称为扇区(sector)

同一个同心圆的扇区组成的圆就是所谓的 磁道(track)

由于磁盘里可能有多个盘片,因此所有盘片上的同义磁道可以组成 柱面(cylinder)

因为外圈的扇区较多,数据的读写通常会由外圈开始往内写

扇区容量 512Byte -- 4kByte

SATA接口:

image

SAS接口:

早期工作站或者大型电脑,为了读写速度和稳定性,大多使用scsi这种高阶接口

发展值串行式SCSI(Serial Attached SCSI, SAS)

速度快于sata 而且连接的sas硬盘的盘片的转速与传输的速度也比sata好

image

USB接口:

image

固态硬盘(Solid State Disk):

传统硬盘需要驱动马达转动盘片-->造成严重的磁盘读取延迟(你需要知道数据在哪个扇区上,然后命令马达开始转,然后再让磁头读取正确的数据。如果数据放置的比较离散,读取的速度延迟会更明显)

于是又厂商用闪存制作大容量的设备,接口也是sata,sas。虽然已经不能成为是磁盘,都是内存。

二:各硬件设备在linux中的文件名

在Linux中所有设备都被当做文件来对待

image

三:磁盘分区

正常的实体机器大多使用/dev/sd[a-p]

虚拟机环境下,为了加速,并不是正规的磁盘界面。可能会使用/dev/vd[a-p]

但是没有一定的顺序,与实际插槽代号关系不大,使用侦测到的顺序来决定设备文件名。

整颗磁盘的第一个扇区特别重要,因为记录了整颗磁盘的重要信息。

早期磁盘第一个扇区里面含有重要信息称为MBR(Master Boot Record)格式

后来由于磁盘容量不断增大,造成读写困难,后来又多了一种新的磁盘分区格式成为GPT(GUID partition table)

MBR 与 GPT 磁盘分区表

所有盘片的同一磁道被成为柱面,通常为文件系统的最小单位,也是分区的最小单位

但是近年来GPT 可以达到64bit记录功能的分区表,现在甚至可以适用扇区作为分区单位。

MBR格式分区格式与限制

早期的Linux为了相容与windows的磁盘,因此使用的是支持windows的MBR(主要开机记录区)的方式来处理

开机管理程序分区表 通常放在磁盘的第一扇区

第一扇区包含:

由于分区表所在的区块仅有 64 Byte 容量,因此最多仅能有四组记录区,每组记录了该区段的起始于结束柱面号码。

image

上图的分区在linux的设备名为:

P1:/dev/sda1 字母后会再接一个数字,该数字与该分区的位置有关

P2: /dev/sda2

p3: /dev/sda3

...

分区的作用:

image

用额外的扇区记录更多的分区信息

延伸分区并不是只占一个区块,而是分布在每个分区的最前面的几个扇区来记载分区信息

由延伸分区继续切出来的分区-- 逻辑分区,可使用的柱面范围为延伸分区所设置的范围

image

逻辑分区一般从5开始

image

上图蓝色部分可以整合为一个新的分区,因为同属延伸分区的逻辑分区,只要将两个分区删除,再重新建立一个新的分区,就能在不影响其他分区的情况下,将两个分区的容量整合为一个

下图不可以,因为两部分分别属于主分区与逻辑分区,除非将延伸分区破坏掉再重新分区,会影响到所有的逻辑分区。

因为MBR分区每组分区表仅有16Bytes ,因此可记录的信息相当有限,所以出现问题:

GUID partition 磁盘分区表

目前已有4K的扇区,逻辑区块位址*(Logical Block Address,LBA)

GPT将所有磁盘区块以LBA(默认512Bytes) 来规划,而第一个LBA0

GPT用了34 个LBA 记录分区信息,而且磁盘最后的33个LBA也拿来作为备份。

image

二 :

1 文件系统特性

磁盘分区后需要格式化,之后操作系统才能使用这个文件系统。

原因:因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,成为操作系统能够利用的“文件系统格式”

传统的磁盘与文件系统应用中,一个问去就是只能被格式化成为一个文件系统。所以我们可以说或一个file system就是一个partition 。

现在有LVM与软件磁盘阵列(sortware raid) 这些技术可以将一个分区格式化为多个文件系统。也能将多个分区合并为一个文件系统(LVM,RAID)!

通常可以称呼一个可被挂载的数据为一个文件系统而不是一个分区

文件系统通常会将这两部分的数据分别存放在不同的区块。

[图片上传失败...(image-2fbac8-1541773585460)]

所谓的索引式文件系统

作为对比 一般u盘为FAT没有inode

image

如果一个文件写入的block分散的太过厉害是,磁头将需要多转几圈才能读到所有数据

2 Linux的EXT2文件系统(inode)

[图片上传失败...(image-5d56dc-1541773585460)]

ext2文件系统在格式化的时候基本上区分为多个区块群组(BLOCK GROUP),便于管理

最开始有一个开机扇区*boot sector),可以安装开机管理程序,能够将不同的开机管理程序安装到个别的文件系统最前端,而不用覆盖整颗磁盘唯一的MBR,才能制作出多重开机的环境。

基本限制:

image image.png

因为inode固定大小的限制,所以使用间接的方法:使用额外的block作为号码记录,如果文件太大

image

superblock

**Filesystem Description **

block bitmap

inode bitmap(inode 对照表)

image

4 与目录树的关系

当在Linux的文件系统创建一个目录时,文件系统会分配一个inode与至少一块block给该目录

inode记录该目录的相关权限和属性,以及分配到的block号码

而block这是记录在这个目录下的文件名,

image

文件名记录在目录的block中

具体的读取过程看书355

若文件太过离散,还是会发生读取效率低落的问题。可以将整个filesystem内的数据全部复制出来,将filesystem重新格式化,再将数据复制回去即可解决该问题。

此外若果filesystem真特别大,当一个文件分别记录在这个文件系统的最前面与最后面时,磁头移动幅度过大,也会造成读取性能的低落。

5 EXT2/EXT3/EXT4文件的存取与日志式文件系统的功能

在创建一个新目录时:

1 先确定使用者对于新增文件的目录是否具有wx的权限

2 根据inode bitmap 找到没有使用的inode号码,将新的文件权限/属性写入;

3根据block bitmap找到文件中没有使用的block号码,并将实际的数据写入block中,且更新inode的block指向数据;

4将刚刚写入的inode与block数据同步更新inode bitmap 与block bitmap 更新super block的内容

数据存放区:inode table data block

中介数据: super block block bitmap inode bitmap

数据的不一致状态( Inconsisten)状态

当新增动作被中断(突然断电,系统核心发生错误),写入的数据仅有 inode table 以及data block,最后一个同步更新中介数据的步骤没有做完,此时会发生metadata的内容与实际存放区不一致的情况。

在早期的ext2中,系统会在开机的时候 根据 super block 中巨鹿的 valid bit 以及 file system state( clean or not)

决定是否进行数据的一致性检查,e2fsck

这样的检查非常的费时,需要比对 整个 filesystem

日志文件系统的兴起 (Journaling filesystem)

为了避免上述情况,在filesystem 中规划处一个区块,该区块专门记录写入或者修订文件时的步骤

在记录过程中发生了问题,系统只需检查日志记录区块,就能找到发生问题的区块

ext3/ext4

6 Linux文件系统的运行

Linux的非同步处理:

当系统载入一个文件到内存后,如果该文件没有被修改,状态为(clean),如果被修改(dirty),系统会不定时的将内存中设置为dirty 的文件写入磁盘。

也可以用 sync 指令来手动强迫写入磁盘

7 挂载点的意义 mount point

每个filesystem 都有独立的inode/block/superblock 等信息,这个文件系统要能连接到目录树才能被使用。

将文件系统与目录树结合的动作成为挂载

挂载点一定是目录,该目录为进入该文件系统的入口。

**8 **

查看你的linux 支持的文件系统有哪些,可以查看

ls -l /lib/modules/$(uname -r )/kernel/fs

cat /proc/filesystems 可以查看目前已载入内存中的文件系统

image

9 XFS文件系统简介

centOS7 开始使用XFS

ext文件系统的缺陷:

二:文件系统的简单操作

image image du image

2 实体链接与符号链接 :ln

image image

要制作链接文件 使用ln

image

三 磁盘的分区、格式化、检验与挂载

当系统里新增一块硬盘时

1 对磁盘进行分区,创建可用的partition

2 对该partition格式化,以创建系统可用的filesystem

3可以对刚创建好的filesystem检查

4在Linux系统上,需要创建挂载点,即目录,并将其挂载上来

1 观察磁盘分区状态

image

2 磁盘分区 gdisk/fdisk

MBR -- fdisk

**GPT -- gdisk **

参考鸟哥

**3 make filesystem **

mkfs

image

4 文件系统检验

image

参考鸟哥 第七章

文件系统挂载与卸载

上一篇下一篇

猜你喜欢

热点阅读