文件系统零散知识

来源:互联网 发布:淘宝库存监控软件 编辑:程序博客网 时间:2024/06/06 03:36

1.文件管理

文件系统描述文件在硬盘中的组织,保存在硬盘中的文件,目录,软链接。

为了更加方便的管理持久化文件存储,操作系统一般对应胖进行有规划的管理,

规划包括:
。分区

。格式化

文件系统指一个分区内,文件存储组织的方式

在Linux下,通过mount命令将分区挂载到虚拟文件系统

2,inode

一个音频分区,被格式化之后,可以认为硬盘被划分成两部分:管理数据和数据

管理数据部分保存着这个分区的分区信息,以及inode表.

inode保存文件的属性信息,stat命令能看到的信息,大部分都是保存在inode里的一个iNode占用128或256个字节,这个依赖具体的文件系统,每当在硬盘上创建一个文件/目录           时,系统为这个文件/目录分配一个inode。值得注意的是,文件名,不存在inode中,而是存在文件内容部分.


3,数据块

数据部分被简单的,根据等大尺寸划分成n块,一般每块数据块的尺寸为1024--4096,由具体文件系统决定

4,文件

当创建一个文件时,系统为该文件分配一个inode.如果往该文件写数据,那么系统为该文件分配数据库,inode会记录这个数据块的位置,当一个数据块不够用的时候,系统会继续为他分配数据块


5,目录

当创建一个目录时,系统为该目录分配一个inode,同时分配一个数据库,并且在该数据块中,记录文件好对应的inode,同时分配一个数据块,并且在该数据块中,记录文件和对应的inode

如果该目下创建文件,newfile,会为该文件创建inode,最后将newfile文件名he ==和它的indoe,做了一条记录,保存在目录的数数据块.

如果一个inode被别人引用,那么它的引入计数器加1.


6,路口和寻址

Linux系统采用以/划分的路径字符串来寻址文件


比如命令mkdir testdir,寻址和操作过程如下图:



补充:

查看磁盘信息

sudo fdisk -l

磁盘名字sda sdb....

分区名字 sda1 sda2....

分区

sudo fdisk /dev/sdb

n 创建新分区

p输出分区信息

w保存分区信息并退出


分区和挂载

sudo mkfs.ext4 /dev/sdb1

sudo mount  /dev/sdb1 xxyy

挂载成功之后,对xxyy目录的读写,其实实在/dev/sdb1文件系统中


开机自动挂载

通过mount挂载的目录时临时的.如果希望开机就挂载,那么可以将挂载命令写入到etc/profil.或者修改/etc、fstab文件,/etc/fstab描述了开机需要挂载的文件系统信息


去除挂载

通过手动umount去除挂载


7 硬链接和软连接

硬链接不占用inode,只占用目录项

软链接占用inode

创建链接命令ln,硬链只将对应的inode在目录总增加一个名字,并且将inode的引用计数器+1


为了可以跨文件系统和对目录进行链接,创建软链接这种软链接这个方式. ln -s


8,虚拟文件系统 VFS

内存无法加载硬盘所有内容,应为一般内存比硬盘小,但是在linux 内核中,维护了一个虚拟文件系统,将硬盘的目录结构映射到内存中,这个映射一般只包含已经被打开的文件

9, 文件删除

使用unlink命令和函数可以删除一个文件。

如果此时文件已经被打开,那么该文件也可以被unlink,但是删除操作不会立即执行,而会保留到文件关闭时执行

unlink 删除文件,如果是链接,就删除链接,如果不是链接就删除文件

rmdir 只能删除空目录

rm 会判断参数类型,如果是文件那么会调用unlink,如果是目录会调用rmdir

如果要删除非空目录,要使用rm -r, -r选项先删除目录中的文件,再调用rmdir


10 文件时间

对文件的访问,会导致文件时间发生变化,系统会自动记录用户对文件的操作的时间戳,以便将来可以查询文件修改时间

如果需要故意修改,那么可以通过utime函数,修改文件的访问时间和修改时间


touch 命令也可以将文件的时间修改为当前时间,touch命令的副作用是,如果参数所指文件不存在, 那么创建一个空文件

当用户进行打规模拷贝时,cp操作会修改文件的访问时间,如果想提高效率,可以使用-p选项,避免文件属性的修改时间

11 目录操作

创建和删除目录

mkdir和rmdir

遍历目录

opendir, closedir, readdir, rewinddir , telldir, seekdir







0 0
原创粉丝点击