深入剖析Linux文件系统

本次博客将带领各位深入剖析Linux文件系统、熟悉Linux系统中常见的日志文件、了解一般故障的分析与解决办法。


文章目录:

  • inode与block详解
  • 硬链接与软链接
  • 恢复误删文件——最重要
  • 日志文件

一、inode与block详解

一个完整的文件通常都是由元信息和实际数据组成,其中元信息包含了文件权限以及许多文件属性(属组、属主。。。。。。),而实际数据就是我们日常写入的信息。系统会把这两个分别存放在inode和block中。

查询某个文件的inode信息——stat命令

[[email protected] ~]# stat install.log

这里的“install.log”可替换为任意文件。

通过上面的示意图,可以看出一个对于一个文件来说相当重要的一点,那就是三个时间属性:

最近访问ctime(change time):最后一次改变文件或属性的时间(例如执行了chmod等命令)
最近更改atime(access time):最后一次访问文件或者目录的时间
最近改动mtime(modify time):最后一次修改文件或目录内容的时间

查看某个文件的类型——file命令

[[email protected] ~]# file /etc/profile

这里的“/etc/profile”可替换为任意文件。

inode的内容

一般来说,无论是微软还是Linux系统我们都是通过文件名来查找文件,但在系统内部却是使用inode码来识别不同的文件,对于系统来说文件名只是indode号码便于识别的别称。
表面上,用户通过文件名来打开文件,实际上,在系统内部中这个过程分为三步:

查看文件对应的inode号码

ls -i命令

[[email protected] ~]# ls -i install.log


stat命令

[[email protected] ~]# stat install.log

某个磁盘中inode的容量

使用df -i命令来查看每个硬盘inode总数和已使用数量

[[email protected] ~]# df -i /dev/sda1

inode号码的特殊作用

由于inode号与文件名分离,所以会出现一些在Linux系统特有的现象:

文件名中包含特殊字符,无法通过“rm”命令删除。这时候就可以通过直接删除inode号码来达到直接删除的文件的作用。

直接删除文件相关inode号可以使用:

[[email protected] ~]# find ./* -inum 50331717 -delete

其中“50331717”为文件的inode号码。

二、硬链接与软链接

硬链接与软链接这两者都是Linux系统中的链接方式,不过两者有所不同:

硬链接:通过Linux文件系统的inode链接来生成新的文件名
软链接:类似微软系统的快捷方式,能够进行快速的链接

1、硬链接

使用ln命令创建,具体格式:

ln 源文件 目标名

执行该命令时,会在当前目录下生成一个同inode号但文件名不同的文件:

[[email protected] mnt]# ln aaa.txt test.txt

因为硬链接只能在同一目录下创建,所以这里可以使用相对路径。执行结束后可以看见硬链接与源文件名称不同,但inode号码完全一样。这时候即使删除源文件,后建立的硬链接依旧能够打开文件。

2、软链接

使用“ln -s”命令创建,具体格式为:

ln -s 源文件名 目标名称

执行该命令时,会生成一个独立文件,指向源文件(inode不同):

[[email protected] mnt]# ln -s aaa.txt test.txt

因为软链接可以在不同一目录下创建,所以这里如果要跨目录创建需用绝对路径。执行结束后可以看见软链接就类似于快捷方式,相当于一个全新的文件,源文件被删除,软链接随即不可用。

三、恢复误删文件(重要!!)

在日常工作中,经常会因为种种原因而导致文件数据丢失(就是误删~~)。不要担心,这里就教给各位在XFS格式中误删恢复的方法。

1、检查恢复用的工具

所谓工欲善其事必先利其器,没有以下的两个工具,数据恢复只不过是空谈

xfsdump软件包
xfsrestore软件包

使用rpm命令在已经安装的rpm包中对其进行筛选。如果没有则需要通过yum库进行安装。

[[email protected] ~]# rpm -qa | grep xfsdump
[[email protected] ~]# rpm -ql xfsdump | grep xfsrestore

2、对磁盘文件系统进行备份

将目标磁盘使用xfsdump工具进行备份,格式:

xfsdump -f 备份存放位置 要备份的文件或设备

这里我们将目标磁盘sdb1里的所有文件备份到/opt/data_dump中;

[[email protected] data]# xfsdump -f /opt/data_dump /dev/sdb1

回车进行交互界面后,先后输入备份地址以及备份文件或设备名称。

3、模拟误删环境

新手将磁盘内文件全部删除

[[email protected] ~]# rm -rf /data/*

4、开始恢复作业

在保证不会有新的文件写入的情况下(重要!!!)

使用xfsrestore命令,将备份的磁盘数据进行恢复

[[email protected] data]# xfsrestore -f /opt/data_dump /data/

其中,“/opt/data”为备份文件的位置,“/data”为存放恢复后文件的位置。


但是,使用xfsdump工具进行备份也有很大的限制:

  1. 只能备份已挂载的文件系统
  2. 必须使用root的权限才能操作
  3. 只能备份XFS文件系统
  4. 备份后的数据只能让xfsrestore解析
  5. 不能备份两个具有相同UUID的文件系统

四、日志文件

日志文件概述

功能:

用于记录系统、程序运行中发生的事件
通过日志,有助于诊断和解决系统故障

分类:

