代码编织梦想

inode table  索引节点表

要理解inode,要从文件存储说起,文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个"扇区“ sector组成一个 block。

文件数据都储存在"块"中,那么显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

在linux系统里,每个分区里inode可以重复,但跨分区不行。每个分区的inode是相互独立的。一个节点可以对应多个文件。

用 ls -i 选项即可查看文件节点号。

[root@localhost testdir]# ls -i

24 a1  22 a1link  19 a2  25 a3  21 a4  20 file1  23 file2  17 lhj  16 lll1

//前面的数字为inode节点号

这里值得重复一遍,Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

2.inode的大小

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

可以使用`df -i`查看各分区inode节点使用量和剩余量

[root@localhost testdir]# df -i

文件系统                        节点号总量已经使用  未使用  已使用百分比   挂载点

Filesystem                       Inodes      IUsed      IFree         IUse%        Mounted on

/dev/mapper/vg0-root   1310720      7069        1303651    1%              /

tmpfs                               125517         1             125516      1%              /dev/shm

/dev/sda1                        51200          38            51162        1%              /boot

/dev/mapper/vg0-usr     655360        79377      575983      13%            /usr

/dev/mapper/vg0-var    1310720        2744      1307976     1%              /var

3.硬链接

硬链接指的是一个节点上有多少个文件在使用,一个节点可以多个文件使用,但多个节点不能对应一个文件,因此我们删除文件的时候实则是删除了节点的一个名称而已,需一直删除到硬链接为0,并且原有的节点号被其他文件所调用,然后覆盖了原有的数据,才能彻底的说是删除了整个文件。

1)、用ls -l 即可查看文件的硬链接数。

[root@localhost testdir]# ls -l

此列数字为硬链接

-rw-r--r--     1   root root   30 Jul 26 01:18 a1

lrwxrwxrwx 1 root root   11 Jul 26 01:17 a1link -> /testdir/a1

-rw-r--r--     1 root root    0 Jul 26 01:16 a2

-rw-r--r--     2 root root  115 Jul 26 02:48 a3

-rw-r--r--     1 root root   44 Jul 26 02:44 a4

-rw-r--r--   2 root root  115 Jul 26 02:48 aa3

-rw-r--r--     1 root root   21 Jul 26 05:56 file1

-rw-r--r--     1 root root   33 Jul 26 05:58 file2

-rw-r--r--     2 root root    0 Jul 25 21:14 lhj

drwxr-xr-x   2 root root 4096 Jul 26 00:29 lll1

硬链接不能跨分区创建,不能对目录进行创建。

链接数 = 一个节点上的文件数量

注意,目录里的'.' 和 ‘..’以及目录下的文件或目录里的 ‘ ..  ’也属于当前目录的硬链接数。

2)/用 ln  file1 file2即可创建文件硬链接,创建之后看似是两个独立的文件,其实是一个相同的文件。只是一个节点的两个名字而已

[root@localhost testdir]# ln a3 aa3

[root@localhost testdir]# ll -i

total 28

24 -rw-r--r-- 1 root root   30 Jul 26 01:18 a1

22 lrwxrwxrwx 1 root root   11 Jul 26 01:17 a1link -> /testdir/a1

19 -rw-r--r-- 1 root root    0 Jul 26 01:16 a2

25 -rw-r--r-- 2 root root  115 Jul 26 02:48 a3      //节点号为25

21 -rw-r--r-- 1 root root   44 Jul 26 02:44 a4

25 -rw-r--r-- 2 root root  115 Jul 26 02:48 aa3      /节点号为25     所以两个文件实则是一个文件

20 -rw-r--r-- 1 root root   21 Jul 26 05:56 file1

23 -rw-r--r-- 1 root root   33 Jul 26 05:58 file2

17 -rw-r--r-- 2 root root    0 Jul 25 21:14 lhj

16 drwxr-xr-x 2 root root 4096 Jul 26 00:29 lll1

[root@localhost testdir]#

4.符号链接、软链接

软连接相当于windows中的快捷方式,只是创建一个没有实质数据的文件然后链接到实际文件。删除机制与硬链接不同,软链接删除实际文件之后软链接就失效了。软链接可以跨分区创建。

1)、创建软链接用`ln -s `命令

格式:

ln -s      f2原始文件的绝对路径或相对路径(相对于软链接文件的路径)  f2link(链接名)

[root@localhost testdir]# ln -s /testdir/a4   /tmp/a4link

//在/tmp/下创建一个名为a4link的软链接,然后使用绝对地址指定链接的实际文件

[root@localhost testdir]# ls -l /tmp/a4link

//用ls -l 查看链接文件,所指向的地址是/testdir/a4

lrwxrwxrwx 1 root root 11 Jul 26 11:21 /tmp/a4link -> /testdir/a4

5、软连接和硬链接的区别。

硬链接:

1.硬链接指定是一个节点所指定的文件数量,因此,多个文件可以使用一个节点,但不能使用多个节点。

2.硬链接在删除的时候必须删除硬链接为0、并且原有的节点号被其他文件占有并覆盖之后才能算彻底删除文件。

软链接:

1.软链接可以拥有多个节点来指向一个文件,

2.软链接在删除的时候不用关心硬链接数是否为0 ,只要软链接所指向的实际文件不存在,当前的软链接即失效。

例题:一台服务器上,内存硬盘都比较大,但磁盘中各个独立的小文件比较多,然后在创建文件的时候提示磁盘空间不足了,此时并不是因为磁盘容量不够了,而是inode节点被使用完了,所以删除一些inode节点之后就又可以继续使用了。

实用小李子:

1.查看每个inode节点的大小,可以用如下命令:

#sudo dumpe2fs -h /dev/hda | grep "Inode size"

