当前位置: 首页 > Linux

Linux中的文件系统

时间:2023-04-06 20:06:29 Linux

1。设备专用文件(devicefile)设备专用文件对应系统的某个设备。在内核中,每种设备类型都有一个阈值给相应的设备驱动程序,用于处理对该设备的所有I/O请求。设备可分为字符设备和块设备。每个设备文件都有一个主ID号和一个辅助ID号。mainidnumber标识了一般的设备级别,内核会使用mainidnumber通过一个设备对应的红黑树找到对应的驱动程序。二级ID号可以识别特定的设备。设备文件的primary和secondaryid记录在设备文件的inode中。每个设备驱动程序都会向内核(上面提到的红黑树)注册它与一个特定主设备号的关联,同时建立设备专用文件和设备驱动程序之间的关系。内核不使用设备文件名来查找驱动程序。2.磁盘和分区磁盘分区可以保存任何类型的信息,但通常只包含以下内容之一:文件系统:用于存储常规文件数据区:可以作为原始设备访问交换区:用于内核管理目的的内存3、文件系统在文件系统中,用于分配空间的基本单位是逻辑块,它是文件系统所在的磁盘设备上的一些连续的物理块。引导块:始终作为文件系统的第一个块,不供文件系统使用,它只包含用于引导操作系统的信息超级块:包含与文件系统相关的参考信息:inode表容量,大小oflogicalblocksinthefilesystem,以逻辑块的形式,文件系统中文件系统的大小每个文件或目录对应inode表中唯一的一条记录。这条记录注册了与文件相关的各种信息数据块:文件系统中的大部分空间用于存储数据5.inode对于驻留在文件系统上的每一个文件,文件系统的inode表都会包含一个inode,inode维护的信息如下:文件类型,文件所有者,文件所有者,组,三种用户访问权限,三个时间戳(文件a的最后访问时间,文件m的最后修改时间,最后一次更改文件状态的时间c)指向文件的硬盘Numberoflinks文件的大小,实际分配给文件的块数,以字节为单位,指向文件数据块的指针,以512字节块为单位6、虚拟文件系统linux支持的各种文件系统的实现细节不同。不一样。虚拟文件系统是一种内核特性,通过为文件系统操作创建一个抽象层来解决问题:vfs定义了一组文件系统的通用接口。所有与文件交互的程序都会根据这个接口进行操作。每个文件系统都会提供vfs接口的实现。7、日志系统崩溃后,为了保证文件系统的完整性,必须对文件系统进行一致性检查fsck。如果它太大,它会很马尔法。使用日志文件系统,系统崩溃后无需对文件进行冗长的一致性检查。在元数据真正更新之前,日志文件系统会将这些更新操作记录在一个专门的磁盘日志文件中,元数据更新的记录按照相关性进行分组。在事务处理过程中,一旦系统崩溃,日志可用于在系统重启时重做任何未完成的更新,同时为文件系统恢复一个一致的状态。用数据库的说法,日志文件系统确保文件元数据事务始终作为一个整体提交。8.挂载和卸载文件系统点击(此处)折叠或打开1.#include2.intmount(constchar\*source,constchar\*target,constchar\*fstype,unsignedlongmountflags,常量无效\*数据);3./\*returns0onsuccess,or\-1onerror\*/fstype是一个字符串,用于标识设备数据中包含的文件系统类型,是一个指向信息缓冲区的指针,对于它的解释取决于文件系统。对于大多数文件系统,此参数是一个包含以逗号分隔的选项设置的字符串。单击(此处)折叠或打开1.#include2.intumount(constchar\*target);3./\*成功时返回0,或-1错误时\*/4.intumount2(constchar\*target,intflags);5./\*成功返回0,或\-1出错\*/9\。获取文件系统相关信息:statvfs()点击(此处)折叠或打开1.#include2.intstatvfs(constchar\*pathname,structstatvfs\*statvfsbuf);3.intfstatvfs(intfd,structstatvfs\*statvfsbuf);4./\*成功时均返回0,或出错时返回\-1\*/5.structstatvfs{6.unsignedlongf\_bsize;/\*文件\-系统块大小\*/7.unsignedlongf\_frsize;/\*基础文件\-系统b锁大小\*/8.fsblkcnt\_tf\_blocks;/\*文件系统中的块总数(以f\_frsize为单位)\*/9.fsblkcnt\_tf\_bfree;/\*空闲块总数\*/10.fsblkcnt\_tf\_bavail;/\*非特权进程可用的空闲块数\*/11.fsficnt\_tf\_files;/\*i节点总数\*/12.fsfilcnt\_tf\_ffree;/\*空闲i\-nodes总数\*/13.fsficcnt\_tf\_favail;/\*非特权进程可用的i\-nodes数\*/14.unsignedlongf\_fsid;/\*file\-systemID\*/15.unsignedlongf\_flag;/\*mountflags\*/16.unsignedlongf\_namemax;/\*此文件系统上文件名的最大长度\*/17.};以上两个函数可以获取挂载文件系统的相关信息