当前位置: 首页 > news >正文

.net 网站开发框架牡丹江seo

.net 网站开发框架,牡丹江seo,重庆一般建一个网站需要多少钱,如何用kali做网站渗透目录 一、理解磁盘结构 1、磁盘的物理结构 2、硬件层面理解 3、磁盘的具体物理存储结构 4、进行逻辑抽象 5、磁盘文件的管理 6、创建新文件的过程 二、理解文件系统 1、文件的构成 2、为何选择4KB而非512字节作为基本单位? 3、文件系统的组成 数据块#xff08;Data BlocksData Blocks inode表inode Table 块位图Block Bitmap inode位图inode Bitmap 块组描述符GDT 超级块Super Block 文件与inode和数据块的关系 4、目录与inode 二、软链接和硬链接 1、概念  2、使用方法 3、软链接相当于快捷方式 4、硬链接相当于起别名 5、引用计数 文件删除与inode的关系 目录的引用计数 6、总结  一、理解磁盘结构 1、磁盘的物理结构 磁盘作为计算机系统中不可或缺的存储介质尤其是传统的机械硬盘HDD是唯一具有机械设备性质的核心外设。尽管当前固态硬盘SSD逐渐普及并取代了部分HDD市场但其基本原理和数据持久化功能仍与磁记录技术紧密相关。磁盘利用磁性材料在盘片上记录信息以实现大规模二进制数据的长久保存即使在断电状态下也能确保数据不丢失。 磁盘作为计算机系统中倚重的存储技术核心采用磁记录原理持久化存储海量二进制信息并能够在断电后依然维持数据完整性。磁盘实质上是一个精密的机械电子设备其构造主要包括磁盘盘片、读写磁头组件、主轴驱动系统以及传动机构等关键部件。 磁盘盘片是储存数据的核心载体在其光滑的表面上划分出一系列精细的逻辑结构——磁道和扇区。磁道呈同心圆状分布于盘片之上而扇区则进一步将磁道细分为更小的数据存储单元。此外所有盘片在相同径向位置上的磁道集合构成一个柱面这种三维的空间布局设计确保了对磁盘上数据的高效定位与存取操作。 为了优化磁盘空间管理和提高数据保护水平操作系统不会直接使用未经分区的整个物理磁盘。通过磁盘分区这一过程原始硬盘被划分为多个独立且逻辑上隔离的区域我们称之为磁盘分区。这种分割不仅有助于增强数据安全性防止不同分区之间的数据相互干扰同时也极大地便利了存储资源的组织与管理。 本地磁盘则特指那些固着于同一台计算机主板内部无法自由插拔或移动的存储硬件单元。此类磁盘通常包括承载操作系统运行所必需的系统分区以及其他用户数据分区它们共同构成了计算机不可或缺的基础存储架构。 2、硬件层面理解 磁盘是一种利用磁记录技术来存储数据的硬件设备其核心组成部分包括磁盘盘片、磁头、主轴与传动组件等。数据实质上被存储在磁盘盘片的特定区域中。磁盘盘片经过精细划分以实现逻辑上的定位和存取管理具体表现为磁道、扇区及柱面结构。 磁道是盘片表面上的一系列同心圆扇区则是将每个磁道划分为若干个相等的弧段而柱面则是一个包含同一半径上所有磁道的整体跨越了多个盘片。磁头作为硬盘读写操作的关键部件其精密程度至关重要。它由缠绕着线圈的磁芯构成工作原理基于特殊材料的电阻值随磁场变化的特性从而实现在盘片上进行数据的读写操作。磁头的移动与定位主要依赖于磁头驱动组件该组件由电磁线圈电机、磁头臂架或称磁头驱动小车以及防震装置组成。高精度且轻量化的磁头驱动机构能够确保磁头准确、迅速地响应系统指令精确地定位至指定磁道进而保障数据读写的稳定性与可靠性。 主轴组件是整个磁盘系统中的重要部分它包含了主轴部件、轴承以及主轴电机等。随着硬盘容量和速度的发展主轴电机的速度也在不断提升部分厂商已采用液态轴承机电技术这种技术的应用显著降低了硬盘运行时产生的噪音并提高了整体性能表现。前置放大电路负责控制磁头感应信号的处理、主轴电机转速调节、磁头驱动以及伺服定位等一系列关键功能。由于磁头读取的数据信号极其微弱因此将放大电路封装在密闭腔体内可有效减少外部干扰增强操作指令的准确性与可靠性。 磁头与盘面保持微小间隙不直接接触。 这是因为在硬盘的物理结构中磁头和盘片之间极小的距离通常在纳米级别是为了防止二者之间的任何物理接触。一旦磁头与高速旋转的盘面发生碰撞或刮擦不仅会严重磨损磁头还会导致盘面上存储数据的磁介质受损进而引发数据丢失或损坏这可能导致操作系统无法正常启动以及其他严重的数据完整性问题。 机械硬盘由于其内部物理机制限制在一定程度上已被固态硬盘SSD所取代。这种淘汰趋势的原因包括但不限于 性能瓶颈机械硬盘受限于磁头移动速度寻道时间和磁盘转速决定数据传输速率而固态硬盘则基于闪存芯片无须机械运动部件从而提供更快的数据读写速度。耐用性与可靠性正如之前所述机械硬盘的磁头与盘片间的距离虽小但必须保持因此易受振动、冲击等因素影响造成潜在故障风险而固态硬盘没有活动部件更耐冲击且整体可靠性更高。功耗与发热固态硬盘具有更低的功耗及工作时产生的热量较少更适合便携设备和需要节能的应用场景。 磁盘伺服电路是硬盘驱动器中的一个重要组成部分它负责控制磁头定位系统确保磁头能够精确地在预定的磁道上进行读写操作实现对存储在盘面上微观磁化区域即比特位0和1的高效读取与修改。 怎么消磁 关于磁盘消磁传统意义上讲确实可以通过加热至一定温度来消除磁介质上的磁场强度从而抹去存储的数据。然而这种方法并不适用于日常数据清除需求因为过度加热会导致硬件损坏而且不适用于大规模数据销毁。现代数据安全标准倾向于采用专门的数据擦除软件工具或者多次覆盖写入的方法来安全、有效地清除磁盘上的信息。 3、磁盘的具体物理存储结构 磁盘的最基本存储单元是扇区通常情况下标准磁盘中的每个扇区大小为512字节。在同一圆周半径上的所有扇区集合在一起构成了一个逻辑概念——磁道。磁道沿盘片半径方向排列如同一圈圈同心圆分布在磁盘表面。 定位磁盘上的特定扇区是一项精密操作它依赖于三个关键参数柱面号Cylinder、磁头号Head和扇区号Sector。这三个数值共同组成了磁盘的物理地址用于唯一确定一个具体的存储位置。 定位扇区的过程可细分为两个阶段 寻道阶段首先磁头臂会根据目标柱面号移动磁头到相应的磁道上这个过程的时间称为“寻道时间”其长短与磁头需要跨越的物理距离有关。旋转延迟阶段当磁头到达目标磁道后等待目标扇区随着磁盘的转动而转至磁头下方。这一时段被称为“旋转延迟时间”它的长度取决于磁盘每分钟转速RPM即磁盘旋转一周所需时间的特定比例。 为了准确高效地定位扇区磁盘访问技术采用了多种方法 CHS寻址方式通过柱面-磁头-扇区的三维坐标系统来指定扇区地址。LBA逻辑块地址法将磁盘空间线性编址忽略实际的物理布局简化了操作系统对磁盘的管理。GPT全局唯一标识分区表在更现代的磁盘管理系统中尤其是对于大容量硬盘使用GPT能够提供更加灵活、扩展性和容错性更强的分区及寻址方案。尽管GPT主要涉及分区层面而非直接的扇区寻址但其高级抽象层之下仍基于LBA或其他底层寻址机制。 4、进行逻辑抽象 谈到过物理层面定位某个扇区运用的算法是CHS定位法那么LBA如何转到CHS定位呢其实很简单只需通过一些计算方式就可以进行转换下面图片中的计算方法是捏出来的数据方便大家理解LBA转到CHS定位的过程。 H磁头用来判断是哪个扇面C柱面用来判断是哪个磁道S就是确定在具体扇面的具体磁道中的具体某个扇区这些工作在软件层面都可以解决解决的过程其实就是LBA转到CHS的过程。 将圆形磁盘逻辑抽象为线性数组结构。sector array[4000];假设磁盘有两个盘片四个盘面。一个盘面上有10个磁道一个磁道有100个扇区。4 * 10 * 100 4000 总容量(byte)4 * 10 * 100 sector array[]数组下标范围所以在线性数组结构中只要定位了一个下标其实就算定位了一个扇区。操作系统内部将这种下标对应的地址称为逻辑块地址LBA(logical block address)假设要求定位123号磁盘位置123 / 1000 0 0号盘面一个盘面有1000个扇区123 /100 1 1号磁道一个磁道有100个扇区123 % 100 23 23号扇区。所以123号磁盘位置在0号盘面的1号磁道中的23号扇区。LBA --- CHS定位的过程就是左侧计算部分C就是1号磁道H就是0号盘面S就是23号扇区。 为什么OS要进行磁盘的逻辑抽象呢直接用CHS定位不行吗 操作系统OS对磁盘进行逻辑抽象而非直接采用如CHS柱面-磁头-扇区等物理寻址方式主要基于以下两个关键考量 首先从管理层面看将复杂的三维物理结构简化为软件层面易于操作的一维线性地址空间至关重要。直接使用CHS等物理定位方法时操作系统必须处理磁盘的立体几何布局这不仅增加了管理的复杂度而且不利于系统的简洁性和高效性。通过逻辑抽象操作系统只需维护一个线性数组形式的存储结构大大降低了数据存取和组织的难度。 其次也是更为重要的一点是逻辑抽象有助于实现软硬件解耦。如果操作系统直接与特定硬件架构强绑定一旦底层存储设备发生变更比如由传统的硬盘驱动器HDD升级为固态硬盘SSD由于两种设备的工作原理及内部结构差异原有的OS代码可能无法正常运行或至少需要大幅度调整。而通过引入逻辑块地址LBA等抽象层操作系统可以不关心具体存储设备的物理特性而是统一将所有类型的存储设备视为单一的、连续的数据区块集合。这样一来无论底层硬件如何更新换代操作系统都能保持相对稳定且具备良好的兼容性和适应性。 5、磁盘文件的管理 在磁盘文件的管理中操作系统采取的“分而治之”的策略基于对磁盘空间的高效和灵活抽象。这种抽象形式为“数据块”通常大小设定为4KB。这一决策并非随意而是经过计算机科学家的深入测试和研究得出。他们发现以4KB作为I/O操作的基本单位能够达到最优的性能表现。这背后支持的是一系列学术论文和研究成果。此外磁盘文件管理的设计理念还深受“局部性原理”的影响。这一理论指出计算机在访问某些数据时很有可能会紧接着访问其附近的数据。因此在进行I/O操作时预加载更多数据可以显著提高操作系统的效率并减少多次I/O操作的需求。相较于链表顺序表因数据更集中而具有更高的缓存命中率体现了以空间换取时间的策略。在实际应用中内存被划分为许多4KB大小的“页框”它们是内存中的基本数据存储单位。类似地磁盘上的文件尤其是可执行文件也被划分为4KB大小的“页帧”。因此从磁盘向内存加载数据时操作系统按照这些块进行操作实现页帧数据向页框的加载。这不仅体现了文件系统和内存管理之间的紧密耦合而且突显了以4KB为单位的划分的普遍适用性。对于磁盘分区管理采用相同的管理策略通过复制和粘贴这些方法可以轻松管理不同区域。细分区域间的管理策略亦是如此彰显了通过细节管理控制整体空间的思路。从文件类型的角度看操作系统通过起始地址加上偏移量的方式访问数据。因此了解一个数据块的起始地址就可以访问到特定的数据内容。在本质上块的地址可以视为数组索引通过线性索引即可精确定位任何一个数据块。这种方法不仅简化了文件管理也优化了数据访问的效率和速度。 6、创建新文件的过程 创建新文件的过程中系统执行的关键步骤如下 初始化文件属性 当用户请求创建新文件时操作系统内核首先查找可用的inode资源例如本例中找到编号为263466的inode。内核会在选定的inode中填充文件的相关元数据信息包括文件大小、权限、创建时间等属性。 分配并存储文件内容 文件的实际内容需要存储在磁盘块中。假设新文件内容需占用三个连续的磁盘块内核会分配三个空闲的磁盘块分别为300、500和800。随后内核将待写入文件的数据依次缓存并逐步将缓冲区中的数据转移到对应的磁盘块中确保第一段数据写入到300号块紧接着是500号块最后是800号块。 更新磁盘块映射 为了维护文件内容所在的物理位置内核在inode的磁盘块指针区域记录下这些分配的块号形成一个有序的块列表300、500、800以便后续能够高效地定位和访问文件内容。 将文件名关联到目录项 若要在当前工作目录下创建名为“abc”的新文件内核会在当前目录文件的结构中添加一个新的目录项。这个目录项包含了新文件的inode编号263466和文件名“abc”。这样一来就建立了文件名与inode之间的重要联系使得系统可以根据文件名查找对应的inode并通过inode找到相关的文件属性和内容从而实现了文件系统的逻辑组织和数据寻址。 二、理解文件系统 1、文件的构成 在Linux系统中文件的管理方式采取了一种区分文件内容与文件属性的策略实现了高效和灵活的文件存储机制。这种设计将文件本身的数据内容与描述文件的信息属性分开存储以优化访问速度和管理效率。 内容即文件实际保存的数据被存储在所谓的数据块Data blocks中通常这些数据块的大小为4KB相当于8个扇区每个扇区512字节。属性包括文件的大小、权限、所有者、创建和修改时间等信息这些信息被存储在称为inode的数据结构中。每个文件都有一个唯一的inode编号通过这个编号可以访问文件的属性信息。 2、为何选择4KB而非512字节作为基本单位? 尽管磁盘的物理存储基本单位是扇区每个扇区通常为512字节但Linux操作系统在与磁盘进行I/O操作时采用了4KB即8个扇区作为基本单位。这一设计决策背后有几个重要的考虑因素 提高效率使用更大的单位可以减少进行I/O操作的次数尤其是在处理大文件时这种策略能显著提高数据的读写效率。 减少碎片较大的存储单位有助于减少文件系统碎片使得文件存储更加连续进一步优化读写性能。 软硬件解耦选择一个与磁盘扇区大小不直接相关的存储单位使得操作系统的设计在一定程度上独立于硬件。这意味着即使磁盘技术发生变化例如扇区大小的变动操作系统也无需进行大幅度修改从而保持了良好的兼容性和适应性。 3、文件系统的组成 Linux文件系统的组成包括数据块Data blocks、inode表inode Table、块位图Block Bitmap、inode位图inode Bitmap和组描述符表GDT。这些组件共同工作使得文件的信息可追溯、可管理。 数据块Data Blocks 数据块是存储文件内容的单位每个数据块通常大小为4KB相当于8个扇区的大小。这种设计旨在提高读写效率减少I/O操作次数。 inode表inode Table inode表由一系列inode组成每个inode大小为128字节存储了文件的属性信息如权限、大小、所有者等。每个文件或目录在文件系统中由一个唯一的inode表示每个inode都有一个唯一的编号。 块位图Block Bitmap 块位图是一个简单的位图结构用来追踪数据块的使用情况。假设系统有10000个数据块那么块位图就有10000个比特位每个比特位对应一个数据块。如果比特位为1表示对应的数据块已被占用如果为0则表示数据块可用。 inode位图inode Bitmap inode位图与块位图类似但用于追踪inode的分配情况。对于系统中的每个inodeinode位图都有一个对应的比特位。这个位图帮助系统快速判断哪些inode已被分配哪些仍然可用。 块组描述符GDT 块组描述符记录了块组的详细信息包括块组的大小、已使用的inode数量、剩余的inode数量、总的数据块数以及已使用的数据块数等。块组是文件系统组织数据的一种方式有助于优化存储管理和减少碎片。 超级块Super Block 存放文件系统本身的结构信息。记录的信息主要有 bolck 和 inode的总量未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的时间最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏可以说整个文件系统结构就被破坏了 文件与inode和数据块的关系 每个文件在Linux中对应一个inode节点该inode节点包含了文件的属性信息。但是一个文件的数据可能不仅仅存储在一个数据块中。对于较大的文件可能需要多个数据块来存储其内容inode结构中有一个blocks数组用于记录文件内容所在的数据块编号。这个数组不仅可以直接指向数据块还可以指向其他块这些块中存储的是进一步的数据块编号从而实现对大文件的支持。 struct inode {// 文件的大小// 文件的inode编号// 其他属性int blocks[15]; // 和它同一个块组的块的编号// blocks数组中的元素指向数据块或者是指向存储数据块编号的块 }; 4、目录与inode 在Linux和其他类Unix文件系统中一个目录可以保存大量文件但同一目录下不允许存在文件名完全相同的文件也就是说每个文件在该目录中的名字必须唯一。 目录本质上也是一种特殊的文件它确实拥有自己的inode索引节点和相应的data blocks数据块。inode是用来记录文件元数据如大小、权限、修改时间等和文件内容所在数据块的位置而数据块则是用来存储实际文件内容或目录项列表的地方。当我们在目录中创建文件时操作系统会在文件系统中分配一个新的inode并在目录对应的data block中添加一个目录项这个目录项包含新文件的名字以及指向该文件inode的引用。当我们进入目录、创建文件或显示文件及其属性时正是通过目录文件找到对应的inode信息再由inode定位到具体的文件内容。换言之inode在文件系统中是固定的标识符它与文件名并非一一对应而是与文件实体关联。用户通过文件名与目录中的目录项相联系进而访问到文件的inode而inode又指向固定的数据块。简而言之用户看到的文件名与文件系统内部的inode编号之间存在着一种映射关系这种关系在目录结构中起到了关键作用确保了文件的有效组织和定位。 二、软链接和硬链接 1、概念  软链接和硬链接是在文件系统中用于创建文件之间关联的两种方式它们之间的本质区别在于如何引用和处理文件的物理位置。 软链接 软链接是一个指向目标文件的指针类似于Windows系统中的快捷方式。软链接本身是一个独立的文件它包含了指向目标文件的路径信息。软链接有独立的inode因此它是一个独立的实体。如果原始文件被删除或移动软链接仍然存在但指向的文件可能会失效。 硬链接 硬链接是直接指向存储数据块的文件系统结构它们共享相同的inode。硬链接不是一个独立的文件而是文件系统中相同数据块的另一个入口。因此对于硬链接和原始文件来说它们实际上是同一个文件的不同名称。如果原始文件被删除硬链接仍然可以访问文件数据因为它们共享相同的数据块。 总的来说软链接是一个独立的文件指向目标文件的路径而硬链接是文件系统中同一数据块的多个入口它们共享相同的inode。 我们通过下面例子来体会一下 2、使用方法 在这个例子中我们来看一下如何在Linux系统中创建软链接和硬链接。 [hbrVM-16-9-centos DLLSL]$ echo hello testlink.txt [hbrVM-16-9-centos DLLSL]$ ll total 12 -rw-rw-r-- 1 hbr hbr 6 Mar 19 20:38 testlink.txt [hbrVM-16-9-centos DLLSL]$ cat testlink.txt hello [hbrVM-16-9-centos DLLSL]$ touch testlink1.txt testlink2.txt [hbrVM-16-9-centos DLLSL]$ ll total 12 -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 testlink1.txt -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 testlink2.txt -rw-rw-r-- 1 hbr hbr 6 Mar 19 20:38 testlink.txt 首先创建了一个名为testlink.txt的文件并向其中写入了文本hello接着创建了两个空文件testlink1.txt和testlink2.txt。  [hbrVM-16-9-centos DLLSL]$ ln -s testlink.txt soft.link [hbrVM-16-9-centos DLLSL]$ ln testlink1.txt hard.link [hbrVM-16-9-centos DLLSL]$ ll -i total 12 1183153 -rw-rw-r-- 2 hbr hbr 0 Mar 19 20:40 hard.link 1183155 lrwxrwxrwx 1 hbr hbr 12 Mar 19 20:40 soft.link - testlink.txt 1183153 -rw-rw-r-- 2 hbr hbr 0 Mar 19 20:40 testlink1.txt 1183154 -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 testlink2.txt 1183152 -rw-rw-r-- 1 hbr hbr 6 Mar 19 20:38 testlink.txt 通过执行ln -s testlink.txt soft.link命令用户创建了一个指向testlink.txt的软链接soft.link。软链接是一个特殊类型的文件它包含一个指向另一个文件的路径。这意味着soft.link是对testlink.txt的一个引用通过它可以访问testlink.txt的内容。 然后用户执行ln testlink1.txt hard.link命令创建了一个硬链接hard.link指向testlink1.txt。硬链接直接关联到文件的inode文件系统中的一个索引节点这意味着testlink1.txt和hard.link实际上指向同一份数据。在这个例子中我们可以看到testlink1.txt和hard.link有相同的inode号1183153这确认了它们是彼此的硬链接。 使用ll -i命令显示文件inode信息可以看到文件和链接的详细信息。soft.link显示为一个指向testlink.txt的软链接而hard.link和testlink1.txt共享相同的inode号表明它们是硬链接。 使用unlink删除软硬链接。 [hbrVM-16-9-centos DLLSL]$ unlink soft.link [hbrVM-16-9-centos DLLSL]$ unlink hard.link [hbrVM-16-9-centos DLLSL]$ ll -i total 8 1183154 -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 testlink2.txt 1183152 -rw-rw-r-- 1 hbr hbr 6 Mar 19 20:38 testlink.txt 3、软链接相当于快捷方式 在bin/exe目录下有一个可执行程序myexe如果我们想要运行它每次都需要带上路径这样比较麻烦。 [hbrVM-16-9-centos DLLSL]$ tree bin bin └── exe└── myexe1 directory, 1 file [hbrVM-16-9-centos DLLSL]$ ./bin/exe/myexe hello hello hello hello hello 我们可以创建一个myexe同名的动态链接这次直接在当前目录运行myexe即可这个软连接就相当于Windows的快捷方式。 [hbrVM-16-9-centos DLLSL]$ ln -s bin/exe/myexe myexe [hbrVM-16-9-centos DLLSL]$ ll total 8 drwxrwxr-x 3 hbr hbr 4096 Mar 19 20:58 bin lrwxrwxrwx 1 hbr hbr 13 Mar 19 21:02 myexe - bin/exe/myexe [hbrVM-16-9-centos DLLSL]$ ./myexe hello hello hello hello hello 4、硬链接相当于起别名 当我们删掉硬链接所链接的源文件这并不影响文件本身因为硬链接的inode与源文件是相同的而且观察hard.link属性第三列由2变为1这个属性就是硬链接数也就是只要有人使用这个inode那么这个文件就一直存在那文件被删除是什么状态呢我们通过下面inode的讲解就知道了。 [hbrVM-16-9-centos DLLSL]$ ll -i total 8 1183159 drwxrwxr-x 3 hbr hbr 4096 Mar 19 20:58 bin 1183153 -rw-rw-r-- 2 hbr hbr 0 Mar 19 20:40 hard.link 1183144 lrwxrwxrwx 1 hbr hbr 13 Mar 19 21:02 myexe - bin/exe/myexe 1183155 lrwxrwxrwx 1 hbr hbr 12 Mar 19 20:40 soft.link - testlink.txt 1183153 -rw-rw-r-- 2 hbr hbr 0 Mar 19 20:40 testlink1.txt 1183154 -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 testlink2.txt 1183152 -rw-rw-r-- 1 hbr hbr 6 Mar 19 20:38 testlink.txt [hbrVM-16-9-centos DLLSL]$ rm testlink1.txt [hbrVM-16-9-centos DLLSL]$ ll -i total 8 1183159 drwxrwxr-x 3 hbr hbr 4096 Mar 19 20:58 bin 1183153 -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 hard.link 1183144 lrwxrwxrwx 1 hbr hbr 13 Mar 19 21:02 myexe - bin/exe/myexe 1183155 lrwxrwxrwx 1 hbr hbr 12 Mar 19 20:40 soft.link - testlink.txt 1183154 -rw-rw-r-- 1 hbr hbr 0 Mar 19 20:40 testlink2.txt 1183152 -rw-rw-r-- 1 hbr hbr 6 Mar 19 20:38 testlink.txt 5、引用计数 文件删除与inode的关系 创建硬链接时实际上并没有真正创建新的文件而是在指定的目录下建立了文件名和指定inode的映射关系。这意味着硬链接与原始文件共享相同的inode和数据块它们只是文件系统中相同数据的不同入口。 在文件属性中会有一个数字表示硬链接的数量这个数字也被称为引用计数。引用计数的作用是跟踪有多少个文件名与同一个inode相关联。当我们删除一个文件时并不是立即删除这个文件的inode而是将这个文件的inode引用计数减少。只有当引用计数减少到0时文件的inode才会被真正删除这意味着没有文件名与该inode相关联也就是没有用户关心这个文件了。 通过引用计数系统可以有效地管理文件的关联关系确保在没有任何文件名与文件关联时才真正删除文件的数据块和inode从而避免意外删除或数据丢失的情况。 目录的引用计数 在Linux和其他类Unix文件系统中每个目录都有至少两个硬链接。这是因为文件系统设计的一个基本原则。 [hbrVM-16-9-centos DLLSL]$ mkdir dir [hbrVM-16-9-centos DLLSL]$ ll total 1 drwxrwxr-x 2 hbr hbr 4096 Mar 19 21:25 dir指向自己的硬链接 每个目录都有一个指向自身的硬链接。当你在文件系统中创建一个新的目录时它会自动地包含一个对该目录本身的引用也就是其inode索引节点计数加1。这个内部的自我引用是必要的因为它确保了目录即使在其父目录的链接数减少到1时比如父目录内除了.和..之外没有其他条目引用它时也不会被删除因为至少还有一个硬链接即它自己在引用它。 . (当前目录自身的引用)这是目录自身的一个硬链接。每个目录都有这样一个链接指向自己因此计数至少为1。 指向其父目录的硬链接 同时每个目录中都有两个特殊的条目.点和..双点。.指向当前目录自身而..指向其父目录。这里的..其实就是一个硬链接它增加了父目录的硬链接计数。这样每当有一个新的子目录创建在某个目录下时那个父目录的硬链接数就会增加1因为子目录中的..相当于对其父目录的硬链接。 我们可以通过目录的引用计数减2得到目录的文件数我们来分析下面目录和文件的引用计数 [hbrVM-16-9-centos DLLSL]$ ll -ai total 16 1183143 drwxrwxr-x 4 hbr hbr 4096 Mar 19 21:25 .789117 drwxrwxr-x 10 hbr hbr 4096 Mar 19 20:30 .. 1183159 drwxrwxr-x 3 hbr hbr 4096 Mar 19 20:58 bin 1183153 drwxrwxr-x 2 hbr hbr 4096 Mar 19 21:25 dir 1183144 lrwxrwxrwx 1 hbr hbr 13 Mar 19 21:02 myexe - bin/exe/myexe 1183152 -rw-rw-r-- 1 hbr hbr 0 Mar 19 21:24 test.c [hbrVM-16-9-centos DLLSL]$ tree . ├── bin │ └── exe │ └── myexe ├── dir ├── myexe - bin/exe/myexe └── test.c3 directories, 3 files . 当前目录引用计数为4。这是因为在Linux系统中每个目录都包含一个指向自身的硬链接同时还有一个指向其父目录的硬链接即..以及在文件系统中myexe的两个标准硬链接。所以总共有4个硬链接指向当前目录。 .. 父目录引用计数为10。这是因为在父目录中有10个子目录每个子目录都包含一个指向父目录的硬链接即..所以引用计数为10。 bin 目录引用计数为3。这是因为当前目录中有一个指向该目录的硬链接即dir另外一个是指向它的父目录即..以及在文件系统中的一个标准硬链接。 dir 目录引用计数为2。这是因为当前目录中有一个指向该目录的硬链接即dir自身另外一个是指向它的父目录即..。 myexe 符号链接引用计数为1。因为它只是一个指向另一个文件的符号链接没有额外的硬链接。 test.c 文件引用计数为1。因为它是一个普通文件没有其他硬链接指向它。 6、总结  总结软硬链接的区别 软链接Symbolic Link 类似于Windows系统中的快捷方式。包含目标文件的路径信息。可以跨文件系统链接文件。指向文件或目录。如果原文件被删除软链接将失效。 硬链接Hard Link 指向文件系统中的inode和原始文件共享相同的数据块。不能跨文件系统。不能链接目录只能链接文件。如果原文件被删除任何指向同一inode的硬链接仍然可以访问文件内容直到所有的硬链接都被删除。
http://www.hkea.cn/news/14588706/