2.我们在弄inode的时候想把inode节点用完做一下磁盘实验,但是磁盘分区节点太多了,手动创建岂不是要到手抽了还得创,与其这样还不如利用linux强大的功能,循环创建文件,知道inod节点被用完为止。

#for id in {1..194569} do touch /boot/f$id;echo f$id is created;done

注意:1..194560 看自己的分区节点使用量来定,用df -i  即可查看inode节点总量及使用量,我这里就定制那么多,可以更改的,

echo后面的内容为把创建过程显示到屏幕上。

done为for语句结束

6.file:查看文件文本类型

file filename  //直接显示文件文本类型

-b:不显示文件名

//可以参照看一下,使用-b选项之后标准输出的内容没有文件名,只有文件内文本的类型

[root@localhost testdir]# file a4

a4: ASCII text

[root@localhost testdir]# file -b a4

ASCII text

-f:(批量处理)读取文件中的文件路径

//创建一个文件,里面放一些文件的路径,然后使用-f选项来对文件内的文件路径逐一进行查看文本类型

[root@localhost testdir]# echo  "/etc/passwd\n/testdir/a4 \n/etc/fstab" > a5

//用echo覆盖输出文件路径到a5中

[root@localhost testdir]# cat a5      //查看文件文件内容,正是我们指定的文件路径内容

/etc/passwd

/testdir/a4

/etc/fstab

[root@localhost testdir]# file -f a5      //用-f 查看a5 文件内的文件进行一一查看文件文本类型

/etc/passwd:  ASCII text

/testdir/a4 : ASCII text

/etc/fstab:  ASCII text

-F :指定分隔符

[root@localhost testdir]# file a3    //查看原有的分割符

a3: ASCII text

[root@localhost testdir]# file -F ' filetype is' a3

//用-F 并重新指定分割符之后输出的结果,-F指的是将原来的分隔符换成用户指定的分隔符。

a3 filetype is ASCII text

软硬链接与硬链接-爱代码爱编程

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接 【硬连接】 硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只

关于linux系统的命令操作-爱代码爱编程

安装linux操作系统(u盘启动盘) 1.用u盘做一个启动盘:a.在windows环境下在安装ultraiso并打开 b。在启动项中把系统镜像文件(.iso)写入u盘 c.启动盘制作完成。 2在windows中右键-

在linux中创建文件目录软链接、硬链接的方法-爱代码爱编程

1. 使用方式:ln [option] source_file dist_file              -f 建立时,将同档案名删除              -i 删除前进行询问               -s 软链接,否则默认为硬链接               n -s abc cde 建立abc 的软连接              ln

软链接和硬链接的创建-爱代码爱编程

硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。硬链接可由命令 link 或 ln 创建,如:link oldfile newfile ln oldfile newfile由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。硬链接不能对目录进行创建,只可对文件创建。软链接

文件的软硬链接_咸鱼程序员的博客-爱代码爱编程

1. 软链接 软链接原理 软链接又叫符号链接(symbolic link),本身是一个文件,类似于Windows下的快捷方式,可以通过连接文件转到原文件,即访问原文件的内容。 软链接创建 创建一个软链接 ln -s

linux ln命令:在文件之间建立链接(硬链接和软链接)_power_wy的博客-爱代码爱编程

1.ext4 文件系统 如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统是如何工作的。分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件

linux-01_jhchengxuyuan的博客-爱代码爱编程

今天任务: 1.vmware11的安装(提前安装好) 2.虚拟机的安装(提前安装好) 3.linux系统的目录结构介绍 4.linux的基本命令操作 5.Linux–环境配置 6.用户管理命令 7.进程管理命令

我对Linux里的符号链接(软链接)和硬链接的认识-爱代码爱编程

1.创建链接 首先ln --help 可以看到默认创建的链接是硬链接。若是要创建符号链接则需要使用-s 参数 格式是: ln 源文件 链接文件  或者 ln -s  源文件 链接文件 2.区别 首先我创建了a和b文件。 然后又分别建立了a的硬链接a2,b的符号链接b2 由图中即可看出区别: 1.a和a2的 inode号相同,b和b2的i

flume详解 从原理到应用-爱代码爱编程

第一章 flume概述 1.1 flume定义 flume是cloudera提供的一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统。flume基于流式架构,灵活简单。flume最主要的作用:实时读取服务器本地磁盘的数据,将数据写入HDFS或kafka消息队列中。 flume的设计宗旨是向hadoop集群批量导入基于事件的海量数据。一个典型的例

linux中建立文件的硬链接,实例讲解Linux系统中硬链接与软链接的创建-爱代码爱编程

导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。硬链接与软链接的区别从根本上要从Inode节点说起,下面就以实例讲解Linux系统中硬链接与软链接的创建,来实际看看Linux中两种链接方式的不同。 首先要弄清楚,在Linux系统中,内核为每一

linux大量小文件拷贝速度慢,linux快速复制大量小文件方法 nc+tar【转】-爱代码爱编程

1,在需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩的方式。 2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。 nc和tar可以用来快速的在两台机器之间传输文件和目录,比ftp和scp要来得简单的多。 由于nc是一个超轻量的命令,所以一般busybox都会集成它。当一个lin

linux创建a1的硬链接a2,Linux命令-重定向和软硬链接-爱代码爱编程

echo 功能说明:显示文字. 语 法:echo [-ne][字符串] 或 echo [–help][–version] 参数:   -n 不要在最后自动换行 重定向 >是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用>,将日志文件清空(文件大

linux 文件管理 : ln 命令详解_linux ln 更新-爱代码爱编程

  ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。 注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。 语法 ln(选项)(参数) 选项 -b或--backup:删除,覆盖目标文件之前的备份; -d或-F或—