Linux重要知识点汇总——磁盘与文件系统管理

EXT2文件系统: node

文件系统特性: linux

格式化(format):每种操做系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,所以就须要将分区格式化,以成为操做系统可以你用的文件系统格式 安全

一般咱们称呼一个可被挂载的数据为一个文件系统而不是一个分区(一个分区多个文件系统,多个分区一个文件系统) 架构

  • super block:记录此文件系统的总体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等
  • inode:记录文件的属性,一个文件占用一个inode,同时记录文件的数据所在的block号码
  • block:实际记录文件的内容,若文件太大时,会占用多个block

每一个inode和block都有编号,而每一个文件占用一个inode,inode内则有文件数据放置的block号码。这种数据访问的方法称为索引式文件系统异步

碎片整理:文件写入到block太过于分散了,此时文件读取的性能将会变得不好。经过碎片整理将同一文件所属的block汇合在一块儿,这样数据的读取会比较容易。 async

文件系统一开始就将inode和block规划好了,除非从新格式化(或者利用resize2fs等命令更改文件系统大小),不然inode与block固定后就再也不变更。 oop

Ext2文件系统在格式化的时候基本上是区分多个块组(block group)的,每一个块组都有独立的inode/block/superblock系统。 性能

总体规划中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区能够安装引导装载程序。 测试

调出目前挂载的设备:df 操作系统

查看文件系统信息:dumpe2fs 【-bh】 设备文件名

与目录树的关系

  • 目录:

新建一个目录时,ext2会分配一个inode与至少一块block给该目录。

inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;

block记录在这个目录下的文件名与该文件名占用的inode号码数据

查看目录内文件所占用的inode号码:ls –i

  • 文件:

当咱们新建一个文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。

目录树的读取:

系统经过挂载的信息找到挂载点的inode号码(一般一个文件系统的最顶层inode号码会由2号开始),此时就可以获得根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层一层地往下读到正确的文件名

新建一个文件或者目录的步骤:

  1. 肯定用户对于欲添加文件的目录是否具备w与x的权限,如有的话才能添加
  2. 根据inode bitmap找到没有使用的inode号码,并将新文件的权限/属性写入
  3. 根据block bitmap找到没有使用中的block号码,并将实际的数据写入block中,且更新inode的block指向数据
  4. 将刚才写入的inode与block数据同步更新inode bitmap与block bitmap,并更新superblock的内容(未使用与已使用的量)

inode table与data block称为数据存放区域,其余super block、block bitmap与inode bitmap等区段为meta data(中间数据),数据是常常变更的,每次添加、删除、编辑时均可能会影响到这三个部分的数据。

数据的不一致(Inconsistent)状态

meta data的内容与实际数据存放区产生不一致的状况。Ext2文件系统中,经过Super block当中记录的valid bit(是否有挂载)与文件系统的state(clean与否)等状态来判断是否强制进行数据一致性的检查。如有须要检查时则以e2fsck这支程序来进行的

日志文件系统(Journaling file system)

  1. 预备:当系统要写入一个文件时,会先在日志记录块中记录某个文件准备要写入的信息
  2. 实际写入:开始写入文件的权限与数据;开始更新meta data的数据
  3. 结束:完成数据与meta data更新后,在日志记录块当中完成该文件的记录

在这样的程序当中,万一数据的记录过程中发生了问题,那么咱们的系统只要去检查日志记录块就能够知道哪一个文件发生了问题,针对该问题作一致性检查便可。

linux文件系统的操做

异步处理(asynchronously):当系统知道一个文件到内存后,若是该文件没有改动过,则在内存区段的文件数据会被设置为(clean)的。但若是内存中的文件数据被更改过了,此时该内存中的数据会被设置为Dirty。此时全部的操做还在内存中执行,并无写入到磁盘中。系统会不定时地将内存中设置为Dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。

文件系统与内存:

  • 系统会将经常使用的文件数据放置到主存储器的缓冲区,以加速文件系统的读写
  • Linux的物理内存最后都会被用光。这是正常的状况,可加速系统性能。
  • 能够手动使用sync强迫内存中设置为Dirty的文件写回到磁盘中
  • 若不正常关机,因为数据还没有回写到磁盘内,所以从新启动后可能会花不少时间在进行磁盘检验,甚至可能致使文件系统损毁(非磁盘损坏)

Linux VFS(Virtual Filesystem Switch):Linux内核经过VFS管理文件系统,用户并不须要知道么个分区上头的文件系统是什么。

文件系统的简单操做:

磁盘与目录的容量:df,du

  • df:列出文件系统的总体磁盘使用量
  • du:评估文件系统的磁盘使用量(经常使用来评估目录所占容量)

