Linux 文件属性-上

一 硬盘

硬盘的使用过程:

​ 硬盘要存储数据,手写要分区,然后格式化创建文件系统,最后挂载.

二 linux 文件属性

[root@oldboyedu-39 ~]# ls  -lhi /etc/hosts
392476 -rw-r--r--. 2 root root 158 Jul 15 11:13 /etc/hosts

文字解释:
第一列:inode索引节点编号(相当于人的身份证号码,唯一),系统读取	     文件时首先通过文件名找到inode号码,然后才能读取到文件内       容.
第二列:文件类型及权限.
第三列:共11个字符:其中第一个字符为文件类型,随后9个字 符为文件       的对应权限,最后一个字符号"."是SElinux有关的一个标识.
第四列:硬链接个数,相当于超市的多个入口,可以从不同的文件入口进       入文件,还可以互为备份.
第五列:文件或目录所属的用户 文件的所有所有者(属主).linux里面       文件和程序的存在必须要有用户和组满足相应的存在需求.
第六列:文件或目录所属的组(属组).
第七列:文件或目录的大小;
第八列:文件的修改时间
第九列:文件名(不属于文件属性)

三 文件访问过程

ls 查看某个目录或文件时,如果加上-i 参数,就可以看到inode节点了

[root@oldboyedu-39 ~]# ls -lhi
total 40K
136871 -rw-------. 1 root root 1.1K Jul 14 23:27 anaconda-ks.cfg
130819 -rw-r--r--. 1 root root  22K Jul 14 23:27 install.log
130820 -rw-r--r--. 1 root root 5.8K Jul 14 23:26 install.log.syslog
[root@oldboyedu-39 ~]# stat /etc/hosts
  File: `/etc/hosts'
  Size: 158       	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 392476      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-07-15 11:47:34.174275837 +0800
Modify: 2019-07-15 11:13:40.617272242 +0800
Change: 2019-07-15 11:13:40.618272221 +0800

因为inode 要存放文件的属性信息,所以每个inode是有大小的,Centos5系列inode的默认大小是128字节,而Centos6系列inode的默认大小是256字节,inode的大小在区分被格式化创建文件系统之后定下来的,格式化以后就无法更改inode大小,格式化前可以通过参数指定inode的大小,但是一般企业工作环境没有这个需求.

四 inode 的小结:

来源

  1. 磁盘被分区并格式化为ext4文件系统,后会生成一定数量的inode和block.

意义

  1. inode称为index node索引(目录)节点,它的作用是存放文件的属性信息以及block的位置(指向文件的实体指针).

特色

  1. ext3/ext4 文件系统(Centos 5.x/6.x 默认的文件系统下),一个非空文件占用一个inode和block.(文件size比较大)
  2. inode 节点号相同的文件,互为硬链接文件,可以认为足一个文件不同入口.
  3. inode 在某一个文件系统(分区),是唯一的.

查看

​ ls -i(看某些文件的inode号码) 或者df -i (系统里面inode 用了多少剩余多少)

[root@oldboyedu-39 ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      1250928 55374 1195554    5% /
tmpfs           238282     1  238281    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot

四 block的知识小结

​ block是用老存储实际数据的,每个block的大小一般有1k,2k,4k几种.其中引导分区等为1K,其他普通分区多为4K(C6)

  • 特点:
    1. 磁盘读取数据是按block为单位读取的.
    2. 每读取一个block就会消耗一次磁盘I/O(input/output 磁盘读写)
    3. 文件比较大:一个文件可能占用多个block
    4. 文件比较小:一个block剩余空间会被浪费,无论内容有多少
  • 查看:
    1. dumpe2fs /dev/sda3|grep -i "block size"(block 大小 block用了多少 剩下多少)
    2. df -h(磁盘block使用情况)
    3. ls -lh

磁盘使用情况:

[root@oldboyedu-39 ~]# ls -lh /etc/hosts /etc/services 
-rw-r--r--. 2 root root  158 Jul 15 11:13 /etc/hosts
-rw-r--r--. 1 root root 626K Mar 22  2017 /etc/services
[root@oldboyedu-39 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.5G   17G   9% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot

五 inode 与 block

​ Inode,中文意思是索引节点(index node).在每个linux存储设备或存储设备(磁盘或硬盘)的分区两部分:第一部分是Inode,第二部分是Block.

Inode:存放的是文件/目录属性信息,没有文件名但是,inode里面唯独不包含文件名本身(文件的名字不是文件的属性)

Block:实际存放数据的位置/空间

​ 而inode就是用来存储这些数据属性信息的(也就是ls -l的结果),inode属性信息包括不限文件大小\属主(用户),归属的用户组,文件权限,文件类型,[修改]时间,还包含指向文件实体的指针的功能(block的位置,inode节点--block的对应关系)等.但是,inode里面唯独不包含文件本身.(文件的名字不是文件的属性)

Inode(属性信息的)+数据位置

​ Inode 除了记录文件属性的信息外,还会为每个文件进行信息索引,所以就有了inode的数值.操作系统根据指令,即可通过inode的值最快的找到相对应的文件实体.

inode,block之间的关系图:

六【企业案例】磁盘空间满了,no space lsft on device(磁盘空间不足)

1.4企业案例:磁盘空间满了如何解决
系统报错(no space left on device)磁盘空间不足
环境模拟:
[root@oldbouedu-39 ~]# mkdir -p /app/logs
[root@oldbouedu-39 ~]# dd if=/dev/zero of=/dev/sdc bs=8K count=10
10+0 records in
10+0 records out	
81920 bytes (82 kB) copied, 0.000131201 s, 624 MB/s
[root@oldbouedu-39 ~]# ls -l /dev/sdc
-rw-r--r-- 1 root root 81920 Apr 17 08:57 /dev/sdc
[root@oldbouedu-39 ~]# mkfs.ext4 /dev/sdc
mke2fs 1.41.12 (17-May-2010)
/dev/sdc is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 80 blocks
4 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group

Writing inode tables: done                            

Filesystem too small for a journal
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@oldbouedu-39 ~]# mount -o loop /dev/sdc /app/logs
[root@oldbouedu-39 ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      1250928 55447 1195481    5% /
tmpfs           238282     1  238281    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot
/dev/sdc            16    11       5   69% /app/logs
##############磁盘空间满了block满了##############
[root@oldbouedu-39 logs]# ls -lh /bin/ls
-rwxr-xr-x. 1 root root 115K Mar 23  2017 /bin/ls
[root@oldbouedu-39 logs]# cp /bin/ls .
cp: writing `./ls': No space left on device
[root@oldbouedu-39 logs]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.5G   17G   9% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   70K     0 100% /app/logs
[root@oldbouedu-39 logs]# rm ls –f
[root@oldbouedu-39 logs]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.5G   17G   9% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   14K   55K  21% /app/logs
################磁盘空间 inode满了########################
[root@oldbouedu-39 logs]# touch {1..6}.txt
touch: cannot touch `6.txt': No space left on device
[root@oldbouedu-39 logs]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.5G   17G   9% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdc         73K   14K   55K  21% /app/logs
[root@oldbouedu-39 logs]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      1250928 55447 1195481    5% /
tmpfs           238282     1  238281    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot
/dev/sdc            16    16       0  100% /app/logs
[root@oldbouedu-39 logs]# rm *.txt -f
[root@oldbouedu-39 logs]# ll
total 12
drwx------ 2 root root 12288 Apr 17 08:58 lost+found
[root@oldbouedu-39 logs]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      1250928 55447 1195481    5% /
tmpfs           238282     1  238281    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot
/dev/sdc            16    11       5   69% /app/logs

七 文件类型及文件扩展名

文件扩展名:

windows --- 通过扩展名区分文件的类型 .txt .avi
linux 	--- 扩展名----主要是是给别看的,并不影响.

文件类型

linux系统中,可以说一切(包括目录\普通文件\设备文件等)皆为文件.文件类型包含有普通文件,目录,字符设备文件,块设备文件,符号,软连接文件,管道文件等等;
文件类型标识符 文件类型说明
d(directory) 表示这是一个目录,如上文ext,z ext2fs中,目录是一个特殊的文件.
-(regula file) 表示这是一个普通的文件,入上文的oldboy.
l(小写字母) 表示这是一个符号/软连接文件,实际上它指向另一个文件.
b(block) 表示块设备和其他的外围设备,是特殊类型文件
c(character) 表示字符设备文件
s(socket) 表示Socket(套接字)文件
p(named pipe) 表示管道文件
find 命令 -type 的文件类型的参数
		b		block(buffered) special
		c		character(unbuffered) special
		d		directory
		p		named pipe(FIFO)
		f		regular file
		l		symboli link
		s		socket
		D		door(Solaris)

范例:

[root@oldboyedu-39 ~]# find /root/ -type f -exec ls -l {} \;
-rw-r--r--. 1 root root 5890 Jul 14 23:26 /root/install.log.syslog
-rw-r--r--. 1 root root 21736 Jul 14 23:27 /root/install.log
-rw-------. 1 root root 1073 Jul 14 23:27 /root/anaconda-ks.cfg
-rw-r--r--. 1 root root 176 May 20  2009 /root/.bash_profile
-rw-r--r--. 1 root root 129 Dec  4  2004 /root/.tcshrc
-rw-r--r--. 1 root root 176 Sep 23  2004 /root/.bashrc
-rw-r--r--. 1 root root 100 Sep 23  2004 /root/.cshrc
-rw-------. 1 root root 125 Jul 16 05:42 /root/.bash_history
-rw-------. 1 root root 719 Jul 15 10:46 /root/.viminfo
-rw-r--r--. 1 root root 18 May 20  2009 /root/.bash_logout

1.7.1 文件类型分别介绍

普通文件(regular file):

[root@oldboyedu-39 ~]# ls -l oldboy.sql 
-rw-r--r--. 1 root root 0 Jul 16 07:15 oldboy.sql

​ 通过用ls -l 来查看oldboy.sql的属性,可以看到第一列内容-rw-r--,注意的是第一个符号是-(英文字符减号),在Linux中,以这样的字符开头的文件就表示普通文件.

​ 这些文件一般是用相关的应用程序或系统命令创建,比如图:touch,cp ,tar,echo,cat ,>,>>等工具命令... ... 普通文件的删除方式可以使用rm命令:

[root@oldboyedu-39 ~]# ls -l oldboy.sql 
-rw-r--r--. 1 root root 0 Jul 16 07:15 oldboy.sql
提示:从上面测试可以看出,windows下的doc,ppt,zip,jpg等格式的文档在linux下都属于普通文件.Linux下的二进制文件,各种服务的配置文件如:/etc/exports,/etc/rc.local等都是纯文本文件.

普通文件(regular file):第一个属性为 "-" ,按照文件内容,又大略可分为:

1) (纯)文本文件(ASCII):文件内容可以直接读到数据,例如:字母,数字,特殊符号等.可以用cat命令读文件,比如配置文件几乎都是这种类型的.
2)二进制文件(bianary):linux中的命令程序就是属于这种格式.例如cat 命令就是一个二进制文件.
3) 数据格式文件(data):有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件.例如:Linux在用户登录是,都会将登录的数据记录在/var/log/wtmp(last 命令的数据库文件)那个lastlog(/var/log/lastlog)

补充:通过file命令可以查看文件类型

[root@oldboyedu-39 tmp]# ls -l /etc/hosts /tmp/etc.tar.gz /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23  2017 /bin/ls
-rw-r--r--. 2 root root    158 Jul 15 11:13 /etc/hosts
-rw-r--r--. 1 root root      0 Jul 16 07:38 /tmp/etc.tar.gz
[root@oldboyedu-39 tmp]# file /etc/hosts
/etc/hosts: ASCII text
[root@oldboyedu-39 tmp]# file /tmp/etc.tar.gz 
/tmp/etc.tar.gz: empty
[root@oldboyedu-39 tmp]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

八 文件的权限

​ Linux中的文件或目录的权限和用户及用户组关联很大,要理解这部分内容,需要先了解Linux系统中管理方面的知识.在我们的课程中已经详细讲解过这部分内容,具体用户管理.

​ Linux中每个文件或目录都有一组共9个基础权限位,每三位字符被分一组,他们分别是属主权限位(占三个字符),用户组权限位(占三个字符),其它用户权限位(占三个字符).在linux中正是这9个权限(更多权限位后面会提到)位来控制文件属主,用户组以及其它用户的权限.

软连接与硬链接

​ 在linux系统中,链接可分为两种:一种为硬链接(Hard Link),另一种为软链接或符合链接(Symbolic Link or Soft link or symlink).通过ln这个命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建的链接是硬链接.

硬链接

在同一个分区/文件系统中inode号码相同是硬链接.

​ 硬链接是指通过索引节点(Inode)来进行衔接.在Linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称位索引节点编号(Index Inode)简称Inode,即在系统中文件的编号.

​ 在Linux同一个文件系统中,多个文件指向同一个索引节点(inode号相同)(Inode)是正常且允许的.这种情况的文件就称位硬链接.

​ 在同一个文件系统中(分区,装修风格),多个文件的inode号码相同,这些文件就互为硬链接文件.

​ 提示:硬链接文件就相当于文件的另外一个入口.硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止"误删除"源数据(很多硬件存储,netapp存储中的快照功能就应用了这个原理,增加一个快照就多个硬链接)

​ 因为文件系统(ext2)的原理是,只要文件的索引节点(Inode Index)还有一个个以上的硬链接.只删除其中一个硬链接(即仅仅删除了改文件的链接指向),并不影响索引节点本身和其它的链接(即数据文件实体并未被删除),只有当文件的最后一个链接呗删除后,此时如果有新数据要存储到硬盘上时,文件实体并未被删除,值有当文件最后一个链接被删除后,此时如果有新数据要存储到硬盘上时或者系统通过类似fsck做磁盘检查的时候.被删除文件的数据块及目录的链接才会被释放,空间被新数据占用并覆盖/此时.数据就再也无法找回.

​ 也就是说,在linux系统中,删除静态文件(没有进程调用)(目录页是文件)的条件是与之相关的所有硬链接文件均被删除.

​ 一个文件被彻底删除条件:改文件的硬链接数量为零.

硬链接的创建:

直接执行命令 "ln 源文件-----链接文件"

[root@oldboyedu-39 tmp]# echo oldboyedu.com > oldboy.txt
[root@oldboyedu-39 tmp]# cat oldboy.txt 
oldboyedu.com
[root@oldboyedu-39 tmp]# ls -l oldboy.txt 
-rw-r--r--. 1 root root 14 Jul 16 10:29 oldboy.txt
[root@oldboyedu-39 tmp]# #创建硬链接
[root@oldboyedu-39 tmp]# ln oldboy.txt oldboy.txt-hard
[root@oldboyedu-39 tmp]# ls -l oldboy.txt
-rw-r--r--. 2 root root 14 Jul 16 10:29 oldboy.txt
[root@oldboyedu-39 tmp]# echo oldboy >> oldboy.txt
[root@oldboyedu-39 tmp]# ls -l oldboy.txt oldboy.txt-hard 
-rw-r--r--. 2 root root 21 Jul 16 10:36 oldboy.txt
-rw-r--r--. 2 root root 21 Jul 16 10:36 oldboy.txt-hard
[root@oldboyedu-39 tmp]# cat oldboy.txt oldboy.txt-hard 
oldboyedu.com
oldboy
oldboyedu.com
oldboy

硬链接小结:

  1. 硬链接是如何来的.

    a) 通过执行命令"ln 源文件 硬链接文件",即可完成创建硬链接.
    
    b) 在同一文件系统/分区中,具有相同inode节点号的多个文件是互为硬链接文件.
    
  2. 特点:

    a) 硬链接与删除
    
    ​	删除源文件或硬链接如何一个,文件还存在.
    
    ​	把源文件和硬链接都删除,文件被彻底删除
    
    ​	文件被删除条件之一:硬连接数为0
    
    ​	删除硬链接文件或者删除源文件任意之一,文件实体(block数据 文件内容)并未被删除.
    
    ​	只有删除了源文件及所有对应的硬链接文件(硬链接数量为0),文件实体(block 数据 文件内容)才会被删除.
    
    ​	当所有的硬链接接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fasc检查的时候,删除的数据也会被系统回收(养成删除及多套环境测试的好习惯)
    
    ​	硬链接文件就是文件的另一个入口.
    
    ​	可以通过给文件设置硬链接文件,来防止重要文件被误删.
    
    ​	硬链接文件是普通文件,因此可以用rm 命令删除
    
    ​	文件彻底删除:
    
    ​	对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除
    
  3. 查看文件的硬链接数

    a) ls -lhi /stat,i_link的查看方法(ls -lhi结果的第三列就是)硬链接.
    

软连接

​ 软链接(Soft Link)也称为符号链接(Symbolic Link symlink).linux里的软链接文件就类似于windows系统中的快捷方式.linux里的软链接文件实际上是一个特殊的文件,文件类型是l,软链接文件实际上为一个文本文件,这个文件中包含有软链接指向另一源文件的位置信息内容,因此,通过访问这个"快捷方式"就可以迅速定位到软链接所指向的源文件实体.

软链接原理图:

[root@oldboyedu-39 tmp]# ln -s oldboy.txt oldboy.txt-soft
[root@oldboyedu-39 tmp]# ls -l oldboy.txt oldboy.txt-soft 
-rw-r--r--. 2 root root 21 Jul 16 10:36 oldboy.txt
lrwxrwxrwx. 1 root root 10 Jul 16 11:10 oldboy.txt-soft -> oldboy.txt

【Y软硬链接总结】描述linux下软链接和硬链接的区别

在Linux系统中,链接分两种:硬链接和符号链接(软链接)
1)默认情况不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接.
2)含义:硬链接文件与源文件的inode节点号相同,而软链接文件相当于windows下面的快捷方式(inode节点号与源文件不同)
3)特点:
	a)不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到.
	b)软链接可以跨文件系统,硬链接不可以跨文件系统
4)源文件,软链接,硬链接与删除
	a)删除软链接文件,对源文件及硬链接文件无任何影响
	b)删除文件的硬链接文件,对源文件及软链接文件无任何影响
	c)删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效.(红底白字闪烁状)
	d)同时删除源文件及其硬链接文件,整个文件才会被清除
posted @ 2019-09-20 15:39  Kalimdor  阅读(143)  评论(0)    收藏  举报