A. linux文件系統的演變
說起文件系統的演變與發展,不得不從最早期的 Minix 操作系統開始說起。
Minix(MINI-UNIX) 是早期的一個迷你版本的 「類UNIX操作系統」 ,由荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授自行開發的可以與UNIX操作系統兼容的一個操作系統,因其小型,該操作系統被命名為 MINIX 。
MINIX 系統在設計之初,採用程序模塊化的思想,將一眾程序放在用戶空間運行,而不是在操作系統的內核中運行。如 「文件系統」 和 「存儲器管理」 等程序均是如此。
受 MINIX 操作系統的影響,早期的Linux操作系統也曾採用由塔能鮑姆教授開發的MINIX的文件系統。
然而,不只因為早期的 MINIX 操作系統並為真正意義上的開源軟體(在保護著作的前提下進行收費),而且基於 MINIX 的內部使用16位的偏移量,使文件系統能夠支持的最大空間只有64MB,支持的最大文件名為14字元,導致後來 Linux 操作系統轉而開發出了 ext(Extended File System) 第一代可擴展文件系統。
ext(Extended File System) 為Linux系統最早的擴展文件系統,採用 「UNIX文件系統」 的元數據結構,克服了 「MINIX」 操作系統性能不佳的問題。
ext 文件系統採用 虛擬文件系統(VFS) ,最大可支持2GB的文件系統。與 MINIX 文件系統不同的是, ext 可以使用最高2GB的存儲空間並同時處理255個字元的文件名。
但,在 ext 文件系統中,文件創建時生成的 inode 信息是不變的,這導致文件發生修改後 inode 中儲存的文件時間戳並不會發生變化;而且 ext 並不會為文件妥善分配空間,磁碟上的多個文件四散分布,嚴重製約了文件系統的性能。
ext 文件系統推出後不久,其開發者便意識到 ext 文件系統中存在很大缺陷( inode不變性 和 文件空間碎片化 ),並在一年後推出了 ext2 (Second Extened File System) 第二代擴展文件系統,用來代替 ext 文件系統。
ext2 吸取了 「UNIX文件系統」 的眾多優點,並且因其良好的可擴展性( 為系統在磁碟上存儲的數據結構預留了很多空間提供給開發者使用 ),在20世紀90年代眾多文件系統中脫穎而出。
眾多新的特性, POSIX(可移植操作系統介面) 、 訪問控製表 等都是在這一代擴展文件系統上實現的。直至今天, POSIX 仍被眾多操作系統所沿用。
不僅如此, ext2 還在 ext 的基礎上進行了完善,能夠最大支持的單個文件達到 2TB。
ext2 文件系統與20世紀90年代的眾多文件系統一樣,將數據寫入到磁碟的過程中如果發生系統奔潰或斷電,極容易導致文件損壞或丟失。
正是因為類似 ext2 等同時期的一眾文件系統,在遭遇系統奔潰或斷電時會出現文件損壞或丟失。盡管 ext2 文件系統擁有開機後對文件系統中文件的一致性校驗,但校驗的過程極為耗時,且校驗的過程中,操作系統上的任何卷組都是不可訪問的。
然而 ext2 遺留的問題在 ext3(Third Extended File System) 中得到了解決。
ext3 文件系統採用日誌記錄的方式,記錄下了操作系統運行中的所有事件,這意味著即便遇到操作系統非正常關機後也無須對文件系統進行校驗,從而防止了文件系統中數據丟失的可能。
盡管 ext3 使用日誌系統進行記錄文件系統的變化,但這並沒有影響 ext3 文件系統處理數據的速度。基於日誌系統在磁碟上的優化,在 ext3 中數據的傳輸效率是高於 ext2 的,並且可以通過重新設置日誌的級別來提升文件系統的性能。
其次, ext3 在設計之初就吸收了 ext2 的很多思想,這使得 ext2 文件系統遷移到 ext3 變得極為便利。事實上, ext3 可以在從 ext2 遷移 ext3 的過程中,無須進行文件系統資料的備份,且無須擔心升級後的數據恢復問題。
也正是因為 ext3 設計之初沿用了眾多 ext2 的功能,這使得 ext3 缺乏變通。例如, 「inode的動態分配」 和 「可變塊大小」 等問題並沒有得到解決。不僅如此, ext3 文件系統在被掛載為寫入時,無法對文件系統進行完整性校驗。
第四代擴展文件系統( Fourth Extended File System, ext4 ) 是繼 ext3 文件系統的後續版本,不僅支持 ext3 的日誌文件體系 ,同樣支持 大文件系統 ,不僅提高了文件系統對於存儲碎片化的抵抗,而且改進了 inode固一化 的問題。
同時, ext4 文件系統在開發之初就考慮到很多問題,對眾多問題的優化和改進也使得 ext4 擁有了眾多新的特性。例如, 大文件系統 、 使用Extent文件存儲的方式 、 預分配空間 、 延遲文件獲取空間的時間 、 突破原有子目錄限制 、 增加日誌校驗和 、 在線整理磁碟 、 文件系統快速檢查 、 向下兼容其他ext文件系統`。
時至今天, ext4 文件系統已經成為Linux發行版默認使用的文件系統。
與 ext2 文件系統同一時期出現的,還有 xfs 文件系統。 xfs 文件系統是高性能的文件系統,最早在 IRIX 操作系統上開發,後期被移植到 Linux 操作系統上。現在所有的 Linux發行版 都支持 xfs 的使用。
相比 32位 Linux 的操作系統來說,64位 xfs 的文件系統能夠支持的單個文件系統要遠遠超出 32位 操作系統。
xfs 對文件系統元數據提供了日誌支持,當文件系統發生變化後,總是會保證源數據在數據塊寫入磁碟之前被寫入日誌中,磁碟中有一處緩沖區專門用來存放日誌,從而不會影響正常的文件系統。
xfs 同樣支持 「條帶化分配」 。在條帶化RAID陣列上創建 xfs 文件系統時,可以指定 條帶化數據單元。通過配置條帶化單元,使 數據分配、inode分配、日誌等與RAID條帶單元對齊,來提高文件系統的性能。
與 ext4 文件系統不同的是, xfs 文件系統還支持在線恢復。 xfs 文件系統提供了 xfsmp 和 xfsrestore 工具協助備份 xfs 文件系統中的數據。
以下為各文件系統的出現時間及特性:
參考自: https://zh.wikipedia.org/wiki/Ext4
B. Linux 文件系統管理
3.1Linux 文件系統類型
不同的操作系統使用不同類型的文件系統,為了與其他的操作系統兼容,以相互交換數據,
通常,每種操作系統都支持多種類型的文件系統。
Linux 中保存數據的磁碟分區通常採用EXT2/EXT3 文件系統,而實現虛擬存儲的swap 分區
採用swap 文件系統,同時Linux 內核支持十多種不同的文件系統。
1. EXT2 和EXT3 文件系統
EXT(Extended File System,擴展文件系統)是專為Linux 設計的文件系統。在Linux 發展
早起,起到重要中用,但在穩定性、速度和兼容性方面存在缺陷。
EXT2 是為解決EXT 系統存在的缺陷而設計的可擴展、高性能的文件系統。
EXT3 是EXT2 的增強版本,在EXT2 的基礎上,增加了文件系統的日誌管理功能。
EXT3 文件系統具有的特點:
(1) 高效性:當系統因為異常斷電或系統崩潰,重新啟動時不需要檢查文件系統的一致
性,只需要根據文件系統的日誌,快速檢測並恢復文件系統到正常狀態。
(2) 數據的完整性:可以保持數據域文件系統狀態的高度一致性,避免意外關機對文件
系統造成的破壞。
(3) 數據的存取速度更快:EXT3 文件系統的日誌功能對磁碟驅動器的讀/寫進行優化,
使讀/寫系統的速度更快。
(4) 數據易於轉換
2. swap 文件系統
用於Linux 的交換分區。在Linux 中,使用整個交換分區來提供虛擬內存。
3. VFAT 文件系統
VFAT 是Linux 對DOS、Windows 系統下的FAT 文件系統的統稱。
4. NFS 文件系統
NFS 即網路文件系統,用在UNIX 或Linux 系統間通過網路進行文件共享。
5. SMB 文件系統
SMB 是Samba 的縮寫,是另一種網路文件系統,用於在Windows 和Linux 系統之間共享文
件和列印機。
6. ISO9660 文件系統
CD-ROM使用的標准文件系統。
此外,Linux 支持的文件系統還有minix、msdos、ncpfs、hpfs、umsdos 等。
3.2 Linux 的目錄和文件
1.Linux 系統的目錄結構
Linux 文件系統由文件和目錄組成,文件是專門用來存儲數據的對象,目錄是一種用來組織
文件和其他目錄的容器。Linux 和DOS、Windows 系統一樣,使用樹形目錄結構來組織和管
理文件。
1. / 文件系統的入口,最高一級目錄;
2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。
3. /boot 包含Linux內核及系統引導程序所需要的文件,比如vmlinuz initrd.img文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;
4. /dev 設備驅動程序文件存儲目錄,比如音效卡、磁碟等,是Linux文件系統的一個閃亮的特性-所有對象都是文件或目錄。仔細觀察這個目錄你會發現hda1, hda2等,它們代表系統主硬碟的不同分區。
5. /etc 存放系統程序或者一般工具的配置文件。
如安裝了apache2之後,配置文件在/etc/apache2/目錄下。
/etc/init.d這個目錄是用來存放系統或伺服器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。
6. /home 普通用戶默認存放目錄Linux是多用戶環境,所以每一個用戶都有一個只有自己可以訪問的目錄(當然管理員也可以訪問)。它們以/home/username的方式存在。這個目錄也保存一些應用對於這個用戶的配置,比如IRC, X等。
7. /lib 庫文件存放目錄這里包含了系統程序所需要的所有共享庫文件,類似於Windows的共享庫DLL文件。
8. /var 這個目錄的內容是經常變動,因為存儲的文件,如資料庫,數據文件大小是在不斷的增大。
/var/log這是用來存放系統日誌的目錄。
/var/www目錄是定義Apache伺服器站點存放目錄;/var/lib用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地;
/var/log系統日誌存放,分析日誌要看這個目錄的東西;
/var/spool列印機、郵件、代理伺服器等假離線目錄;
9. /lost+found 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsck工具會檢查這里,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
Linux應該正確的關機。但有時你的系統也可能崩潰掉或突然斷電使系統意外關機。那麼啟動的時候fsck將會進行長時間的文件系統檢查。Fsck會檢測並試圖恢復所發現的'不正確的文件。被恢復的文件會放置在這個目錄中。所恢復的文件也許並不完整或並不合理,但畢竟提供了一些恢復數據的機會。
10. /media 即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載後,會在這個目錄下產生一個目錄 ;CDROM/DVD自動掛載後,也會在這個目錄中創建一個目錄,類似cdrom的目錄。這個只有在最新的發行套件上才有. 10. /mnt /mnt這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom等目錄。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這里也是可以的。比如光碟機可以掛載到/mnt/cdrom。
11. /opt 表示的是可選擇的意思,有些軟體包也會被安裝在這里,也就是自定義軟體包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這里。有些我們自己編譯的軟體包,就可以安裝在這個目錄中;通過源碼包安裝的軟體,可以通過./configure --prefix=/opt/,將軟體安裝到opt目錄。
這個目錄包含所有默認系統安裝之外的軟體和添加的包。
12. /proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬碟分區、內存信息等)存放在這里。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。
這是系統中極為特殊的一個目錄,實際上任何分區上都不存在這個目錄。它實際是個實時的、駐留在內存中的文件系統。
13. /root Linux超級許可權用戶root的家目錄;
14. /sbin 大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地,普通用戶無許可權執行這個目錄下的命令;
這個目錄和
/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目錄是相似的; 我們記住就行了,凡是目錄sbin中包含的都是root許可權才能執行的。
15. /tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。/tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
許多程序在這里建立lock文件和存儲臨時數據。有些系統會在啟動或關機時清空此目錄。
16. /usr 這個是系統存放程序的目錄,比如命令、幫助文件等。
這個目錄下有很多的文件和目錄。
當我們安裝一個Linux發行版官方提供的軟體包時,大多安裝在這里。
如果有涉及伺服器配置文件的,會把配置文件安裝在/etc目錄中。
C. Linux裡面文件系統有哪些
Linux系統是現在非常受歡迎的操作系統,在Linux之中,一切都是文件,因為有很多操作都是依靠文件系統才可以完成的,而且文件系統可以滿足用戶正常的使用,那麼Linux中常見的文件系統有哪些?為大家介紹一下。
總體來說,在Linux之中,系統能夠支持的文件系統要比Windows系統多很多,達到數十種,所以說Linux系統也是非常出色的操作系統。Linux中常見的文件系統介紹:
1、Ext3:是一款日誌文件系統,能夠在系統異常的情況下避免文件系統資料丟失,並且能夠修復數據的不一致以及錯誤,同時,當硬碟容量較大的時候,所需要的修復時間也會增長,無法保證百分之百資料不會丟失,將整體磁碟的每個寫入動作細節預先記錄,避免發生異常的時候可追蹤到被中斷的部分,嘗試修補。
2、Ext4:是上一個的改進版本,是RHEL
6系統中的默認文件管理系統,支持存儲容量達到了1EB,同時還能夠無限多的子目錄,另外文件系統能夠批量分配block塊,從而極大地提高了讀寫效率。
3、XFS:是一個高性能的日誌文件系統,而且是RHEL
7中默認的文件管理系統,優勢就是在於發生意外可以快速回復可能被破壞的文件,強大的日誌功能只需要花費較低的計算和存儲性能,最大支持存儲容量18EB,幾乎滿足多種需求。
D. linux 文件系統擴容
因為不確定你使用文件系統系統的具體情況,不能給出具體的操作命令,以下過程供參考:
>已有分區/dev/sda6大小為1G,隨著業務的增長,空間需求量變大,但又不能重新分區格式化,造成原有數據丟失。此時,可以使用resize2fs進行文件系統擴展,不影響分區中原有文件。
具體步驟:
(1)查看原分區大小為1G左右,並卸載分區
[root@station25
~]#
df
-Th
文件系統
類型
容量
已用
可用
已用%%
掛載點
/dev/sda2
ext4
9.7G
7.6G
1.6G
84%
/
tmpfs
tmpfs
354M
176K
354M
1%
/dev/shm
/dev/sda1
ext4
194M
25M
159M
14%
/boot
/dev/sr0
iso9660
2.9G
2.9G
0
100%
/var/ftp/rhel6
/dev/sda6
ext4
989M
18M
921M
2%
/aabb
[root@station25
~]#umont
/dev/sda6
(2)查看/dev/sda8分區的柱面范圍
[root@station25
~]#
fdisk
-l
|grep
sda6
Disk
/dev/mapper/myvg01-haoren
doesn't
contain
a
valid
partition
table
/dev/sda6
1621
1748
1028128+
83
Linux
(3)使用fdisk名對sda6重新設定柱面范圍
先刪除分區sda6,然後新增分區sda6,將結束柱面調整為2100。
[root@station25
~]#
fdisk
-l|grep
sda6
Disk
/dev/mapper/myvg01-haoren
doesn't
contain
a
valid
partition
table
/dev/sda6
1621
2100
3855568+
83
Linux
(4)使用partprobe同步內存中分區信息
(5)使用e2fsck強制檢查分區
[root@station25
~]#e2fsck
-f
/dev/sda6
(6)使用resize2fs重新定義文件系統大小
[root@station25
~]#
resize2fs
/dev/sda6
resize2fs
1.41.12
(17-May-2010)
Resizing
the
filesystem
on
/dev/sda6
to
963892
(4k)
blocks.
The
filesystem
on
/dev/sda6
is
now
963892
blocks
long.
(7)重新掛載分區,使用df
-TH
查看擴容後分區大小
[root@station25
~]#
df
-Th
文件系統
類型
容量
已用
可用
已用%%
掛載點
/dev/sda2
ext4
9.7G
7.6G
1.6G
84%
/
tmpfs
tmpfs
354M
176K
354M
1%
/dev/shm
/dev/sda1
ext4
194M
25M
159M
14%
/boot
/dev/sr0
iso9660
2.9G
2.9G
0
100%
/var/ftp/rhel6
/dev/sda6
ext4
3.7G
19M
3.5G
1%
/aabb
文件系統擴容成功。
E. linux 文件系統 是什麼意思
文件系統是操作系統用於明確存儲設備(常見的是磁碟,也有基於NANDFlash的固態硬碟)或分區上的文件的方法和數據結構;
即在存儲設備上組織文件的方法。
操作系統中負責管理和存儲文件信息的軟體機構稱為文件管理系統,簡稱文件系統。
文件系統由三部分組成:文件系統的介面,對對象操縱和管理的軟體集合,對象及屬性。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。