Day11-Linux系统iNode及链接知识及企业按哪里精讲

Day11-Linux系统iNode及链接知识及企业按哪里精讲

  • 1. 文件核心 属性知识
    • 1.1 什么是索引节点(inode)。
    • 1.2 索引节点作用
    • 1.3 inode是怎么产生的?
    • 1.4 inode的特点?
    • 1.5 Linux系统读取文件的原理
    • 1.6 企业生产案例:No space left on device问题企业案例
  • 2. block介绍
    • 2.1 Block的特点如下:
    • 2.2 企业生产案例:No space left on device问题企业案例
    • 2.3 什么情况会导致inode满?
    • 2.4 链接
    • 2.5 什么是硬链接?
      • 2.5.1 硬链接文件作用
      • 2.5.2 硬链接实践
      • 2.5.3 硬链接知识小结:
    • 2.6 软链接:
      • 2.6.1 什么是软链接?
      • 2.6.2 为什么需要软链接?作用
      • 2.6.3 软链接原理图
      • 2.6.4 软链接知识小结
    • 2.7 企业面试:请描述Linux中软链接和硬链接的区别
    • 2.8 Linux系统文件删除原理

1. 文件核心 属性知识

1.1 什么是索引节点(inode)。

中文意思是索引节点(index node)

是磁盘上的一块【存储空间】。

一个inode大小256字节。

看到形态是一个串数字(身份证)。

1.2 索引节点作用

存储文件的属性信息(大小、用户、组、修改时间 ls -l的信息都在里面放着)。

还存放一个重要的东西,指向文件真正实体的位置信息(指针)。

1.3 inode是怎么产生的?

1)买回来磁盘,要使用的4个步骤。

 (1)分区(打隔断),c,d,e/ sda1/sda2(2)格式化(装修),创建文件系统。什么是文件系统?组织和存储数据的一种机制。(装修风格)(3)挂载(搞个门搞个窗户)(4)使用(拎包入住)

2)inode是在磁盘格式化,创建[文件系统]的时候产生的。

​ Linux文件系统ext4,xfs,windows文件系统ntfs,fat32

​ 创建[文件系统]的时候就会生成inode和block

​ inode和block都是磁盘空间的组成。

​ 数据分为两种形式:

​ 1)AV实体称之为真正数据。

​ 2)AV属性信息(40G),美国生产。元数据:数据的数据信息。

​ 找女生,先要获取源数据,然后在需要数据。

​ 元数据就要放在inode里。

​ 真正数据就放在block里。

1.4 inode的特点?

1)是文件的唯一标识(身份证)。

2)大小256字节。

3)存放文件属性信息及指向文件所在位置信息。

4)创建文件的时候就分配inode。

5)一个文件有且只有一个inode(分区或磁盘内)。

6)多个文件有相同的inode,是同一个文件的不同文件名。

​ 这样的文件被称为硬链接文件。

1.5 Linux系统读取文件的原理

在这里插入图片描述

​ 创建文件。/oldboy.log

​ 1.文件名放到/下block里。

​ 2.分配inode(256字节),放文件属性。

​ 3.分配block,放文件内容(多个block)。

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

No space left on device

没有 空间 剩余 在设备上

windows通常是block满了。

磁盘满有两种情况。

1.inode满了。

2.block满了。

任意之一不够用空间就会提示No space left on device

一个AV40G,属性占一个inode,100万个block(单个block4K)。

磁盘存储的都是大文件这个时候一定block不够用。

磁盘存储的都是小文件(低于block大小的文件)这个时候一定inode不够用。

0.1K

分区在格式化的时候inode多,还是block多?为什么?

解答:block多

工作中磁盘里的文件大部分都是大于4K,所以格式化时候,系统自动安排适合业务场景的分配模式。

一个文件至少是一个inode,消耗inode是基本就是一对一。消耗block是1对多

[root@oldboy ~]# mkfs.ext4 /dev/sdc                            #<==格式化。
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc is not a block special device.
Discarding device blocks: 完成                            
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)Stride=0 blocks, Stripe width=0 blocks
============================================
104 inodes, 800 blocks 
============================================

2. block介绍

1)存放文件实体内容的空间。

2)默认大小1,2,4K。

3)一个block只能被一个文件占有,不能放两个文件。

如果文件大小0.1K,也会占一个block。剩余3.9K浪费了。

4)block是文件系统存储大小的基本单位。

如果文件较大,block就是大点好,读数据是按block读取,block是4K,一次读4K。

如果文件小,

分布式文件系统,block可能到64K

2.1 Block的特点如下:

  • 磁盘读取数据是按Block为单位读取的。
  • 每读取一个Block就会消耗一次磁盘I/O(input/output 磁盘读写)。
  • 若文件比较大,一个文件可能占用多个Block。
  • 若文件比较小,一个Block剩余空间会被浪费,无论内容有多小。

