Linux文件系统及文件属性
一、Linux文件系统
1、穿件文件系统
Linux中当磁盘格式化创建文件系统时,会创建一定数量的节点索引Inode以及一定数量的块block,其中inode具有存储文件属性以及指向文件实体block的指针的功能,而block则具有存放文件内容的功能,CentOS6.X系统中非启动分区的默认Inode大小为256字节,启动分区的inode默认大小为128字节。Linux读取文件的过程是先通过文件名找到对应的inode,再通过inode访问其指向的block,最后从block中读取文件内容输出到屏幕上。
2、删除文件的原理
Linux删除文件的依据是检查文件的i_link和i_count是否都为0,其中i_count指的是文件的硬链接数,而i_link指的是调用文件的进程数,当源文件和所有硬链接被删除且没有进程调用该文件时,该文件的磁盘空间将会在存储新数据时被占用或在磁盘fsck检查时被系统回收。
二、文件属性
Linux系统中我们使用ls -lhi命令可以查看到目录下所有文件以及文件对应的属性,每个文件共有十列数据,除了最后一列的文件名外都是文件的属性,因此文件名不存储在inode中而是存储在目录的block中。所有十列数据的具体含义如下:
第一列:Inode编号
1、inode称为索引节点,它的作用时存放文件的属性信息以及作为文件的索引
2、inode是磁盘上的一块存储空间,CentOS非启动分区默认256字节,启动分区默认128字节
3、inode的表现形式是一串数字,不同的文件对应的inode在文件系统中是唯一的
4、inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口
5、ext3/ext4文件系统下,一般情况一个文件被创建后占用一个inode和至少一个block
6、block的大小一般有1K,2K,4K几种,其中引导分区等为1K,其他普通分区为4K
7、如果一个文件很大,可能占多个block,如果文件很小,至少占用一个并且剩余空间浪费了
8、查看inode以及block的大小和总量 dumpe2fs /dev/sda3|grep -iE 'inode size|block size' dumpe2fs /dev/sda3|grep -iE 'inode count|block count'
9、查看inode总量以及使用量 df -i
10、查看文件inode信息 ls -li stat 文件名
11、格式化时指定inode以及block的大小 mkfs.ext4 -l 256 -b 2048 /dev/sda5
12、Inode编号在系统中是唯一的
与inode关联的block知识总结如下:
1、磁盘读取数据是按block为单位读取的
2、一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O
3、如果要提升磁盘I/O性能,那么就要尽可能一次性读取数据尽量多
4、一个block只能存放一个文件的内容,无论文件有多小。
5、block并非越大越好,block太大对于小文件存放就会浪费磁盘空间
6、大文件(大于16K)一般设置block大一点,小文件(小于1K)一般设置block小一点
7、如果文件都是小文件而block太大就会浪费磁盘空间
8、如果文件都是大文件而block太小就会浪费磁盘I/O、
9、文件较大时,block设置大一些会提升磁盘访问效率
10、ext3/ext4文件一般设置为4K
11、block大小在格式化时设置
第二列:文件类型及文件权限
第一位代表的是文件类型
Linux系统不像Windows系统一样以扩展名区别文件类型,Linux文件类型在文件创建时就已经确定了,无法修改。
Linux系统中常用的文件类型有普通文件以“-”表示、目录以“d”表示、符号链接以“l”表示、块设备以"b"表示,除此之外还有字符设备以“c”表示、套接字文件以“s”表示和管道文件以“c”表示
Linux系统中普通文件大致分为文本文件、二进制文件比如系统命令文件、数据格式文件,数据格式文件只能用命令读取比如/var/log/wtmp文件只能用last命令读取
第二到四位代表的是文件属主的权限
第五到七位代表的是文件属组的权限
第八到十位代表的是其他用户的权限
文件权限的设置通过chmod命令
文件的默认权限通过umask命令,目录的默认权限是777-umask的值,文件的默认权限是666-umask的值
文件权限分为普通权限和特殊权限,普通权限有r读取权限数字表示为4、w写入权限数字表示为2、x执行权限数字表示为1,特殊权限有suid、sgid、t
数字方式设置权限,将三个位置各自的权限转为数字然后相加得出一组三位数字或四位数字,如rw-r--r--的数字表示就是42-4--4--,所以设置权限就是chmod 644
字符方式设置权限,字符方式设置权限时用u代表文件属主的权限,g代表文件属组的权限,o代表其他用户的权限,+代表增加权限,-代表取消权限,=代表修改权限,于是rw-r--r--的权限设置就是chmod u=rw,g=r,o=r
目录的普通权限r代表可以浏览目录的内容,没有x权限时会提示不能访问目录下的文件和子目录但仍可以看到文件名和目录名,w代表增加,删除,修改目录下文件名,需要有x权限才能实际操作,x代表可以进入目录
suid显示在文件属主的x权限位上,当没有x权限时显示为S,否则显示为s,该权限只对命令和二进制程序文件有效,让非root用户可以以root身份运行只有root才能使用的命令
被设置suid的命令在运行时,用户具有root对该命令的所有权限
sgid与suid不同,不仅可以对文件设置,也可以对目录设置,对目录设置时可以让其他用户在该目录下创建的文件和目录具有和该目录相同的组设置
suid与sgid是一把双刃剑,对系统安全有一定威胁,应该取消不必要的系统默认suid和sgid命令,通过find命令的perm参数可以找出suid和sgid命令
t权限让其他用户不能删除文件
特殊权限还有i不可修改权限和a只追加权限,需要通过chattr设置,lsattr查看,i权限让任何人不可以修改文件,a权限让文件只能被动追加不能认为主动追加内容
第三列:文件硬链接数
创建链接的方式 ln -s 源文件名 链接文件名 -s 创建软链接
硬链接知识点:
1、具有相同Inode节点号的多个文件互为硬链接文件
2、删除硬链接文件或源文件任意之一,文件实体并未被删除
3、只有删除源文件与所有硬链接文件,文件实体才会被删除
4、当所有硬链接文件及源文件被删除后,在存放新数据时会占用该文件空间或者磁盘fsck检查时空间被系统回收
5、硬链接文件就是文件的另一个入口
6、可以通过创建硬链接来防止重要文件被误删
7、通过命令ln 源文件名 链接文件名 来创建硬链接
8、硬链接文件可以用rm命令删除
9、对于没有进程调用的文件,硬链接数为0,文件就会被删除
软链接知识点:
1、软连接类似Windows的快捷方式(可以用readlink命令查看其指向)
2、软连接类似一个文本文件,里面存放的时源文件的路径,指向源文件实体
3、删除源文件,软连接文件依然存在,但是无法访问指向的源文件路径内容了
4、失效的时候一般是白字红底闪烁提示
5、软连接文件可以用命令ln -s 源文件名 链接文件名 来创建
6、软连接和源文件是不同类型的文件,也是不同的文件,inode号不相同
7、删除软连接文件可以用rm命令
文件链接结论:
1、删除软连接文件对源文件和硬链接文件无任何影响
2、删除硬链接文件对源文件和软连接文件无任何影响
3、删除源文件对硬链接文件无影响,但是软连接文件会失效
4、同时删除源文件和硬链接文件会使文件真正被删除
5、很对硬件设备的快照功能就是利用了硬链接的原理
6、源文件和硬链接文件具有相同的inode节点号,可以认为是一个文件或一个文件的多个入口
7、源文件和软连接文件inode节点号不相同,是不同的文件,软连接相当于源文件的快捷方式,含有源文件的位置指向
目录链接结论:
1、目录不能创建硬链接但是可以创建软连接
2、目录的软连接是运维中的常用技巧,可以生成一个固定的访问路径又不影响软件升级
3、目录的硬链接不能跨越文件系统
4、每个目录都有一个硬链接"."号,以及对应上级目录的硬链接".."
5、在父目录里创建子目录,父目录的连接数加一,但是在父目录创建文件,父目录的链接数不会增加
第四列:文件属主
第五列:文件属组
useradd命令创建用户,会修改passwd,shadow,group,gshadow四个文件
groupadd命令创建组
chown命令修改文件属主,也可以修改属组
chgrp命令修改文件属组
Linux角色通过UID和GID区分
在Linux中UID为0的用户即为超级用户
Linux用户分为超级用户,普通用户和虚拟用户
超级用户UID为0,GID也为0
虚拟用户UID为1~499,GID也为1~499
普通用户UID为500~65535,GID也为500~65535
/etc/passwd文件即用户账号信息文件,必须了解,文件中每行以冒号分隔共有七列
第一列为账号名称
第二列为账号密码
第三列为账号UID
第四列为账号GID
第五列为用户说明
第六列为用户家目录
第七列为shell解释器
/etc/shadow文件即用户密码文件,文件中每行以冒号分隔共有九列
第一列账号名称
第二列账号密码
第三列最近更改密码的时间
第四列禁止修改密码的天数
第五列用户必须更改密码的天数
第六列警告更改密码的期限
第七列不活动时间
第八列失效时间
第九列标志
/etc/group文件即组信息文件,文件中每行以冒号分隔共四列
第一列组名
第二列组密码
第三列GID
第四列组成员
/etc/gshadow文件即组密码文件,文件中每行以冒号分隔共四列
第一列组名
第二列组密码
第三列组管理员账号
第四列组成员
第六列:文件大小
第七、八、九列:文件修改时间
stat命令查看文件详细属性
文件访问时间:文件内容被访问就改变
文件修改时间:文件内容被修改就改变
文件改变时间:文件属性改变时就改变
第十列:文件名
三、相关面试题
1、软链接和硬链接的区别,答题思路从以下四方面回答:
1)软硬链接的概念
2)软硬链接的创建方式
3)软硬链接对于文件的区别
4)软硬链接对于目录的区别
2、一个100M(100000K)的磁盘分区,分别写入1K的文件或写入1M的文件,分别可以写多少个
假设block为4K的情况下,写入1K的文件分两种情况
inode足够,那么写入文件数量就是block的数量,浪费3/4的容量
inode数量小于block数量,那么写入文件数量就是inode的数量,浪费3/4的容量
写入1M的文件的数量等于总的block数量/(1M/block大小),基本可以写入250个1M的文件
3、如果向磁盘写入数据提示如下错误:No sapce left on device,通过df -h查看磁盘空间发现没有满,可能是什么原因,发生这种情况的原因是什么
磁盘空间满了有两种情况,一是inode消耗完了,二是block消耗完了,根据df -h结果可知block没有消耗完,那么可能就是inode消耗完了,产生的原因可能是系统临时邮件目录生成了太多小文件
Linux文件系统及文件属性的更多相关文章
- linux 文件系统简介
linux文件系统简介 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...
- linux文件系统节点详解
linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...
- 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]
1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...
- linux文件系统简介
文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接 ...
- Linux文件系统 (Ubunt)
Linux 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储 ...
- linux 文件系统(inode和block)
linux文件系统(inode block superblock) 先说一下格式化:每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能 ...
- linux源代码阅读笔记 linux文件系统(转)
linux文件系统: 操作系统的文件数据除了文件实际内容外,还有非常多的属性,如文件权限(rwx)与文件属性(所有者.群组.时间参数等). 文件系统通常将这两部分数据存放在不同的块.权限属性放 ...
- 24小时学通Linux内核之有关Linux文件系统实现的问题
有时间睡懒觉了,却还是五点多醒了,不过一直躺倒九点多才算起来,昨晚一直在弄飞凌的嵌入式开发板,有些问题没解决,自己电脑系统的问题,虽然Win10发布了,,但我还是好喜欢XP呀,好想回家用用家里的XP来 ...
- 十天学Linux内核之第五天---有关Linux文件系统实现的问题
原文:十天学Linux内核之第五天---有关Linux文件系统实现的问题 有时间睡懒觉了,却还是五点多醒了,不过一直躺倒九点多才算起来,昨晚一直在弄飞凌的嵌入式开发板,有些问题没解决,自己电脑系统的问 ...
随机推荐
- python语法之函数2
高阶函数: def f(n): return n*n def foo(a,b,func): func(a)+func(b) ret=func(a)+func(b) return ret foo(1,2 ...
- web安全系列4:google语法
这是web安全的第四篇,欢迎翻看前面几篇. 前面我们介绍了一些和HTTP有关知识,那么一个疑问就是黑客要做的第一件是什么?其实很简单,确定一个目标,然后搜集信息. 这很容易理解,我们无论做什么都得先有 ...
- promise和生成器的结合
if(Promise.wrap){ Promise.wrap = function(fn){ return function(){ var args = [].slice.call(arguments ...
- C++ STL next_permutation(快速排列组合)
排列组合必备!! https://blog.csdn.net/bengshakalakaka/article/details/78515480
- eclipse启动时要求高版本jdk的问题
在eclipse.ini文件首行添加 -vm C:\Program Files\Java\jdk1.8\jdk1.8.0_131\bin https://blog.csdn.net/wanlin77/ ...
- UML-Based Modeling of Robustness Testing
一.基本信息 标题:UML-Based Modeling of Robustness Testing 时间:2014 出版源:IEEE会议论文 领域分类:稳健性测试:UML测试Prole:UML Pr ...
- ext__给grid Panel设置绑定事件
使用面板来展示详情信息 1.创建一个面板 (双击添加) 2.给该面板设置itemid的值为:detailPanel 3.给面板设置模板 4.添加下面的内容 id:{id}</br> nam ...
- msfconlose基本命令
命令 简介 back 从当前上下文 banner 显示显示一个令人敬畏的metasploit横幅 cd 更改当前工作目录 color 切换颜色 connect 与主机通信 edit 使用$ VISUA ...
- SLAM算法中提取特征总结
我们要知道三维空间中的点在图像中的位置,就需要提取特征与特征匹配了. 1.检测特征点 2.计算描述子 3.特征匹配 1.检测特征点 我们用到的检测特征点的方法是FAST算法,最大的特点就是快! 算法原 ...
- NGUI 摇奖滚轮
效果图: 优缺点: 优点: 1.一条曲线完美解决旋转问题 2. 解决了超速的问题,现在速度再快也不会乱了 3.快速停止的时候进行了进度区分,后面的会等前面的停了再停 缺点: 1.停止节奏上会有细微差距 ...