Indoe和block:
文件是存储在硬盘上的,硬盘的最小存储单位叫做"扇区”(sector),每个扇区存储512字节。 一般连续八个扇区组成一个"块"(block),一个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此,一个文件必须占用一个inode,并且至少占用一个block。
inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Limux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是irnote号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码:通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限; 如果有,就指向相对应的数据block,并读取数据
tips:
1.根据文件名查找到indoe号
2.根据indoe号找到indoe信息
3.根据indoe信息
4.读取数据 拒绝访问
inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode 区,存放 inode所包含的信息。每个inode的大小,一般是128 字节或256字节。
通常情况下不需要关注单个inode的大小,而是需要重点关注inode 总数。inode的总数在格式化时就给定了,执行 "df -i" 命令即可香看每个硬盘分区对应的inode总数和已经使用的inode数量。
由于 inode 号码与文件名分离,导致Linux系统具备以下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响inode号码;
3.打开一个文件以后,系统就以inode 号码来识别这个文件,不再考虑文件名。
4.使用vi编辑器修改文件数据保存后,会生成一个新的 inode号码。
总结:
文件存储在硬盘上
硬盘 最小存储单元 扇区 512字节
系统存取文件数据时 是通过 块(block)来读取,
块(block)由连续8个扇区组成,4kb大小,块是文件存取的最小单元
文件 存储时 文件名 和 文件数据 分开存储的
文件数据 包含 元信息 和 实际数据
文件名——>目录文件
元信息(包含除了文件名以外的文件属性)—> inode
实际数据——>块(block )
用户访问文件时,通过文件名找到对应的inode号,
通过indoe号获取inode信息,
根据inode信息判断用户是否有权限访问文件,
有则指向对于的数期block并读取数据,无则拒绝访问
查看inode号:
ls -i
stat
atime 最近的文件访问时间
mtime 最近的文件内容修改时间
ctime 最近的文件属性修改时间
每个文件系统(分区)中indoe数量是有限的,可通过 df -i 查看
移动文件或修改文件名,使用echo修改文件内容都不会改变 inode 号
使用vi 编辑器修改文件会改变 inode号,因为 vi 编辑器是会替换源文件的
linux系统下载文件:
wget http://.... [-o] 小o
curl -L http:// [-O] 大O
实验1:模拟inode号
先分磁盘
使用ext4格式化
建立data文件并挂载
创键文件名,填满inode号
实验2:
实验3:
xfsrestore -f /opt/dump_sdb1 /data/ 使用xfsrestore
日志分析:
公共日志/var/ log / messages文件的记录格式
时间标签:消息发出的目期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容。
内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/下。
常见的一些日志文件:
#内核及公共消息日志:
/var/log/messages:记录1inux内核消息及各种应用程序的公共日志信息,包括启动、Io错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
#计划任务日志:
/var/ log/ cron:记录crond计划任务产生的事件信息。
#系统引导日志:
/var/log / dmesg:记录Linux系统在引导过程中的各种事件信息。
#邮件系统日志:
/var/ log/maillog:记录进入或发出系统的电子邮件活动。
#用户登录日志:
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/lastlog:记录每个用户最近的登录事件。二进制格式
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式
vim /etc/rsyslog.conf #查看rsyslog.conf配置文件,规则配置格式:【设备.级别 动作】
*.info;mail.none ; authpriv.none ; cron. none /var/ log/ messages
*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none #表示某事件的信息不写到日志文件里(这里比如是邮件)
系统日志 /var/ log / messages
用户登录日志 / var/log/ secure
公共日志/var/ log / messages文件的记录格式
时间标签:消息发出的目期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容。
本章总结
block与inode
硬链接与软链接恢复误删除的文件
Linux主要包含的日志文件
Linux系统的日志消息级别
Linux系统中用户日志的查询命令
journalctl 可以直接查看 /var/log/messages 日志内容
-r 倒序看,从最新的日志开始查看
-u 指定服务,用于之查看某个服务的日志
-f 可以实时跟踪日志的更新
程序自己维护日志记录,httpd 网站服务程序使用两个日志文件:
access_log #记录客户访问事件
error_log #记录错误事件。