Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> linux文件系統的規模與瓶頸

linux文件系統的規模與瓶頸

編輯:關於android開發

linux文件系統的規模與瓶頸


1. 測試目的:ext3文件系統下filename最大字符長度

  測試平台:RHEL5U3_x64
  測試過程:
  LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`
  touch $LENTH
  當增加到256時,touch報錯,File name too long
  linux系統下ext3文件系統內給文件/目錄命名,最長只能支持127個中文字符,英文則可以支持255個字符

  2. 測試目的:ext3文件系統下一級子目錄的個數限制

  測試平台:RHEL5U3_x64
  測試過程:
  [root@fileserver maxdir]# for i in {1..32000};do mkdir $i;done
  mkdir: cannot create directory `31999': Too many links
  mkdir: cannot create directory `32000': Too many links
  ext3文件系統一級子目錄的個數為31998(個)。
  Linux為了cpu的搜索效率而規定的,要想改變數目大概要重新編譯內核.

  3. 測試目的:ext3文件系統下單個目錄裡的最大文件數

  測試平台: RHEL5U3_x64
  測試過程:
  單個目錄下的最大文件數似乎沒什麼特別限制,也是受限於所在文件系統的inode數限制:
  df -i或者使用tune2fs -l /dev/sdaX或者dumpe2fs -h /dev/sdaX查看可用inode數,後兩個命令
  輸出結果是一樣的,但是跟df所得出的可用inode數會有些誤差,至今不明白什麼原因。

  網上常用兩種解決辦法:

  1) 重新mkfs,ext3默認block大小4096 Bytes,block設置小一些inode數設置大一些

  2)使用loopback文件系統臨時解決:在/usr中(也可以在別處)創建一個大文件,然後做成loopback文件系統,將原來的文件移到這個文件系統中,並將它mount到/usr下合適的位置。這樣可以大大減少你/usr中的文件數目。但是系統性能會有點損失。

  4. 測試目的: 打開文件數限制(文件句柄、文件描述符)

  測試平台: RHEL5U3_x64
  ulimit -n 65535設置,或者/etc/security/limit.conf裡設置用戶打開文件數、進程數、CPU等
Linux新文件系統Ext4

  Ext4(The fourth extended file system)是一種針對ext3系統的擴展日志式文件系統,是專門為 Linux 開發的原始的擴展文件系統(ext 或 extfs)的第四版。Linux kernel 自 2.6.28 開始正式支持 Ext4。

  兼容性

  Ext3升級到ext4能提供系統更高的性能,消除存儲限制,和獲取新的功能,並且不需要重新格式化分區,ext4會在新的數據上用新的文件結構,舊的文件保留原狀。以ext3 文件系統的方式mount到ext4上會不用新的磁盤格式,而且還能再用ext3來重新掛載,這樣僅僅失去了ext4的優勢。

  大文件系統/文件大小

  現在ext3支持最大16TB的文件系統。單個文件最大2TB。Ext4增加了48位塊地址,最大支持1EB文件系統,和單個16TB的文件。1EB=1024PB 1PB=1024TB 1TB=1024GB。

  子目錄可伸縮性

  EXT3每個目錄最大包含32000個子目錄。減去.和..也就是31998,ext4打破了這個限制可以無限制數量的子目錄

  Extents

  傳統的Unix派生文件系統,使用間接塊映射方案,以跟蹤每塊用於塊相應的數據文件,這對大文件來說是低效率的。現代文件系統使用不同的方法稱為“extends”。extends基本上指一串連續的物理快。通常叫做數據在下面的N個塊中。一個100MB的文件可以分配到一extends中。而不需要創建一個間接映射表為256000個blocks,(每個block 4kb)大文件被分割為很多范圍。Extends改進了性能並且減少了碎片。因為extends鼓勵在磁盤上連續布局。

  Multiblock 分配

  ext4使用了一個多塊分配來在一次調用中分配很多塊。替換掉每次分配一個塊,減少系統開銷。在延時分配和extends上十分有用。

  延遲分配

  延遲分配是一個性能特性(它不修改磁盤格式)。現代文件系統例如XFS,ZFS,btrfs or Reiser 4 並且它盡可能多的延時塊的分配。相對於傳統文件系統(例如Ext3 reiser3 etc)所做的立刻分配塊提供了更好的性能。

  日志校驗和

  日志是磁盤中最常用的一部分,組成日志的這部分也是最容易出現硬件故障的。並且從一個受損的日志上恢復數據會導致巨大的數據損壞。Ext4 校驗和提供了改進,它允許將EXt3的雙向提交日志格式轉換為單向的,加速文件系統操作,在某些情況下達到20%---因此可靠性和性能同時被改進。

  在線碎片整理

  當 延遲分配,extents 和 multiblock 分配 幫助減少碎片的時候,使用中的文件系統依然會產生碎片。為了解決這個問題,Ext4 將會支持在線碎片整理,並且有一個e4defrag工具可以整理個別文件在整個文件系統中。

  索引節點-關聯

  擁有大索引節點,納秒時間戳,快速擴展屬性,索引節點保留的特點。Ext3 支持可設置的索引節點大小(通過 mkfs -l參數)但是默認索引節點大小是128字節。Ext4將默認為256字節。這需要適應一些額外的字段(比如納秒時間戳或者索引節點版本)並且剩余索引節點空間會被用於存放擴展屬性為那些足夠小的對象來適合空間。這樣使訪問那些屬性更快,提高那些使用擴展屬性的應用程序性能3-7倍。在目錄創建的時候保留若干索引節點在裡面,預期它們在未來使用。這樣改進性能,因為新文件被創建在目錄中他們可以使用保留索引節點。文件創建和刪除因此更高效。納秒時間戳意味著索引節點字段例如修改時間可以用納秒分辨率替代Ext3中的秒。

  持續預分配

  這個特性在ext3最新的內核版本中已經可用了,由glic仿真來實現文件系統不支持的功能,允許應用程序預分配磁盤空間:應用程序告訴文件系統來預分配空間,文件系統預分配需要的塊和數據結構。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved