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=

posted @ 2018-07-15 10:45  要让熊猫飞上天  阅读(2739)  评论(0编辑  收藏  举报