檔案系統

天府雲創發表於2018-09-05

在工程架構領域裡,儲存是一個非常重要的方向,這個方向從底至上,我分成了如下幾個層次來介紹:

  1. 硬體層:講解磁碟,SSD,SAS, NAS, RAID等硬體層的基本原理,以及其為作業系統提供的儲存介面;
  2. 作業系統層:即檔案系統,作業系統如何將各個硬體管理並對上提供更高層次介面;
  3. 單機引擎層:常見儲存系統對應單機引擎原理大概介紹,利用檔案系統介面提供更高階別的儲存系統介面;
  4. 分散式層:如何將多個單機引擎組合成一個分散式儲存系統;
  5. 查詢層:使用者典型的查詢語義表達以及解析;

                                                           後設資料——塊資料——緩衝資料——檔案資料

概述

作業系統對系統的軟體資源(不論是應用軟體和系統軟體)的管理都以檔案方式進行,承擔這部分功能的作業系統稱為檔案系統。

檔案系統

檔案系統是作業系統用於明確儲存裝置(常見的是磁碟,也有基於NAND Flash的固態硬碟)或分割槽上的檔案的方法和資料結構;即在儲存裝置上組織檔案的方法。作業系統中負責管理和儲存檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統。檔案系統由三部分組成:檔案系統的介面,對物件操縱和管理的軟體集合,物件及屬性。從系統角度來看,檔案系統是對檔案儲存裝置的空間進行組織和分配,負責檔案儲存並對存入的檔案進行保護和檢索的系統。具體地說,它負責為使用者建立檔案,存入、讀出、修改、轉儲檔案,控制檔案的存取,當使用者不再使用時撤銷檔案等。

在計算機中,檔案系統(file system)是命名檔案及放置檔案的邏輯儲存和恢復的系統。DOS、Windows、OS/2、Macintosh和UNIX-based作業系統都有檔案系統,在此係統中檔案被放置在分等級的(樹狀)結構中的某一處。檔案被放置進目錄(Windows中的資料夾)或子目錄,在樹狀結構中你希望的位置中。【linux樹形目錄,也就是樹譜總分關係無限下延續】

檔案系統指定命名檔案的規則。這些規則包括檔名的字元數最大量,哪種字元可以使用,以及某些系統中檔名字尾可以有多長。檔案系統還包括通過目錄結構找到檔案的指定路徑的格式。 

檔案系統是軟體系統的一部分,它的存在使得應用可以方便的使用抽象命名的資料物件和大小可變的空間。

檔案系統種類

FAT(8/16/32)
NTFS
CDFS
exFAT
RAW
Ext
     1.Ext2
     2.Ext3
     3.Ext4

XFS
Btrfs
ZFS
HFS
HFS+
ReiserFS
JFS
VMFS
UFS
VXFS
ReFS
WBFS
PFS

簡單介紹

FAT16:我們以前用的DOS、Windows 95都使用FAT16檔案系統,現在常用的Windows 98/2000/XP等系統均支援FAT16檔案系統。它最大可以管理大到2GB的分割槽,但每個分割槽最多隻能有65525個簇(簇是磁碟空間的配置單位)。隨著硬碟或分割槽容量的增大,每個簇所佔的空間將越來越大,從而導致硬碟空間的浪費。 

FAT32:隨著大容量硬碟的出現,從Windows 98開始,FAT32開始流行。它是FAT16的增強版本,可以支援大到2TB(2048G的分割槽。FAT32使用的簇比FAT16小,從而有效地節約了硬碟空間。 

NTFS:最大分割槽2TB。另:簡單卷最大2TB,動態卷最大16TB。

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 支援無限數量的子目錄。

ext3和ext4的最大區別在於,ext3在fsck時需要耗費大量時間(檔案越多,時間越長),而ext4在fsck時用的時間會少非常多

ext4是第四代擴充套件檔案系統(英語:Fourth EXtended filesystem,縮寫為ext4)是linux系統下的日誌檔案系統,是ext3檔案系統的後繼版本
ext4的檔案系統容量達到1EB,而檔案容量則達到16TB,這是一個非常大的數字了。對一般的桌上型電腦和伺服器而言,這可能並不重要,但對於大型磁碟陣列的使用者而言,這就非常重要了。
ext3目前只支援32000個子目錄,而ext4取消了這一限制,理論上支援無限數量的子目錄。

xfs是一種非常優秀的日誌檔案系統,它是SGI公司設計的。xfs被稱為業界最先進的、最具可升級性的檔案系統技術
xfs是一個64位檔案系統,最大支援8EB減1位元組的單個檔案系統,實際部署時取決於宿主作業系統的最大塊限制。對於一個32位Linux系統,檔案和檔案系統的大小會被限制在16TB
xfs在很多方面確實做的比ext4好,ext4受限制於磁碟結構和相容問題,可擴充套件性和scalability確實不如xfs,另外xfs經過很多年發展,各種鎖的細化做的也比較好。

注:Ext2: 是 GNU/Linux 系統中標準的檔案系統,其特點為存取檔案的效能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。其單一檔案大小與檔案系統本身的容量上限與檔案系統本身的簇大小有關,在一般常見的 x86 電腦系統中,簇最大為 4KB, 則單一檔案大小上限為 2048GB, 而檔案系統的容量上限為 16384GB。但由於目前核心 2.4 所能使用的單一分割區最大隻有 2048GB,因此實際上能使用的檔案系統容量最多也只有 2048GB。

centos7.0開始預設檔案系統是xfs,centos6是ext4,centos5是ext3

 

各種檔案系統支援的最大硬碟容量

NTFS格式(windows的分割槽,Linux也能用):支援最大分割槽為2TB,最大檔案為2TB;

FAT32格式(windows的分割槽,Linux也能用):支援最大分割槽為128GB,最大檔案為4GB;

Ext2格式:最大分割槽大小為4TB,最大檔案大小為1TB;

Ext3格式:最大分割槽大小為16TB,最大檔案大小為2TB;

EXT4格式:最大分割槽大小為1EB,最大檔案大小為16TB;

XFS格式:最大支援8EB減1位元組的單個檔案系統;實際部署時取決於宿主作業系統的最大塊限制。對於一個32位Linux作業系統,檔案和檔案系統的大小會被限制在16TB;

ReiserFS格式:最大分割槽大小為4TB,最大檔案大小為1TB;

 注:1EB=1024PB,1PB=1024TB,1TB=1024GB

EXT4是第四代擴充套件檔案系統(英語:Fourth EXtended filesystem,縮寫為ext4)是Linux系統下的日誌檔案系統,是ext3檔案系統的後繼版本。
Ext4的檔案系統容量達到1EB,而檔案容量則達到16TB,這是一個非常大的數字了。對一般的桌上型電腦和伺服器而言,這可能並不重要,但對於大型磁碟陣列的使用者而言,這就非常重要了。

XFS是一個64位檔案系統,最大支援8EB減1位元組的單個檔案系統,實際部署時取決於宿主作業系統的最大塊限制。對於一個32位Linux系統,檔案和檔案系統的大小會被限制在16TB。

二者各有特點,而效能表現基本上是差不多的。例如,谷歌公司就考慮將EXT2系統升級,最終確定為EXT4系統。谷歌公司表示,他們還考慮過XFS和JFS。結果顯示,EXT4和XFS的表現類似,不過從EXT2升級到EXT4比升級到XFS容易。

對於儲存海量的小檔案,或者超大規模的檔案,檔案大小也偏大的話,建議你使用xfs,否則使用ext4,ext4比較穩定,是主流的Linux檔案系統

在Linux下,理論上檔案最大可以達到4T(看清楚是4T不是4G),但在實際操作中都在2G左右(一般不超過4G),超過2G的單個檔案較之小於2G的檔案安全係數降低不少。另外對於ext3系統,如果突然斷電,容易出現硬碟問題,這種問題在大檔案多的硬碟硬碟中大檔案多的區域特別容易發生,而且經常是毀滅性的。如果要存放大檔案,建議使用reiserfs系統。

功能

結構圖
結構圖

 

檔案的系統是作業系統用於明確磁碟或分割槽上的檔案的方法和資料結構;即在磁碟上組織檔案的方法。也指用於儲存檔案的磁碟或分割槽,或檔案系統種類。因此,可以說"我有2個檔案系統"意思是他有2個分割槽,一個存檔案,或他用 "擴充套件檔案系統",意思是檔案系統的種類。

磁碟或分割槽和它所包括的檔案系統的不同是很重要的。少數程式(包括最有理由的產生檔案系統的程式)直接對磁碟或分割槽的原始扇區進行操作;這可能破壞一個存在的檔案系統。大部分程式基於檔案系統進行操作,在不同種檔案系統上不能工作。

一個分割槽或磁碟在作為檔案系統使用前,需要初始化,並將記錄資料結構寫到磁碟上。這個過程就叫建立檔案系統。

大部分UNIX檔案系統種類具有類似的通用結構,即使細節有些變化。其中心概念是超級塊superblock,i節點inode,資料塊data block,目錄塊directory block,和間接塊indirection block。超級塊包括檔案系統的總體資訊,比如大小(其準確資訊依賴檔案系統)。i節點包括除了名字外的一個檔案的所有資訊,名字與i節點數目一起存在目錄中,目錄條目包括檔名和檔案的i節點數目。i節點包括幾個資料塊的數目,用於儲存檔案的資料。i節點中只有少量資料塊數的空間,如果需要更多,會動態分配指向資料塊的指標空間。這些動態分配的塊是間接塊;為了找到資料塊,這名字指出它必須先找到間接塊的號碼。

UNIX檔案系統通常允許在檔案中產生孔,意思是檔案系統假裝檔案中有一個特殊的位置只有0位元組,但沒有為這檔案的這個位置保留實際的磁碟空間。這對小的 [2]  二進位制檔案經常發生,Linux共享庫、一些資料庫和其他一些特殊情況。

孔有一定的用處。在筆者的系統中,一個簡單的測量工具顯示在200MB使用的磁碟空間中,由於孔,節約了大約4MB。在這個系統中,程式相對較少,沒有 [3]  資料庫檔案

檔案系統的功能包括:管理和排程檔案的儲存空間,提供檔案的邏輯結構、物理結構和儲存方法;實現檔案從標識到實際地址的對映,實現檔案的控制操作和存取操作,實現檔案資訊的共享並提供可靠的檔案保密和保護措施,提供檔案的安全措施。

檔案的邏輯結構是依照檔案的內容的邏輯關係組織檔案結構。檔案的邏輯結構可以分為流式檔案和記錄式檔案。

流式檔案:檔案中的資料是一串字元流,沒有結構。

記錄檔案:由若干邏輯記錄組成,每條記錄又由相同的資料項組成,資料項的長度可以是確定的,也可以是不確定的。

主要缺陷:資料關聯差,資料不一致,冗餘性。

linux檔案系統詳解

最近在做磁碟效能優化,需要結合檔案系統原理去思考優化方向,因此藉此機會進一步加深了對檔案系統的認識。在看這篇文章之前,建議先看下前面一篇關於磁碟工作原理的解讀。下面簡單總結一些要點分享出來:

Linux檔案系統中的檔案是資料的集合,檔案系統不僅包含著檔案中的資料而且還有檔案系統的結構,所有Linux 使用者和程式看到的檔案、目錄、軟連線及檔案保護資訊等都儲存在其中。

一、檔案系統層次分析

由上而下主要分為使用者層、VFS層、檔案系統層、快取層、塊裝置層、磁碟驅動層、磁碟物理層

使用者層:最上面使用者層就是我們日常使用的各種程式,需要的介面主要是檔案的建立、刪除、開啟、關閉、寫、讀等。 

VFS層:我們知道Linux分為使用者態和核心態,使用者態請求硬體資源需要呼叫System Call通過核心態去實現。使用者的這些檔案相關操作都有對應的System Call函式介面,介面呼叫 VFS對應的函式。 

檔案系統層:不同的檔案系統實現了VFS的這些函式,通過指標註冊到VFS裡面。所以,使用者的操作通過VFS轉到各種檔案系統。檔案系統把檔案讀寫命令轉化為對磁碟LBA的操作,起了一個翻譯和磁碟管理的作用。 

快取層:檔案系統底下有快取,Page Cache,加速效能。對磁碟LBA的讀寫資料快取到這裡。

塊裝置層:塊裝置介面Block Device是用來訪問磁碟LBA的層級,讀寫命令組合之後插入到命令佇列,磁碟的驅動從佇列讀命令執行。Linux設計了電梯演算法等對很多LBA的讀寫進行優化排序,儘量把連續地址放在一起。

磁碟驅動層:磁碟的驅動程式把對LBA的讀寫命令轉化為各自的協議,比如變成ATA命令,SCSI命令,或者是自己硬體可以識別的自定義命令,傳送給磁碟控制器。Host Based SSD甚至在塊裝置層和磁碟驅動層實現了FTL,變成對Flash晶片的操作。 

磁碟物理層:讀寫物理資料到磁碟介質。

二、檔案系統結構與工作原理(主要以ext4為例)

我們都知道,windows檔案系統主要有fat、ntfs等,而linux檔案系統則種類多的很,主要有VFS做了一個軟體抽象層,向上提供檔案操作介面,向下提供標準介面供不同檔案系統對接,下面主要就以EXT4檔案系統為例,講解下檔案系統結構與工作原理:

上面兩個圖大體呈現了ext4檔案系統的結構,從中也相信能夠初步的領悟到檔案系統讀寫的邏輯過程。下面對上圖裡邊的構成元素做個簡單的講解:

引導塊:為磁碟分割槽的第一個塊,記錄檔案系統分割槽的一些資訊,,引導載入當前分割槽的程式和資料被儲存在這個塊中。一般佔用2kB,

超級塊:

超級塊用於儲存檔案系統全域性的配置引數(譬如:塊大小,總的塊數和inode數)和動態資訊(譬如:當前空閒塊數和inode數),其處於檔案系統開始位置的1k處,所佔大小為1k。為了系統的健壯性,最初每個塊組都有超級塊和組描述符表(以下將用GDT)的一個拷貝,但是當檔案系統很大時,這樣浪費了很多塊(尤其是GDT佔用的塊多),後來採用了一種稀疏的方式來儲存這些拷貝,只有塊組號是3, 5 ,7的冪的塊組(譬如說1,3,5,7,9,25,49…)才備份這個拷貝。通常情況下,只有主拷貝(第0塊塊組)的超級塊資訊被檔案系統使用,其它拷貝只有在主拷貝被破壞的情況下才使用。

塊組描述符:

GDT用於儲存塊組描述符,其佔用一個或者多個資料塊,具體取決於檔案系統的大小。它主要包含塊點陣圖,inode點陣圖和inode表位置,當前空閒塊數,inode數以及使用的目錄數(用於平衡各個塊組目錄數),具體定義可以參見ext3_fs.h檔案中struct ext3_group_desc。每個塊組都對應這樣一個描述符,目前該結構佔用32個位元組,因此對於塊大小為4k的檔案系統來說,每個塊可以儲存128個塊組描述符。由於GDT對於定位檔案系統的後設資料非常重要,因此和超級塊一樣,也對其進行了備份。GDT在每個塊組(如果有備份)中內容都是一樣的,其所佔塊數也是相同的。從上面的介紹可以看出塊組中的後設資料譬如塊點陣圖,inode點陣圖,inode表其位置不是固定的,當然預設情況下,檔案系統在建立時其位置在每個塊組中都是一樣的,如圖2所示(假設按照稀疏方式儲存,且n不是3,5,7的冪)

塊組:

每個塊組包含一個塊點陣圖塊,一個 inode 點陣圖塊,一個或多個塊用於描述 inode 表和用於儲存檔案資料的資料塊,除此之外,還有可能包含超級塊和所有塊組描述符表(取決於塊組號和檔案系統建立時使用的引數)。下面將對這些後設資料作一些簡要介紹。

塊點陣圖:

塊點陣圖用於描述該塊組所管理的塊的分配狀態。如果某個塊對應的位未置位,那麼代表該塊未分配,可以用於儲存資料;否則,代表該塊已經用於儲存資料或者該塊不能夠使用(譬如該塊物理上不存在)。由於塊點陣圖僅佔一個塊,因此這也就決定了塊組的大小。

Inode點陣圖:

Inode點陣圖用於描述該塊組所管理的inode的分配狀態。我們知道inode是用於描述檔案的後設資料,每個inode對應檔案系統中唯一的一個號,如果inode點陣圖中相應位置位,那麼代表該inode已經分配出去;否則可以使用。由於其僅佔用一個塊,因此這也限制了一個塊組中所能夠使用的最大inode數量。

Inode表:

Inode表用於儲存inode資訊。它佔用一個或多個塊(為了有效的利用空間,多個inode儲存在一個塊中),其大小取決於檔案系統建立時的引數,由於inode點陣圖的限制,決定了其最大所佔用的空間。

以上這幾個構成元素所處的磁碟塊成為檔案系統的後設資料塊,剩餘的部分則用來儲存真正的檔案內容,稱為資料塊,而資料塊其實也包含資料和目錄。

瞭解了檔案系統的結構後,接下來我們來看看作業系統是如何讀取一個檔案的:

大體過程如下:

1、根據檔案所在目錄的inode資訊,找到目錄檔案對應資料塊

2、根據檔名從資料塊中找到對應的inode節點資訊

3、從檔案inode節點資訊中找到檔案內容所在資料塊塊號

4、讀取資料塊內容

到這裡,相信很多人會有一個疑問,我們知道一個檔案只有一個Inode節點來存放它的屬性資訊,那麼你可能會想如果一個大檔案,那它的block一定是多個的,且可能不連續的,那麼inode怎麼來表示呢,下面的圖告訴你答案:

 

 也就是說,如果檔案內容太大,對應資料塊數量過多,inode節點本身提供的儲存空間不夠,會使用其他的間接資料塊來儲存資料塊位置資訊,最多可以有三級定址結構。

 到這裡,應該都已經非常清楚檔案讀取的過程了,那麼下面再丟擲兩個疑問:

1、檔案的拷貝、剪下的底層過程是怎樣的?

2、軟連線和硬連線分別是如何實現的?

下面來結合stat命令動手操作一下,便知真相:

1)拷貝檔案:建立一個新的inode節點,並且拷貝資料塊內容

