【Linux】磁盘与文件系统(filesystem)管理

更新中……

inode和block

Linux中文件(或目录)是分两部分存储的,一部分是文件属性,存储在inode中,一部分是文件的具体内容,存储在block中,这是为了提高文件(或目录)的检索速度。可以这样理解,inode就是每个文件的索引(文件控制块),包含文件的所有属性,这些属性包括:

?该档案的拥有者与群组(owner/group);
? 该档案的存取模式(read/write/excute);
?该档案的类型(type);
? 该档案建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改的时间(mtime);
? 该档案的容量;
? 定义档案特性的旗标(flag),如 SetUID…;
? 该档案真正内容的指向 (pointer);

当要访问某个文件时,首先访问该文件的inode,如果只是需要获取文件的属性,如ls命令,直接从inode就可以获取,不用读取整个文件,如果是要读取文件内容,可以通过文件指针(pointer)找到存储文件内容的具体的block来读取。

注意:
第一,目录也可以看做一个文件,它的内容就是所有与它有关的链接信息,如/etc目录就是在该目录下的文件或目录的链接信息。
第二,inode是与block一一对应,而不是文件,也就是说,inode和block在系统启动的时候就已经分配好了,存放在superblock中,在需要的时候(比如新建文件或目录)查看空闲的inode和block将它们与新建的文件或目录进行关联。
第三,inode和block的使用情况时用bitmap存储的。

新建文件和目录时

分为两步:
1. 根据 inode bitmap / block bitmap 的信息,找到尚未被使用的 inode 与 block , 进而将档
案的属性与数据分别记载进 inode 与 block ;
2. 将刚刚被利用的 inode 与 block 的号码 (number) 告知 superblock、inode bitmap、block
bitmap 等,让这些 metadata 更新信息。

superblock

文件系统相关信息是在系统启动时就读取的,这些信息存放在一个叫superblock的超级块中,具体信息包括:

–>block 与 inode 的总量;
–>未使用与已使用的 inode / block 数量;
–>一个 block 与一个 inode的大小;
–>filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间 等档案系统的相关信息;
–>一个 valid bit 数值,若此档案系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。

磁盘与目录的容量

可以使用df命令查看磁盘和目录的容量信息。

df命令

[root@linux ~]# df [-ahikHTm] [目录或文件名]

参数:

-a :列出所有的档案系统,包括系统特有的 /proc 等档案系统;
-k :以 KBytes 的容量显示各档案系统;
-m :以 MBytes 的容量显示各档案系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示

du命令

[root@linux ~]# du [-ahskm] 档案或目录名称

参数:

-a :列出所有的档案与目录容量
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;

若缺省参数和选项,则列出所在目录下所有文件或目录的的容量信息,而不显示本目录的容量。

硬链接和软链接

为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

硬链接

若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(hard link 就是 file 的一个别名,他们有共同的 inode)。硬链接可由命令 link 或 ln 创建。如下是对文件 oldfile 创建硬链接。

 link oldfile newfile 
 ln oldfile newfile

inode 是随着文件的存在而存在,因此只有当文件存在时才可创建硬链接,即当 inode 存在且链接计数器(link count)不为 0 时才能创建硬链接。由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

文件有相同的 inode 及 data block;
只能对已存在的文件进行创建;
不能交叉文件系统进行硬链接的创建;
不能对目录进行创建,只可对文件创建;
删除一个硬链接文件并不影响其他有相同 inode 号的文件。

软链接

与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。*是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。因此软链接的创建与使用没有类似硬链接的诸多限制:

软链接有自己的文件属性及权限等;
可对不存在的文件或目录创建软链接;
软链接可交叉文件系统;
软链接可对文件或目录创建;
创建软链接时,链接计数 i_nlink 不会增加;

通过硬链接和软连接访问文件图示:
这里写图片描述

软连接和硬链接的删除

删除硬链接,源文件inode的连接计数器减1,删除源文件也是一样的,只要有一个硬链接存在文件就存在,只有当链接计数器为0时,才真正删除文件。
删除软连接,对源文件没有影响,因为软连接是一个单独的文件。但删除源文件,连接到它的软连接将失去连接目标,即会提示找不到连接的文件,和Windows的快捷方式一样一样的。

总结:硬链接是文件的一个别名,它与源文件共用同一个inode和block,因此不会另外消耗inode和block,只能问文件创建硬链接。软连接可以看做是一个新的文件,它新开辟一个inode,它的block内容是一个指向源文件的inode的指针。

为文件创建链接——ln命令

[root@linux ~]# ln [-sf] 来源文件 目标文件

参数:

-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
-S “-S<字尾备份字符串> ”或 “–suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“–version-control=<备份方式>”
–help 显示帮助信息
–version 显示版本信息

磁盘分割——fdisk

鸟哥的看不太懂啊!在这儿停留太久了,以后再看吧。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值