Linux文件系统详解

Linux的文件系统详解

1. 目录组成

  • /bin 这是存放常用的终端命令的目录,例如:ls、mount、rm 等等。
  • /boot 存放系统启动所需的文件,包括 linux kernel,一个随机存储磁盘镜像和 Bootloader 的配置文件。
  • /dev 这个目录存放所有的设备文件,这些不是常规文件,而是指系统上的各种硬件设备,包括硬盘驱动器。
  • /etc 存放系统的全局配置文件,这里面的配置文件会影响系统所有用户的系统环境。
  • /home 用户的家目录,每个用户都有自己的家目录。
  • /lib 存放非常重要的动态库和内核模块。
  • /media 作为外部设备的一个挂载点,比如硬盘或者可移动设备(U盘、DVD、CD)。
  • /mnt 和 /media 一样,也是一个挂载点,但是专用于挂载临时的设备,例如网络文件系统。
  • /opt 用于安装系统额外的软件,这里安装的软件是手动安装的,不受 Ubuntu 软件管理包的管理。
  • /proc 一个虚拟文件系统,为内核提供向进程发送信息的机制。
  • /root root 用户的家目录,不在 /home/ 中,即使 /home/ 不可用,也允许引导系统。
  • /run 在引导过程的早期可用的tmpfs(临时文件系统),其中存储了临时运行时数据。此目录下的文件将在引导过程开始时删除或截断。
  • /sbin 包含通常只应由超级用户使用的重要管理命令。
  • /srv 包含 HTTP(/srv/www/)或 FTP 等服务的数据目录。
  • /sys 可以访问的虚拟文件系统,用于设置或获取有关内核系统视图的信息。
  • /tmp 应用程序使用的临时文件的位置。
  • /usr 包含大多数用户实用程序和应用程序,并部分复制根目录结构,包括例如 /usr/bin/ 和 /usr/lib。
  • /var 致力于可变数据,例如日志,数据库,网站和临时脱机(电子邮件等)文件,这些文件从一次启动到下一次启动。它包含的一个值得注意的目录是 /var/log,其中保存了系统日志文件。

2. 文件管理原理剖析

2.1 inode与block详解

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

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

1
[root@localhost ~]# stat install.log

这里的“install.log”可替换为任意文件。
Linux文件系统(深入剖析原理)
通过上面的示意图,可以看出一个对于一个文件来说记录的元信息包括以下几点:

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

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

1
[root@localhost ~]# file /etc/profile

这里的“/etc/profile”可替换为任意文件。
Linux文件系统(深入剖析原理)

inode的内容

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

查看文件对应的inode号码

ls -i命令

1
[root@localhost ~]# ls -i install.log

Linux文件系统(深入剖析原理)
stat命令

1
[root@localhost ~]# stat install.log

Linux文件系统(深入剖析原理)

某个磁盘中inode的容量

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

1
[root@localhost ~]# df -i /dev/sda1

Linux文件系统(深入剖析原理)

inode号码的特殊作用

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

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

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

1
[root@localhost ~]# find ./* -inum 50331717 -delete

其中“50331717”为文件的inode号码。
Linux文件系统(深入剖析原理)

2.2 硬链接与软链接

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

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

(1) 硬链接

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

ln 源文件 目标名

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

1
[root@localhost mnt]# ln aaa.txt test.txt

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

(2) 软链接

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

ln -s 源文件名 目标名称

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

1
[root@localhost mnt]# ln -s aaa.txt test.txt

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

2.3 恢复误删文件(重要!!)

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

(1) 检查恢复用的工具

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

xfsdump软件包
xfsrestore软件包

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

1
2
[root@localhost ~]# rpm -qa | grep xfsdump
[root@localhost ~]# rpm -ql xfsdump | grep xfsrestore

Linux文件系统(深入剖析原理)

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

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

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

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

1
[root@localhost data]# xfsdump -f /opt/data_dump /dev/sdb1

回车进行交互界面后,先后输入备份地址以及备份文件或设备名称。
Linux文件系统(深入剖析原理)
Linux文件系统(深入剖析原理)

(3) 模拟误删环境

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

1
[root@localhost ~]# rm -rf /data/*

Linux文件系统(深入剖析原理)

(4) 开始恢复作业

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

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

1
[root@localhost data]# xfsrestore -f /opt/data_dump /data/

其中,“/opt/data”为备份文件的位置,“/data”为存放恢复后文件的位置。
Linux文件系统(深入剖析原理)
Linux文件系统(深入剖析原理)
但是,使用xfsdump工具进行备份也有很大的限制:

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

2.4 日志文件

日志文件概述

功能:

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

分类:

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

常用日志文件存放位置

默认路径:

/var/log目录下

其它主要日志文件的存放地点:
Linux文件系统(深入剖析原理)

日志消息级别

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

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

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

日志记录格式

Linux文件系统(深入剖析原理)

用户日志与程序日志

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

-------------本文结束感谢您的阅读-------------
0%