linux文件系統基礎知識匯總
1、linux文件系統分配策略
塊分配( block allocation ) 和 擴展分配 ( extent allocation )
塊分配:磁碟上的文件塊根據需要分配給文件,避免了存儲空間的浪費。但當文件擴充時,會造成文件中文件塊的不連續,從而導致過多的磁碟尋道時間。
每一次文件擴展時,塊分配演算法就需要寫入文件塊的結構信息,也就是 meta-dada 。meta-data總是與文件一起寫入存儲設備,改變文件的操作要等到所有meta-data的操作都完成後才能進行,
因此,meta-data的操作會明顯降低整個文件系統的性能。
擴展分配: 文件創建時,一次性分配一連串連續的塊,當文件擴展時,也一次分配很多塊。meta-data在文件創建時寫入,當文件大小沒有超過所有已分配文件塊大小時,就不用寫入meta-data,直到需要再分配文件塊的時候。
擴展分配採用成組分配塊的方式,減少了SCSI設備寫數據的時間,在讀取順序文件時具有良好的性能,但隨機讀取文件時,就和塊分配類似了。
文件塊的組或塊簇 ( block cluster) 的大小是在編譯時確定的。簇的大小對文件系統的性能有很大的影響。
註: meta-data 元信息:和文件有關的信息,比如許可權、所有者以及創建、訪問或更改時間等。
2、文件的記錄形式
linux文家系統使用索引節點(inode)來記錄文件信息。索引節點是一種數據結構,它包含了一個文件的長度、創建及修改時間、許可權、所屬關系、磁碟中的位置等信息。
一個文件系統維護了一個索引節點的數組,每個文件或目錄都與索引節點數組中的唯一的元素對應。每個索引節點在數組中的索引號,稱為索引節點號。
linux文件系統將文件索引節點號和文件名同時保存在目錄中,所以,目錄只是將文件的名稱和它的索引節點號結合在一起的一張表,目錄中每一對文件名稱和索引節點號稱為一個連接。
對於一個文件來說,有一個索引節點號與之對應;而對於一個索引節點號,卻可以對應多個文件名。
連接分為軟連接和硬連接,其中軟連接又叫符號連接。
硬連接: 原文件名和連接文件名都指向相同的物理地址。目錄不能有硬連接;硬連接不能跨文件系統(不能跨越不同的分區),文件在磁碟中只有一個拷貝。
由於刪除文件要在同一個索引節點屬於唯一的連接時才能成功,因此硬連接可以防止不必要的誤刪除。
軟連接: 用 ln -s 命令建立文件的符號連接。符號連接是linux特殊文件的.一種,作為一個文件,它的數據是它所連接的文件的路徑名。沒有防止誤刪除的功能。
3、文件系統類型:
ext2 : 早期linux中常用的文件系統
ext3 : ext2的升級版,帶日誌功能
RAMFS : 內存文件系統,速度很快
NFS : 網路文件系統,由SUN發明,主要用於遠程文件共享
MS-DOS : MS-DOS文件系統
VFAT : Windows 95/98 操作系統採用的文件系統
FAT : Windows XP 操作系統採用的文件系統
NTFS : Windows NT/XP 操作系統採用的文件系統
HPFS : OS/2 操作系統採用的文件系統
PROC : 虛擬的進程文件系統
ISO9660 : 大部分光碟所採用的文件系統
ufsSun : OS 所採用的文件系統
NCPFS : Novell 伺服器所採用的文件系統
SMBFS : Samba 的共享文件系統
XFS : 由SGI開發的先進的日誌文件系統,支持超大容量文件
JFS :IBM的AIX使用的日誌文件系統
ReiserFS : 基於平衡樹結構的文件系統
udf: 可擦寫的數據光碟文件系統
4、虛擬文件系統VFS
linux支持的所有文件系統稱為邏輯文件系統,而linux在傳統的邏輯文件系統的基礎上增加料一個蓄念文件系統( Vitual File System ,VFS) 的介面層。
虛擬文件系統(VFS) 位於文件系統的最上層,管理各種邏輯文件系統,並可以屏蔽各種邏輯文件系統之間的差異,提供統一文件和設備的訪問介面。
5、文件的邏輯結構
文件的邏輯結構可分為兩大類: 位元組流式的無結構文件 和 記錄式的有結構文件。
由位元組流(位元組序列)組成的文件是一種無結構文件或流式文件 ,不考慮文件內部的邏輯結構,只是簡單地看作是一系列位元組的序列,便於在文件的任意位置添加內容。
由記錄組成的文件稱為記錄式文件 ,記錄是這種文件類型的基本信息單位,記錄式文件通用於信息管理。
6、文件類型
普通文件 : 通常是流式文件
目錄文件 : 用於表示和管理系統中的全部文件
連接文件 : 用於不同目錄下文件的共享
設備文件 : 包括塊設備文件和字元設備文件,塊設備文件表示磁碟文件、光碟等,字元設備文件按照字元操作終端、鍵盤等設備。
管道(FIFO)文件 : 提供進程建通信的一種方式
套接字(socket) 文件: 該文件類型與網路通信有關
7、文件結構: 包括索引節點和數據
索引節點 : 又稱 I 節點,在文件系統結構中,包含有關相應文件的信息的一個記錄,這些信息包括文件許可權、文件名、文件大小、存放位置、建立日期等。文件系統中所有文件的索引節點保存在索引節點表中。
數據 : 文件的實際內容。可以是空的,也可以非常大,並且擁有自己的結構。
8、ext2文件系統
ext2文件系統的數據塊大小一般為 1024B、2048B 或 4096B
ext2文件系統採用的索引節點(inode):
索引節點採用了多重索引結構,主要體現在直接指針和3個間接指針。直接指針包含12個直接指針塊,它們直接指向包含文件數據的數據塊,緊接在後面的3個間接指針是為了適應文件的大小變化而設計的。
e.g: 假設數據塊大小為1024B ,利用12個直接指針,可以保存最大為12KB的文件,當文件超過12KB時,則要利用單級間接指針,該指針指向的數據塊保存有一組數據塊指針,這些指針依次指向包含有實際數據的數據塊,
假如每個指針佔用4B,則每個單級指針數據塊可保存 1024/4=256 個數據指針,因此利用直接指針和單級間接指針可保存 1024*12+1024*256=268 KB的文件。當文件超過268KB時,再利用二級間接指針,直到使用三級間接指針。
利用直接指針、單級間接指針、二級間接指針、三級間接指針可保存的最大文件大小為:
1024*12+1024*256+1024*256*256+1024*256*256*256=16843020 KB,約 16GB
若數據塊大小為2048B,指針佔4B,則最大文件大小為: 2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB 約 268GB
若數據塊大小為4096B,指針佔4B,則最大文件大小為: 4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744 KB ,約 4TB
註: 命令 tune2fs -l /dev/sda5 可查看文件系統
ext2文件系統最大文件名長度: 255個字元
ext2文件系統的缺點:
ext2在寫入文件內容的同時並沒有同時寫入文件meta-data, 其工作順序是先寫入文件的內容,然後等空閑時候才寫入文件的meta-data。若發生意外,則文件系統就會處於不一致狀態。
在重新啟動系統的時候,linux會啟動 fsk ( file system check) 的程序,掃描整個文件系統並試圖修復,但不提供保證。
9、ext3文件系統:
ext3基於ext2的代碼,所以磁碟格式與ext2相同,使用相同的元數據。
ext2文件系統無損轉化為ext3文件系統: tune2fs -j /dev/sda6
日誌塊設備( Journaling block device layer,JBD)完成ext3文件系統日誌功能。JBD不是ext3文件系統所特有的,它的設計目標是為了向一個塊設備添加日誌功能。
當一個文件修改執行時,ext3文件系統代碼將通知JBD,稱為一個事務(transaction)。發生意外時,日誌功能具有的重放功能,能重新執行中斷的事務。
日誌中的3種數據模式:
1)、data=writeback :不處理任何形式的日誌數據,給用戶整體上的最高性能
2)、data=odered :只記錄元數據日誌,但將元數據和數據組成一個單元稱為事務(transaction) 。此模式保持所句句的可靠性與文件系統的一致性,性能遠低於data=writeback模式,但比data=journal模式快
3)、data=journal :提供完整的數據及元數據日誌,所有新數據首先被寫入日誌,然後才被定位。意外發生過後,日誌可以被重放,將數據與元數據帶回一致狀態。這種模式整體性能最慢,但數據需要從磁碟讀取和寫入磁碟時卻是3種模式中最快的。
ext3文件系統最大文件名長度: 255個字元
ext3文件系統的優點:可用性、數據完整性、速度、兼容性
10、ReiserFS文件系統
ReiserFS文件系統是由Hans Reiser和他領導的開發小組共同開發的,整個文件系統完全是從頭設計的,是一個非常優秀的文件系統。也是最早用於Linux的日誌文件系統之一。
ReiserFS的特點
先進的日誌機制
ReiserFS有先進的日誌(Journaling/logging)功能 機制。日誌機制保證了在每個實際數據修改之前,相應的日誌已經寫入硬碟。文件與數據的安全性有了很大提高。
高效的磁碟空間利用
Reiserfs對一些小文件不分配inode。而是將這些文件打包,存放在同一個磁碟分塊中。而其它文件系統則為每個小文件分別放置到一個磁碟分塊中。
獨特的搜尋方式
ReiserFS基於快速平衡樹(balanced tree)搜索,平衡樹在性能上非常卓越,這是一種非常高效的演算法。ReiserFS搜索大量文件時,搜索速度要比ext2快得多。Reiserfs文件 系統使用B*Tree存儲文件,而其它文件系統使用B+Tree樹。B*Tree查詢速度比B+Tree要快很多。Reiserfs在文件定位上速度非常 快。
在實際運用中,ReiserFS 在處理小於 4k 的文件時,比ext2 快 5 倍;帶尾文件壓縮功能(默認)的ReiserFS 比ext2文件系統多存儲6%的數據。
支持海量磁碟
ReiserFS是一個非常優秀的文件系統,一直被用在高端UNIX系統上,可輕松管理上百G的文件系統,ReiserFS文件系統最大支持的文件系統尺寸為16TB。這非常適合企業級應用中。
優異的性能
由於它的高效存儲和快速小文件I/O特點,使用ReiserFs文件系統的PC,在啟動X窗口系統時,所花的時間要比在同一台機器上使用ext2文 件系統少1/3。另外,ReiserFS文件系統支持單個文件尺寸為4G的文件,這為大型資料庫系統在linux上的應用提供了更好的選擇。
;❷ Vmware6.0下虛擬Linux系統,預分配磁碟200g,預分配太大了,有辦法縮小到100g嗎
有啊,重新編輯虛擬磁碟大小就是,關機後再操作。
❸ Linux使用dd命令創建特定大小文件最簡單的方法及文件雜談
linux使用dd命令創建特定大小文件最簡單的方法及文件雜談創建特定大小文件最簡單的方法是使用
dd
命令。dd
if=inputFileName
of=outFileName
bs=塊大小
count=塊個數塊大小可以使用各種計量單位位元組(1B)
-
c
字(2B)
-
w
塊(512B)
-
b
千位元組(1024B)
-
k兆位元組(1024K)
-
M
吉位元組(1024M)
-
G例:dd
if=/dev/zero
of=test.file
bs=1M
count=10在當前文件夾下創建一個大小為10M的文件test.file
內容全為0/dev/zero
是一個字元設備,它會不斷返回0值位元組(/0).如果不指定輸入參數(if),默認情況會從stdin讀取輸入。如果不指定輸出參數(of),默認情況會將stdout作為輸出。也可用
dd
命令來傳輸大量數據來測試內存的操作速度。$
dd
if=/dev/zero
of=./testmm.file
bs=10M
count=10記錄了10+0
的讀入記錄了10+0
的寫出104857600位元組(105
MB)已復制,0.577581
秒,182
MB/秒$
ll
-h
|grep
'testmm.file'-rw-rw-r--.
1
itu
itu
100M
7月
16
18:14
testmm.file文件類型:一般文件:
-目錄文件:
d字元設備:
c塊設備:
b鏈接文件:
l套接字文件:
s管道文件:
p目錄的讀、寫、執行許可權意義:讀許可權:允許讀取目錄中文件和子目錄的列表寫許可權:允許在目錄中新建和刪除文件或子目錄執行許可權:可以訪問目錄中的文件和子目錄
❹ linux支持的最大文件大小(能否支持大小4G以上的文件)[ZSHAO]
?oracle(linux平台)建立的數據文件
能否支持大小4G以上的文件?答:Linux下的文件系統極少有這么愚蠢的限制,不過任何文件系統都是有限制的。
下面是個不完整的小列表:
NTFS(Windows):支持最大分區2TB,最大文件2TB
FAT16(Windows):支持最大分區2GB,最大文件2GB
FAT32(Windows):支持最大分區128GB,最大文件4GBExt2最大文件大小: 1TB
最大文件極限: 僅受文件系統大小限制
最大分區/文件系統大小: 4TB
最大文件名長度: 255 字元
預設最小/最大塊大小: 1024/4096 位元組
預設inode分配: 每4096位元組為1
在強制FS檢查前的最大裝載: 20(可配置)
//REDHAT9默認是ext3的文件系統Ext3最大文件大小: 1TB
最大文件極限: 僅受文件系統大小限制
最大分區/文件系統大小: 4TB
最大文件名長度: 255 字元
預設最小/最大塊大小: 1024/4096 位元組
預設inode分配: 每4096位元組為1
在強制FS檢查前的最大裝載: 20(可配置)ReiserFS最大文件大小: 1TB
最大文件極限: 32k目錄,42億文件
最大分區/文件系統大小: 4TB
最大文件名長度: 255 字元JFS最小文件系統大小 16 MB
最大文件大小: 受體系結構限制
最大文件極限: 受文件系統大小限制
預設最小/最大塊大小: 1024/4096 位元組
預設inode分配: 動態
❺ Linux blockdev命令設置文件預讀大小介紹
在命令行調用設備的ioctl函數。在Linux系統中,似乎對設備的直接操作只有ioctl函數了。他接受的參數不是太多,而且都是一一對應的。
blockdev
-
從命令行調用區塊設備控製程序
blockdev
[options]
commands
devices
blockdev
工具允許從命令行調用區塊設備控製程序。
–setro
設置設備為只讀
–getro
讀取設備是否為只讀(成功為1,0則為可讀寫)
–setrw
設置設別為可讀寫
–getss
列印設備的扇區大小,通常是512
–getsize
列印設別的容量,按照一個扇區512個位元組計算
–setra
N
設置預讀扇區(512位元組)為N個.Set
readahead
to
N
512-byte
sectors.
–getra
列印readahead(預讀扇區)
–flushbufs
刷新緩沖
–rereadpt
重讀分區表。
覺得–setro,setrw比較有用,這個mount
-o
ro(rw)是有區別的,mount是在文件系統這個級別上對某個分區掛載為只讀或可讀寫。而blockdev則是在設別這個級別上設置為只讀和可讀寫。
看下面的命令輸出結果就一目瞭然了。
代碼如下:
[root@lancy
~]#
blockdev
–setro
/dev/hda4
[root@lancy
~]#
blockdev
–getro
/dev/hda4
1
[root@lancy
~]#
mount
/dev/hda4
/misc
-o
rw
mount:
block
device
/dev/hda4
is
write-protected,
mounting
read-only
[root@lancy
~]#
umount
/dev/hda4
[root@lancy
~]#
blockdev
–setrw
/dev/hda4
[root@lancy
~]#
blockdev
–getro
/dev/hda4
0
[root@lancy
~]#
mount
/dev/hda4
/misc
-o
rw
[root@lancy
~]#
touch
/misc/one
[root@lancy
~]#
umount
/dev/hda4
[root@lancy
~]#
mount
/dev/hda4
/misc
-o
ro
[root@lancy
~]#
rm
-f
/misc/one
rm:
無法刪除‘/misc/one’:
只讀文件系統
❻ linux 怎麼給mysql分配內存大小
linux 怎麼給mysql分配內存大小
修改mysql配置文件,優化緩存大小和連接數連接方式,優化sql語句 ,記得mysql好像是有工具可以查看最佔用資源的sql語句,找到他,優化他。安裝好mysql後,配製文件應該在/usr/local/mysql/share/mysql目錄中,配製文件有幾個,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的網站和不同配製的伺服器環境,當然需要有不同的配製文件了。
❼ Linux下生成的文件能超過2G嗎
問題;在64位linux下設置32位環境變數後是不是還是有2G限制?
懸賞分:35 - 離問題結束還有 1 天 16 小時
如題,gambit軟體在生成文件時到2G時就自動關閉,xshell中顯示超出文件限制。謝謝
回答,一般是沒有時間限制的餓,中額外內顯示和外文顯示都一樣,只要犯得上咔嘰大撒但是解放抗敵素機反對撒
❽ linux ext4分區多大合理
這個完全取決於 linux系統的 文件分區類型,比如 ext3 和ext4這兩種文件分區類型,Ext3目前所支持的最大16TB文件系統和最大2TB文件,Ext4分別支持1EB的文件系統,以及16TB的文件。
以下是Ext4和Ext3的特點和區別:Linuxkernel自2.6.28開始正式支持新的文件系統Ext4。Ext4是Ext3的改進版,修改了Ext3中部分重要的數據結構,而不僅僅像Ext3對Ext2那樣,只是增加了一個日誌功能而已。Ext4可以提供更佳的性能和可靠性,還有更為豐富的功能:
1.與Ext3兼容。執行若干條命令,就能從Ext3在線遷移到Ext4,而無須重新格式化磁碟或重新安裝系統。原有Ext3數據結構照樣保留,Ext4作用於新數據,當然,整個文件系統因此也就獲得了Ext4所支持的更大容量。
2.更大的文件系統和更大的文件。較之Ext3目前所支持的最大16TB文件系統和最大2TB文件,Ext4分別支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系統,以及16TB的文件。
3.無限數量的子目錄。Ext3目前只支持32,000個子目錄,而Ext4支持無限數量的子目錄。4.Extents。Ext3採用間接塊映射,當操作大文件時,效率極其低下。比如一個100MB大小的文件,在Ext3中要建立25,600個數據塊(每個數據塊大小為4KB)的映射表。而Ext4引入了現代文件系統中流行的extents概念,每個extent為一組連續的數據塊,上述文件則表示為「該文件數據保存在接下來的25,600個數據塊中」,提高了不少效率。
5.多塊分配。當寫入數據到Ext3文件系統中時,Ext3的數據塊分配器每次只能分配一個4KB的塊,寫一個100MB文件就要調用25,600次數據塊分配器,而Ext4的多塊分配器「multiblockallocator」(mballoc)支持一次調用分配多個數據塊。
6.延遲分配。Ext3的數據塊分配策略是盡快分配,而Ext4和其它現代文件操作系統的策略是盡可能地延遲分配,直到文件在cache中寫完才開始分配數據塊並寫入磁碟,這樣就能優化整個文件的數據塊分配,與前兩種特性搭配起來可以顯著提升性能。
7.快速fsck。以前執行fsck第一步就會很慢,因為它要檢查所有的inode,現在Ext4給每個組的inode表中都添加了一份未使用inode的列表,今後fsckExt4文件系統就可以跳過它們而只去檢查那些在用的inode了。
8.日誌校驗。日誌是最常用的部分,也極易導致磁碟硬體故障,而從損壞的日誌中恢復數據會導致更多的數據損壞。Ext4的日誌校驗功能可以很方便地判斷日誌數據是否損壞,而且它將Ext3的兩階段日誌機制合並成一個階段,在增加安全性的同時提高了性能。
9.「無日誌」(NoJournaling)模式。日誌總歸有一些開銷,Ext4允許關閉日誌,以便某些有特殊需求的用戶可以藉此提升性能。
10.在線碎片整理。盡管延遲分配、多塊分配和extents能有效減少文件系統碎片,但碎片還是不可避免會產生。Ext4支持在線碎片整理,並將提供e4defrag工具進行個別文件或整個文件系統的碎片整理。
11.inode相關特性。Ext4支持更大的inode,較之Ext3默認的inode大小128位元組,Ext4為了在inode中容納更多的擴展屬性(如納秒時間戳或inode版本),默認inode大小為256位元組。Ext4還支持快速擴展屬性(fastextendedattributes)和inode保留(inodesreservation)。
12.持久預分配(Persistentpreallocation)。P2P軟體為了保證下載文件有足夠的空間存放,常常會預先創建一個與所下載文件大小相同的空文件,以免未來的數小時或數天之內磁碟空間不足導致下載失敗。Ext4在文件系統層面實現了持久預分配並提供相應的API(libc中的(posix_fallocate)),比應用軟體自己實現更有效率。
13.默認啟用barrier。磁碟上配有內部緩存,以便重新調整批量數據的寫操作順序,優化寫入性能,因此文件系統必須在日誌數據寫入磁碟之後才能寫commit記錄,若commit記錄寫入在先,而日誌有可能損壞,那麼就會影響數據完整性。Ext4默認啟用barrier,只有當barrier之前的數據全部寫入磁碟,才能寫barrier之後的數據。(可通過"mount-obarrier=0"命令禁用該特性。)
以上希望能幫到你。呵呵