2)剪下檔案:同個分割槽裡邊mv,inode節點不變,只是更新目錄檔案對應資料塊裡邊的檔名和inode對應關係;跨分割槽mv,則跟拷貝一個道理,需要建立新的inode,因為inode節點不同分割槽是不能共享的。

3)軟連線:建立軟連線會建立一個新的inode節點,其對應資料塊內容儲存所連結的檔名資訊,這樣原檔案即便刪除了,重新建立一個同名的檔案,軟連線依然能夠生效。

 

 4)硬連結:建立硬連結,並不會新建inode節點,只是links加1,還有再目錄檔案對應資料塊上增加一條檔名和inode對應關係記錄;只有將硬連結和原檔案都刪除之後,檔案才會真正刪除,即links為0才真正刪除。

 三、檔案順序讀寫和隨機讀寫

從前面文章瞭解了磁碟工作原理之後,也已經明白了為什麼檔案隨機讀寫速度會比順序讀寫差很多,這個問題在windows裡邊更加明顯,為什麼呢?究其原因主要與檔案系統工作機制有關,fat和ntfs檔案系統設計上,每個檔案所處的位置相對連續甚至緊靠在一起,這樣沒有為每個檔案留下足夠的擴充套件空間,因此容易產生磁碟碎片,用過windows系統的應該也知道,windows磁碟分割槽特別提供了磁碟碎片整理的高階功能。如下圖:

