磁盘管理之inode与block
索引式文件系统
什么是inode?
Inode其实就是索引号,便于我们寻找我们文件所存储的数据块block,索引式文件系统在查找信息,读写操作上都比原来的文件系统要快,我们可以通过inode中记录的block信息一次性将数据读取出来,但是采用fat文件系统我们需要先找出第一个block,在通过第一个找第二个数据块,再通过第三个找第四个,这样如果数据不是在一个磁道上,我们可能需要将磁盘读取好几遍才能读出整个文件。
inode记录的信息:
文件的权限(rwx)
所有者,所属组
链接数
时间信息(atime,mtime,ctime)
文件大小
文件指向数据块的指针

什么是block?
block是用来存放数据内容的,一般块的大小有1k,2k,4k,8k等
存放规则:
一个block只能存放一个文件的数据
如果一个block放不下一个文件的数据就会找到另一个block继续存放
即使一个文件数据小于block,这个block也不能在存储其他文件数据

inode与block的关系?
文件系统一开始就将 inode 与 block 规划好了,除非重新格式化(或者利用resize2fs等指令变更文件系统大小),否则 inode 与 block 固定后就不再变动。
一个文件只有一个inode,但一个文件可以有很多block。在inode中,存在着指向数据块的指针,我们新创建一个文件,默认没有数据,当我们开始存储数据时,inode中的指针开始指向一个block,如果一个block装不下,就会指向另一个block存储数据,然后还又二级指针,即inode中的指针指向一个block后,这个block充当指针来分别指向不同的block,这样就可以存储大量的数据。
我们以ext2文件系统为例对inode和block进行说明:在ext2中一个inode只有128byte,而记录一个block需要4byte,其中我ext2的inode中有11个直接指向,1个间接指向,一个二级指向,一个三级指向,假设一个block大小是1byte,那我们就可以存储:
11x1K+(1K/4)x1K+256x256x1K+256x256x256x1K=16G
单个文件我们就可以存储16G大小

目录与inode
我们发现在linux系统下,目录的大小一般都不会很大,这是为什么呢。在linux下,一切皆文件,包括目录,他就像是一个文件接口,里面除了存放本身的权限,时间,大小等信息外,其他存储的是这个目录下一级文件或目录的inode和与其对应的文件或目录名。举例来说,现在我们要找到/tmp/test.txt的内容,如何做的?
首先,我们的系统会先找到/目录的inode号,然后在inode中找tmp和其对应的inode,然后通过tmp对应的inode中的信息,在里面找到test.txt对应的inode号,此时,我们通过inode号所指向的block把我们所需要的信息显示出来

cp与inode的关系
cp 就说重新使用一个空闲的inode,通过参数的不同,复制原inode中的相关信息,并让新inode指向空闲的block,让原inode指向的block内容重新复制到新的inode指向的block中去,完成复制(无论是否跨分区,都可以实现)

mv与inode的关系
mv 就说重新使用一个空闲的inode,通过参数的不同,复制原inode中的相关信息,并让新inode指向空闲的block,让原inode指向的block内容重新复制到新的inode指向的block中去,完成复制,释放原inode(无论是否跨分区,都可以实现)但是我们如果实在同一个分区下的话,它仅仅是将inode换了一个与之对对应名字,并没有新的inode产生。


rm与inode的关系
rm 是直接释放掉相对应的inode,但是,原block中依然存放着信息,可是由于没有inode的指向,所以依旧会重新记录在block bitmap的空闲block中(被释放掉的inode会被记录在inode bitmap空闲区域中)
硬链接与软连接
硬链接:
硬链接有一个特点就是不能跨分区,这是为什么呢?这个硬链接的特点有关:我们知道,在一个分区内有很多的inode,并且一个分区中每一个inode都是唯一的,硬链接的做法就是将一个inode赋予很多个名字,每一个名字都对应一个inode,这样,我们即使删除一个有相同inode的文件,只要硬链接数不为0 ,文件就依然能够通过不同的名字对应的相同的inode被找到。我们很容易发现,在我们ls -l的时候,权限后面跟的有数字,这就是链接说,有人会说,“没有呀,就这一个目录了呀”,但是当我们打开一个目录 ls -ai的时候,我们惊奇的发现,里面居然还有一个 . 对应的相同的inode。

