EXT2文件系统:

文件系统特性:

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

通常我们称呼一个可被挂载的数据为一个文件系统而不是一个分区(一个分区多个文件系统,多个分区一个文件系统)

super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等

inode:记录文件的属性,一个文件占用一个inode,同时记录文件的数据所在的block号码

block:实际记录文件的内容,若文件太大时,会占用多个block

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

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

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

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内的文件名数据,再一层一层地往下读到正确的文件名

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

确定用户对于欲添加文件的目录是否具有w与x的权限,若有的话才能添加

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

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

将刚才写入的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)

预备:当系统要写入一个文件时,会先在日志记录块中记录某个文件准备要写入的信息

实际写入:开始写入文件的权限与数据;开始更新meta data的数据

结束:完成数据与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查阅

删除分区:

fdisk:先进入fdisk界面

p:先看一下分区信息,确定删除的分区

d:选择一个分区

w:存储到磁盘数据表中,并离开fdisk

新增磁盘分区:

fdisk:进入fdisk界面

n:选择分区类型(主分区,扩展分区)

起始柱面(默认值)

终止柱面:+512MB

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

分区:先使用fdisk分出一个分区给系统作为swap,同时还要设置一下system ID。fdisk /dev/sda –> p –> t (修改系统ID),几号分区改成swap的ID为82,p,w,partprobe(更新内核分区表)

构建swap格式:mkswap

开始查看与加载:free(查看)、swapon(开启分区)、free

使用文件构建swap

使用dd新增一个文件

使用mkswap将文件格式化为swap的文件格式

使用swapon将其启动

使用swapoff关掉swap file

linux的文件link占用空间的差别,Linux重要知识点汇总——磁盘与文件系统管理相关推荐

  1. Linux知识点整理(五)—— Linux 磁盘与文件系统管理

    一.Linux磁盘与文件系统管理 1.磁盘组成与分割 磁盘的物理组成,整颗磁盘的组成主要有: 圆形的磁盘(主要是记录数据的部分): 机械手臂,与在机械手臂上的磁盘读取头(可读写磁盘盘上的数据): 主轴 ...

  2. 云服务器的文件彻底删除后,保护隐私就该如此 – 彻底删除文件数据,使其永远无法恢复!...

    自己暂时没有这方面的需求,但是单位有老同志相继退休,他们会要求技术部门完全清除他们电脑硬盘的所有数据.不是格式化全盘这么简单,而是要做到完全清除,说白了就是使其无法利用数据恢复软件或设备进行恢复.这样 ...

  3. 从文件中读取数据,排序之后输出到另一个文件中

    文件中有一组数据,要求排序后输出到另一个文件中去 主要有两个知识点: 排序.文件操作 C++/C代码如下: [cpp] view plaincopy #include<iostream> ...

  4. linux 删除文件占用,Linux 下被删除文件依然占用空间的处理

    首先,我们说下对于一个仍在被程序访问的日志文件,应该怎样清理. 我们以 nginx 的默认日志文件  /usr/local/nginx/logs/access.log 为例进行讲解说明. 很多朋友喜欢 ...

  5. Linux 之旅 5:磁盘与文件系统管理

    Linux 之旅 5:磁盘与文件系统管理 Linux文件系统 文件系统特性 我们知道,对于一个新的存储设备,无论是移动硬盘还是U盘,在第一次连接电脑后一般都会提示要格式化后使用,那格式化是做什么用的呢 ...

  6. 鸟哥的Linux私房菜(基础篇)- 第八章、Linux 磁盘与文件系统管理

    第八章.Linux磁盘与文件系统管理 最近升级日期:2009/08/30 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分割槽不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生文 ...

  7. Linux操作系统使用基础05:Linux磁盘与文件系统管理

    目录 1. 文件系统特性 1.1 概述 1.1.1 操作系统相关性 1.1.2 磁盘与文件系统的关系 1.2 文件数据的存放 1.2.1 索引式 1.2.2 链表式 2. Linux的Ext2文件系统 ...

  8. Linux的基本学习(四)——磁盘与文件系统管理

    前言: 承接Linux的基本学习(三)我们接着往下走 认识Linux文件系统: 整块磁盘的组成主要有: 圆形的碟片(主要记录数据) 机械手臂,与在机械手臂上的磁头(擦写碟片上的数据) 主轴马达,可以转 ...

  9. 【Linux】Linux 磁盘与文件系统管理命令

    来自<鸟哥的 Linux 私房菜>,重复只是加深自己的印象. 本篇结构: 文件系统的简单操作 磁盘的分区.格式化.检验与挂载 设置开机挂载 内存交换空间(swap)之创建 补充 一.文件系 ...

最新文章

  1. 公司--超级链接跳转和表单提交,删除的表单提交和删除失败的提示信息
  2. 关于.NET参数传递方式的思考
  3. 如何选择漏电保护器规格型号_三相四线漏电保护器型号要如何选
  4. 关于 Node.js scoped module 的一些理解
  5. vs2005新建项目中没有ASP.NET WEB应用程序
  6. SpringCloud框架搭建+实际例子+讲解+系列五
  7. filterwriter_Java FilterWriter flush()方法与示例
  8. 我爆一个托 QQ305242038 电话 18782169971
  9. iOS传感器开发——为APP添加手机密码、指纹进行安全验证
  10. Mac—Excel转图片
  11. textView设置粗体以及textView文字中划线
  12. 邮件中的FYI和PFA代表什么意思
  13. UIAlertView/UIAlertController封装使用
  14. tga缩略图预览_甜蜜的缩略图预览库
  15. Python记录程序运行的时间
  16. 旋转编码器怎么调零点?
  17. 【无标题】关于DBC文件的格式解析(DBC文件系列其二)
  18. 客户贷后还款提醒优化项目
  19. 【雅思口语】安娜口语学习记录 Part3
  20. 大数据时代之市场调研的必要性

热门文章

  1. openvc学习笔记(4)——两种方法在没有环境下运行程序
  2. HR--上载信息类型的长文本的样例代码
  3. Java数组的定义方式有哪几种
  4. 网页的js源文件被加密解决方案
  5. CSS3展开带弹性动画的手风琴菜单
  6. [No0000119]什么是柳比歇夫的时间事件记录法
  7. windows ffmpeg 的安装
  8. C# 读取Excel文件,并写入word模板文档
  9. Atom markdown .md 编写格式技巧
  10. 使用Hibernate-Validator优雅的验证RESTful Web Services的参数