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的文件系统结构相关推荐

  1. linux+网络根文件系统,认识Linux根文件系统结构

    INTRO 认识Linux根文件系统结构,尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的[逻辑主体](为了实现不同的逻辑 功能)组合在一起的 ...

  2. Linux根文件系统结构再认识

    Linux根文件系统结构再认识 刘建文(http://blog.csdn.net/keminlau ) INTRO 尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录), ...

  3. 4、Linux的文件系统结构(目录树结构)

    2019独角兽企业重金招聘Python工程师标准>>> Linux的文件系统结构 顶端的"/"这个称为根目录,逻辑上所有东西都隶属于根目录 但是存储空间可以另外划 ...

  4. Linux系统介绍(二)文件系统结构

    Table of Contents 概述 根目录/ 二进制目录 配置文件目录 数据目录 内存目录 /dev目录 物理设备文件 /dev/tty跟/dev/pts /dev/null /proc目录 / ...

  5. linux文件系统、文件系统结构、虚拟文件系统

    参考:linux文件系统及其目录结构.虚拟文件系统 作者:丶PURSUING 发布时间: 2021-02-15 09:33:29 网址:https://blog.csdn.net/weixin_447 ...

  6. Linux的FHS(文件系统结构标准)剖析

    Linux的FHS(文件系统结构标准)剖析 我们平时所说的Linux系统并不是说的某一个操作系统,而是指使用了由Linus Torvalds(林纳斯·托瓦兹)发明并领衔开发的Linux内核的所有操作系 ...

  7. Linux 文件系统类型 文件系统结构 与Windows文件系统的比较

    Linux 文件系统类型 磁盘文件系统. 包括硬盘.CD-ROM.DVD.USB存储器.磁盘阵列等.常见文件系统格式有:autofs.coda.Ext(Extended File sytem,扩展文件 ...

  8. linux var mqm权限,Linux MQ中间件/var/mqm文件系统结构与错误日志分析

    Linux MQ中间件/var/mqm文件系统结构与错误日志分析 Linux MQ中间件/var/mqm文件系统结构与错误日志分析 本文转自 http://www.wo81.com/tec/mid/m ...

  9. 13.Linux文件系统结构

    1.硬盘结构 文件系统结构,理解文件系统,要从文件储存说起. 硬盘结构: 硬盘相关专业术语: 硬盘的内部是金属盘片,将圆形的盘片划分成若干个扇形区域,这就是扇区.若干个扇区就组成整个盘片.为什么要分扇 ...

最新文章

  1. 怎样用ug画铝型材_用UG画钻头,适合初学UG的小伙伴,快来学习吧!
  2. 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀...
  3. 15.泡菜:pickle模块
  4. openresty开发系列17--lua中的正则表达式
  5. 原创:pta做题笔记:注意数组大小大一点!//准考证号,试机座位,考试座位查询
  6. 职场信念:人生的12种财富(转帖)
  7. NATAPP.CN 内网穿透教程
  8. gcd(欧几里得算法)
  9. ASP.NET 百万级分页查询(Oracle)
  10. php输出文件,数组
  11. Deppin系统 Liunx显示器分辨率异常解决方法
  12. java的equals什么作用_java当中equals函数的作用小结
  13. 0-1之间的随机数 C/C++
  14. 江苏省2017年高等数学竞赛本二试题(含解答)
  15. 如何利用wordpress搭建一个免费博客
  16. 游戏手柄(JoyStick)的延时处理
  17. Android jetpack DataBinding 与RecyclerView
  18. error 系统错误 错误码10007_linux系统中socket错误码:eintr和eagain的处理方法
  19. vs2022 E1696 无法打开 源 文件 “string.h“
  20. conda加速器mamba使用

热门文章

  1. 安装Python遇到“0x80070643发生严重错误”
  2. 高清摄像机的发展历程及市场现状分析
  3. 2018年11月16日SQL Server实验内容(触发器实验)
  4. wpf DataGrid主从表,DataGrid嵌套DataGrid主从结构rowdetailtemplate实现,绑定DataTable数据源,使用Visual Studio 2017
  5. Goldwave心得
  6. 并发系列三:证明分代年龄、无锁、偏向锁、轻量锁、重(chong)偏向、重(chong)轻量、重量锁
  7. Entity层、DAO层、Service层、Controller层 先后顺序
  8. Vue3+TypeScript实现网易云音乐WebApp(解析歌词,并实现自行匹配滚动)
  9. vueTable大数据展示优化
  10. 开发团队PMO如何构建管理更有效?