软链接:
软链接,我们可以简单的认为就是快捷方式,它里面记录的是源文件的路径(一定要注意相对路径和绝对路径),这就意味着,软链接是可以跨分区的,软链接删除后,源文件依然存在,但是源文件发生移动或被删除,链接文件就发出红色闪烁错误。

磁盘管理之inode与block的更多相关文章
- Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)
Linux中的文件属性 ls -lih 包括:索引节点(inode),文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,文件名等等 索引节点:相当于身份证号,系统唯一,系统读 ...
- Linux文件访问流程及磁盘inode和block总结
Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...
- Linux磁盘管理之元数据、文件和目录、链接文件03
一.存储设备分区简述 文件系统最终目的是把大量数据有组织的放入持久性的存储设备,如硬盘.硬盘存储能力具有持久性,不会因为断电而消失,存储量大,但读取速度慢.操作系统读取硬盘的时候,不会一个一个扇区读取 ...
- Linux_磁盘管理
一.linux磁盘管理 命令:fdisk -l brwx-rw--- 其中b(占位符)代表block,块设备文件 sda,sdb... --> 硬盘 其中sda1,sda2..sdb1,sdb2 ...
- Linux 磁盘管理
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
- linux 文件系统(inode和block)
linux文件系统(inode block superblock) 先说一下格式化:每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能 ...
- 磁盘管理 之 parted命令添加swap,文件系统
第1章 磁盘管理 1.1 必须要了解的. 1.1.1 ps aux 命令中 RSS 与VSZ的含义 rss 进程占用的物理内存的大小 单位:kb : vsz 进程占用的虚拟的内存大小(物理内存+swa ...
- linux磁盘管理系列-软RAID的实现
1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...
- linux 磁盘管理三部曲——(2)管理分区,文件系统类型格式化
上篇小编给大家讲解了磁盘结构和分区的介绍,这篇小编就给大家演示如何管理分区和文件系统类型格式化. 小编上篇已经提到如何使用磁盘,今天这两步,就是其中很重要的两步.(前几天写的有点急,有点乱,今天又整理 ...
随机推荐
- Response乱码时的处理方法
有时候我们看到Response中的HTML是乱码的, 这是因为HTML被压缩了, 我们可以通过两种方法去解压缩. 步骤:方法一:点击红框内容"Response body is encoude ...
- Linux学习总结(十四)—— 查看CPU信息
文章首发于[博客园-陈树义],点击跳转到原文Linux学习总结(十四)-- 查看CPU信息. Linux学习总结(十四)-- 查看CPU信息 商用服务器CPU最常用的是 Intel Xeon 系列,该 ...
- noip普及组2005 采药
采药 描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...
- SSM简明教程:简单的十步教你搭建人生第一个SSM框架[ SSM框架整合教程(Spring+SpringMVC+MyBatis) ]
SSM_BookSystem SSM框架基础 SSM_BookSystem ---> Hello CRUD 说明:本项目目前包含基础的CRUD 日期:2017-05-01 22:25:37 作者 ...
- Spring Data Jpa(Hibernate) OneToMany
这个其实非常简单.假设有topic 和 subscriber两个实体类,不考虑关联关系,则连个类的代码如下: /** * Created by csonezp on 2017/8/31. */ @En ...
- 史上最全前端面试题(含答案)-A篇
HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...
- 基于hdp2.5升级phoenix版本为4.8
hdp2.5自带的phoenix是4.7的,而客户的驾驶舱项目跑在4.7的phoenix上是有问题的,如:如果表中没有数据,执行select count(*) from 表,返回的是空,这时导致驾驶舱 ...
- GridView用法详解
前台页面: Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile=&qu ...
- 泛型集合转化为DataTable
public class DataTableUtil { /// <summary> /// 泛型集合转化为dataTable /// </summary> /// <t ...
- python 数据驱动(ddt)
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) 实例代码: import ddt import unittest ...