1、inode 和 block 概述

文件储存在硬盘上,硬盘的最小储存单位叫“扇区”(sector),每个扇区储存 512 字节。

操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。

这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是 4KB,即连续八个 sector 组成一个 block。

文件数据存储在“块”中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建时间,文件的大小等等。

这种储存文件元信息的区域叫做 inode,中文译名为“索引节点”,也叫 i 节点。

一个文件必须占用一个 inode,但至少占用一个 block。

2、inode 包含文件的元信息

(1)inode 内容:

文件的字节数、拥有者的 UID、GID、文件的读写执行权限、时间戳等,但不包含文件名。文件名是储存在目录的目录项中

(2)Atime 、Mtime 、Ctime 详解:

英文          别称        中文翻译          何时修改                   查看命令

Access        Atime            访问时间          读取、写入                   ls -lu

Modify         Mtime           修改时间          写入、修改                    ls -l

Change/Create      Ctime            改变时间/创建时间          修改文件名、写入、修改、改权限、做链接     ls -lc

3、目录文件的结构

(1)目录也是一种文件

(2)目录文件的结构:

文件名 1              inode 号码 1

文件名 2              inode 号码 2

……                    ……

每个 inode 都有一个号码,操作系统用 inode 号码来识别不同的文件

Linux 系统内部不使用文件名,而使用 inode 号码来识别文件。对于系统来说,文件名只是 inode 号码便于识别的别称。

4、inode 的号码

(1)系统内部打开文件的步骤:

1>系统找到这个文件名对应的 inode 号码

2>通过 inode 号码,获取 inode 信息

3>根据 inode 信息,找到文件数据所在的 block,读出数据

inode 一般为 128 字节或 256 字节,每个 inode 中都记录着文件所在的 block 号,每条记录着 block 号的信息占用 4 字节。

inode 中关于 block 号的记录一共包含有 12 个直接、1 个间接、1 个双间接和 1 个三间接。

间接指的是,inode 中所记录这 4 字节的内容,所指向一个 block,这个 block 中存放的不是真是的文件内容,而是真实文件所存放位置的 block 号信息,

若每个 block大小为 4KB,那么可以存放 1024 个 block 号信息,1 个间接可以存放的文件大小为:1024*4=4096KB

双间接则可以存放更大的文件内容,即在间接的基础上再进行间接,若此时 block大小为默认的 4KB,则 1 个双间接可以存放的文件内容大小为:1024*1024*4=4096MB

三间接即在双间接的基础上在进行间接,若此时 block 大小为默认的 4KB,则 1 个三间接可以存放的文件内容大小为:1024*1024*1024*4=4096GB

5、删除指定 inode 号所对应的文件

(1)格式:find ./ -inum inode 号 -exec rm -i {} \;

(2)当文件名中包含特殊符号时我们可以删除其 inode 号达到删除文件的目的

8、解决 inode 耗尽导致的磁盘故障
方法:

  • 删除不使用的文件
  • 将文件备份,重新格式化此文件系统,指定较多的 inode 个数

9、硬链接(hard link)

(1)方法:ln 源文件 目标文件

(2)特点:

  硬链接指向 inode,新生成的硬链接文件的 inode 号与源文件的 inode 号相同,不可针对目录进行硬链接,必须在同一文件系统内。删除一个文件名,不影响另外一个的访问。

10、软链接(soft link)

(1)方法:ln -s 源文件或目录 目标文件或目录

(2)特点:

  软链接指向文件名,新生成的软链接文件的 inode 号与源文件不同,目录也可以生成软链接,软链接文件与源文件可以不在同一文件系统内,软链接文件的内容是源文件的路径,

  读取时系统会自动导向源文件,但当源文件移动或重命名时,软链接将报错。

11、硬链接与软链接的对比

                硬链接                              软链接

指向                                                  inode 号                                       文件名

inode 号是否相同                             相同                                               不同

是否可以针对目录                            不可针对目录                                可以针对目录

可否跨文件系统                                不可跨文件系统                            可跨文件系统

删除、重命名、移动源文件              不受影响                                       失效

创建命令                                           ln 源文件 目标文件                        ln -s  源文件或目录 目标文件或目录

12、日志文件的作用

日志文件是用于记录 Linux 系统中各种运行信息的文件,相当于 Linux 主机的“日记”。不同的日志文件记载了不同类型的信息,如 Linux 内核消息、用户登录事件、程序错误等。

日志文件对于诊断和解决系统中的问题很有帮助,因为在 Linux 系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”。

此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹

13、日志文件的分类

(1)内核及系统日志:

在 6 以上的系统版本中,这种日志数据由系统服务 rsyslog 同一管理,根据其主配置文件/etc/rsyslog.conf 中的设置决定将内核消息及各种系统程序消息记录到什么位置。

/etc/rsyslog.conf 配置文件中,常见的配置格式及其含义:

  • “.”:比后面等级要高(包含该等级)的都记录。例如:“*.info”
  • “.=”:只记录该等级。例如:“.=debug”
  • “!”:除了该等级都记录。例如:“!info”
  • “-”:当有记录信息需要记录时,先存到缓存中,到一定大小时一次性写入,以减少对磁盘读写性能的占用。例如:“-/var/log/maillog”

(2)用户日志:

用于记录 Linux 系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录

时间、来源主机、正在使用的进程操作等。

(3)程序日志:

有些应用程序会选择由自己独立管理一份日志文件,而不是交给 rsyslog 服务管理,用于记录本程序运行过程中的各种事件信息。

14、日志文件的位置

Linux 系统本身和大部分服务器程序的日志文件默认放在/var/log/下。一部分程序共用一个日志文件,一部分程序使用单个日志文件。

而有些大型服务器程序日志由于日志文件不止一个,所以会在/var/log/目录中建立相应的子目录来存放日志文件,这样既保证了日志文件目录的结构清晰,又可以快速定位日志文件

15、常见的日志文件及查看方式

日志文件                                       存放内容                                                                                                                                                        查看命令

/var/log/messages                        内核消息及各种应用程序的公共日志信息,包括启动、I/O 错误、网络错误、程序故障等                            cat 等

/var/log/cron crond                        周期性计划任务产生的时间信息                                                                                                                    cat 等

/var/log/dmesg                              引导过程中的各种时间信息                                                                                                                            cat 等

/var/log/maillog                             进入或发出系统的电子邮件活动                                                                                                                     cat 等

/var/log/lastlog                              每个用户最近的登录事件                                        last、lastlog

/var/log/secure                              用户认证相关的安全时间信息                                     cat 等

/var/log/wtmp                                 每个用户登录、注销及系统启动和停机事件                            users、who、w

/var/log/btmp                                 失败的、错误的登录尝试及验证事件                                lastb

16、日志消息的级别

在 Linux 内核中,根据日志消息的重要程度不同,将其分为不同的有限级别(数字等级越小,优先级越高,消息越重要)

级别              英文表示及翻译           意义
0                   EMERG(紧急)        会导致主机系统不可用的情况
1                   ALERT(警告)          必须马上采取措施解决的问题
2                  CRIT(严重)              比较严重的情况
3                  ERR(错误)               运行出现错误
4                  WARNING(提醒)     可能影响系统功能,需要提醒用户的重要事件
5                  NOTICE(注意)         不会影响正常功能,但是需要注意的事件
6                  INFO(信息)              一般信息
7                  DEBUG(调试)          程序或系统调试信息等
8                  none(没有)               不做记录

17、日志文件分析注意事项:

总的来说,作为一名合格的系统管理人员,应该提高警惕,随时注意各种可疑的状况,定期并随机的检查各种系统日志文件,包括一般信息日志、网络连接日志、文件传输日志及

用户登录日志记录等。在检查这些日志时,要注意是否有不合常理的时间或操作记录。例如出现以下一些现象就应该多加注意:

    • 用户在非常规的时间登录,或者用户登录系统的 IP 地址和以往不一样的
    • 用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录
    • 非法使用或不正当使用超级用户权限
    • 无故或者非法重新启动各项网络服务的记录
    • 不正常的日志记录,如日志残缺不全,或者是诸如 wtmp 这样的日志文件无故缺少了中间的记录文件

Linux文件系统与日志!的更多相关文章

  1. Linux文件系统与日志分析

    Linux文件系统与日志分析一.inode与block概述① 文件数据包括元信息(类似文件属性)与实际数据② 文件存储在硬盘上,硬盘最小存储单位是"扇区"(sector),每个扇区 ...

  2. Linux文件系统与日志分析的了解

    Linux文件系统与日志分析 1.inode和block概述 2.模拟inode耗尽实验 3.ext类型文件恢复 4.xfs类型文件恢复 5.日志文件 6.日志分析 1.文件:文件是存储在硬盘上的,硬 ...

  3. linux文件系统和日志分析

    一.Linux文件系统 1.inode与block 1.概述: (1)文件数据包括元信息与实际信息 (2)文件存储在硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节 (3 ...

  4. 深入理解Linux文件系统与日志文件

    目录: 一.inode与block 二.inode内容 三.inode的号码 四.inode的大小 五.链接文件 六.inode节点耗尽故障处理 七.恢复EXT类型的文件编译安装extundelete ...

  5. 深入理解Linux文件系统与日志分析

    一.inode和bolck概述 二.链接文件 三.inode节点耗尽故障处理 四.EXT类型文件恢复 五.xfs文件备份和恢复 六.日志文件 一.inode和bolck概述 1.定义 文件数据 文件数 ...

  6. Linux文件系统与日志文件

    目录 一.inode和block 1.1.inode和block概述 1.2.inode的内容 inode包含文件的元信息: 查看inode号两种方式 目录文件的结构 1.3.inode的号码 用户通 ...

  7. Linux文件系统与日志

    1.inode 包含文件的元信息(1)inode 内容:文件的字节数.拥有者的 UID.GID.文件的读写执行权限.时间戳等,但不包含文件名.文件名是储存在目录的目录项中.(2)查看文件的 inode ...

  8. Linux 系统管理——Linux文件系统与日志

    1.inode 包含文件的元信息(1)inode 内容:文件的字节数.拥有者的 UID.GID.文件的读写执行权限.时间戳等,但不包含文件名.文件名是储存在目录的目录项中.(2)查看文件的 inode ...

  9. 第十二章Linux文件系统与日志

    1.inode 包含文件的元信息(1)inode 内容:文件的字节数.拥有者的 UID.GID.文件的读写执行权限.时间戳等,但不包含文件名.文件名是储存在目录的目录项中.(2)查看文件的 inode ...

随机推荐

  1. 2019 ICPC徐州网络赛 E. XKC's basketball team(二分)

    计蒜客题目链接:https://nanti.jisuanke.com/t/41387 题目大意:给定一组无序序列,从第一个数开始,求最远比这个数大m的数,与这个数之间相隔多少数字?如果没有输出-1,否 ...

  2. Nginx之server和location配置使用

    配置server代码段: server { server_name www.meiduo.site; listen ; root /home/python/Desktop/meiduo_mall_ad ...

  3. [Java] 多线程基础详细总结,附加详细实例

    详细代码在文章底部 目录 基础概念 进程与线程 单线程与多线程 实现线程的4中方式 thread.start()和runnable.run()的区别 Thread和Runnable的异同 线程的基本操 ...

  4. centos7安装Nginx 配置及反向代理

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Ngin ...

  5. X86现代汇编·02

    下面4这个寄存器只能用16位或3N位名称访问3N位寄存器 :ESI EDI EBP ESP 16位寄存器: SI DI BP SP 特殊用法:乘除指令默认用EAX默认使用ECX为循环计数器ESP用于寻 ...

  6. Go字符串

    1. 字符串的声明是使用 package main import "fmt" func main() { /* Go中的字符串是一个字节的切片. 可以通过将其内容封装在“”中来创建 ...

  7. 自定义控件之绘图篇(四):canvas变换与操作

    具体操作见下面链接: http://blog.csdn.net/harvic880925/article/details/39080931/

  8. VS2017编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version

    VS2017编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll ve ...

  9. python 中对list去重

    本文去重的前提是要保证顺序不变,本文给出了多种实现方法,需要的朋友可以参考下 1.直观方法 最简单的思路就是: ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] ...

  10. 新手第一次在GitHub上提交代码完整教程

    提交步骤: 1.创建github repository(仓库) 2.安装git客户端 3.为Github账户设置SSH key 4.上传本地项目到github 一.创建github repositor ...