zoukankan      html  css  js  c++  java
  • mount ,mkfs 工具详细说明

    ext4:
    mount -o      options device directory
              Option:Description
              async:允许文件系统异步的输入与输出
              auto:Allows the file system to be mounted automatically using the mount -a command.
              defaults:Provides an alias for async,auto,dev,exec,nouser,rw,suid.
              exec:允许二进制文件执行
              loop:把镜像文件回环设备挂载
              noauto:Default behavior disallows the automatic mount of the file system using the mount -a command.
              noexec:不允许二进制文件执行
              nouser:禁止普通用户mount与umount
              remount:重新挂载
              ro:只读
              rw:允许读写
              user: 允许普通用户mount与umount
              acl:访问控制列表  
              EXT4:选项
                   刷新cache时间:ext3,ext4
              commit=nsec文件系统CACHE刷新时间
              stripe= 条带大小(以block为单位)
              delalloc 开启延时块分配
              nodelalloc 禁止延时块分配
              barrier 开启write barrier
              nobarrier 禁止write barrier
              journal_dev=devnum (外部日志设备的设备号,由主次设备号组成)
             
    模式:
              data=writeback 性能,高; 写回模式,先写metadata(代表日志),后写data
              data=ordered   性能,中; 命令模式,[先写data,后写metadata]==事务,最后写 metadata journal
              data=journal   性能,低: 日志模式, 先日志(metadata journal,data journal),后数据(metadata,data)

    mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom

    mkfs.ext4 -b block-size 块大小(1k,2k,4k)
              -c 坏块测试
              -l filename从文件读坏块列表
              -C cluster-size 簇大小 (大块分配持性)
              -D 使用direct I/O
              -E 扩展属性
                   mmp_update_interval=MMP更新时间间隔,必需小于300s
                   stride=条块大小(RAID组中每个条带单元chunk大小)
                   stripe_width=条带大小 (单位为block),(在数据定时,块分配器尽可能的防止产生read-modify-write)
                   resize=保留在线调整时的空间大小
                   lazy_itable_init=0/1 inode表不完全初始化 (挂载时由内核在后台初始化)    // 40TG mount后50M写初始化55分钟 (格式化时:20s,强制初始化时:7min)  (mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 )
                   lazy_journal_init=0/1日志inode表不完全清0
                   test_fs设置文件系统体验标志
                                       
                -F(force 强制)
                -f  fragment-size  指定片段大小
                -g blocks-per-group  指定每一个块组内块的数量
                -G number-of-groups  指定块组数量(在元数据负载重时可以提高元数据性能)
                -i bytes-per-inode  指定 bytes/inode 比率
                -I inode-size 指定inode大小
                -j 创建一个ext3日志。默认创建合适大小的日志区
                -J 创建指定属性的日志。逗号分隔。 (size=1024块 内部日志大小,device= 外部日志设备 )
                        size= journal-size  内部日志大小,单位为M,最小为1024个文件系统块,(最大为10240000个文件系统块或文件系统的一半)
                        device = external-journal 外部日志块设备(设备名,标签,UUID)
                          外部日志必需先创建:mke2fs -b 4096 -O journal_dev  external-journal (/dev/ramhda)
                             mkfs.ext4 -J device= external-journal (/dev/ramhda)  -F /dev/mapper/vggxxxxxxx
                -L 设置volume 标签,最长为16个byte
                -m 指定保留空间百分比,为root用户
                -M 设置最后挂载目录
                 -n 不真正创建文件系统,只是显示创建的信息
                 -S  只写超级块和块组描述符。(当超级块和备份超级块错误后,可以用来恢复数据。因为它不会touching inode表和bitmap)
                  -O feature 指定创建文件系统时的持性(/etc/mke2fs.conf)
                         bigalloc 使能大块分配(cluster-size)
                         dir_index 使用哈希B树加速目录查找
                         extents 使用extents替代间接块
                         filetype在目录项中存储文件类型信息
                         flex_bg 允许为每一个块组元数据(分配bitmap和inode表)存放在任何位置 
                         has_journal  创建ext3日志(-j)
                         journal_dev 在给定的设备上创建外部ext3日志
                         large_file 支持>2G的文件(现代内核会自动打开) 
                         quota 创建quota inodes(inode#3为用户配额,inode#4为组配额) ,并在超级块中设置。
                                       (挂载后自己启用quota)
                         resize_inode 保留空间以便未来块组描述表增长。用于resize2fs
                         sparse_super 创建少量的超缓块拷贝
                         uninit_bg   创建文件系统时不初始化所有的块组,加速创建时间,和e2fsck时间、
                   -O^has_journal   不启用日志

    文件系统属性:
    1,/proc/fs/ext4/设备/options  查已挂载文件系统属性
              rw 文件系统挂载时的读写策略
              delalloc 开启延时块分配
              barrier 开启write barrier(提供写顺序)
              user_xattr
              acl
              resuid=0 可以使用保留块的用户ID
              resgid=0 可以使用保留块的组ID
              errors=continue 文件系统出错时动作
              commit=5 文件系统刷cache的时间间隔
              max_batch_time=15000us 最大的等待合并一起提交的时间,默认15ms
              min_batch_time=0us 最小的等待合交一起提交的时间,0us
              stripe=0 多块分配时和对齐的块数,对于raid5/6,大小为数据磁盘数*chunk大小
              data=ordered 文件系统挂载模式
              inode_readahead_blks=32 先行读入缓冲器缓存(buffer cache)的inode表块(table block)数的最大值
              init_itable=10
              max_dir_size_kb=n 目录大小限制

         mb_order2_req=2 对于大于该值(2的幂次方)的块,要求使用Buddy检索
         lifetime_write_kbytes 文件系统生成后写入的数据量(KB)
         mb_stats 指定收集(1)或不收集(0)多块分配的相关统计信息。统计信息在卸载时显示 0(禁用)
         max_writeback_mb_bump 进行下一次inode处理前尝试写入磁盘的数据量的最大值(MB) 128
         mb_stream_req=0 块数小于该值的文件群被集中写入到磁盘上相近的区域
         mb_group_prealloc 未指定挂载选项的stripe参数时,以该值的倍数为单位确保块的分配 512
         session_write_kbytes 挂载后写入文件系统的数据量(KB)
        
    2,/sys/fs/ext4/设备/

              mb_stream_req=16 块数小于该值的文件群被集中写入到磁盘上相邻的区域
              inode_readahead_blks=32 控制进行预读的inode表的数量
              inode_goal 下一个要分配的inode编号(调试用) 0(禁用)
              delayed_allocation_blocks 等待延迟分配的块数
              max_writeback_mb_bump=128 进行下一次inode处理前尝试写入磁盘数据量的最大值(MB)
              mb_group_prealloc=512 未指定stripe参数时,以该值的倍数为单位确保块的分配
              mb_max_to_scan=200 分配多块时为找出最佳extent而搜索的最大extent数
              mb_min_to_scan=10 分配多块时为找出最佳extent而搜索的最小extent数
              mb_order2_req=2 对于大于该值的块(2的幂),要用buddy算法。
              mb_stats=0 指定收集1,与不收集0多块分配的相关统计信息,统计信息会在卸载时显示
              reserved_clusters
              lifetime_write_kbytes 只读,记录已经写入文件系统的数据量(kb).
              session_write_kbytes 只读,记录此记挂载以来已写入的数据(kb).

    扩大文件系统:ext2/ext3/ext4
              resize2fs

    fsadm: 检查或调整大小的文件系统工具。支持ext2/ext3/ext4/ ReiserFS/xfs.
              fsadm [options] check device  检查设备
              fsadm [options] resize device [new_size[BKMGTEP]]
              options选项有:
                        -e  在调整大小前先卸载ext2/ext3/ext4文件系统
                        -f  force 绕过一些检查
                        -h  显示帮助信息
                        -n 只打印命令,不执行
                        -v 打印更多信息
                        -y yes 对任何提示均回答yes
              如: fsadm -e -y resize /dev/vg/test 1000M 

     EXT4外部日志设备:
         1,当日志设备丢失时:
               移除不可用的日志:tune2fs -O ^has_journal  /dev/ext4-device
               检查修复文件系统: fsck/repair
                 (注: tune2fs -O has_journal /dev/ext4-device 会创建内部日志)

         2,创建ext4外部日志
            格式化日志设备:mke2fs -b 4096 -O journal_dev /dev/ext4-journal-device
             创建一个新的文件系统: mkfs.ext4 -J device=/dev/ext4-journal-device  /dev/ext4-device
             或添加给已存在的文件系统: tune2fs -O journal_dev  -J device=/dev/ext4-journal-device  /dev/ext4-device
         
         外部日志设备大小: (日志太大时,会增加crash后文件系统检验fsck时间)
             文件系统<32768 block  logdev=1024 block   4k(<128M,4M)
                        <262144 block  logdev=4096 block     (<1G,16M)
                         >262144 block logdev=8192 block     (>1G,32M )
         
              fdtree: 测试工具。

         注:
              问题1:日志设备的永久性。当有多个硬盘设备时,linux是随机的指定名称的。不能确保/dev/sdb重启后还会映射到同一设备。    
         除非你加入一个自定义的udev规定。ext4不理解UUID,所以外部日志设备必需是一个持久性设备,并且重启后不会改变.。

              问题2:当有外部日志设备时,默认日志挂载选项不支持,必需指定journal_async_commit .否则(操作一个小时或大量IO时很快就会变为)只读.显然,外部日志不能使用同步更新,因为日志提交错误会提交或延后使ext4文件系统变为只读。

    XFS:
    XFS格式化: 块设备分割成八个或以上相等的线性区域(region,或块chunk)-->称为“分配组”.
    分配组是唯一的,独立管理自己的inode节点和空闭空间(类似文件子系统,使用高效的B+树来跟踪主要数据),分配组机制给XFS提供了可伸缩和并行特性(多个线程和进程可以同时在同一个文件系统上执行IO操作)。
    XFS:数据段(数据,元数据),日志段,实时段.(默认mkfs.xfs下:实时段不存在,日志段包含在数据段中)
    详细信息:请参考man mkfs.xfs
         mkfs.xfs  -b  block_size(块大小) options
              -d data_section_options(数据属性)(sunit/swidth(单位为512byte)=su/sw 条带大小/宽度)
                        mkfs.xfs -d su=4k(条块chunk大小),sw=16(数据盘个数) /dev/sdb
                        mkfs.xfs -d sunit=128,swidth= sunit*数据盘个数  /dev/sdd
                   数据属性有:
                             agvount= value  指定分配组(并发小文件系统(16M~1T))
                             agsize = value   与上类似,指定分配组大小
                             name= 指定文件系统内指定文件的名称。此时,日志段必需指定在内部(指定大小)。
                             file [=value] 指定上面要命名的是常规文件(默认1,可以为0)。
                             size= value 指定数据段大小,需要 -d file =1
                             sunit=value 指定条带单元大小(chunk,单位为512)
                             su=value 指定条带单元(chunk,单位为byte. 如:64k,必需为文件系统块大小的倍数)
                             swidth=value 指定条带宽度(单位为512, 为sunit的数据盘个数倍数)
                             sw =value 条带宽度(通常为数据盘个数)
                             noalign  忽略自动对齐(磁盘几何形状探测,文件不用几何对齐)。
              -i inode_options 节点选项.(xfs inode 包含二部分:固定部份,可变部份)。
                             这些选项影响可变部份,包括:目录数据,属性数据,符号连接数据,文件extent列表,文件extent描述性根树。
                        选项有:
                              size = value | log=value | perblock =value  指定inode大小(256~2048)
                              maxpct=value  指定inode所有空间的百分比。(默认为:<1T=25%,<50T=5% >50T=1%)
                              align [=value] 指定分配inode时是否对齐。默认为1,对齐。    
                              attr = value  指定属性版本号,默认为2
                              projid32bit [=value]  是否使能32位配额项目标识符。默为1.      
              -f  强制(force)
              -l log_section_options (日志属性)(internal/logdev)
                    选项有:
                            internal [=value]  指定日志段是否作为数据段的一部分。默认为1.
                            logdev = device  指定日志位于一个独立的设备上。(最小为10M,2560个4K块)
                                          创建:  mkfs.xfs -l logdev=/dev/ramhdb -f /dev/mapper/vggxxxxx
                                          挂载:    mount -o logdev=/dev/ramhdb /dev/mapper/vggxxxxx
                            size = value 指定日志段的大小。
                            version = value 指定日志的版本。默认为2
                            sunit = value 指定日志对齐写。单位为512
                            su= value  指定日志条带单元. 单位为byte
                            lazy-count = value  是否廷迟计数。默认为1.更改超级块中各种连续计数器的计录方法。
                                 在为1时,不会在计数器每一次变化时更新超级块。         
              -n naming_options 命名空间(目录参数)
                    选项有:
                            size= value | log = value 块大小。不能小于文件系统block,且是2的幂。
                                  版本2默认为4096,(如果文件系统block>4096,则为block)     
                             version= value  命名空间的版本。默认为2 或'ci' ,
                             ftype = value 允许inode类型存储在目录结构中,以便readdir,getdents不需要查找inode就可知道inode类型。默认为0,不存在目录结构中。(使能crc: -m crc=1 时,此选项会使能)
              -p protofile
              -r realtime_section_options (实时数据属性)(rtdev/size)
                   实时段选项:
                             rtdev =device 指定外部实时设备名
                             extsize=value指定实时段中块大小,必需为文件系统块大小的倍数。  最小为(max(文件系统块大小, 4K))。
                                       默认大小为条带宽度(条带卷),或64K(非条带卷) ,最大为1G 
                             size = value  指定实时段的大小
                             noalign 此选项禁止 条带大小探测,强制实时设备没有几何条带。
              -s sector size(扇区大小),最小为512,最大为32768 (32k). 不能大于文件系统块大小。
              -L label   指定文件系统标签。最多12个字符
              -q(quiet 不打印) -f(Force 强制)
              -N  只打印信息,不执行实际的创建。

    1.元数据日志可以独立存放: XFS外部日志设备
              mkfs.xfs -l logdev=/dev/sdb1,size=10000b /dev/sda1
              (日志大小为10000block,存放在sdb1上)
           外部日志设备的大小:与事条transaction的速率和大小相关,与文件系统的大小无关。
                                大的block size会导致大的transaction, 日志事务transaction来源于目录更新(创建/删除/修改).
                                      如:mkdir ,rmdir,create(),unlink()系统调用会产生日志数据。
            最小日志大小为:最大的transaction大小(取决于文件系统和目录块大小), 最小10M。
                          (目录块大小:mkfs.xfs  -n ;  默认为4k, 当文件系统blocksize 大于4k,时,就默认为blocksize。
                          提高大量小文件的性能,提高了目录查找的性能,因为树存储索引信息有较大的块和较小的深度)
             最大日志大小为: 64k 个blocks和128M中的最小值。(日志太大,会增加crash后文件系统的mount时间)

    mount -o 选项
    allocsize= 延时分配时,预分配buffered 大小,
        sunit=  /swidth=  使用指定的条带单元与宽度(单位为512byte)(优先级高于mkfs时指定的)
    barrier  write barrier
        swalloc根据条带宽度的边界调整数据分配
    discard块设备自动回收空间
        dmapi使能Data Management API 事件
    mtpt=mountpoint
        inode64创建inode节点位置不收限制
    inode32inode节点号不起过32位(为了兼容)
        largeio大块分配,(先swidth,后allocsize)
    nolargeio尽量小块分配
        noalign数据分配时不用条带大小对齐
    noatime读取文件时不更新访问时间
        norecovery挂载时不运行日志恢复(只读挂载)
    logbufs= 在内存中的日志缓存区数量
         logbsize=内存中每个日志缓存区的大小
    logdev=/rtdev=指定日志设备或实时设备(xfs文件系统可以分为三部分:数据,日志,实时(可选))

    sysctls:/proc/sys/fs/xfs/
              stats_clear: (Min: 0  Default: 0  Max: 1) 清除状态信息(/proc/fs/sys/xfs/stat)
              xfssyncd_centisecs:(Min: 100  Default: 3000  Max: 720000)xfssyncd 刷新元数据时间间隔(写到磁盘,默认是30秒)
              xfsbufd_centisecs:(Min: 50  Default: 100Max: 3000)xfsbufd扫瞄脏buffer的时间间隔
              age_buffer_centisecs:(Min: 100  Default: 1500  Max: 720000)xfsbufd刷新脏buffer到磁盘的时间
              irix_symlink_mode:(Min: 0  Default: 0  Max: 1)控制符号链接的模式是不是0777
              inherit_nosymlinks:(Min: 0  Default: 1  Max: 1)xfs_io 下chattr 命令设置nosymlinks标志
              inherit_sync: (Min: 0  Default: 1  Max: 1)xfs_io 下chattr 命令设置sync标志
              inherit_nodump: (Min: 0  Default: 1  Max: 1)xfs_io 下chattr 命令设置nodump标志
              inherit_noatime:(Min: 0  Default: 1  Max: 1)xfs_io 下chattr 命令设置noatime标志
              rotorstep: (Min: 1  Default: 1  Max: 256)inode32模式下
              error_level: (Min: 0  Default: 3  Max: 11)文件系统出错时会显示详细信息
                        XFS_ERRLEVEL_OFF:0
                        XFS_ERRLEVEL_LOW:1
                        XFS_ERRLEVEL_HIGH:5
              panic_mask:(Min: 0  Default: 0  Max: 127)遇到指定的错误时调用BUG()(调试时用)
                        XFS_NO_PTAG                     0
                        XFS_PTAG_IFLUSH                 0x00000001
                        XFS_PTAG_LOGRES                 0x00000002
                        XFS_PTAG_AILDELETE              0x00000004
                        XFS_PTAG_ERROR_REPORT           0x00000008
                        XFS_PTAG_SHUTDOWN_CORRUPT       0x00000010
                        XFS_PTAG_SHUTDOWN_IOERROR       0x00000020
                        XFS_PTAG_SHUTDOWN_LOGERROR      0x00000040

    XFS工具:
              mkfs.xfs:           创建 xfs 文件系统
              xfs_admin:         调整 xfs 文件系统的各种参数
              xfs_copy:      拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
              xfs_db:           调试或检测 xfs 文件系统(查看文件系统碎片xfs_db -c frs -r /dev/sdh 等)                                         
              xfs_check:      检测 xfs 文件系统的完整性
              xfs_bmap:      查看一个文件的块映射  -->  xfs_io  -r  -p  xfs_bmap -c bmap  "OPT"  file 
              xfs_repair:      尝试修复受损的 xfs 文件系统  xfs_repair -n 仅报告问题,不修复
              xfs_fsr:      碎片整理(xfs_fsr /dev/sdh)
              xfs_quota:      管理 xfs 文件系统的磁盘配额
              xfs_metadump:      将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
              xfs_mdrestore:      从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
              xfsdump:        增量备份XFS文件系统
              xfsrestore:       恢复XFS文件系统
              xfs_growfs:      调整一个 xfs 文件系统大小(只能扩展)
              xfs_freeze:      暂停(-f)和恢复(-u)xfs 文件系统
              xfs_info:          查询XFS文件系统信息
              xfs_estimate:      评估XFS文件系统的空间
              xfs_repair:      修复XFS文件系统
              xfs_mkfile:      创建XFS文件系统
              xfs_rtcp:      XFS实时拷贝命令
              xfs_ncheck:      从i节点号生成路径
              xfs_io:      调试XFS I/O路径
              xfs_logprint:      打印XFS文件系统日志
    示例:
    检查文件系统:先确保umount
              xfs_check  /dev/sdd(盘符); echo $?
              返回0表示正常
              修复文件系统:
              xfs_repair  /dev/sdd   (ext系列工具为fsck)
    根据打印消息,修复失败时:先执行 xfs_repair -L /dev/sdd( 清空日志,会丢失文件), 再执行 xfs_repair /dev/sdd,  再执行xfs_check /dev/sdd 检查文件系统是否修复成功。

    增大XFS文件系统:先用lvextend扩大XFS所在的LUN,
    如: lvextend  -L +5G /dev/mapper/lun5
              xfs_growfs  /demo (lun5在扩大之前已经格式化为XFS并挂载在/demo下 )
              df -h  查看文件系统变化

      
    案例:

    mkfs.ext4 -E  扩展属性 (以block为单位)
                        stride=  条带单元大小
                        stripe_width=  条带大小 (单位为block)
                       
    mount -o stripe= 条带大小(单位为块)

    mkfs.xfs  -d
                        sunit= 条带单元大小(单位为扇区)
                        swidth= 条带大小(单位为扇区)
             
    mount -o sunit=   swidth=         

    例如: 5个盘组成的raid5下创建的lun;chunk=64k;
    此时格式化:
                        mkfs.ext4  -E stride=16(64K/4k block)   lun设备
                        mount -o stripe=64(16*4个数据盘)
                       
                        mkfs.xfs -d sunit=128  (64K/扇区)  swidth=512 (128*4个数据盘)
                        mount -o sunit=  swidth=

  • 相关阅读:
    php判断远程图片是否防盗链
    php获取远程图片url生成缩略图的方法
    qq zone g_tk
    zend studio aptana
    qq音乐接口
    function https_request
    Eclipse 汉化
    php 邮箱替换*
    获取顶级域名函数
    weixin oauth api 使用
  • 原文地址:https://www.cnblogs.com/miaoxg/p/9312156.html
Copyright © 2011-2022 走看看