linux磁盘文件与目录管理系统(2)
(1): df:可以调出目前挂载的设备,
如/dev/hdc2
(2):dumpe2fs:的用法,
dumpe2fs –bh 设备文件名字
dumpe2fs –b 保留为坏道的部分,一般用不到。
dumpe2fs –h 仅仅列出supperblock的数据,不会列出其他的数据
(3):inode本身并不记录文件名字,文件名的记录都是在block当中,我们要读取某个文件的时,五笔会经过目录的inode与block,然后才能够找到那个带读取的文件的inode号码,最终才会读到正确的文件block内的数据,
由于目录树是有更目录中开始读取的,因此系统通过挂载的信息可以找到挂载点的inode号码,根据Indoe读取到更目录的block内的文件名数据,在一层层的往下毒打正确的文件名,
如果我们读取/passwd这个文件,该文件的读取流程为:
1:通过挂载点的信息找到/dev/hdc2的inode号码为2的根目录inode,且inode具有的权限让我们可读取该block的内容有r与x
2:经过上个不走取得block的号码并且找到具有/目录的inode号码,
3:通过读取/的inode号码可以得知当前用户具有r与x的权限,因此可以读取/的block的内容,通过读取/的block找到给内容具有Passwd文件的indoe号码
此外如果文件系统太大了,那么当读取一个文件分别记录在这个文件系统的最前面与最后面的block号码中,此时会赵晨个硬盘的机械手臂移动幅度过大,也会造成硬盘的机械手臂移动幅度过大,也会造成数据的读取性能地下,而且刺头在受训整个文件系统的时候也会话费比较多的时间因此分区的规划并不是越大越好,而是要针对你的主机用途进行规划才行。
(4):
如果是新增加一个文件,此时文件需要确定用户对于欲添加的用户是否具有w与x的权限,如果有的话才能添加,根据inode bitmap好到有没有使用的inode号码并且将新文件的权限写入,根据block bitmap找到有没有使用的block号码,并且将实际的数据写入block中而且更新inode的block指向的数据,将刚才写入的inode与block数据同步更新inodebitmap与blockbitmap,并且更新supperblock中的内容。一般来说,我们将inodetable与data block称为数据存放区域,至于其他例如supper block,block bitmap与inode bitmap等区段中的数据称为metadata中间数据,
日志文件系统的兴起:用来专门记录文件系统因为突然断电等情况发生导致文件系统发生不一致的情况,划分一个专门的快,用来记录写入或者修订文件的步骤,这个一简化一致性检查步骤,
当写入一个文件其步骤为:
1:预备,先在系统中写入一个文件,会先在日志记录块中记录某个文件准备要写入的信息。
2:实际写入,开始写入文件的权限与数据;开始更新Meta data 的数据,
3:结束完成数据与meta data的更新后,在日志记录快当中完成该文件的数据,
(5):
Ext3是ext2的升级版本并且可以向下兼容ext2的版本,目前我们才简易大家可以直接使用ext3这个文件系统,除了写入若干数据超过1次时,ext3往往会较快与ext2,因为ext3的日志文件是的硬盘的移动性能更有效的进行,你还可以轻易的从ext2系统转到ext3系统而不必要重新格式话。
(5):一个文件如果为被改动,则在该内存区段的文件数据会被设置成clean的但是如果内存中的文件数据被改过了,此时该内存中的数据会被设置成dirty,此时所有的操作还在内存当中而并为写入磁盘当中,系统会将常用的文件数据放置到主存储器的缓冲区中,用以加快文件系统的读写,最后Linux的物理内存最后都会被用光,这是正常的情况,可以加快系统性能,你也可以使用sync来强迫内存中设置为dirty的文件协会到磁盘中,
(6):ls- lid / /boot /home 这三个文件夹可以看到其Inode号码,因此 可以通过Inode号码来确认不同的文件名是否为相同的文件,
(7):其他LINUX支持的文件系统与VFS,Linux文件系统除了标准的ext2与增加了日志功能的ext3之外,事实上,linux还有支持很多文件系统格式的,尤其是最近这几年推出了好几种速度很快的日志文件系统,包括sgi的xfs的文件系统可以使用与更小的Reiserfs文件系统,以及wIndows的FAT文件系统,能够被LINUX所支持,常用的支持的文件系统有
传统的文件系统:ext2/minix/MS-DOS/FAT/IOS9660
日志文件系统:ext3/ReiserFS/Windows’ NTFS/IBM’SJFS/SGI’SXFS
网络文件系统:NFS/SMBFS
如果想知道你的LINUX文件系统有那些,可以查看下面这个目录
Ls –l /lib/modules/$ (uname –r) /kernel/fs
系统检测已经挂载到内存的文件系统有:
Cat /proc/filesystems
(8):Linux vfs:linux文件系统的内核又是如何管理这些认识的文件系统呢,其实整个linux文件系统都是有一个名字为virtual filesystem switch(虚拟文件系统)的内核功能去读取文件系统的也就是说整个LINUX的文件系统都是VFS在进行管理的,我们用户并不需要知道每个分区上头的文件系统是什么,VFS会主动帮我们做好读取工作,有了VFS我们可以不用去指定读取的是哪一个文件系统。
df –a:理出文件系统的整体磁盘包括系统特有的/proc等文件系统。
df –k:以kb的容量显示各种文件系统
df –m:以mb的的容量显示文件系统。
df –h:以GB,MB,KB等可是自行显示
df –H:以1000代替1024的进位方式显示
df –T:连同该分区的文件系统名称例如ext3也列出
df –i:不用硬盘容量,而已Inode的数量显示
有些特殊的文件系统几乎都是在内存中例如/proc就是proc文件系统的。
Df –h /etc可以自动分析该目录或者文件所在的分区,并且将该分区的容量显示出来,
所以你可以知道某个目录下面还有多少容量可以使用了。
du:
-a:列出所有的文件与目录容量,因为默认仅仅统计目录下的文件量而已。
-h:以人们比较容易阅读的容量格式显示
-s:列出总量而已,而不列出每个个别的目录占用容量
-S:不包括子目录下的总计,与-s有点差别。
-k:以kb列出容量显示。
-m:以mb列出容量显示。
与DF不同的是du这个命令其实是会直接到文件系统内去查找文件所有的文件数据的,所以上面 三个命令的运行会执行一小段时间,此外在默认的情况下大小的输出是以KB来设计的,如果你想知道目录占用了多少M,可以直接用-M就Ok 了。