9Linux文件系统管理(下)
Posted 小小ITa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9Linux文件系统管理(下)相关的知识,希望对你有一定的参考价值。
文件元数据及节点
Linux是如何构成的
文件由目录项、inode和数据块三部分组成:
目录项:包括文件名和inode table。
Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。
数据块:包含文件的具体内容
详细到具体的狭义的文件和目录则是:文件=Inode+数据块,目录=目录项。
inode表结构
inode定义:指在许多“类Unix文件系统”中的一种数据结构,用于描述文件系统对象(包括文件、目录、设备文件、socket、管道等)。每个inode保存了文件系统对象数据的属性和磁盘块位置。文件系统对象属性包含了各种元数据(如:最后修改时间) ,也包含用户组(owner )和权限数据。又称文件索引节点,包含文件的基础信息以及数据块的指针。
inode有上图中的左边区域组成,数据块由右边区域构成。不同的文件大小,通过多层级的间接指针协同完成。
直接块指针有12个,假设一个block块大小为4KB,所以直接指针可以保存48KB的文件
间接块指针:每个指针占用4个字节,一个block是4KB,所以可以将一个块拆分成1024个指针,那么它的存储数据1024*4KB=4MB
双重间接块指针:同理可得它可以存储的数据为1024*4MB=4GB
三级指针可以储存文件数据大小为1024*4GB=4TB
文件系统如何存取文件的?
1、访问文件,先进入目录,目录中有对应的目录项中有对应文件名和inode号;
2、根据文件名,找到文件对应的inode number;
3、再根据indoe number读取到文件的inode table;
4、再根据inode table中的pointer(指针)读取到对应的block;
查看inode、block命令
df -i 查看分区总inode情况
ll -i 查看目录下各文件所innode number
stat 查看文件所对应的inode number
、
dumpe2fs -h /dev/sda1 | grep "Inode size" 查看每个inode节点的大小
dumpe2fs -h /dev/sda1 | grep "Block size" 查看每个块的大小
文件管理命令cp、rm、mv与inode
cp命令:分配新的inode好,在inode表中生成新条目,在目录中创建目录项;将名称与inode编号关联;生成新文件;
mv命令:如果文件在同一个文件系统内,用新的文件名创建对应的目录项;删除旧目录条目对应的旧文件名;不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动
如果在不同的文件系统,mv相当于cp和rm
rm命令:链接数递减,从而释放inode号可以被重用;把数据块放在空闲列表中;删除目录项;数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
软链接和硬链接
硬链接
本质上是给文件起一个新的名称,实质为同一个文件;
硬链接特性:
创建硬链接会在对应的目录中增加额外的记录项引用文件;
对应于同一文件系统上一个物理文件;
每个目录引用相同的inode号;
创建是链接数递增;
删除文件时:rm命令减少计数的链接,文件还存在,到链接数为0时,文件才被删除;
不支持对目录创建硬链接;不支持跨文件系统创建硬链接;
软链接
一个符号链接指向另一个文件,类似快捷方式,本质上不是同一个文件;
软链接特征:
一个符号链接的内容是它应用文件的名称;
可以对目录创建软链接;
可以跨分区的文件事项;
指向的是另一个文件的路径;其大小为指向路径字符串的长度;不增加或减少目标文件inode的引用计数;
软链接如果使用相对路径,是相对于员文件的路径,而非相对于当前目录;
删除目标文件后,链接文件失效
软链接的方式常用于软件版本的升级,如mysql;使用软链接方式连接mysql目录;如下
软链接和硬链接区别:
案例1:创建文件时,提示无可用空间,但是df可以看到空间很多,为什么?如何解决?
问题点:inode空间已使用完
解决方法:删除无效文件
案例2:提示空间块满,使用rm删除了很大的无用文件后,df还看到空间不足,为什么?如何解决?
查看到有人在使用45g这个文件,所以无法进行彻底删除(lsof | grep delete)
恢复文件方法(查找到PID,进入该进程的pid的文件中,查找的文件,将文件拷贝);可用于误删除文件方式(进程还在情况)
正确删除文件方法:(可不用结束占用该文件的进程达到清理空间用途)
cat /dev/null /data/45g.txt
以上是关于9Linux文件系统管理(下)的主要内容,如果未能解决你的问题,请参考以下文章