和磁盘block,inode有关的命令

1)查看文件inode

[root@oldboy ~]# ls -li
总用量 29724
33583628 -rw-r--r--. 1 root root      184 512 2021 ab.txt

2)查看磁盘和分区的inode

[root@oldboy ~]# df -i
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 500271     337  499934       1% /dev
tmpfs                    503267       1  503266       1% /dev/shm
tmpfs                    503267    1217  502050       1% /run
tmpfs                    503267      16  503251       1% /sys/fs/cgroup
/dev/mapper/centos-root 8910848   67454 8843394       1% /
/dev/sda1                524288     326  523962       1% /boot
tmpfs                    503267       1  503266       1% /run/user/0

3)查看磁盘和分区的大小(block)

[root@oldboy ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 2.0G     0  2.0G    0% /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/user/0

2.2 企业生产案例: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满了

[root@oldboy ~]# \cp /etc/services /mnt/asdasdf -a
cp: 写入"/mnt/asdasdf" 出错: 设备上没有空间

inode满了

[root@oldboy mnt]# touch oldboy{1..94}
touch: 无法创建"oldboy93": 设备上没有空间
touch: 无法创建"oldboy94": 设备上没有空间
[root@oldboy mnt]# df -i
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 500271     342  499929       1% /dev
tmpfs                    503267       1  503266       1% /dev/shm
tmpfs                    503267    1224  502043       1% /run
tmpfs                    503267      16  503251       1% /sys/fs/cgroup
/dev/mapper/centos-root 8910848   67457 8843391       1% /
/dev/sda1                524288     326  523962       1% /boot
tmpfs                    503267       1  503266       1% /run/user/0
/dev/loop0                  104     103       1     100% /mnt
[root@oldboy 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

2.3 什么情况会导致inode满?

1)小文件特别多的时候。

2)多数情况下是基于日常Linux定时任务crond配置不当导致的。

2.4 链接

  1. 链接可分为两种:一种为硬链接(Hard Link),另一种为软链接(Soft link)。

  2. 命令是ln

    如果使用ln -s创建链接则为软链接,软链接文件的文件类型为l(字母L)。

    创建硬链接语法:“ln 原始文件 目标文件”(注意空格)。

    创建软链接语法:“ln -s 原始文件 目标文件”(目标文件不能事先存在)。

2.5 什么是硬链接?

1)具有【相同索引节点号】的文件,互相称之为硬链接文件。

2)具有【相同索引节点号】的文件,指向同一个文件实体。

2.5.1 硬链接文件作用

用于备份,防止误删文件。

找一找互为硬链接的文件。

. 和当前目录互为硬链接文件,点和当前目录是一个目录?可以

… 和上一级目录互为硬链接文件。

特征:索引节点相同。

实践:

[root@oldboy mnt]# cd ~
[root@oldboy ~]# pwd
/root
[root@oldboy ~]# cd .
[root@oldboy ~]# cd ~
[root@oldboy ~]# cd ./
[root@oldboy ~]# cd /root
[root@oldboy ~]# ls -lid . ~ ./ /root
33574977 dr-xr-x---. 5 root root 4096 513 2021 .
33574977 dr-xr-x---. 5 root root 4096 513 2021 ./
33574977 dr-xr-x---. 5 root root 4096 513 2021 /root
33574977 dr-xr-x---. 5 root root 4096 513 2021 /root
[root@oldboy ~]# ls -lid .. /
64 dr-xr-xr-x. 21 root root 4096 517 23:23 /
64 dr-xr-xr-x. 21 root root 4096 517 23:23 ..

​ 问题:上面21数字代表/的硬链接数,请找出上面21数字的所有硬链接。

​ 1)所有/下子目录下的…都是。

​ 2)当下目录的 .

​ 3)自身 /

2.5.2 硬链接实践

ln 源文件 硬链接文件(不能事先)

[root@oldboy oldboy]# mkdir /oldboy -p
[root@oldboy oldboy]# touch /oldboy/oldboyfile  #源文件
[root@oldboy oldboy]# cd /oldboy
[root@oldboy oldboy]# ln oldboyfile  oldboyfile_hard_link
[root@oldboy oldboy]# ls -li oldboyfile oldboyfile_hard_link
50339361 -rw-r--r--. 2 root root 0 May 15 04:28 oldboyfile
50339361 -rw-r--r--. 2 root root 0 May 15 04:28 oldboyfile_hard_link
[root@oldboy oldboy]# ln oldboyfile  oldboyfile_hard_link1
[root@oldboy oldboy]# ls -li
total 0
50339361 -rw-r--r--. 3 root root 0 May 15 04:28 oldboyfile
50339361 -rw-r--r--. 3 root root 0 May 15 04:28 oldboyfile_hard_link
50339361 -rw-r--r--. 3 root root 0 May 15 04:28 oldboyfile_hard_link1