相关文章:

  • 郑州网站开发公江门网站建设推广策划
  • 衡阳网站seo优化百度推广授权代理商
  • 搞笑视频网站建设策划书网页制作与网站建设实战大全 pdf下载
  • 海外网站搭建芜湖做网站优化
  • 上海电子商城网站制作海丰建设局网站
  • 网站取消301后久久建筑网施工方案好用吗
  • 成都设计公司工资多少云南seo简单整站优化
  • 现在有没有免费的网站空间绍兴公司企业名单
  • 牛网站建设想做网站的公司好
  • 建站公司 知乎 discuz商务网站内容维护范围
  • 做软件的叫什么职业网站标题具体怎样优化
  • 安平县护栏网站建设桌面百度
  • 宝华路桥建设集团网站wordpress 如何汉化主题
  • 网站制作 公司资质wordpress分类下文章置顶
  • python做的网站如何部署做淘宝内部优惠券网站要钱么
  • 网站值不值得做seo2023年楼市将迎来抛售潮
  • 网址导航网站可信软件开发工程师
  • 网站备案在哪查八面通网站建设
  • 青岛网站建设排名微信微网站开发报价单
  • 各大网站搜索引擎入口互联网保险产品
  • 网站ip被屏蔽怎么办淮南市网站开发的方式
  • 建设局是干嘛的单位想学做网站seo 在哪学 电话多少
  • 得到做网站公司品牌网站建设帮你大蝌蚪
  • iis 网站权限360建筑网中级机械工程师招聘
  • 中铁建设投资集团有限公司招聘网站企业应加强自身网站建设
  • 医药平台网站建设wordpress破图
  • 一站式做网站技术常州网上教科院
  • 北京网站建设找降龙湖南平台网站建设推荐
  • 中么网站wordpress 容易被收录吗
  • 网站设计原则wordpress首页添加视频教程