码迷,mamicode.com
首页 > 其他好文 > 详细

inode和链接

时间:2021-06-10 17:46:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:作用   企业   conf   完成   文件删除   针对   eth0   mkdir   编译安装   

文件核心 属性知识

35111123 -rwx-w---x. 1 root root  188 May 12 16:20 oldboy.txt
第一列     索引节点(数字)
第二列     首字符代表文件类型   中间9个字符,文件权限  .和selinux(高级安全组建)相关符号
第三列     硬链接数
第四列     文件对应的用户
第五列     文件对应的用户组
第六列     文件大小(目录不是)
第七-九列  文件修改时间
第十列     文件名

索引节点

1.什么是索引节点
中文意思是索引节点(index node)
是磁盘上的一块(存储空间)
一个inode大小256字节
2.索引节点作用
存储文件的属性信息(大小,用户,组,修改时间,ls -l的信息都在里面放着)
还存放一个重要的东西,指向文件真正实体的位置信息(指针)
3.它是怎么产生的?
1)买回来磁盘,要使用的4个步骤
(1) 分区
(2)格式化 ,创建文件系统
文件系统-------->组织和存储数据的一种机制.
(3).挂载
(4).使用
2).inode是在磁盘格式化,创建文件系统的时候产生的
Linux  ----->ext4,xfs         windows  ----->NTFS,fat32
创建(文件系统)的时候就会生成inode和block
数据分为两种形式:
1)实体称之为真正数据
2)属性信息    元数据:数据的数据信息
元数据就要放在inode里。
真正数据就放在block里。

4.inode的特点

1.是文件的唯一标识
2.大小256字节
3.存放文件属性信息及指向文件所在位置信息
4.创建文件的时候就分配inode
5.一个文件有且只有一个inode(分区或磁盘内)
6.多个文件有相同的inode,是同一个文件的不同文件名。这样的文件被称为硬链接文件。

技术图片

5.Linux系统读取文件的原理
创建文件./oldboy/log
1.文件名放到/下block里
2.分配inode(256字节),放文件属性
3.分配block,放文件内容(多个block)
企业生产案例:No space left on device问题企业案例
No space left on device
没有空间剩余在设备上
windows通常是block满了
磁盘满有两种情况.
1.inode满了
2.block满了
任意之一不够用空间就会提示  No space left on device
单个block(4K)
磁盘存储的都是大文件这个时候一定是block不够用.
磁盘存储的都是小文件(低于block大小的文件)这个时候一定是inode不够用.
分区在格式化的时候inode多,还是block多?为什么?
block多
工作中磁盘里的文件大部分都是大于4K,所以格式化时候,系统自动安排适合业务场景的分配模式.
一个文件至少是一个inode,消耗inode基本就是一对一.消耗block是一对多.
block介绍
1.存在文件实体内容的空间
2.默认大小1,2,4K.
3.一个block只能被一个文件占有,不能放两个文件.
如果文件大小0.1K,也会占有一个block.剩余3.9K浪费了.
4.block是文件系统存储大小的基本单位.
文件较大,block就是大点好,读数据是按block读取,block是4K,一次读4K.
文件较小,block小点好
分布式文件系统,block可能到64K.
block的特点如下:
磁盘读取数据是按Block为单位读取的。
每读取一个Block就会消耗一次磁盘I/O(input/output 磁盘读写)。
若文件比较大,一个文件可能占用多个Block。
若文件比较小,一个Block剩余空间会被浪费,无论内容有多小。

和磁盘block,inode有关的命令

1.查看文件inode
ls -li
2.查看磁盘和分区的inode
df -i
3.查看磁盘和分区的大小(block)
df -h

企业生产案例:No space left on device问题企业案例

df -h没有满啊?为什么?
实践:
环境准备,命令集合如下:
mkdir -p /app/logs              <==创建用于挂载的目录。
dd if=/dev/zero of=/dev/sdc bs=8K count=100 <==创建指定大小的文件。
mkfs.ext4 /dev/sdc              <==格式化。
mount -o loop /dev/sdc /app/logs       <==挂载。
df -h                     <==检查挂载结果。
block满了。
\cp /etc/services /mnt/asdasdf -a
cp: 写入"/mnt/asdasdf" 出错: 设备上没有空间
touch oldboy{1..94}
touch: 无法创建"oldboy93": 设备上没有空间
touch: 无法创建"oldboy94": 设备上没有空间
 df -i
文件系统         Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/loop0         104   103    1   100% /mnt
df -h
文件系统         容量 已用 可用 已用% 挂载点
devtmpfs                 2.0G  788K  2.0G    1% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G  100M  1.9G    6% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.1G   15G   13% /
/dev/sda1               1014M  138M  877M   14% /boot
tmpfs                    394M     0  394M    0% /run/us

什么情况会导致inode满?

1.小文件特别多的时候
2.多数情况下是基于日常Linux定时任务crond配置不当导致的

链接