结论:

1.只要有一个硬连接数,数据就不会丢。

2.把全部的硬链接删除,数据就丢失了。

[root@oldboy oldboy]# echo "i am oldboy" >oldboyfile
[root@oldboy oldboy]# cat oldboyfile
i am oldboy
[root@oldboy oldboy]# cat oldboyfile_hard_link
i am oldboy
[root@oldboy oldboy]# cat oldboyfile_hard_link1
i am oldboy[root@oldboy oldboy]# ln oldboyfile_hard_link oldboyfile  #找回
[root@oldboy oldboy]# cat oldboyfile
i am oldboy

2.5.3 硬链接知识小结:

  • 具有相同Inode节点号的多个文件互为硬链接文件,本质是相同文件不同文件名。

  • 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。

    只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除。

  • 待所有的硬链接文件及源文件被删除后,

    a.存放新的数据会占用这个文件的空间,

    b.磁盘fsck检查(定时或人工)的时候,删除的数据也会被系统回收(养成删除及使用多套环境测试的好习惯)。

  • 硬链接文件就是文件的另一个入口(相当于超市的前门、后门)。

  • 可以通过给文件设置硬链接文件,来防止重要文件被误删。

  • 通过执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接。

  • 硬链接文件是普通文件,因此可以用rm命令删除。

  • 创硬链接只能针对文件,不能针对目录。

2.6 软链接:

2.6.1 什么是软链接?

软链接就是快捷方式,指向源文件的位置。

2.6.2 为什么需要软链接?作用

1)复杂的路径简单化。

[root@oldboy oldboy]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 ~/oldboy

​ 2)企业作用:编译安装的软件升级时候

​ nginx web服务

​ 安装目录:/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
[root@oldboy oldboy]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 ~/oldboy
[root@oldboy oldboy]# ls -l ~/oldboy
lrwxrwxrwx. 1 root root 41 518 00:35 /root/oldboy -> /etc/sysconfig/network-scripts/ifcfg-eth0
[root@oldboy oldboy]# ls -l /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 1 root root 308 57 2021 /etc/sysconfig/network-scripts/ifcfg-eth0

2.6.3 软链接原理图

在这里插入图片描述

2.6.4 软链接知识小结

  • 软链接类似Windows的快捷方式(可以通过readlink查看其指向)。

  • 软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体。

  • 删除源文件,软链接文件依然存在,但是无法访问指向源文件路径内容了。

    链接失效的时候一般是白字红底闪烁提示。

  • 执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接(目标不能存在)。

  • 软链接和源文件是不同类型的文件,也是不同的文件,Inode号也不相同。

  • 软链接文件的文件类型为字母(l),可以用rm命令删除。

  • 软链接文件不仅可以针对文件,更可以针对目录(企业中常用)。

2.7 企业面试:请描述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,即保持了版本号标识,又方便使用,以及后续软件升级。

2.8 Linux系统文件删除原理

1)静态文件

:i_link=0,解释硬链接数为0,所有的硬链接都删除文件就被删除了。

2)动态文件

i_count=0, 进程引用计数为0,没有被进程调用(使用)的文件。

3)原理见图

在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行人重识别综述

Deep Learning for Person Re-identification: A Survey and Outlook 论文地址https://arxiv.org/pdf/2001.04193 1. 摘要 we categorize it into the closed-world and open-world settings. closed-world&#xff1a;学术环境下 open-world &#xff1a;实际应用场景下 2…

儿时游戏“红色警戒”之“AI警戒”

一、红色警戒里“警戒”命令背后的算法原理是什么 在《红色警戒》系列即时战略游戏中&#xff0c;“警戒”命令背后的算法原理相对简单但又实用&#xff0c;其核心目标是让单位能够自动检测并反击一定范围内的敌方单位。虽然具体的实现细节未公开&#xff0c;但可以推测其基本…

Slack 给平台加入了 AI 驱动的搜索和总结功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

有什么办法解决SQL注入问题

随着互联网的普及和数字化进程的加速&#xff0c;Web攻击已经成为网络安全领域的一大威胁。Web攻击不仅可能导致个人隐私泄露、财产损失&#xff0c;还可能对企业和国家的安全造成严重影响。下面德迅云安全就分享一种常见的web攻击方式-SQL注入&#xff0c;了解下什么是SQL注入…

123.买卖股票的最佳时机II

123.买卖股票的最佳时机II 原题链接&#xff1a;完成情况&#xff1a;参考代码&#xff1a;_122买卖股票的最佳时机II_可以多次买入卖出01_122买卖股票的最佳时机II_可以多次买入卖出02_122买卖股票的最佳时机II_常规dp_122买卖股票的最佳时机II_一维dp_122买卖股票的最佳时机…