那回過來,看看linux 檔案系統ext4,都說linux不需要考慮磁碟碎片,究竟是怎麼回事?

主要是因為Linux的檔案系統會將檔案分散在整個磁碟,在檔案之間留有大量的自由空間,而不是像Windows那樣將檔案一個接一個的放置。當一個檔案被編輯了並且變大了,一般都會有足夠的自由空間來儲存檔案。如果碎片真的產生了,檔案系統就會嘗試在日常使用中將檔案移動來減少碎片,所以不需要專門的碎片整理程式。但是,如果磁碟空間佔用已經快滿了,那碎片是不可避免的,檔案系統的設計本來就是用來滿足正常情況下使用的。如果磁碟空間不夠,那要麼就是資料冗餘了,要麼就該換容量更大的磁碟。你可以使用fsck命令來檢測一下一個Linux檔案系統的碎片化程度,只需要在輸出中檢視非連續i節點個數(non-contiguous inodes)就可以了。

關於檔案系統的就講這麼多,下篇會講解linux核心提供的一個資源管控機制cgroup,分析其原理及使用過程。

ext4檔案系統bug:
http://www.phoronix.com/scan.php?page=news_item&px=MTIxNDQ

Linux(unix)與微軟檔案系統比較

相同點

使用者和組

Linux是多使用者多工作業系統而Windows是單使用者多工作業系統。都可以由許多不同的使用者來使用,為每個使用者提供單獨的環境和資源。基於使用者身份來控制安全性。都可以以組成員的方式來控制資源的訪問許可權,這樣在使用者數目較大時可以不必為每一個帳號設定許可權。

