前言:在Linux操作系统的广阔世界中,文件管理无疑是基石之一,它支撑着整个系统的稳定运行与高效运作。无论是日常办公、软件开发、服务器管理还是大数据处理,都离不开对文件系统的深入理解和熟练操作。因此,掌握Linux基础IO中的文件管理技能,对于每一个Linux用户、系统管理员以及开发者而言,都是至关重要的
Linux的文件系统以其强大的灵活性、可扩展性和安全性而闻名于世。它不仅支持多种类型的文件系统,如经典的ext系列、高性能的xfs、以及面向未来的btrfs等,还提供了丰富的工具和命令,用于文件的创建、删除、查找、编辑以及磁盘空间的管理。这些工具和命令构成了Linux文件管理的基石,使得用户能够高效、灵活地处理各种文件操作任务
本文旨在为读者提供一个全面而深入的Linux基础IO中文件管理的学习指南。通过本文的学习,读者将能够掌握Linux文件系统的基本原理
让我们一同踏上这段学习之旅,探索Linux文件管理的奥秘吧!
Linux文件管理的概念涉及对Linux操作系统中存储的数据(即文件)进行组织、访问、保护、移动、备份和恢复的一系列操作和方法。Linux的文件系统是其核心组成部分之一,它提供了一种结构化的方式来存储和访问存储在硬盘上的数据
文件的管理:
管理没有被打开的文件的核心操作是:快速定位文件
文件 = 属性 + 内容
文件存放在磁盘中,方便OS/用户对文件进行管理
磁盘 <- -> 硬件层面 <- -> 物理存储结构 逻辑抽象 <- -> 逻辑存储结构 (OS管理磁盘) OS + 文件系统 --> 软硬链接
磁盘是计算机系统中用于存储数据的重要部件,它通过磁头和盘面间的交流读取数据
盘面可以来存储数据,通过磁头来被读取
盘面俯视图:
图中的每一圈环状图形被称为磁道,磁道中每一块小扇形则被称为扇区,一个盘面可以有很多同心磁道,一圈磁道也可以有很多扇区
扇区是磁盘中的最小存储单元 — 512字节(部分4KB)
基本构成
往扇区写入数据,我们需要先判断写入磁盘面的那一面,在选择盘面的哪个磁道,最后确定在磁道的哪个扇区 -> 这就是
CHS定位法
磁盘存储的逻辑抽象结构
磁带也是磁盘的一种,在磁带圈起来时,就类似一个盘面。将其拉直展开,可以抽象的分成由多个磁道构成的线性数组,可以在细化成由扇区为单位组成的数组
注意:操作系统也可以按照扇区为单位进行存取,也可以基于文件系统按照块为单位进行数据 存取
对磁盘的管理,就抽象的变成了对数组的管理
块组(Block Group)是文件系统中用于组织和管理磁盘空间的一种结构,尤其在像Ext4这样的文件系统中广泛使用。块组的主要目的是提高文件系统的性能、可靠性和管理效率
关于文件:
inode
在整个分区中具有唯一性,在Linux内核中,识别文件,和文件名无关,之和inode有关
inode
是Unix/Linux系统中用于存储文件元信息的数据结构,中文译名为“索引节点”。它是文件系统中的一个核心组件,提供了对文件的快速定位和管理功能
那么到底什么是inode,我们通过Linux操作系统来看一下,我们先创建几个文件和目录,然后输入指令 ls -li
文件属性多了一串数字,而这些属性就是inode
,保存文件属性也是通过inode
保存的
inode的基本概念
比特位的位置表示block编号,来判断对用位置block
是否被使用
创建一个新文件主要有一下4个操作:
新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来
挂载:mount
mount
命令的基本语法为mount [选项] [-t 文件系统类型] 设备文件名 挂载点。该命令用于将文件系统挂载到指定的目录上
磁盘空间管理:df
df
命令:用于显示文件系统的磁盘空间占用情况。例如,df -h以易读的格式显示磁盘使用情况
df -h
在Linux文件系统中,链接(Link)是一种将文件名与实际文件数据关联的机制。链接主要分为两种类型:硬链接(Hard Link)和软链接(Symbolic Link),也称为符号链接
软链接
软链接是一个特殊的文件,内容是指向另一个文件或目录的路径。软链接类似于Windows系统中的快捷方式
指令:使用ln -s命令创建软链接,
命令格式为ln -s 原文件或目录 软链接文件或目录
硬链接
硬链接是指多个文件名指向同一个文件的数据块,表示一组映射关系,即它们共享相同的inode编号。硬链接相当于为同一文件创建了别名
inode
内部有引用计数,表示有几个文件名映射关系
指令:使用ln命令创建硬链接,
命令格式为ln 原文件 硬链接文件
软链接是一个独立的文件,硬链接不是,因为硬链接没有独立的
inode
编号
硬链接与软链接的区别
硬链接 | 软链接 | |
---|---|---|
存在形式 | 文件副本的形式存在,但不占用实际空间 | 以路径的形式存在 |
跨文件系统 | 不可以 | 可以 |
对目录的链接 | 不允许 | 可以 |
inode编号 | 与原文件共享相同的inode编号 | 有自己的inode编号,但数据块包含目标文件的路径名 |
删除操作 | 删除其中一个文件名,不会影响另一个文件名的访问 | 删除原文件或目录后,软链接变为悬空链接,无法访问目标 |
同步性 | 对硬链接或原文件的任何修改都会同时反映在另一个文件上 | 修改软链接、硬链接和源文件,访问三者都是同步变化的(但软链接指向的内容可能因原文件删除而失效) |
在建立硬链接时,我们不允许对目录进行链接,因为硬链接的inode与原文件共享,这样我们在查找文件的时候,可能会造成环形路径,而无法结束
acm
下面解释一下文件的三个时间:
Access
最后访问时间Modify
文件内容最后修改时间Change
属性最后修改时间在探索Linux基础IO(输入输出)中的文件管理的旅程即将告一段落之际,我们不禁要感慨这一领域所蕴含的深厚底蕴与无限可能。文件管理,作为Linux操作系统的核心功能之一,不仅仅是简单地创建、删除、移动文件那么直接,它更是系统资源管理、数据安全、乃至高效编程的基石
我们也窥见了Linux文件系统中硬链接与软链接(符号链接)的奥秘,它们以不同的方式指向文件系统中的对象,为文件共享与快捷方式提供了强大的机制。而对于更高级的文件系统特性,如挂载点、文件系统类型(如ext4)及其特性,我们也有了初步的认识,这些知识对于管理大规模数据、优化存储性能至关重要
希望每一位学习者保持好奇心和求知欲,继续深入探索Linux的广阔天地! 希望本文能够为你提供有益的参考和启示,让我们一起在编程的道路上不断前行! 谢谢大家支持本篇到这里就结束了,祝大家天天开心!