<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://gentoo-zh.org/extern.php?action=feed&amp;tid=437&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Gentoo中文社区 / 深入理解Linux文件系统与日志分析]]></title>
		<link>http://www.gentoo-zh.org/viewtopic.php?id=437</link>
		<description><![CDATA[深入理解Linux文件系统与日志分析 最近发表的帖子。]]></description>
		<lastBuildDate>Thu, 22 Sep 2022 05:57:11 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[深入理解Linux文件系统与日志分析]]></title>
			<link>http://www.gentoo-zh.org/viewtopic.php?pid=444#p444</link>
			<description><![CDATA[<p>引言</p><p>本章内容我们讲解了inode和block的关系，恢复xfs 、ext类型的文件以及日志文件的管理与分析<br />一、inode与block<br />1.inode和block概述</p><p>&#160; &#160; 文件数据包括元信息与实际数据 （元信息：包含属性的相关信息，实际数据：文件内容）<br />&#160; &#160; 文件是存储在硬盘上的，硬盘的最小存储单位叫做&quot;扇区”(sector)，每个扇区存储512字节。<br />&#160; &#160; 一般连续八个扇区组成一个&quot;块&quot;(block)，一个块是4K大小，是文件存取的最小单位。操作系统读取硬盘的时候，是一次性连续读取多个扇区，即一个块一个块的读取的。<br />&#160; &#160; block(块)</p><p>&#160; &#160; 连续的八个扇区组成一个block(4K)<br />&#160; &#160; 是文件存取的最小单位</p><p>&#160; &#160; inode(索引节点)</p><p>&#160; &#160; 中文译名为“索引节点”，也叫i节点<br />&#160; &#160; 用于存储文件元信息</p><p>文件数据包括实际数据与元信息（类似文件属性)。文件数据存储在&quot;块&quot;中，存储文件元信息（比如文件的创建者、创建日期、文件大小、文件权限等）的区域就叫做inode。因此，一个文件必须占用一个inode，并且至少占用一个 block。</p><p>inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件，因此目录也是一种文件。</p><p>每个inode都有一个号码，操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名，而使用inode号码来识别文件。对于系统来说，文件名只是inode号码便于识别的别称，文件名和inode号码是一一对应关系，每个inode号码对应一个文件名。</p><p>所以，当用户在Linux系统中试图访问一个文件时，系统会先根据文件名去查找它对应的inode号码，通过inode号码，获取inode信息﹔根据inode信息，看该用户是否具有访问这个文件的权限;如果有，就指向相对应的数据block，并读取数据。</p><p>2.inode的内容</p><p>inode包含文件的元信息，具体来说有以下内容：</p><p>&#160; &#160; 文件的字节数 就是字节占了多少空间和文件大小<br />&#160; &#160; 文件拥有者的User ID<br />&#160; &#160; 文件的Group ID<br />&#160; &#160; 文件的读、 写、执行权限<br />&#160; &#160; 文件的时间戳<br />&#160; &#160; 文件类型<br />&#160; &#160; 链接数<br />&#160; &#160; 有关文件的其他数据.</p><p>2.2 Linux系统文件三个主要的时间属性</p><p>&#160; &#160; &#160; &#160; ctime(change time)<br />&#160; &#160; &#160; &#160; ◆最后一次改变文件或目录（属性)的时间<br />&#160; &#160; &#160; &#160; atime(access time)<br />&#160; &#160; &#160; &#160; ◆最后一次访问文件或目录的时间<br />&#160; &#160; &#160; &#160; mtime(modify time)<br />&#160; &#160; &#160; &#160; ◆最后一次修改文件或目录(内容)的时间</p><p>2.3目录文件结构<br />&#160; &#160; &#160; &#160; 目录也是一种文件<br />&#160; &#160; &#160; &#160; 目录文件的结构</p><p>&#160; &#160; 每个inode都有一个号码，操作系统用inode号码来识别不同的文件<br />&#160; &#160; Linux系统内部不使用文件名，而使用inode号码来识别文件<br />&#160; &#160; 对于用户，文件名只是inode号码便于识别的别称</p><p>3.inode的号码</p><p>用户通过文件名打开文件时，系统内部的过程</p><p>&#160; &#160; 1.系统找到这个文件名对应的inode号码<br />&#160; &#160; 2.通过inode号码，获取inode信息<br />&#160; &#160; 3.根据inode信息，找到文件数据所在的block，读出数据</p><p>查看inode号码的方法</p><p>&#160; &#160; ls -i命令:查看文件名对应的inode号码<br />&#160; &#160; ls -i aa.txt<br />&#160; &#160; stat命令:查看文件inode信息中的inode号码<br />&#160; &#160; stat aa.txt</p><p>4.inode的大小</p><p>&#160; &#160; &#160; &#160; inode也会消耗硬盘空间，每个inode的大小，一般是128字节或256字节<br />&#160; &#160; &#160; &#160; 格式化文件系统时确定inode的总数<br />&#160; &#160; &#160; &#160; 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量</p><p>5.inode的特殊作用</p><p>由于inode号码与文件名分离，导致Linux系统具备以下几种特有的现象:</p><p>&#160; &#160; 1.文件名包含特殊字符，可能无法正常删除。这时直接删除 inode，也可以删除文件<br />&#160; &#160; 2.移动文件或重命名文件，只是改变文件名，不影响inode号码<br />&#160; &#160; 3.打开一个文件以后，系统就以inode号码来识别这个文件，不再考虑文件名</p><p>&#160; &#160; 格式</p><p>&#160; &#160; 普通文件 find ./ -inum 52305140 -exec rm -i {} ;<br />&#160; &#160; find ./ -inum 52345140 -exec rm -rf {} \ 目录</p><p>&#160; &#160; find ./ -inum 50464299 -delete</p><p>6.链接文件</p><p>&#160; &#160; &#160; &#160; 为文件或目录建立链接文件<br />&#160; &#160; &#160; &#160; 链接文件分类<br />硬链接</p><p>ln 源文件目标位置</p><p>软链接</p><p>ln [-s] 源文件或目录... 链接文件或目标位置</p>]]></description>
			<author><![CDATA[dummy@example.com (batsom)]]></author>
			<pubDate>Thu, 22 Sep 2022 05:57:11 +0000</pubDate>
			<guid>http://www.gentoo-zh.org/viewtopic.php?pid=444#p444</guid>
		</item>
	</channel>
</rss>