使用者和組可以集中管理,讓多個伺服器共享相同的使用者和身份驗證資料。

檔案系統

Linux和Windows都支援多種檔案系統。檔案資源可以通過NetBIOS、FTP或者其他協議與其他客戶機共享。可以很靈活地對各個獨立的檔案系統進行組織,由管理員來決定它們在何處可以以何種方式被訪問。

埠和裝置

兩種作業系統都支援各種物理裝置埠,比如並口、串列埠和 USB 介面。支援各種控制器,比如 IDE 和 SCSI 控制器。Linux 還支援很多“剛剛上市”的標準硬體。

網路

Linux和Windows都支援多種網路協議,比如TCP/IP、NetBIOS和IPX。都支援多種型別的網路介面卡。都具備通過網路共享資源的能力,比如共享檔案和列印。都可以提供網路服務能力,比如 DHCP 和 DNS。

服務

Linux和Windows都提供服務。所謂服務,指的是那些在後臺執行的應用程式,可以為系統和遠端呼叫該服務的計算機提供一些功能。在系統引導的時候可以單獨控制並自動啟動這些程式。(注意:Linux 中沿用了 Unix 的習慣,稱這種應用程式為 daemon)

不同點

Linux 的應用目標是網路而不是列印

Windows最初出現的時候,這個世界還是一個紙張的世界。Windows的偉大成就之一在於您的工作成果可以方便地看到並列印出來。這樣一個開端影響了 Windows 的後期發展。

