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=


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM