文章目录
1文件存储系统基本概念
文件存储简介
文件数据:包括元信息与实际数据。
硬盘存储:文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节。
硬盘分区结构:硬盘分区后,文件的存储结构可以分为inode和block两部分。
inode和block对应关系:元信息 → inode,数据 → block。
访问文件的简单流程:
- 用户访问文件。
- 系统查找文件对应的inode。
- 判断用户是否具备访问权限。
- 如果具备权限,则读取数据block;否则返回“Permission denied”。
inode(索引节点)
定义:Inode是文件系统中用于存储文件元信息的结构。每个文件或目录在文件系统中都有一个对应的inode。
一个独立的文件必须占用一个inode,至少占用一个block。
内容:Inode包含文件的元信息,如文件大小、拥有者User ID、权限、时间戳(ctime、mtime、atime)等,但不包括文件名和实际数据内容。
作用:Inode负责存储文件的元数据,并指向文件数据所在的block。操作系统通过inode号码来识别和访问文件,而不是通过文件名。
重要性:Inode在文件系统中起到关键作用,决定了文件的管理、访问权限、文件操作的效率等多个方面。
block(块)
定义:Block是硬盘文件系统中的基本存储单位。每个文件在硬盘上存储时,占用的最小单位是一个block。
大小:一个block通常由多个扇区组成,例如在典型的文件系统中,常见的block大小为4KB(由8个512字节的扇区构成)。
作用:Block用于存储文件的实际数据内容。当文件较小时,可能只占用一个block,而较大的文件则会分布在多个block中。
重要性:文件系统通过block来高效地管理和存取文件数据,减少磁盘碎片,优化读写性能。
元数据
定义:元数据是关于数据的数据,即描述数据属性和结构的额外信息。在文件系统中,元数据描述了文件或目录的各种属性,但不包括实际的数据内容。
内容:
- 文件大小:文件的字节数。
- 文件权限:文件的读、写、执行权限设置。
- 拥有者和用户组:文件的用户ID(UID)和组ID(GID)。
- 时间戳:记录文件的创建、修改和访问时间。
- 文件类型:标识文件是普通文件、目录、符号链接等。
- 链接计数:指示有多少个硬链接指向该文件。
作用:元数据用于管理和组织文件系统中的数据,包括文件的存储、权限管理、访问控制等。它帮助操作系统和用户快速获取文件的信息,而无需读取实际数据内容。
重要性:元数据是文件系统功能的基础,确保文件和目录的正确管理和高效访问,支持文件的查找、排序、权限验证等操作。
2inode详解
inode的内容
文件的元信息:inode包含文件的元信息,如文件的字节数、User ID(不包含文件名)、Group ID、读写执行权限、时间戳等。
查看inode信息:用stat
命令可以查看某个文件的inode信息。例如:stat aa.txt
。
Linux系统文件时间属性:系统记录文件的三个主要时间属性:
- ctime(change time):最后一次改变文件或目录属性的时间。
- atime(access time):最后一次访问文件或目录的时间。
- mtime(modify time):最后一次修改文件或目录内容的时间。
目录文件的结构:目录也是一种文件,结构包括文件名与inode号码的对应关系。
inode号码识别:每个inode都有一个号码,操作系统用inode号码来识别文件,而不使用文件名。对于用户,文件名只是inode号码的别称。
inode的号码
系统内部过程:当用户打开文件时,系统通过以下步骤识别文件:
- 找到文件名对应的inode号码。
- 根据inode号码获取inode信息。
- 根据inode信息找到文件数据所在的block,读取数据。
查看inode号码的方法:
ls -i
命令:查看文件名对应的inode号码。例如:ls -i aa.txt
。stat
命令:查看文件的inode信息中的inode号码。例如:stat aa.txt
。
inode的大小
inode的空间占用:inode也会消耗硬盘空间,每个inode的大小一般为128字节或256字节。
inode总数的确定:格式化文件系统时确定inode的总数。使用df -i
命令可以查看每个硬盘分区的inode总数和已经使用的数量。
inode的特殊作用
inode与文件名的分离:由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下特点:
- 当文件名包含特殊字符时,可能无法正常删除文件,但可以直接删除inode来删除文件。
- 移动或重命名文件时,只改变文件名,不影响inode号码。
- 打开文件后,系统通过inode号码识别文件,不再考虑文件名。
- 扩展解释:在类Unix系统中,即使文件被删除,只要有进程仍然打开该文件,文件数据仍然保留在磁盘上,直到所有引用该文件的进程关闭为止。(例如,MacOS下一个文件正在打开使用,其文件可以任意移动,文件名可以任意更改,而Windows下不可操作)
3链接文件
链接文件的作用:为文件或目录建立链接文件。
链接文件分类:硬链接和软链接(符号链接)。
- 软链接 (Symbolic Link):删除原始文件后失效,适用于文件或目录,可以与原始文件位于不同文件系统或分区。
- 硬链接 (Hard Link):删除原始文件后仍旧可用,只可用于文件,必须与原始文件在同一文件系统中。
特性 | 软链接 | 硬链接 |
---|---|---|
删除原始文件后 | 失效 | 仍旧可用 |
使用范围 | 适用于文件或目录 | 只可用于文件 |
保存位置 | 可以与原始文件位于不同文件系统或不同分区 | 必须与原始文件在同一个文件系统中(如一个Linux分区)内 |
4日志文件
日志的功能:用于记录系统、程序运行中发生的各种事件,便于诊断和解决系统故障。
日志文件的分类:日志文件分为内核及系统日志、用户日志、程序日志。
- 内核及系统日志:由系统服务rsyslog统一管理,日志格式基本相似。主配置文件在/etc/rsyslog.conf。
- 用户日志:记录系统用户登录及退出系统的相关信息。
- 程序日志:由应用程序独立管理的日志文件。
日志保存位置:日志文件默认位于/var/log目录下。
主要日志文件介绍:
- 内核及公共消息日志:/var/log/messages,记录内核消息及公共日志信息。
- 计划任务日志:/var/log/cron,记录计划任务产生的事件信息。
- 系统引导日志:/var/log/dmesg,记录系统引导过程中的事件信息。
- 邮件系统日志:/var/log/maillog,记录电子邮件活动。
- 用户登录日志:/var/log/secure、/var/log/lastlog、/var/log/wtmp、/var/run/btmp,记录用户登录、注销及系统启动事件。
详细介绍常见日志文件的路径及其用途:
日志类型 | 日志文件路径 | 说明 |
---|---|---|
内核及公共消息日志 | /var/log/messages | 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、错误、网络连接、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。 |
计划任务日志 | /var/log/cron | 记录 crond 计划任务产生的事件信息。 |
系统引导日志 | /var/log/dmesg | 记录Linux系统在引导过程中的各种事件信息。 |
邮件系统日志 | /var/log/maillog | 记录进入或发出系统的电子邮件活动。 |
用户登录日志 | /var/log/secure | 记录用户认证相关的安全事件信息。 |
用户登录日志 | /var/log/lastlog | 记录每个用户最近的登录事件(以二进制格式存储)。 |
用户登录日志 | /var/log/wtmp | 记录每个用户的登录、注销及系统启动和停机事件(以二进制格式存储)。 |
用户登录日志 | /var/run/btmp | 记录失败的、错误的登录尝试及验证事件(以二进制格式存储)。 |
内核及系统日志
rsyslog管理:由系统服务rsyslog统一管理。
- 软件包名为rsyslog-7.4.7-16.el7.x86_64。
- 主要程序为/sbin/rsyslogd。
- 配置文件为/etc/rsyslog.conf。
日志消息级别:系统日志分为以下级别,从紧急到调试:
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
日志记录的一般格式:
-
时间标签: 日志记录的时间戳,格式为
月 日 时:分:秒
,例如Jun 3 11:41:23
。 -
主机名: 记录日志的主机的名称,例如
localhost
。 -
子系统名: 产生日志的子系统或程序名称以及它的进程ID,用方括号括起来,例如
yum[21611]
。 -
消息字段: 具体的日志消息内容,描述了发生的事件,例如
Erased: firefox
。 -
日志示例:
[root@localhost ~]# more /var/log/messages Jun 3 11:41:23 localhost yum[21611]: Erased: firefox
日志解释:在
2024年6月3日11:41:23
,主机localhost
上的yum
子系统(进程ID为 21611)执行了删除操作(删除了firefox
软件包)。
用户日志分析
用户日志文件:保存用户登录、退出系统等信息。
- /var/log/lastlog:最近的用户登录事件。
- /var/log/wtmp:用户登录、注销及系统开关机事件。
- /var/run/utmp:当前登录用户的详细信息。
- /var/log/secure:与用户验证相关的安全性事件。
分析工具:有users、who、w、last、lastb等工具。
last
命令用于查询成功登录的用户记录。lastb
命令用于查询登录失败的用户记录。
程序日志分析
程序日志管理:由各应用程序独立管理。
- Web服务日志:/var/log/httpd,
access_log
记录访问事件,error_log
记录错误事件。 - 代理服务日志:/var/log/squid/,包括access.log和cache.log。
分析工具:使用文本查看、grep过滤检索、Webmin管理套件查看日志,或者使用awk、sed等文本处理工具。专用日志分析工具有Webalizer和Awstats等。
日志管理策略
备份与归档:及时备份和归档日志。
日志保存期限:延长日志的保存时间。
日志访问权限:控制日志文件的访问权限,防止泄露敏感信息,如账号、口令等。
集中管理日志:将服务器的日志文件集中管理,便于统一收集、整理和分析,防止日志信息的丢失、篡改或删除。