同樣,Linux 也受到了其起源的影響。Linux 的設計定位於網路作業系統。它的設計靈感來自於 Unix作業系統,因此它的命令的設計比較簡單,或者說是比較簡潔。由於純文字可以非常好地跨網路工作,所以 Linux 配置檔案和資料都以文字為基礎。

對那些熟悉圖形環境的人來說,Linux伺服器初看可能比較原始。但是Linux開發更多關注的是它的內在功能而不是表面上的東西。即使是在純文字的環境中,Linux同樣擁有非常先進的網路、指令碼和安全能力。執行一些任務所需的某些表面上看起來比較奇怪的步驟是令人費解的,除非您認識到 Linux 是期望在網路上與其他 Linux系統協同執行這些任務。Linux的自動執行能力也很強,只需要設計批處理檔案就可以讓系統自動完成非常詳細的任務。Linux 的這種能力來自於其基於文字的本質。

可選的 GUI

Linux有圖形元件。Linux支援高階的圖形介面卡和顯示器,完全勝任圖形相關的工作。許多數字效果藝術家在Linux工作站上來進行他們的設計工作,而以前這些工作需要使用IRIX系統來完成。但是,圖形環境並沒有整合到 Linux 中,而是執行於系統之上的單獨一層。這意味著您可以只執行 GUI,或者在需要時才執行 GUI。如果您的系統主要任務是提供Web應用,那麼您可以停掉圖形介面,而將其所用的記憶體和CPU資源用於您的服務。如果您需要在 GUI 環境下做一些工作,可以再開啟它,工作完成後再將其關閉。