df -hi:以人们较易阅读的GB、MB、KB等格式自行显示;不用硬盘容量,而以inode的数量来显示

读取的范围是在super block内的信息,因此命令显示结果的速度很是快。

du -s:列出总量而已,而不列出每一个个别的目录占用容量

直接到文件系统内去查找全部的文件数据,默认状况下大小的输出是以KB为单位的。

链接文件:ln

hard link(硬链接或实际链接):

在某个目录下面新建一条文件名链接到某inode号码关联的记录。

安全:若是将任何一个“文件名”删除,其实inode与block仍是存在的。此时能够经过另外一个“文件名”来读取到正确的文件数据。此外,不论使用哪一个“文件名”来编辑,最终的结果都会写入到相同的inode和block中,所以均能进行数据的修改。

限制:不能跨文件系统,不能链接到目录。

symbolic link(符号连接,也即快捷方式)

建立一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名。当源文件被删除以后,symbolic link的文件会“开不了”

内容:目标文件的“文件名”

symbolic link与Windows的快捷方式能够划上等号,有symbolic link所建立的文件为一个独立的新的文件,因此会占用inode与block

ln -s:若是不加任何参数就进行链接,那就是hard link,至于-s就是symbolic link

磁盘分区:fdisk

-l:输出后面接的设备全部分区内容

df:找出可用磁盘文件名,再使用fdisk查阅

删除分区:

  1. fdisk:先进入fdisk界面
  2. p:先看一下分区信息,肯定删除的分区
  3. d:选择一个分区
  4. w:存储到磁盘数据表中,并离开fdisk

新增磁盘分区:

  1. fdisk:进入fdisk界面
  2. n:选择分区类型(主分区,扩展分区)
  3. 起始柱面(默认值)
  4. 终止柱面:+512MB
  5. p:查看分区结果

强制更新内核分区表信息:partprobe

磁盘格式化

mkfs 【-t 文件系统格式】 设备文件名

磁盘检验:fsck,badblocks

fsck 【-t 文件系统】 【-ACay】 设备名称

-A:依据/etc/fastab的内容,将须要的设备扫描一次

-a(y):自动修复检查时遇到的有问题的扇区

-C:检验的过程中用一个直方图来显示目前的进度

一般只有身为root且文件系统有问题的时候才使用这个命令,不然在正常状况下使用此命令,可能对系统形成危害。

执行fsck时,被检查的分区务必不可挂载到系统上!

磁盘的挂载与卸载

  • 单一文件系统不该该被重复挂载在不一样的挂载点中
  • 单一目录不该该重复挂载多个文件系统
  • 做为挂载点的目录理论上应该都是空目录

mount -a:依据配置文件/etc/fstab的数据将全部未挂载的磁盘都挂上来

mount -l:显示目前挂载的信息(加上label列)

从新挂载根目录:mount –o remount,rw,auto  /

umount(将设备文件卸载)

磁盘参数的修改:

mknod 设备名 【bcp】 【major】 【minor】

b:外部存储设备文件

c:外部输入设备文件

p:FIFO文件

设置文件系统卷标:e2label 设备名称 新的label名称

tune2fs

hdparm –Tt 设备名称 :测试这块硬盘的读取性能

设置开机挂载

开机挂载/etc/fstab及/etc/mtab

  • 根目录/是必须挂载的,并且必定要先于其余mount point被挂载进来
  • 其余挂载点必须为已新建的目录,可任意指定,但必定要遵照必需的系统目录架构原则
  • 全部挂载点在同一时间内,只能挂载一次
  • 全部分区在同一时间内,只能挂在一次
  • 如若进行卸载,必须先将工做目录移到挂载点(及其子目录)以外

特殊设备loop挂载(镜像文件不刻录就挂载使用)

mount –o loop 文件地址 挂载地址

新建大文件以制做loop文件

帮助解决分区不良的状况。

  • 建立大型文件  dd if=/dev/zero of=/home/loopdev bs=1M count=512
  • 格式化 mkfs –t ext4 /home/loopdev
  • 挂载 mount –o loop …

内存交换空间(swap)的构建

  • 设置一个swap分区
  • 建立一个虚拟内存文件

使用物理分区构建swap

  1. 分区:先使用fdisk分出一个分区给系统做为swap,同时还要设置一下system ID。fdisk /dev/sda –> p –> t (修改系统ID),几号分区改为swap的ID为82,p,w,partprobe(更新内核分区表)
  2. 构建swap格式:mkswap
  3. 开始查看与加载:free(查看)、swapon(开启分区)、free

使用文件构建swap

  1. 使用dd新增一个文件
  2. 使用mkswap将文件格式化为swap的文件格式
  3. 使用swapon将其启动
  4. 使用swapoff关掉swap file 
相关文章
相关标签/搜索