zoukankan      html  css  js  c++  java
  • Ext3文件系统mount选项和文件属性介绍

    mount选项

    设置方式

    ext3 mount选项可以通过多个方式进行设置:
    1)内核编译时:
    内核menuconfig通过CONFIG_EXT3_DEFAULTS_TO_ORDERED编译控制选项,来选择默认的日志模式为ordered或者writeback。

    2)内核默认:
    内核默认配置如下mount选项:bsddf,nocheck,orlov,relatime。

    3)文件系统格式mke2fs时:
    格式化工具mke2fs默认配置如下mount选项:errors=continue,rw。另外可以通过/etc/mke2fs.conf中的default_mntopts控制mount选项,并写入超级块中的s_default_mount_opts字段。而且,格式化完成后,还可以通过tune2fs -o [^]mount_options 来修改此字段配置。

    4)mount时:
    mount时通过-o OPT进行指定。如mount -o data=ordered /dev/sda1 /mnt。通过mount -o指定的mount参数不会写入超级块中的s_default_mount_opts字段。

    mount支持几十种控制选项,详见man mount或者这里。下面重点介绍下比较复杂的几个控制选项。

    xattr

    user extended file attributes, 是目前流行的POSIX系统中文件系统具有的一项特殊功能,可以给文件、文件夹添加额外的key/value的键对值,键和值都是字符串并且有一定长度的限制。注意,这个用户扩展属性不是我们常说的lsattr、chattr操作的文件属性,这里的xattr是完全用户自定义属性。 

    此功能通过内核编译选项CONFIG_EXT3_FS_XATTR支持,通过mount -o user_xattr使能。常到的命令有:setfattr、getfattr、attr。

    acl

    Access Control List 是一种文件系统的访问控制模型,这里的acl指的是posix ACL。posix ACL在linux自带的访问控制模型Traditional POSIX基础上增加了定义特定用户ACL_USER和特定用户组ACL_GROUP权限的功能。支持的entry tag如下:

    ACL_USER_OBJ: 等价Linux Traditional POSIX里的owner;
    ACL_GROUP_OBJ: 等价Linux Traditional POSIX里的group;
    ACL_OTHER: 等价Linux Traditional POSIX里的other;
    ACL_USER: 定义了特定用户可以对此文件拥有的权限;
    ACL_GROUP: 定义了特定用户组可以对此文件拥有的权限;
    ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限。

    Ext3的ACL功能基于xattr上实现。

    详细介绍见man acl或者这里此功能通过内核编译选项CONFIG_EXT3_FS_POSIX_ACL支持,通过mount -o acl使能。常到的命令如下:setfattr、getfattr、attr。

    Orlov

    Orlov是一种块分配算法,核心思想是保证相关信息保存在相邻位置,不相关信息分散保存,以期达到提高访问效率。具体实现如下:基于顶层目录间没有关联关系的假设,分散分配顶层目录文件的存储块,而不是存储在相邻的块上;对于非顶层目录所在块,Orlov尝试为其分配与其父目录相同的cylinder group块,保证关联的目录和文件能就近存储,提高文件存储的连续性,满足局部性原则,进而提高访问效率。试验表明Orlov算法在遍历目录树时,效率提升30%。

    ext3文件系统默认使能Orlov。也可以通过mount -o orlov进行控制。

    barrier

    这里的barrier指的是write barrier,用于有写入顺序要求的应用场合,如journal commit block需要在data description block写入磁盘后再写入。有些存储设备为了写性能优化,对写请求进行重新排序(NCQ/TCQ),这种情况下,如果journal commit block先于data description block写入磁盘,若此时发生断电,文件系统存在损坏的风险,造成HTree index等日志或元数据损坏。

    barrier选项保证ext3的日志写入按如下顺序进行:

    1. data description block写入日志;
    2. 执行barrier;
    3. commit block写入日志;
    4. 再次执行barrier;
    5. 文件系统元数据(metadata)写入日志;

    但实验表明,使能barrier选项会使ext3文件系统降低30%的访问性能。Ext3默认关闭此选项,用户可以根据自身应用特点,在性能和数据一致性间权衡选择是否使能。

    ext3属性

    linux文件系统可以针对文件进行属性设置和查看,相关的命令为chattr和lsattr。文件属性列表如下,详细介绍请参照man chattr或include/linux/ext3_fs.h。

    *标记为ext3支持的文件属性。

    append only (a) * ,
    compressed (c),
    no dump (d),
    extent format (e),
    immutable (i) * ,
    data journalling (j) * ,
    secure deletion (s),
    no tail-merging (t),
    undeletable (u),
    no atime updates (A) * ,
    synchronous directory updates (D) * ,
    synchronous updates (S) * ,
    top of directory hierarchy (T) * .
    compression error (E),
    indexed directory (I) * ,
    compression raw access (X),
    compressed dirty file (Z).

     -- EOF --

  • 相关阅读:
    java提高篇(四)-----抽象类与接口
    hdu1004----用java链表实现
    jkfladsdjfkldsa
    Handler_1
    Handler实现线程间的通信2
    Handler实现线程间的通信1
    Handler基本运行机制
    Android线程
    Activity声明周期2
    Activity声明周期1
  • 原文地址:https://www.cnblogs.com/wahaha02/p/4874713.html
Copyright © 2011-2022 走看看