通常情況下,Linux內核啟動後期,會尋找並掛載根文件系統。根文件系統可以存在於磁碟上,也可以是存在於內存中的映像,其中包含了Linux系統正常運行所必須的庫和程序等等,按照一定的目錄結構存放。Linux根文件系統基本包括如下內容:
基本的目錄結構:/bin、/sbin、/dev、/etc、/lib、/var、/proc、/sys、/tmp等;整個根文件系統都是掛在根目錄(/)下,FHS對頂層目錄的要求和說明如下表所列。
基本程序運行所需的庫文件,如glibc等;
基本的系統配置文件,如inittab、rc等;
必要的設備文件,如/dev/ttyS0、/dev/console等;
基本應用程序,如sh、ls、cd、mv等。
你可以去【周立功】那邊了解一下的,蠻多信息的。
② Red Hat Linux 5默認使用的文件系統類型是什麼
Linux在安裝的時候,分區默認一般使用的EXT3的文件系統。但是事實上Linux兼容大多數的文件系統。你可以通過如下命令來獲取Linux所支持的文件系統。
#cat /proc/filesystems
Linux所支持的文件系統包括以下多種類型。以下是我的Linux系統所支持的文件系統類型及描述:
adfs:acron磁碟文件系統,是在Risc OS操作系統中使用的標准文件系統。
BeFS:BeOS操作系統使用的文件系統。
CIFS:通用Internet文件系統(Commnn Intemet File System,簡寫CIFS),用於訪問符合SNIA CIFS標準的伺服器。CIFS對SMB協議進行了改進和標准化(SMB協議可用於在Linux和Windows之間共享文件),是一種虛擬文件系統。
Ext:Ext文件系統的第一個版本,現在已經很少使用。
Ext2:Ext2是專門為Linux 系統設計的,在Red Hat Linux 7. 2版本之前是Linux默認的文件系統類型,具有速度快和CPU佔用率低等特點,既可以用於標準的塊設備,也可以應用到移動存儲介質上。Ext2不包含日誌功能。
Ext3:Ext3文件系統是Linux中最常用的文件系統,是Red Hat Linux 7.2的新特性,也被稱為第三次擴展(Third Extented)的文件系統。現在Ext3已經成為許多Linux系統的默認文件系統類型(包括Fedora和RHEL)。Ext2和Ext3可以方便地互相轉換,轉換前不需重新格式化文件系統。與Ext2文件系統相比,Ext3包含了日誌功能。日誌功能維護了最近更改的源數據(源數據是指和文件有關的信息,包括許可權、所有者、創建時間和訪問時間等)的記錄,如果源數據由於非法關機等原因遭到破壞,文件系統將不能正常工作。通過Ext3的日誌系統,可以進行適當的恢復。此外,Ext3的日誌功能可使硬碟讀寫頭的移動達到最佳化。
IS09660:從High Sierra (CD-ROM使用的最初標准)發展而來的文件系統,是CD-ROM的標准文件系統。
KAFS:AFS客戶端文件系統,用於分布式計算環境,可與Linux、Windows和Macintosh客戶端共享文件。
Minix:Minix文件系統類型,最初用於UNIX的Minix版本,只支持長度在30個字元以下的文件名。
MSDOS:MS-DOS文件系統。DOS、Windows和OS/2使用該文件系統,不支持長文件名,主要用於掛載Microsoft操作系統生成的軟盤。
VFAT:Microsoft擴展FAT(VFAT)文件系統,支持長文件名,被Windows 9x/2000/XP使用。
UMSDOS:擴展的MS-DOS文件系統,不僅支持長文件名,還保持了對UID/GID、POSIX許可權和特殊文件(如管道、設備)的兼容。
Proc:Proc是一個基於內存的偽文件系統,不佔用外存空間,只是以文件的方式為訪問Linux內核數據提供介面。由於Proc文件系統是虛擬的,因此無須掛載。用戶和應用程序可以通過/proc得到系統的運行信息,並可以改變內核的某些參數。許多應用程序和工具依靠Proc來訪問Linux內核信息。
Reiser:Reiserfs日誌文件系統。
Swap:用於交換(Swap)分區。交換分區是系統虛擬內存的一部分,用於在當前內存不足時暫時保存數據。數據被交換到交換分區,當再次需要時調回內存。
NFS:網路文件系統(Network File System,簡寫NFS)類型,詳情見第15章。
HPFS:該文件系統用於只讀掛載OS/2 HPFS文件系統。
NCPFS:Novell Netware文件系統,可以通過網路掛載。
AFFS:Amiga計算機使用的文件系統。
UFS:Sun Microsystems操作系統(即Solaris和SunOS)。
XFS:一種在高性能環境中很有用的日誌文件系統,支持完整的64位定址
JFS:JFS主要適合於企業系統,是為大文件系統和高性能環境而設計的。
Xiafs:與Minux文件系統相比,這種文件系統支持長文件名和更大的i節點。
Coherent:System V使用的文件系統類型。
SMB:支持SMB協議的網路文件系統,可用於實現Linux與Windows系統的文件共享
③ Linux文件系統的系統原理
Linux 最早的文件系統是Minix,但是專門為Linux 設計的文件系統——擴展文件系統第二版或EXT2被設計出來並添加到Linux中,這對Linux產生了重大影響。EXT2文件系統功能強大、易擴充、性能上進行了全面優化,也是所有Linux發布和安裝的標准文件系統類型。
每個實際文件系統從操作系統和系統服務中分離出來,它們之間通過一個介面層:虛擬文件系統或VFS來通訊。VFS使得Linux可以支持多個不同的文件系統,每個表示一個VFS 的通用介面。由於軟體將Linux 文件系統的所有細節進行了轉換,所以Linux核心的其它部分及系統中運行的程序將看到統一的文件系統。Linux 的虛擬文件系統允許用戶同時能透明地安裝許多不同的文件系統。
在Linux文件系統中,作為一種特殊類型/proc文件系統只存在內存當中,而不佔用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供介面。/proc文件系統是一個偽文件系統,用戶和應用程序可以通過/proc得到系統的信息,並可以改變內核的某些參數。
在Linux文件系統中,EXT2文件系統、虛擬文件系統、/proc文件系統是三個具有代表性的文件系統,本論文試圖通過對他們的分析來研究Linux文件系統機制。並且在分析這三種文件系統的基礎上對Linux文件系統操作進行了解、研究(本論文選取了open和close兩種操作進行研究)。在第二部分中將介紹EXT2文件系統;第三部分論述虛擬文件系統的特點;第四部分簡要介紹/proc文件系統;最後,介紹兩種具體文件系統操作的實現。
④ Linux 內核的內存管理 - 概念
Concepts overview — The Linux Kernel documentation
Linux中的內存管理是一個復雜的系統,經過多年的發展,它包含越來越多的功能,以支持從 MMU-less microcontrollers 到 supercomputers 的各種系統。
沒有MMU內存管理的系統被稱為 nommu ,它值得寫一份專門的文檔進行描述。
盡管有些概念是相同的,這里我們假設MMU可用,CPU可以將虛擬地址轉換為物理地址。
計算機系統中的物理內存是有限資源,即便支持內存熱插拔,其可以安裝的內存也有限的。物理內存不一定必須是連續的;它可以作為一組不同的地址范圍被訪問。此外,不同的CPU架構,甚至同架構的不同實現對如何定義這些地址范圍都是不同的。
這使得直接處理物理內存異常復雜,為了避免這種復雜性,開發了 虛擬內存 (virtual memory) 的概念。
虛擬內存從應用軟體中抽象出物理內存的細節,只允許在物理內存中保留需要的信息 (demand paging) ,並提供一種機制來保護和控制進程之間的數據共享。
通過虛擬內存,每次內存訪問都訪問一個 虛擬地址 。當CPU對從系統內存讀取(或寫入)的指令進行解碼時,它將該指令中編碼的虛擬地址轉換為內存控制器可以理解的物理地址。
物理內存被切分為 頁幀 page frames 或 頁 pages 。頁的大小是基於架構的。一些架構允許從幾個支持的值中選擇頁大小;此選擇在內核編譯時設置到內核配置。
每個物理內存頁都可以映射為一個或多個 虛擬頁(virtual pages) 。映射關系描述在 頁表(page tables) 中,頁表將程序使用的虛擬地址轉換為物理內存地址。頁表以層次結構組織。
最底層的表包含軟體使用的實際內存頁的物理地址。較高層的表包含較低層表頁的物理地址。頂層表的指針駐留在寄存器中。
當CPU進行地址轉換的時候,它使用寄存器訪問頂級頁表。
虛擬地址的高位,用於頂級頁表的條目索引。然後,通過該條目訪問下級,下級的虛擬地址位又作為其下下級頁表的索引。虛擬地址的最低位定義實際頁內的偏移量。
地址轉換需要多次內存訪問,而內存訪問相對於CPU速度來說比較慢。為了避免在地址轉換上花費寶貴的處理器周期,CPU維護著一個稱為 TLB (Translation Lookaside Buffer)的用於地址轉換緩存(cache)。通常TLB是非常稀缺的資源,需要大內存工作應用程序會因為TLB未命中而影響性能。
很多現代CPU架構允許頁表的高層直接映射到內存頁。例如,x86架構,可以通過二級、三級頁表的條目映射2M甚至1G內存頁。在Linux中,這些內存頁稱為 大頁 (Huge) 。大頁的使用顯著降低了TLB的壓力,提高了TLB命中率,從而提高了系統的整體性能。
Linux提供兩種機制開啟使用大頁映射物理內存。
第一個是 HugeTLB 文件系統,即 hugetlbfs 。它是一個偽文件系統,使用RAM作為其存儲。在此文件系統中創建的文件,數據駐留在內存中,並使用大頁進行映射。
關於 HugeTLB Pages
另一個被稱為 THP (Transparent HugePages) ,後出的開啟大頁映射物理內存的機制。
與 hugetlbfs 不同,hugetlbfs要求用戶和/或系統管理員配置系統內存的哪些部分應該並可以被大頁映射;THP透明地管理這些映射並獲取名稱。
關於 Transparent Hugepage Support
通常,硬體對不同物理內存范圍的訪問方式有所限制。某些情況下,設備不能對所有可定址內存執行DMA。在其他情況下,物理內存的大小超過虛擬內存的最大可定址大小,需要採取特殊措施來訪問部分內存。還有些情況,物理內存的尺寸超過了虛擬內存的最大可定址尺寸,需要採取特殊措施來訪問部分內存。
Linux根據內存頁的使用情況,將其組合為多個 zones 。比如, ZONE_DMA 包含設備用於DMA的內存, ZONE_HIGHMEM 包含未永久映射到內核地址空間的內存, ZONE_NORMAL 包含正常定址內存頁。
內存zones的實際層次架構取決於硬體,因為並非所有架構都定義了所有的zones,不同平台對DMA的要求也不同。
多處理器機器很多基於 NUMA (Non-Uniform Memory Access system - 非統一內存訪問系統 )架構。 在這樣的系統中,根據與處理器的「距離」,內存被安排成具有不同訪問延遲的 banks 。每個 bank 被稱為一個 node ,Linux為每個 node 構造一個獨立的內存管理子系統。 Node 有自己的zones集合、free&used頁面列表,以及各種統計計數器。
What is NUMA?
NUMA Memory Policy
物理內存易失,將數據放入內存的常見情況是讀取文件。讀取文件時,數據會放入 頁面緩存(page cache) ,可以在再次讀取時避免耗時的磁碟訪問。同樣,寫文件時,數據也會被放入 頁面緩存 ,並最終進入存儲設備。被寫入的頁被標記為 臟頁(dirty page) ,當Linux決定將其重用時,它會將更新的數據同步到設備上的文件。
匿名內存 anonymous memory 或 匿名映射 anonymous mappings 表示沒有後置文件系統的內存。這些映射是為程序的stack和heap隱式創建的,或調用mmap(2)顯式創建的。通常,匿名映射只定義允許程序訪問的虛擬內存區域。讀,會創建一個頁表條目,該條目引用一個填充有零的特殊物理頁。寫,則分配一個常規物理頁來保存寫入數據。該頁將被標記為臟頁,如果內核決定重用該頁,則臟頁將被交換出去 swapped out 。
縱貫整個系統生命周期,物理頁可用於存儲不同類型的數據。它可以是內核內部數據結構、設備驅動DMA緩沖區、讀取自文件系統的數據、用戶空間進程分配的內存等。
根據內存頁使用情況,Linux內存管理會區別處理。可以隨時釋放的頁面稱為 可回收(reclaimable) 頁面,因為它們把數據緩存到了其他地方(比如,硬碟),或者被swap out到硬碟上。
可回收頁最值得注意的是 頁面緩存 和 匿名頁面 。
在大多數情況下,存放內部內核數據的頁,和用作DMA緩沖區的頁無法重用,它們將保持現狀直到用戶釋放。這樣的被稱為 不可回收頁(unreclaimable) 。
然而,在特定情況下,即便是內核數據結構佔用的頁面也會被回收。
例如,文件系統元數據的緩存(in-memory)可以從存儲設備中重新讀取,因此,當系統存在內存壓力時,可以從主內存中丟棄它們。
釋放可回收物理內存頁並重新調整其用途的過程稱為 (surprise!) reclaim 。
Linux支持非同步或同步回收頁,取決於系統的狀態。
當系統負載不高時,大部分內存是空閑的,可以立即從空閑頁得到分配。
當系統負載提升後,空閑頁減少,當達到某個閾值( low watermark )時,內存分配請求將喚醒 kswapd 守護進程。它將以非同步的方式掃描內存頁。如果內存頁中的數據在其他地方也有,則釋放這些內存頁;或者退出內存到後置存儲設備(關聯 臟頁 )。
隨著內存使用量進一步增加,並達到另一個閾值- min watermark -將觸發回收。這種情況下,分配將暫停,直到回收到足夠的內存頁。
當系統運行時,任務分配並釋放內存,內存變得碎片化。
雖然使用虛擬內存可以將分散的物理頁表示為虛擬連續范圍,但有時需要分配大的連續的物理內存。這種需求可能會提升。例如,當設備驅動需要一個大的DMA緩沖區時,或當THP分配一個大頁時。
內存地址壓縮(compaction ) 解決了碎片問題。
該機制將佔用的頁從內存zone的下部移動到上部的空閑頁。壓縮掃描完成後,zone開始處的空閑頁就並在一起了,分配較大的連續物理內存就可行了。
與 reclaim 類似, compaction 可以在 kcompactd守護進程中非同步進行,也可以作為內存分配請求的結果同步進行。
在存在負載的機器上,內存可能會耗盡,內核無法回收到足夠的內存以繼續運行。
為了保障系統的其餘部分,引入了 OOM killer 。
OOM killer 選擇犧牲一個任務來保障系統的總體健康。選定的任務被killed,以期望在它退出後釋放足夠的內存以繼續正常的操作。
⑤ 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目錄中。
⑥ linux磁碟格式化與管理知識點總結
首先我們來認識下Linux上的文件系統
/:根目錄
/bin:二進制,可執行命令
/sbin:可執行命令,僅用於管理,通常只有管理員才有許可權使用。
/boot:引導,操作系統用於引導系統啟動的文件,一般指內核
/dev:設備文件
Linux的設備類型
字元設備:以c開頭的文件,線性設備
塊設備:以b開頭的文件,隨機設備
/etc:配置文件
/home:用戶的家目錄,/home/username,eg:jerry,/home/jerry
/lib,/lib64:庫文件
/media:掛載點目錄,通常用於掛在便攜性設備
/mnt:掛載點目錄,掛在額外的文件系統
/misc:備份目錄
/net
/opt可選目錄,通常第三方軟體偶爾安裝於此路徑下
/proc:偽文件系統,內存中內核的映射
/selinux: 安全加強的linux
/srv: service 屬於服務的中間數據存儲位置
/sys:類似於proc,通常用於訪問獲取硬體設備屬性信息
/tmp:臨時文件目錄
/usr:存放只讀文件
/var:經常會發生變化的文件,比方說日誌等
文件系統通常有內核提供,Windows里邊的文件系統有:NTFS、FAT32 Linux里邊的文件系統主要由ext2,ext3,ext4,xfs,reiserfs,nfs,iso9600,jfs,brtfs
對磁碟格式化就是創建文件系統,那麼怎麼實現格式化的呢?下面介紹一下實現磁碟格式化的命令及用法
第一步;分區
fdisk [DEVICE]
d 刪除一個分區
n 新建一個分區
w 保存退出
q 不保存退出
l 各分區類型對應的System ID
t 修改指定分區的System ID
分區之後讓內核重新讀取硬碟分區表的方法
1、重啟系統
2、RHEL5 上利用partprobe [DEVICE] 實現
REHL6 利用partx -a [PARTITION] DEVICE 實現
第二步:格式化分區,創建文件系統
mkfs -t fstype /dev/part = mke2fs -t fstype /dev/part
要點:1、文件系統必須被內核支持才能使用,即內核有相應的內核模塊,或者已經
將之整合進內核;
2、要有相應文件系統創建工具,這通常是mkfs.fstype
mke2fs -t {ext2|ext3|ext4}
-b {1024|2048|4096}:塊大小
塊大小取決CPU對內存頁框大小的支持,x86系統默認頁框大小為4K;
-L label: 設定卷標
-m #: 預留給管理使用的塊所佔據總體空間的比例;
-r #: 預留給管理使用的塊的`個數;
-E: 設定文件系統的擴展屬性;
tune2fs
-l: 顯示文件系統超級塊信息;
-L label:重新設定卷標;
-m #: 調整預留給管理使用的塊所佔據總體空間的比例;
-r #: 調整預留給管理使用的塊個數;
-o:設定掛載默認選項
-O: 設定文件系統默認特性
-E: 調整文件系統的擴展屬性
blkid DEVICE 顯示設備的UUID、文件系統類型及卷標
第三步 掛載
mount [-t fstype] DEVICE MOUNT_POINT
mount [-t fstype] LABEL="卷標" MOUNT_POINT
mount [-t fstype] UUID="UUID" MOUNT_POINT
掛載之後,原有數據的會被隱藏,因此不能掛載到系統常用目錄上;
卸載之時,要確保沒有進程正在訪問掛載的設備;否則,無法卸載;
-o 用於指定掛在選項。
ro: 只讀掛載;
rw: 讀寫,默認即為讀寫;
noatime: 關閉 更新 訪問時間;
auto: 是否能夠由「mount -a」掛載;
defaults:相當於rw, suid, dev, exec, auto, nouser, async, and relatime
sync: 同步寫入
async:非同步寫入
dev:
remount: 重新掛載
loop: 本地回環設備;
-n 掛在系統時,不更新設備文件
-r 只讀掛載,相當於「-o ro」
free 查看內存大小
-m: 空間大小換算為MB
-g: 空間大小換算為GB
⑦ linux 文件系統 是什麼意思
文件系統就是數據的儲存結構.
不要以為你的硬碟儲存東西很理所當然,沒有文件系統,你存的只回是01010100011101010101010
你的答Windows文件系統就是NTFS FAT什麼的.
Linux只是用了不同的.ext3 ext4 reiserFS 什麼的.
⑧ linux 內核參數優化
一、Sysctl命令用來配置與顯示在/proc/sys目錄中的內核參數.如果想使參數長期保存,可以通過編輯/etc/sysctl.conf文件來實現。
命令格式:
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] –a
常用參數的意義:
-w 臨時改變某個指定參數的值,如
# sysctl -w net.ipv4.ip_forward=1
-a 顯示所有的系統參數
-p從指定的文件載入系統參數,默認從/etc/sysctl.conf 文件中載入,如:
以上兩種方法都可能立即開啟路由功能,但如果系統重啟,或執行了
# service network restart
命令,所設置的值即會丟失,如果想永久保留配置,可以修改/etc/sysctl.conf文件,將 net.ipv4.ip_forward=0改為net.ipv4.ip_forward=1
二、linux內核參數調整:linux 內核參數調整有兩種方式
方法一:修改/proc下內核參數文件內容,不能使用編輯器來修改內核參數文件,理由是由於內核隨時可能更改這些文件中的任意一個,另外,這些內核參數文件都是虛擬文件,實際中不存在,因此不能使用編輯器進行編輯,而是使用echo命令,然後從命令行將輸出重定向至 /proc 下所選定的文件中。如:將 timeout_timewait 參數設置為30秒:
參數修改後立即生效,但是重啟系統後,該參數又恢復成默認值。因此,想永久更改內核參數,需要修改/etc/sysctl.conf文件
方法二.修改/etc/sysctl.conf文件。檢查sysctl.conf文件,如果已經包含需要修改的參數,則修改該參數的值,如果沒有需要修改的參數,在sysctl.conf文件中添加參數。如:
net.ipv4.tcp_fin_timeout=30
保存退出後,可以重啟機器使參數生效,如果想使參數馬上生效,也可以執行如下命令:
三、sysctl.conf 文件中參數設置及說明
proc/sys/net/core/wmem_max
最大socket寫buffer,可參考的優化值:873200
/proc/sys/net/core/rmem_max
最大socket讀buffer,可參考的優化值:873200
/proc/sys/net/ipv4/tcp_wmem
TCP寫buffer,可參考的優化值: 8192 436600 873200
/proc/sys/net/ipv4/tcp_rmem
TCP讀buffer,可參考的優化值: 32768 436600 873200
/proc/sys/net/ipv4/tcp_mem
同樣有3個值,意思是:
net.ipv4.tcp_mem[0]:低於此值,TCP沒有內存壓力.
net.ipv4.tcp_mem[1]:在此值下,進入內存壓力階段.
net.ipv4.tcp_mem[2]:高於此值,TCP拒絕分配socket.
上述內存單位是頁,而不是位元組.可參考的優化值是:786432 1048576 1572864
/proc/sys/net/core/netdev_max_backlog
進入包的最大設備隊列.默認是300,對重負載伺服器而言,該值太低,可調整到1000
/proc/sys/net/core/somaxconn
listen()的默認參數,掛起請求的最大數量.默認是128.對繁忙的伺服器,增加該值有助於網路性能.可調整到256.
/proc/sys/net/core/optmem_max
socket buffer的最大初始化值,默認10K
/proc/sys/net/ipv4/tcp_max_syn_backlog
進入SYN包的最大請求隊列.默認1024.對重負載伺服器,可調整到2048
/proc/sys/net/ipv4/tcp_retries2
TCP失敗重傳次數,默認值15,意味著重傳15次才徹底放棄.可減少到5,盡早釋放內核資源.
/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes
這3個參數與TCP KeepAlive有關.默認值是:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds
意思是如果某個TCP連接在idle 2個小時後,內核才發起probe.如果probe 9次(每次75秒)不成功,內核才徹底放棄,認為該連接已失效.對伺服器而言,顯然上述值太大. 可調整到:
/proc/sys/net/ipv4/tcp_keepalive_time 1800
/proc/sys/net/ipv4/tcp_keepalive_intvl 30
/proc/sys/net/ipv4/tcp_keepalive_probes 3
/proc/sys/net/ipv4/ip_local_port_range
指定埠范圍的一個配置,默認是32768 61000,已夠大.
net.ipv4.tcp_syncookies = 1
表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1
表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。
net.ipv4.tcp_keepalive_time = 1200
表示當keepalive起用的時候,TCP發送keepalive消息的頻度。預設是2小時,改為20分鍾。
net.ipv4.ip_local_port_range = 1024 65000
表示用於向外連接的埠范圍。預設情況下很小:32768到61000,改為1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192
表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網路連接數。
net.ipv4.tcp_max_tw_buckets = 5000
表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除並列印警告信息。默認為 180000,改為 5000。對於Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid伺服器被大量的TIME_WAIT套接字拖死。
Linux上的NAT與iptables
談起Linux上的NAT,大多數人會跟你提到iptables。原因是因為iptables是目前在linux上實現NAT的一個非常好的介面。它通過和內核級直接操作網路包,效率和穩定性都非常高。這里簡單列舉一些NAT相關的iptables實例命令,可能對於大多數實現有多幫助。
這里說明一下,為了節省篇幅,這里把准備工作的命令略去了,僅僅列出核心步驟命令,所以如果你單單執行這些沒有實現功能的話,很可能由於准備工作沒有做好。如果你對整個命令細節感興趣的話,可以直接訪問我的《如何讓你的Linux網關更強大》系列文章,其中對於各個腳本有詳細的說明和描述。
EXTERNAL="eth0"
INTERNAL="eth1"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE
LOCAL_EX_IP=11.22.33.44 #設定網關的外網卡ip,對於多ip情況,參考《如何讓你的Linux網關更強大》系列文章
LOCAL_IN_IP=192.168.1.1 #設定網關的內網卡ip
INTERNAL="eth1" #設定內網卡
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -t nat -A PREROUTING -d $LOCAL_EX_IP -p tcp --dport 80 -j DNAT --to 192.168.1.10
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to $LOCAL_IN_IP
iptables -A FORWARD -o $INTERNAL -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A OUTPUT -d $LOCAL_EX_IP -p tcp --dport 80 -j DNAT --to 192.168.1.10
獲取系統中的NAT信息和診斷錯誤
了解/proc目錄的意義
在Linux系統中,/proc是一個特殊的目錄,proc文件系統是一個偽文件系統,它只存在內存當中,而不佔用外存空間。它包含當前系統的一些參數(variables)和狀態(status)情況。它以文件系統的方式為訪問系統內核數據的操作提供介面
通過/proc可以了解到系統當前的一些重要信息,包括磁碟使用情況,內存使用狀況,硬體信息,網路使用情況等等,很多系統監控工具(如HotSaNIC)都通過/proc目錄獲取系統數據。
另一方面通過直接操作/proc中的參數可以實現系統內核參數的調節,比如是否允許ip轉發,syn-cookie是否打開,tcp超時時間等。
獲得參數的方式:
第一種:cat /proc/xxx/xxx,如 cat /proc/sys/net/ipv4/conf/all/rp_filter
第二種:sysctl xxx.xxx.xxx,如 sysctl net.ipv4.conf.all.rp_filter
改變參數的方式:
第一種:echo value > /proc/xxx/xxx,如 echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
第二種:sysctl [-w] variable=value,如 sysctl [-w] net.ipv4.conf.all.rp_filter=1
以上設定系統參數的方式只對當前系統有效,重起系統就沒了,想要保存下來,需要寫入/etc/sysctl.conf文件中
通過執行 man 5 proc可以獲得一些關於proc目錄的介紹
查看系統中的NAT情況
和NAT相關的系統變數
/proc/slabinfo:內核緩存使用情況統計信息(Kernel slab allocator statistics)
/proc/sys/net/ipv4/ip_conntrack_max:系統支持的最大ipv4連接數,默認65536(事實上這也是理論最大值)
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 已建立的tcp連接的超時時間,默認432000,也就是5天
和NAT相關的狀態值
/proc/net/ip_conntrack:當前的前被跟蹤的連接狀況,nat翻譯表就在這里體現(對於一個網關為主要功能的Linux主機,裡面大部分信息是NAT翻譯表)
/proc/sys/net/ipv4/ip_local_port_range:本地開放埠范圍,這個范圍同樣會間接限制NAT表規模
cat /proc/sys/net/ipv4/ip_conntrack_max
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
cat /proc/net/ip_conntrack
cat /proc/sys/net/ipv4/ip_local_port_range
wc -l /proc/net/ip_conntrack
grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print 2;}'
grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print 3;}'
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10
cat /proc/net/ip_conntrack | perl -pe s/^(.*?)src/src/g | cut -d ' ' -f1 | cut -d '=' -f2 | sort | uniq -c | sort -nr | head -n 10
⑨ Linux文件系統中包括的主要文件類型有哪些
Linux 系統核心支持十多種文件系統類型:jfs,ReiserFS,ext,ext2,ext3,iso9660,xfs,minx,msdos,umsdos,Vfat,NTFS,Hpfs,Nfs,smb,sysv,proc 等.
下面是主要分類:
一, ext ext 是第一個專門為 Linux 的文件系統類型,叫做擴展文件系統.
二, ext2 ext2 是為解決 ext 文件系統的缺陷而設計的可擴展的高性能的文件系統.又被稱為 二級擴展文件系統
三, ext3 ext3 是由開放資源社區開發的日誌文件系統,. ext3 被設計成是 ext2 的升級版本。
四, jsf jsf 提供了基於日誌的位元組級文件系統,該文件系統是為面向事務的高性能系統而開發的。
五,ReiserFS ReiserFS 基於平 衡樹結構的 、ReiserFS 文件系統在網上公布.ReiserFS 3.6.x(作為 Linux 2.4 一部分 的版本),設計成員相信最好的文件系統是那些能夠有助於創建獨立的共享環境或者命名空間的文件系統。
六,Xfs xfs 是一種非常優秀的日誌文件系統,它是 SGI 公司設計的.xfs 被稱為業界最先進 的,最具可升級性的文件系統技術.它是一個全 64 位,快速,穩固的日誌文件系統,
其他文件系統簡介:
Minix:Llnux 支持的第一個文件系統,對用戶有很多限制而且性能低下
Xia:Minix 文件系統修正後的版本.在一定程度上解決了文件名和文件系統大小的
Msdos:msdos 是在 Dos,Windows 和某些 OS/2 操作系統上使用的一種文件系 統,其名稱採用"8+3"的形式,即 8 個字元的文件名加上 3 個字元的擴展名.
umsdos:Linux 下的擴展 msdos 文件系統驅動,支持長文件名,所有者,允許 許可權,連接和設備文件.允許一個普通的 msdo s 文件系統用於 Linux,而且無須為它建 立單獨的分區.
iso9660:名. 標准 CDROM 文件系統,通用的 Rock Ridge 增強系統,允許長文件 Vfat:vfat 是 Windows9x 和 Windows NT/2000 下使用的一種 Dos 文件系統, 其在 Dos 文件系統的基礎上增加了對長文件名的支持.
Nfs:Sun 公司推出的網路文件系統,允許多台計算機之間共享同一文件系統,易 於從所有這些計算機上存取文件.
Hpfs: High Performance File System(HPFS) 高性能文件系統(HPFS) HPFS 是 Microsoft 的 LAN Manager 中的文件系統,同時也是 IBM 的 LAN Server 和 OS/2 的文件系統.HPFS 能訪問較大的硬碟驅動器,提供更多的組織特性並改善了文件 系統的安全特性.
Smb:smb 是一種支持 Windows for workgroups,Windows NT 和 Lan Man ager 的基於 SMB 協議的網路操作系統.
Sysv:sysv 文件系統實際上是 System V/Coherent 在 Linux 平台上的文件系統.
Ncpfs:ncpfs 是一種 Novell NetWare 使用的 NCP 協議的網路操作系統.
Proc:proc 是 Linux 系統中作為一種偽文件系統出現的,它用來作為連接內核數據 結構的界面. NTFS:微軟 Windows NT 內核的系列操作系統支持的,一個特別為網路和磁碟配 額,文件加密等管理安全特性設計的磁碟格式.
⑩ linux支持的文件系統有哪些
比如Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
Linux操作系統使用虛擬文件系統(VFS)向上和用戶進程文件訪問系統調用介面,向下和具體不同文件系統的實現介面。VFS屏蔽了具體文件的實現細節,向上提供統一的操作介面。通過VFS可以實現任意的文件系統,這些文件系統通過文件訪問系統調用都可以訪問。所以Linux系統核心可以支持十多種文件系統類型。
(10)linux偽文件系統擴展閱讀:
EXT是延伸文件系統(英語:Extended file system,縮寫為 ext或 ext1),也譯為擴展文件系統,一種文件系統,於1992年4月發表,是為linux核心所做的第一個文件系統。採用Unix文件系統(UFS)的元數據結構,以克服MINIX文件系統性能不佳的問題。它是在linux上,第一個利用虛擬文件系統實現出的文件系統,在linux核心0.96c版中首次加入支持,最大可支持2GB的文件系統
EXT3是第三代擴展文件系統(英語:Third extended filesystem,縮寫為ext3),是一個日誌文件系統,常用於Linux操作系統。它是很多Linux發行版的默認文件系統。Stephen Tweedie在1999年2月的內核郵件列表中,最早顯示了他使用擴展的ext2,該文件系統從2.4.15版本的內核開始,合並到內核主線中。