Linux 有圖形化的管理工具,以及日常辦公的工具,比如電子郵件、網路瀏覽器和文件處理工具等。不過,在 Linux 中,圖形化的管理工具通常是控制檯 (命令列) 工具的擴充套件。也就是說,用圖形化工具能完成的所有工作,用控制檯命令同樣可以完成。同樣,使用圖形化工具並不妨礙您對配置檔案進行手工修改。其實際意義可能並不是特別顯而易見,但是,如果在圖形化管理工具中所做的任何工作都可以以命令列的方式完成,這就表示那些工作也可以由一個指令碼來實現。指令碼化的命令可以成為自動執行的任務。Linux 同時支援這兩種方式,並不要求您只用文字或者只用 GUI。您可以根據您的需要選擇最好的方法。

Linux 中的配置檔案是人類可讀的文字檔案,這與過去的 Windows 中的 INI 檔案類似,但與 Windows 的登錄檔機制在思路上有本質的區別。每一個應用程式都有其自己的配置檔案,而且通常不與其他的配置檔案放在一起。不過,大部分的配置檔案都存放於一個目錄樹 (/etc) 下的單個地方,所以看起來它們在邏輯上是在一起。文字檔案的配置方式使得不通過特殊的系統工具就可以完成配置檔案的備份、檢查和編輯工作。

檔名擴充套件

Linux不使用檔名擴充套件來識別檔案的型別。相反,Linux根據檔案的頭內容來識別其型別。為了提高檔案可讀性您仍可以使用檔名擴充套件,但這對 Linux 系統來說沒有任何作用。不過,有一些應用程式,比如 Web 伺服器,可能使用命名約定來識別檔案型別,但這只是特定的應用程式的要求而不是 Linux 系統本身的要求。

Linux通過檔案訪問許可權來判斷檔案是否為可執行檔案。任何一個檔案都可以賦予可執行許可權,這樣程式和指令碼的建立者或管理員可以將它們識別為可執行檔案。這樣做有利於安全。儲存到系統上的可執行的檔案不能自動執行,這樣就可以防止許多指令碼病毒

重新引導是最後的手段

如果您使用Windows已經很長時間了,您可能已經習慣出於各種原因(從軟體安裝到糾正服務故障)而重新引導系統。在Linux思想中您的這一習慣需要改變。Linux在本質上更遵循“牛頓運動定律”。一旦開始執行,它將保持執行狀態,直到受到外來因素的影響,比如硬體的故障。實際上,Linux系統的設計使得應用程式不會導致核心的崩潰,因此不必經常重新引導(與Windows系統的設計相對而言)。所以除了Linux核心之外,其他軟體的安裝、啟動、停止和重新配置都不用重新引導系統。

如果您確實重新引導了 Linux 系統,問題很可能得不到解決,而且還會使問題更加惡化。學習並掌握 Linux 服務和執行級別是成功解決問題的關鍵。學習 Linux 最困難的就是克服重新引導系統的習慣。

另外,您可以遠端地完成Linux中的很多工作。只要有一些基本的網路服務在執行,您就可以進入到那個系統。而且,如果系統中一個特定的服務出現了問題,您可以在進行故障診斷的同時讓其他服務繼續執行。當您在一個系統上同時執行多個服務的時候,這種管理方式非常重要。

命令區分大小寫

所有的 Linux 命令和選項都區分大小寫。例如, -R 與 -r 不同,會去做不同的事情。控制檯命令幾乎都是小寫的。

【參考資料】

1、儲存系統科普——檔案系統介紹 - 玄苦 - 部落格園 https://www.cnblogs.com/xuanku/p/io_fs.html

2、對檔案系統的理解 - 一肩擔風月 - 部落格園 https://www.cnblogs.com/shangye/p/6177993.html

3、Linux檔案系統詳解 - AlanTu - 部落格園 https://www.cnblogs.com/alantu2018/p/8461749.html

4、Linux檔案系統_ https://baike.baidu.com/item/Linux%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/10986747

5、linux檔案系統特點-linux作業系統-麥子學院 http://www.maiziedu.com/wiki/linux/feature/

6、深入理解作業系統原理之檔案系統 -  https://blog.csdn.net/xiaokang123456kao/article/details/74171875

相關文章