内核及系统日志(系统装好自带):
由系统服务syslog统一管理,格式基本相同
用户日志:
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用独立管理,记录格式不统一

常用日志文件存放位置

默认路径:

/var/log目录下

其它主要日志文件的存放地点:

日志消息级别

日志消息从低到高,从轻微到严重分为0~7,总共8个级别

0 EMERG (紧急):会导致主机系统不可用的情况
1 ALERT ?(警告):必须马上采取措施解决的问题
2 CRIT ???(严重):比较严重的情况
3 ERR ????(错误):运行出现错误
4 WARNING(提醒):可能会影响系统功能的事件
5 NOTICE ?(注意):不会影响系统但值得注意
6 INFO ???(信息):一般信息
7 DEBUG ??(调试):程序或系统调试信息等

其中,
0~3为严重,必须采取措施否则会导致出现严重业务问题;
4~7为轻微,不处理也不会出现大的业务问题。

日志记录格式

用户日志与程序日志

1、用户日志
保存了用户登录、退出系统等相关操作

/var/log/lastlog:最近的用户登录事件,
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件

2、程序日志
由相应服务的应用程序独立管理

Web服务:/var/log/httpd/access_log(error_log)
代理服务:/var/log/squid/access.log(cache.log)
FTP服务:/var/log/xferlog

原文地址:https://blog.51cto.com/14484404/2433305

时间: 2024-10-14 21:14:18

深入剖析Linux文件系统的相关文章

【转】LINUX文件系统剖析

引自:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/   在文件系统方面,Linux? 可以算得上操作系统中的 "瑞士军刀".Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统.对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台.本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构.

<资料收集>Linux文件系统剖析

来源:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 基本的文件系统体系结构 Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子.通过使用一组通用的 API 函数,Linux 可以在许多种存储设备上支持许多种文件系统.例如,read 函数调用可以从指定的文件描述符读取一定数量的字节.read 函数不了解文件系统的类型,比如 ext3 或 NFS.它也不了解文件系统所在的存储媒体,比如 AT Attachm

嵌入式 Linux根文件系统移植(一)——Linux文件系统简介

嵌入式 Linux根文件系统移植(一)--Linux文件系统简介 本文对文件系统分析的代码来源于linux 2.6.35.7版本. 一.文件系统的体系结构 文件系统是对存储设备上的数据和元数据进行组织的机制,便于用户和操作系统的交互.Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开.Linux文件系统的体系结构如下: 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C库(glibc),为文件系统调用(打开.读取.

Linux文件系统之inode与软硬连接

一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文

Linux 文件系统模型

声明:本文仅限于 cnblogs 发布,其他第三方网站均为盗版,原文地址:Linux 文件系统模型 在 Linux 环境下有过一些经历的同学可能都会遇到一个问题,这个问题就是往机器上插入 U盘 或者其他外接设备的时候,居然经常没有反应,上网查找之后别人会教你怎么用几条命令然后你就可以像操作正常文件一样操作这些设备了(当然,现在很多流行的桌面Linux环境例如 Ubuntu/Centos 都支持自动挂载了). 但是,可能我们也曾想过为什么 Linux 要这么麻烦,很多时候我遇到这种问题都是想毕竟

linux 文件系统笔记

文件格式: windows:PE linux:  ELF 文件系统: rootfs FHS:规定linux应该创建哪些目录 /下的目录结构: /boot: 系统启动相关的文件,如内核,initrd,以及 grub(bootloader) /dev :设备文件(例如:光盘,cdrom) 类型: 块设备:随机访问, 数据块 字符设备:线性访问, 以字节为单位 设备号:主设备号(major),次设备号(minor) /etc:  配置文件(绝大多数为纯文本格式) /home: 用户的家目录,默认为/h

Linux文件系统

文件系统与目录结构 文件系统 1.文件和目录被组织成一个单根倒置数结构 2.文件系统从根目录下开始,用"/"表示 3.根文件系统(rootfs):root filesystem 4.文件名称区分大小写 5.以.开头的文件为隐藏文件 6.路径分隔符:/ 7.文件的两类数据: 元数据(metadata)和 数据(data) 8.文件系统分层结构:LSB (Linux Standard Base) 9.FHS(Filesystem Hierarchy System) 文件名规则 1.文件名最

linux文件系统索引节点浅析

索引节点,Inode是Index Node的缩写,存储于文件系统上的任何文件都可以用索引节点来表示,所以也可以说索引节点是整个linux文件系统的基础.操作系统在读取硬盘的时候不是一个块一个块的来读取信息,因为这样做的话效率太低,文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者.文件的创建日期.文件的大小等等.这种储存文件元信息的区域就叫做inode,中文译名为"索引节点". 在Linux系统中,文件系统主要分为两部分,

linux --> 文件系统十问

文件系统十问 参考:http://djt.qq.com/article/view/620 关于Linux文件系统相关的问题: 1.机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的? 2.touch一个新的空文件占用磁盘空间吗? 占用的话占用多少? 3.新建一个空目录占用磁盘空间吗?占用多少?和新建一个文件相比,哪个占用的更大? 4.你知道文件名是记录在磁盘的什么地方吗? 5.文件名最长多长?受什么制约? 6.文件名太长了会影响系统性能吗?为什么会产生影响? 7.一个目录