zoukankan      html  css  js  c++  java
  • [文件系统]文件系统学习笔记(十)---杂项

    1,在一个系统上,比如smartphone平台,有很多分区,比如/data和/system分区都是ext4文件系统,但是系统中还是只有一个file_system_type的成员,不过每个分区对应的ext4文件系统对应不同的super_block,fs_supers就是将这些相同文件系统不同的super block链接起来形成双向循环链表,fs_supers是链表头,链表元素由super_block结构体的s_instance成员表示。系统中所有的super_block由super_block结构体的s_list链接成双向循环链表,表头是super_blocks变量表示。

    2,伪文件系统是不能装载的文件系统,因而不能从用户空间直接以文件或者目录的方式看到。系统中所有的伪文件系统可以从/proc/filesystem中获取

    3,dumpe2fs命令 dumpe2fs

    4,内存中文件系统第一个block是super block,每个group都有一个super block,后面的superblock是第一个super block的备份,group是有很多block组成的,比如32768

    5,inode的大小是由各个文件系统本身决定,比如256B等等

    6,查看磁盘和目录容量的命令分别是df,du.

    7,一个文件至少占用一个block,若文件太大则占用多个block.

    8,当我们删除文件的时候,只是把Inode标记为可用,文件在block中的内容是没有被清除的,只有在有新的文件需要占用block的时候,才会被覆盖,这也是我们删除文件还可以恢复的原因。

    9, stat命令查看文件的时候里面每个成员的含义?
    答:stat命令的使用如以下截图所示,每个成员的含义如下:
    File:表示文件名。              
    Blocks:表示该文件占用的块数,通常linux一个块大小为512Byte,而文件系统块的大小为4096,4096/512=8,如下截图表示f1文件占用8个块.也就是一个文件最少占用8 block。
    Device:表示的是存放文件的设备。
    Inode:表示的是该文件对应的inode的号。
    Size:表示的是文件的大小。
    Links:表示的是硬链接的个数。
    IO Block:系统格式化block的大小,文件系统块的大小。
    Accesss:表示的是最后一次访问文件时间,读一次该文件,该时间就会改变。
    Modify:表示的是最后一次修改文件的时间,对文件修改一次该时间就会更新,比如用VI命令后保存文件。
    Change:表示的是最后一次修改文件熟悉信息(inode节点)的时间,比如使用chmod命令更新该文件的权限。

    10,每个进程最多打开32个文件,如果一个进程同时打开32个文件的话是否可以扩展?
    答:在linux内核里分配文件描述符的时候,系统默认每个进程同时打开的文件个数是32,如果超过的话会在alps/kernel/fs/File.c文件里的alloc_fd()函数里的expand_files()函数里进行扩展。但是最大扩展个数的限制是1024,也就是即使扩展,一个进程同时打开文件个数为1024.不过这个1024用户还是可以通过命令去修改。

    11,linux编程如何查看文件系统相关信息statfs函数。

    查看文件系统相关信息

    [cpp] view plaincopy
     
    1. #include <sys/vfs.h>   
    2. int statfs(const char *path, struct statfs *buf);   
    3. int fstatfs(int fd, struct statfs *buf);   


    参数:   
    path: 位于需要查询信息的文件系统的文件路径名。     
    fd: 位于需要查询信息的文件系统的文件描述词。 
    buf:以下结构体的指针变量,用于储存文件系统相关的信息 

    [cpp] view plaincopy
     
    1. struct statfs {   
    2.     long    f_type;     /* 文件系统类型  */   
    3.    long    f_bsize;    /* 经过优化的传输块大小  */   
    4.    long    f_blocks;   /* 文件系统数据块总数 */   
    5.    long    f_bfree;    /* 可用块数 */   
    6.      long    f_bavail;   /* 非超级用户可获取的块数 */   
    7.    long    f_files;    /* 文件结点总数 */   
    8.    long    f_ffree;    /* 可用文件结点数 */   
    9.    fsid_t  f_fsid;     /* 文件系统标识 */   
    10.    long    f_namelen;  /* 文件名的最大长度 */   
    11. };   



  • 相关阅读:
    软件测试的术语及解释总结
    测试工具
    数据库客户端连接
    应用程序发生错误怎么修改
    软件测试容易忽略的缺陷
    LR中错误解决方法
    LR结果分析2
    LR结果分析
    Hive
    zookeeper
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4067850.html
Copyright © 2011-2022 走看看