1.链接可分为两种:一种为硬链接(Hard Link),另一种为软链接(Soft Link)
2.命令ln
ln -s创建链接则为软链接,软链接文件的文件类型为l(字母L)
创建硬链接语法:"ln 原始文件 目标文件"
创建软链接语法:"ln -s 原始文件 目标文件" 目标文件不能实现存在
3.什么是硬链接
1)具有[相同索引字节号]的文件,互相称之为硬链接文件
2)具有[相同索引字节号]的文件,指向用一个文件实体
4.硬链接文件作用
用于备份,防止误删文件
5.找一找互为硬链接的文件
. 和当前目录互为硬链接文件,点和当前目录是一个 
..和上一级目录互为硬链接文件
特征:索引节点相同
实践
ls -lid . ~ ./ /root
33574977 dr-xr-x---. 5 root root 4096 5月  13 2021 .
33574977 dr-xr-x---. 5 root root 4096 5月  13 2021 ./
33574977 dr-xr-x---. 5 root root 4096 5月  13 2021 /root
33574977 dr-xr-x---. 5 root root 4096 5月  13 2021 /root
ls -lid .. /
64 dr-xr-xr-x. 21 root root 4096 5月  17 23:23 /
64 dr-xr-xr-x. 21 root root 4096 5月  17 23:23 ..
问题:上面21数字代表/的硬链接数,请找出上面21数字的所有硬链接
1)当前/下子目录下的..都是.
2)当前目录的.
3)自身 /
硬链接实践
ln  源文件  硬链接文件 (不可事先存在)
mkdir /oldboy -p
touch /oldboy/oldboyfile  源文件
cd /oldboy
ln oldboyfile  oldboyfile_hard_link
ls -li
ln oldboyfile  oldboyfile_hard_link1
 结论:
1.只要有一个硬连接数,数据就不会丢。
2.把全部的硬链接删除,数据就丢失了。

硬链接知识小结:

1)具有相同inode节点号的多个文件互为硬链接文件,本质是相同文件不同文件名。
2)删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除。
3)待所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收
4)硬链接文件就是文件的另一个入口
5)可以通过给文件设置硬链接文件,来防止重要文件被误删。
6)通过执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接。
7)硬链接文件是普通文件,因此可以用rm命令删除。
8)创硬链接只能针对文件,不能针对目录。
软链接
1.什么是软链接
快捷方式,指向源文件的位置
2.为什么需要软链接?作用
1)复杂的路径简单化
ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 eth0
2)企业作用:编译安装的软件升级时候
nginx web服务
安装目录:/application/nginx-1.19.1
使用方面:/application/nginx  简单方便,程序软件配置的都是这个。
ln -s  /application/nginx-1.19.1  /application/nginx
升级版本:/application/nginx-1.20.2 正式使用。。
升级操作:
rm -f /application/nginx
ln -s /application/nginx-1.20.2 /application/nginx

软链接知识小结:

1)软链接类似Windows的快捷方式
2)软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体。
3)删除源文件,软链接文件依然存在,但是无法访问指向源文件路径内容了。链接失效的时候一般是白字红底闪烁提示。
4)执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接(目标不能存在)。
5)软链接和源文件是不同类型的文件,也是不同的文件,Inode号也不相同。
6)软链接文件的文件类型为字母(l),可以用rm命令删除。
7)软链接文件不仅可以针对文件,更可以针对目录(企业中常用)。

硬链接与软链接区别

ln命令创建硬链接,ln -s命令创建软链接。
目录不能创建硬链接,并且硬链接不可以跨越分区系统。
目录软链接特别常用,并且软链接支持跨越分区系统。
硬链接文件与源文件的inode相同,软链接文件与源文件inode不同。
删除软链接文件,对源文件及硬链接文件无任何影响。
删除文件的硬链接文件,对源文件及链接文件无任何影响。
删除链接文件的源文件,对硬链接无影响,会导致软链接失效。
删除源文件及其硬链接文件,整个文件会被真正的删除。

企业面试:请描述Linux中软链接和硬链接的区别

1)答分类:在Linux系统中,链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接或软链接(Symbolic Link)。
2)答概念:硬链接文件与源文件的Inode节点号相同,而软链接文件相当于Windows下面的快捷方式(Inode节点号与源文件不同)
3)答创建:默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接
4)答特点:
a)不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到。
b)软链接可以跨文件系统,硬链接不可以跨文件系统。
c)删除软链接文件,对源文件及硬链接文件无任何影响。
d)删除文件的硬链接文件,对源文件及软链接文件无任何影响。
e)删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
f)同时删除源文件及其硬链接文件,整个文件才会被"真正"的删除。
5)答案例:硬链接用处不多,可以用来对重要文件做快照防止误删,对目录建立软链接在工作中很常用,例如:安装软件会用nginx-1.10作为目录,安装
完后设置软链接为nginx,即保持了版本号标识,又方便使用,以及后续软件升级。

Linux系统文件删除原理

1)静态文件
:i_link=0,解释硬链接数为0,所有的硬链接都删除文件就被删除了。
2)动态文件
i_count=0, 进程引用计数为0,没有被进程调用(使用)的文件。
3)原理见图

真实企业级磁盘满故障的案例仅给出地址,读者可以打开地址观看。

Web服务器磁盘满故障深入解析,地址为http://oldboy.blog.51cto.com/2561410/612351

inode和链接

标签:作用   企业   conf   完成   文件删除   针对   eth0   mkdir   编译安装   

原文地址:https://www.cnblogs.com/mrliu-L/p/14868075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!