Linux磁盘与文件系统管理
Linux磁盘与文件系统管理
我知问答
如何列出所有磁盘分区信息? cat /proc/partitions
或者可以: ll /dev/sda* ;列出
ll /dev/sdb*
1.首先我们需要熟悉inode,block,和superblock他们的含义和其关系
每个inode与block都有编号,而每个文件都会占用一个inode,同时记录此文件的数据所在的block号码,因此,如果我们能够找到文件的inode的话,就可以知道这个文件所放置数据的block号码,当然也就能够读出该文件的实际数据了。
我们称这种数据访问的方法为索引式文件系统。
2.介绍一下EXT2文件系统的基本构成
文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装开机管理程序, 这是个非帯重要的扇区,因为如此一来我们就能够将不同的开机管理程序安装到个别的文件系统最前端,而不用覆盖整颗硬盘唯一的 MBR, 这样也才能够制作出多重引导的环境
EXT2文件系统在格式化的时候基本上是区分为多个块组(block group),每个块组都有独立的inode/block/superblock系统。每个blockgroup又分为六个主要部分:
data block :用来放置文件的地方
inodetable:inode表格,其中,inode主要记录文件的属性以及文件实际数据放在哪几号block内。
每个inode的大小均固定为128bytes,每个文件都仅会占用一个inode。inode的大小是固定的128bytes,但是要记录的东西非常多,如果一个文件过大了,那么仅仅一个inode的空间是不够的,所以EXT2文件系统采用了巧妙的间接指向方式,详情参考书本P202。
Superblock(超级块):记录整个文件系统相关信息的地方,没有superblock就没有这个文件系统了。
File system Description(文件系统描述说明)
Block bitmap(块对照表)
Inode bitmap(inode对照表)
3.查看superblock的信息:dumpe2fs
eg : dumpe2fs /dev/hdc2
4.目录:EXT2会分配一个inode与至少一块block给该目录,inode记录该目录的相关权限和属性,并记录分配的那块block号码,而block则记录在这个目录下的文件名与该文件名占用的inode号码数据。
文件:EXT2会分配一个inode和文件相对于文件大小的block数量给该文件。
Eg: / 的inode:通过挂载点的信息找到/dev/hdc2的inode号码为2的根目录inode,且inode具有的权限呢让我们可以读取到该block的内容(有r和x)
5.EXT2/EXT3文件的访问与日志文件系统的功能
如果我们要添加一个文件,那么文件系统的行为是:
由于ext2文件系统可能会出现数据不一致状态,而为了有效的解决这个问题,就有了日志式文件系统的出现。而ext3就具有这样的能力。
日志式文件系统是如何有效解决数据不一致状态的呢?在我们的文件系统中规划出一个块,该块专门记录写入或修订文件时的步骤,这样就可以轻松解决了。
6.挂载点的意义
将文件系统和目录树结合在一起的操作我们称之为挂载。
挂载点一定是目录,该目录是文件系统的入口。
7.Linux的VFS
Linux支持多种文件系统,那么,Linux的内核是如何管理这些文件系统的呢?其实,整个Linux的系统都是通过 Vitual Filesystem Switch(虚拟文件管理,VFS)的内核功能区读取文件系统的。也就是说,Linux认识的文件系统都是VFS在进行管理。
8.文件系统的简单操作
df :列出文件系统的整体磁盘使用量
du :评估文件系统的磁盘使用量(常用在推估目录所占)
ln : 连接文件,创建一个硬连接,就是hard link。这里是有多个文件名对应到同一个inode号码。但是ln的对象需要注意,不能够跨文件系统,不能够link目录。
还可以创建symbol link ,符号连接,它会占用inode和block,此外,它可以link目录,能够有效的做到文件的保护。关于ln的详细应用请参考书本P213.
9.磁盘的分区,格式化,检验与挂载
磁盘分区:fdisk
下面介绍一下fdisk的一些用途:
增加分区,删除分区,显示分区的基本信息。详情请参考书本的P217.
10.磁盘格式化:mkfs(默认值格式化), mke2fs(可以自定义格式化)
11.磁盘检验:fsck,badblock。
12.磁盘的挂载与卸载:mount,umount
挂载需要注意:单一文件系统不应该被重复挂载在不同的挂载点
单一目录不应该重复 挂载多个文件系统
作为挂载点的目录理应为空目录为好
13.磁盘参数修改:mknod
修改系统卷标:e2label
还有一些命令:tune2fs, hdparm
14.设置开机挂载
设置开机挂载,其中,设置文件在:/etc/fstab中
15.特殊设别loop挂载(镜像文件不刻录就挂载使用)
16.还可以利用parted进行大容量(2TB以上)的分区