Linux的文件系统结构
1、硬盘结构
磁盘的内部并不是真空的,只是空气很干净;利于散热
文件系统结构,理解文件系统,就得从文件存储说起
磁盘的专业术语
- 磁盘的内部是金属片,将原型的盘片分成若干个扇形区域,
- 若干个扇区就组成一个盘片
- 以盘片中心为圆心,把盘片分成若干个同心圆
- 每一个划分圆的线条就是磁道
- 盘片中相同位置的磁道形成柱面
硬盘的存储容量=磁头数*磁道=扇区数*字节数
磁道从外向内从0开始顺序进行编号;
比较古老的CHS(Cylinder/Head/Sector)磁头、柱面、扇区结构体系
现在磁盘都采用这种技术:ZBR(Zoned Bit Recording)区位记录
使用ZBR区位记录法做的磁盘特点:
- 读外圈的数据块,内圈的数据慢
windows安装系统的C盘或者Linux boot分区一般安装在最外头
Linux的boot分区也是在最外面
簇和block
其实这两个玩意是同一个概念
簇是windows系统常用的说法
block是linux系统常用的说法
2、文件系统结构
Linux的文件系统有三部分组成:文件名、inode、block
Linux的文件系统:ext2 、ext3、ext4、xfs
Windows的文件系统:FAT32、NTFS
Linux的文件名
[root@node0 ~]# ls /etc/passwd #这个就是文件名
/etc/passwd
#我们直接操作的目录或者文件都是有文件名的
文件的时间戳:
- ctime:只inode上次变动的时间
- mtime:只文件内容上次改变的时间
- atime:文件上一次打开的时间
- 链接数:有多少个文件名指向这个inode
- 文件数据block的位置
inode的内容
inode包含文件的元信息、
- 包括文件的字节数
- 文件所有者
- 文件所属组
- 文件的读写执行权限;
inode的大小
硬盘在格式化创建文件系统的时候,系统会分成两个区域,
- 一个是存放文件数据的
- 另外一个是inode区域
- 每个inode节点的大小,一般是128或者是256直接
- inode的总数,在格式化的时候就设定了,
- 每个文件都有一个inode号,Linux是用inode号来识别不同的文件
Linux查找文件的原理:
- 系统内部不使用文件名来查找,而是通过inode号码来识别文件
- 系统找文件对应的inode号码
- 然后通过inode号码获取inode信息
- 然后再找文件所在的block,读取数据
[root@node0 data]# ls -i aa.txt
51015462 aa.txt
[root@node0 data]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 9180672 59024 9121648 1% /
devtmpfs 250786 339 250447 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 648 252863 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 256000 326 255674 1% /boot
tmpfs 253511 1 253510 1% /run/user/0#如果inode号码使用完毕,但是硬盘空间还有数据还是无法写入;
[root@node0 data]# ls -ild /root
33574977 dr-xr-x---. 2 root root 183 9月 3 08:56 /root
inode的特殊作用
由于inode号码与文件名分离,所以有些特殊现象
- 如果文件名包含特殊符号,无法删除文件名,可以删除inode号
- 移动文件名的时候,改名了,但是inode号是没变的
- 打开一个一个文件名,系统以inode号码识别文件,系统无法通过inode号识别文件名
#如果修改了文件内容后,inode号会随之改变
[root@node0 data]# touch b.txt
[root@node0 data]# ls -i b.txt
51015468 b.txt
[root@node0 data]# vim b.txt
s
sisdjflsjd[root@node0 data]# ls -i b.txt
51015470 b.txt
stat命令
作用:查看文件的详细信息
语法:stat+文件名
[root@node0 data]# stat passwd 文件:"passwd"大小:1002 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:51015463 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-09-05 21:29:18.218094011 +0800
最近更改:2021-09-05 21:29:18.218094011 +0800
最近改动:2021-09-05 21:29:18.218094011 +0800
创建时间:#ctime:指文件上次属性变动的时间,包括所有者所属组、读写等等#atime:指上次文件被查看的时间#mtime:指文件内容被改变的时间
实战:
模拟黑客入侵文件的实验
#黑客首先会修改时间,再植入木马程序
[root@node0 data]# stat aa.txt 文件:"aa.txt"大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:51015462 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-09-05 21:28:32.853090870 +0800
最近更改:2021-09-05 21:28:32.853090870 +0800
最近改动:2021-09-05 21:28:32.853090870 +0800
创建时间:-[root@node0 data]# date -s "21:28:32"
2021年 09月 05日 星期日 21:28:32 CST
[root@node0 data]# echo hahah > aa.txt
[root@node0 data]# stat aa.txt 文件:"aa.txt"大小:6 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:51015462 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-09-05 21:28:32.853090870 +0800
最近更改:2021-09-05 21:28:37.823000403 +0800
最近改动:2021-09-05 21:28:37.823000403 +0800
创建时间:-[root@node0 data]# chmod +x aa.txt
block块大小
block是真正存储数据的地方
block是文件系统中最小的存储单位
扇区是磁盘中最小的存储单位;
在Linux系统中是block
在windows系统中是簇
问题:如果直接使用扇区、不使用block会怎么样?
操作系统读取数据的时候,如果按照一个扇区一个扇区查找的话512字节就会太慢了
所以需要读取一个块财会
多个扇区组成的“块”是文件系统存储的最小单位
如果随意调整簇或者是block的大小
- 优点:速度快、节约查找的时间
- 缺点就是:浪费空间
- block太大:效率高、利用率低
- block太小:效率低、利用率高
[root@node0 data]# stat passwd | grep IO大小:6 块:8 IO 块:4096 普通文件
3、硬链接与软连接
Linux链接分为两种硬链接与软连接
ln命令
作用:创建硬链接与软连接
语法:ln+选项+源文件+链接文件名
选项:
- -s:创建软链接
[root@node0 data]# ln passwd passwd.hard #创建硬链接
[root@node0 data]# ln -s passwd passwd.soft #创建软链接
[root@node0 data]# ll pass*
-rw-r--r-- 2 root root 6 9月 5 21:28 passwd
-rw-r--r-- 2 root root 6 9月 5 21:28 passwd.hard #硬链接属性与源文件一致的
lrwxrwxrwx 1 root root 6 9月 5 23:13 passwd.soft -> passwd #软链接的属性是满权限,但是限制的是源文件的权限#尝试链接目录
[root@node0 data]# ln oldboy/ oldboy.hard #硬链接无法链接目录
ln: "oldboy/": 不允许将硬链接指向目录
[root@node0 data]# ln -s oldboy/ oldboy.sort.d
硬链接
特点:
- 硬链接通过索引节点号来进行链接,inode号是可以读音多个文件名
- 硬链接的作用是允许多个文件名同时指向一个索引节点,
- 一个文件名也可以拥有多个有效路径名,可以防止误删除的功能
- 硬链接是不可以跨分区链接;
- 当文件真正被删除的情况就是所有的相同inode号的文件删除
- 删除源文件,链接文件依然可用
- 无法针对目录进行
软链接
特点:
- 软链接是可以跨分区的
- 软链接的权限是满权限;
- 相当于windows的快捷方式
- 删除源文件,链接文件不可用
- 链接文件可以链接目录
4、实战
实战背景:
在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了80%,还有1.9G的剩余空间,但是无法创建新的文件。当时使用的是root用户。服务器没有被黑。
#首先需要查看一下系统的基本情况
[root@node0 data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 2.5G 16G 15% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.4M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 199M 0 199M 0% /run/user/0#只要有权限就能创建新文件?#还需要排查inode节点数
[root@node0 data]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 9180672 59027 9121645 1% /
devtmpfs 250786 339 250447 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 648 252863 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 256000 326 255674 1% /boot
tmpfs 253511 1 253510 1% /run/user/0#后来用df -i查看了一下/data所在的分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。#解决的方案:
解决方案1:删除/data目录中的部分文件,释放出/data分区的一部分inode。
解决方案2 : 在/data备份好一些文件,然后删除这些文件,释放一些inode,
实战背景:
重启服务器后出现ctrl+D报错
解决办法:
- 输入root密码
- fsck -f -y /dev/sda6 #哪个分区有文件,修复哪个分区
- 然后reboot
fsck命令
作用:修复文件系统的命令
语法:fsck+选项+分区
选项:
- -y:所有都自动回答yse
- -f:强制修复
Linux的文件系统结构相关推荐
- linux+网络根文件系统,认识Linux根文件系统结构
INTRO 认识Linux根文件系统结构,尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的[逻辑主体](为了实现不同的逻辑 功能)组合在一起的 ...
- Linux根文件系统结构再认识
Linux根文件系统结构再认识 刘建文(http://blog.csdn.net/keminlau ) INTRO 尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录), ...
- 4、Linux的文件系统结构(目录树结构)
2019独角兽企业重金招聘Python工程师标准>>> Linux的文件系统结构 顶端的"/"这个称为根目录,逻辑上所有东西都隶属于根目录 但是存储空间可以另外划 ...
- Linux系统介绍(二)文件系统结构
Table of Contents 概述 根目录/ 二进制目录 配置文件目录 数据目录 内存目录 /dev目录 物理设备文件 /dev/tty跟/dev/pts /dev/null /proc目录 / ...
- linux文件系统、文件系统结构、虚拟文件系统
参考:linux文件系统及其目录结构.虚拟文件系统 作者:丶PURSUING 发布时间: 2021-02-15 09:33:29 网址:https://blog.csdn.net/weixin_447 ...
- Linux的FHS(文件系统结构标准)剖析
Linux的FHS(文件系统结构标准)剖析 我们平时所说的Linux系统并不是说的某一个操作系统,而是指使用了由Linus Torvalds(林纳斯·托瓦兹)发明并领衔开发的Linux内核的所有操作系 ...
- Linux 文件系统类型 文件系统结构 与Windows文件系统的比较
Linux 文件系统类型 磁盘文件系统. 包括硬盘.CD-ROM.DVD.USB存储器.磁盘阵列等.常见文件系统格式有:autofs.coda.Ext(Extended File sytem,扩展文件 ...
- linux var mqm权限,Linux MQ中间件/var/mqm文件系统结构与错误日志分析
Linux MQ中间件/var/mqm文件系统结构与错误日志分析 Linux MQ中间件/var/mqm文件系统结构与错误日志分析 本文转自 http://www.wo81.com/tec/mid/m ...
- 13.Linux文件系统结构
1.硬盘结构 文件系统结构,理解文件系统,要从文件储存说起. 硬盘结构: 硬盘相关专业术语: 硬盘的内部是金属盘片,将圆形的盘片划分成若干个扇形区域,这就是扇区.若干个扇区就组成整个盘片.为什么要分扇 ...
最新文章
- 怎样用ug画铝型材_用UG画钻头,适合初学UG的小伙伴,快来学习吧!
- 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀...
- 15.泡菜:pickle模块
- openresty开发系列17--lua中的正则表达式
- 原创:pta做题笔记:注意数组大小大一点!//准考证号,试机座位,考试座位查询
- 职场信念:人生的12种财富(转帖)
- NATAPP.CN 内网穿透教程
- gcd(欧几里得算法)
- ASP.NET 百万级分页查询(Oracle)
- php输出文件,数组
- Deppin系统 Liunx显示器分辨率异常解决方法
- java的equals什么作用_java当中equals函数的作用小结
- 0-1之间的随机数 C/C++
- 江苏省2017年高等数学竞赛本二试题(含解答)
- 如何利用wordpress搭建一个免费博客
- 游戏手柄(JoyStick)的延时处理
- Android jetpack DataBinding 与RecyclerView
- error 系统错误 错误码10007_linux系统中socket错误码:eintr和eagain的处理方法
- vs2022 E1696 无法打开 源 文件 “string.h“
- conda加速器mamba使用
热门文章
- 安装Python遇到“0x80070643发生严重错误”
- 高清摄像机的发展历程及市场现状分析
- 2018年11月16日SQL Server实验内容(触发器实验)
- wpf DataGrid主从表,DataGrid嵌套DataGrid主从结构rowdetailtemplate实现,绑定DataTable数据源,使用Visual Studio 2017
- Goldwave心得
- 并发系列三:证明分代年龄、无锁、偏向锁、轻量锁、重(chong)偏向、重(chong)轻量、重量锁
- Entity层、DAO层、Service层、Controller层 先后顺序
- Vue3+TypeScript实现网易云音乐WebApp(解析歌词,并实现自行匹配滚动)
- vueTable大数据展示优化
- 开发团队PMO如何构建管理更有效?