leetcode(动态规划)53.最大子数组和(C++详细解释)DAY12

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 提示 2.解答思…

【阅读笔记】红外探测器盲元国标标准及盲元识别

1、盲元定义 盲元的定义&#xff1a;盲元是红外焦平面探测器中响应过高或过低的探测单元&#xff0c;即无法准确成像的像元。盲元主要分为噪声盲元和响应率差异盲元两大类。 线阵红外探测器应用中&#xff0c;经常存在相邻的像元之间响应率有明显差异&#xff0c;其灰度响应输…

Allegro172版本如何用自带功能改变过孔网络属性操作指导

Allegro172版本如何用自带功能改变过孔网络属性操作指导 在用Allegro做PCB设计的时候,时常会需要将过孔的网络进行变更,可以将原来的过孔删除,再重新打一个,这种方法难免会繁琐一些。 当然我们可以借助skill工具来完成更换过孔网络的更改,除此之外,Allegro自带的功能完成…

[计算机网络]---Https协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、https协…

消息中间件之RocketMQ源码分析(十)

Namesrv启动流程 第一步:脚本和启动参数配置。 启动命令 nohup ./bin/mqnamesrv -c ./conf/namesrv.conf > dev/null 2>&1 & 通过脚本配置启动基本参数&#xff0c;比如配置文件路径、JVM参数&#xff0c;调用NamesrvStartup.main()方法&#xff0c;解析命令行的…

【PyQt6] 框选截图功能

1 简介 书接上回, 全屏截图实现起来很简单, 来点稍微复杂点的, 框选截图 原理很简单, 弄个控件实现全屏半透视, 在全屏控件上画一个选框或者再弄一个几乎全透的子控件,实现鼠标拖动,缩放,移动, 键盘wasd 微调 用一个控件实现起来会很完美, 但是逻辑全部堆砌在一起,看代码会很…

Mac电脑玩《幻兽帕鲁》卡怎么办?2024年最新解决方法

幻兽帕鲁目前已经在steam卖出了100多万份数&#xff0c;可谓是爆火现象级的游戏。如今在游戏中&#xff0c;我们可以实现工农业自动化&#xff0c;为了实现自动化&#xff0c;将手工作业交给帕鲁就尤为重要。建造工厂&#xff0c;并安排帕鲁在其中工作吧。只要有足够的食物&…

K8s服务发现组件之CoreDNS/NodeLocalDNS /kubeDNS

1 coredns 1.1 概述 1.1.1 什么是CoreDNS CoreDNS 是一个灵活可扩展的 DNS 服务器&#xff0c;可以作为 Kubernetes 集群 DNS&#xff0c;在Kubernetes1.12版本之后成为了默认的DNS服务。 与 Kubernetes 一样&#xff0c;CoreDNS 项目由 CNCF 托管。 coredns在K8S中的用途,…

spring aop @annotation的用法

直接看原文: spring aop annotation的用法-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- annotation用在定义连接点时&#xff0c;对连接点进行限制。比如我们想对标注了…

prometheus+mysql_exporter监控mysql

prometheus+mysql_exporter监控mysql 一.安装mysql 1.下载:wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2.安装客户端:yum -y install mysql57-community-release-el7-10.noarch.rpm 3.安装服务端:yum -y install mysql-community-se…

day10:分割链表

问题描述&#xff1a; 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4…

【HTML】SVG实现炫酷的描边动画

前沿 今天闲来无事&#xff0c;看到Antfu大佬的个性签名&#xff0c;觉得还是非常炫酷的&#xff0c;于是也想要搞一个自己的个性签名用来装饰自己的门面&#xff0c;不过由于手写的签名太丑了&#xff0c;遂放弃。于是尝试理解原理&#xff0c;深入研究此等密法&#xff0c;终…

VLM多模态图像识别小模型UForm

参考:https://github.com/unum-cloud/uform https://huggingface.co/unum-cloud/uform-gen2-qwen-500m https://baijiahao.baidu.com/s?id=1787054120353641459&wfr=spider&for=pc demo:https://huggingface.co/spaces/unum-cloud/uform-gen2-qwen-500m-demo UF…

市场复盘总结 20240219

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 22% 最常用的…

Shiro-05-5 分钟入门 shiro 安全框架实战笔记

序言 大家好&#xff0c;我是老马。 前面我们学习了 web 安全之 Spring Security 入门教程 这次我们来一起学习下另一款 java 安全框架 shiro。 什么是Apache Shiro&#xff1f; Apache Shiro是一个功能强大且易于使用的Java安全框架&#xff0c;它为开发人员提供了一种直…