這篇文章主要講解了“Linux的內(nèi)核和文件權(quán)限介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux的內(nèi)核和文件權(quán)限介紹”吧! 這篇文章主要講解了“Linux的內(nèi)核和文件權(quán)限介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux的內(nèi)核和文件權(quán)限介紹”吧!
蓬安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
什么是 Linux ?
如果你以前從未接觸過(guò)Linux,可能就不清楚為什么會(huì)有這么多不同的Linux發(fā)行版。在查看Linux軟件包時(shí),你肯定被發(fā)行版、LiveCD和GNU之類的術(shù)語(yǔ)搞暈過(guò)。初次進(jìn)入Linux世界會(huì)讓人覺(jué)得不那么得心應(yīng)手。在開(kāi)始學(xué)習(xí)命令和腳本之前,本章將為你稍稍揭開(kāi)Linux系統(tǒng)的神秘面紗。首先,Linux可劃分為以下四部分:
? Linux內(nèi)核
? GNU工具鏈
? GUI桌面環(huán)境
? 應(yīng)用軟件 ...|--------------------------| | APPS | 應(yīng)用軟件 |--------------------------| | | GUI桌面環(huán)境 | GUI |-------------| | | GNU | GNU工具鏈 |--------------------------| | kernel | Linux內(nèi)核 |--------------------------| | hardware | 計(jì)算機(jī)硬件 ----------------------------
一. Linux 內(nèi)核
Linux系統(tǒng)的核心是內(nèi)核。內(nèi)核控制著計(jì)算機(jī)系統(tǒng)上的所有硬件和軟件,在必要時(shí)分配硬件,并根據(jù)需要執(zhí)行軟件。
系統(tǒng)內(nèi)存管理
應(yīng)用程序管理
硬件設(shè)備管理
文件系統(tǒng)管理
1. 系統(tǒng)內(nèi)存管理
操作系統(tǒng)內(nèi)核的主要功能之一就是內(nèi)存管理。內(nèi)核不僅管理上的可用物理內(nèi)存,還可以創(chuàng)建和管理虛擬內(nèi)存(即實(shí)際并不存在的內(nèi)存)
內(nèi)核通過(guò)硬盤上的存儲(chǔ)空間來(lái)實(shí)現(xiàn)虛擬內(nèi)存,這塊區(qū)域稱為交換空間(swap space)。內(nèi)核不斷地在交換空間和實(shí)際的物理內(nèi)存之間反復(fù)交換虛擬內(nèi)存中的內(nèi)容。這使得系統(tǒng)以為它擁有比物理內(nèi)存更多的可用內(nèi)存
Linux系統(tǒng)內(nèi)存映射|---------| ----------- | | | 物理內(nèi)存 | | | /---------- | | --------- | 虛擬內(nèi)存 | —— | 內(nèi)核 | | | --------- | | \---------- | | | 交換空間 | |---------| -----------
2. 應(yīng)用程序管理
Linux操作系統(tǒng)將運(yùn)行中的程序稱為進(jìn)程。進(jìn)程可以在前臺(tái)運(yùn)行,將輸出顯示在屏幕上,也可以在后臺(tái)運(yùn)行,隱藏到幕后。內(nèi)核控制著Linux系統(tǒng)如何管理運(yùn)行在系統(tǒng)上的所有進(jìn)程。
內(nèi)核創(chuàng)建了***個(gè)進(jìn)程(稱為init進(jìn)程)來(lái)啟動(dòng)系統(tǒng)上所有其他進(jìn)程。當(dāng)內(nèi)核啟動(dòng)時(shí),它會(huì)將init進(jìn)程加載到虛擬內(nèi)存中。內(nèi)核在啟動(dòng)任何其他進(jìn)程時(shí),都會(huì)在虛擬內(nèi)存中給新進(jìn)程分配一塊專有區(qū)域來(lái)存儲(chǔ)該進(jìn)程用到的數(shù)據(jù)和代碼。
Linux操作系統(tǒng)有5個(gè)啟動(dòng)運(yùn)行級(jí)
運(yùn)行級(jí)為1時(shí),只啟動(dòng)基本的系統(tǒng)進(jìn)程以及一個(gè)控制臺(tái)終端進(jìn)程。我們稱之為單用戶模式。單用戶模式通常用來(lái)在系統(tǒng)有問(wèn)題時(shí)進(jìn)行緊急的文件系統(tǒng)維護(hù)。顯然,在這種模式下,僅有一個(gè)人(通常是系統(tǒng)管理員)能登錄到系統(tǒng)上操作數(shù)據(jù)。
標(biāo)準(zhǔn)的啟動(dòng)運(yùn)行級(jí)是3。在這個(gè)運(yùn)行級(jí)上,大多數(shù)應(yīng)用軟件,比如網(wǎng)絡(luò)支持程序,都會(huì)啟動(dòng)。
Linux中常見(jiàn)的運(yùn)行級(jí)是5。在這個(gè)運(yùn)行級(jí)上系統(tǒng)會(huì)啟動(dòng)圖形化的X Window系統(tǒng),允許用戶通過(guò)圖形化桌面窗口登錄系統(tǒng)。
3. 硬件設(shè)備管理
內(nèi)核的另一職責(zé)是管理硬件設(shè)備。任何Linux系統(tǒng)需要與之通信的設(shè)備,都需要在內(nèi)核代碼中加入其驅(qū)動(dòng)程序代碼。驅(qū)動(dòng)程序代碼相當(dāng)于應(yīng)用程序和硬件設(shè)備的中間人,允許內(nèi)核與設(shè)備之間交換數(shù)據(jù)。在Linux內(nèi)核中有兩種方法用于插入設(shè)備驅(qū)動(dòng)代碼:
編譯進(jìn)內(nèi)核的設(shè)備驅(qū)動(dòng)代碼
可插入內(nèi)核的設(shè)備驅(qū)動(dòng)模塊
以前,插入設(shè)備驅(qū)動(dòng)代碼的唯一途徑是重新編譯內(nèi)核。每次給系統(tǒng)添加新設(shè)備,都要重新編譯一遍內(nèi)核代碼。隨著Linux內(nèi)核支持的硬件設(shè)備越來(lái)越多,這個(gè)過(guò)程變得越來(lái)越低效。不過(guò)好在Linux開(kāi)發(fā)人員設(shè)計(jì)出了一種更好的將驅(qū)動(dòng)代碼插入運(yùn)行中的內(nèi)核的方法。
開(kāi)發(fā)人員提出了內(nèi)核模塊的概念。它允許將驅(qū)動(dòng)代碼插入到運(yùn)行中的內(nèi)核而無(wú)需重新編譯內(nèi)核。同時(shí),當(dāng)設(shè)備不再使用時(shí)也可將內(nèi)核模塊從內(nèi)核中移走。這種方式極大地簡(jiǎn)化和擴(kuò)展了硬件設(shè)備在Linux上的使用。
Linux系統(tǒng)將硬件設(shè)備當(dāng)成特殊的文件,稱為設(shè)備文件。設(shè)備文件有3種分類:
字符型設(shè)備文件
字符型設(shè)備文件是指處理數(shù)據(jù)時(shí)每次只能處理一個(gè)字符的設(shè)備。大多數(shù)類型的調(diào)制解調(diào)器和終端都是作為字符型設(shè)備文件創(chuàng)建的。
塊設(shè)備文件
塊設(shè)備文件是指處理數(shù)據(jù)時(shí)每次能處理大塊數(shù)據(jù)的設(shè)備,比如硬盤。
網(wǎng)絡(luò)設(shè)備文件
網(wǎng)絡(luò)設(shè)備文件是指采用數(shù)據(jù)包發(fā)送和接收數(shù)據(jù)的設(shè)備,包括各種網(wǎng)卡和一個(gè)特殊的回環(huán)設(shè)備。這個(gè)回環(huán)設(shè)備允許Linux系統(tǒng)使用常見(jiàn)的網(wǎng)絡(luò)編程協(xié)議同自身通信。
Linux為系統(tǒng)上的每個(gè)設(shè)備都創(chuàng)建一種稱為節(jié)點(diǎn)的特殊文件。與設(shè)備的所有通信都通過(guò)設(shè)備節(jié)點(diǎn)完成。每個(gè)節(jié)點(diǎn)都有唯一的數(shù)值對(duì)供Linux內(nèi)核標(biāo)識(shí)它。數(shù)值對(duì)包括一個(gè)主設(shè)備號(hào)和一個(gè)次設(shè)備號(hào)。類的設(shè)備被劃分到同樣的主設(shè)備號(hào)下。次設(shè)備號(hào)用于標(biāo)識(shí)主設(shè)備組下的某個(gè)特定設(shè)備。
4. 文件系統(tǒng)管理
不同于其他一些操作系統(tǒng),Linux內(nèi)核支持通過(guò)不同類型的文件系統(tǒng)從硬盤中讀寫數(shù)據(jù)。除
了自有的諸多文件系統(tǒng)外,Linux還支持從其他操作系統(tǒng)(比如Microsoft Windows)采用的文件
系統(tǒng)中讀寫數(shù)據(jù)。內(nèi)核必須在編譯時(shí)就加入對(duì)所有可能用到的文件系統(tǒng)的支持。表1-1列出了
Linux系統(tǒng)用來(lái)讀寫數(shù)據(jù)的標(biāo)準(zhǔn)文件系統(tǒng)。ext | Linux擴(kuò)展文件系統(tǒng),最早的Linux文件系統(tǒng) ext2 | 第二擴(kuò)展文件系統(tǒng),在ext的基礎(chǔ)上提供了更多的功能 ext3 | 第三擴(kuò)展文件系統(tǒng),支持日志功能 ext4 | 第四擴(kuò)展文件系統(tǒng),支持高級(jí)日志功能 hpfs | OS/2高性能文件系統(tǒng) jfs | IBM日志文件系統(tǒng) iso9660 | ISO 9660文件系統(tǒng)(CD-ROM) minix | MINIX文件系統(tǒng) msdos | 微軟的FAT16 ncp | Netware文件系統(tǒng) nfs | 網(wǎng)絡(luò)文件系統(tǒng) ntfs | 支持Microsoft NT文件系統(tǒng) proc | 訪問(wèn)系統(tǒng)信息 ReiserFS | 高級(jí)Linux文件系統(tǒng),能提供更好的性能和硬盤恢復(fù)功能 smb | 支持網(wǎng)絡(luò)訪問(wèn)的Samba SMB文件系統(tǒng) sysv | 較早期的Unix文件系統(tǒng) ufs | BSD文件系統(tǒng) umsdos | 建立在msdos上的類Unix文件系統(tǒng) vfat | Windows 95文件系統(tǒng)(FAT32) XFS | 高性能64位日志文件系統(tǒng)
Linux服務(wù)器所訪問(wèn)的所有硬盤都必須格式化成表1-1所列文件系統(tǒng)類型中的一種。
Linux內(nèi)核采用虛擬文件系統(tǒng)(Virtual File System,VFS)作為和每個(gè)文件系統(tǒng)交互的接口。這為L(zhǎng)inux內(nèi)核同任何類型文件系統(tǒng)通信提供了一個(gè)標(biāo)準(zhǔn)接口。當(dāng)每個(gè)文件系統(tǒng)都被掛載和使用時(shí),VFS將信息都緩存在內(nèi)存中。
2. GNU工具鏈
GNU組織(GNU是GNU’s Not Unix的縮寫)開(kāi)發(fā)了一套完整的Unix工具,但沒(méi)有可以運(yùn)行它們的內(nèi)核系統(tǒng)。這些工具是在名為開(kāi)源軟件(open source software,OSS)的軟件理念下開(kāi)發(fā)的。
開(kāi)源軟件理念允許程序員開(kāi)發(fā)軟件,并將其免費(fèi)發(fā)布。任何人都可以使用、修改該軟件,或?qū)⒃撥浖蛇M(jìn)自己的系統(tǒng),無(wú)需支付任何授權(quán)費(fèi)用。將Linus的Linux內(nèi)核和GNU操作系統(tǒng)工具整合起來(lái),就產(chǎn)生了一款完整的、功能豐富的免費(fèi)操作系統(tǒng)。
盡管通常將Linux內(nèi)核和GNU工具的結(jié)合體稱為L(zhǎng)inux, 但你也會(huì)在互聯(lián)網(wǎng)上看到一些Linux純粹主義者將其稱為GNU/Linux系統(tǒng),藉此向GNU組織所作的貢獻(xiàn)致意
核心GNU工具
GNU coreutils軟件包由三部分構(gòu)成:
用以處理文件的工具
用以操作文本的工具
用以管理進(jìn)程的工具
Shell
GNU/Linux shell是一種特殊的交互式工具。它為用戶提供了啟動(dòng)程序、管理文件系統(tǒng)中的文件以及運(yùn)行在Linux系統(tǒng)上的進(jìn)程的途徑。 shell的核心是命令行提示符。命令行提示符是shell負(fù)責(zé)交互的部分。它允許你輸入文本命令,然后解釋命令,并在內(nèi)核中執(zhí)行。
我們?cè)诿钚兄休斎氲拿疃际荊NU工具鏈提供,而非Linux內(nèi)核
所有Linux發(fā)行版默認(rèn)的shell都是bash shell。bash shell由GNU項(xiàng)目開(kāi)發(fā),被當(dāng)作標(biāo)準(zhǔn)Unix shell——Bourne shell(以創(chuàng)建者的名字命名)的替代品。
Linux中常見(jiàn)的幾種不同 shell
bash | 由GNU項(xiàng)目開(kāi)發(fā),被當(dāng)作標(biāo)準(zhǔn)shellash | 運(yùn)行在內(nèi)存受限環(huán)境中簡(jiǎn)單的輕量級(jí)shell,但與bash shell完全兼容korn | 與Bourne shell兼容的編程shell,但支持如關(guān)聯(lián)數(shù)組和浮點(diǎn)運(yùn)算等一些高級(jí)的編程特性tcsh | 將C語(yǔ)言中的一些元素引入到shell腳本中的shellzsh | 結(jié)合了bash、tcsh和korn的特性,同時(shí)提供高級(jí)編程特性、共享歷史文件和主題化提示符的高級(jí)shell
3. Linux 桌面環(huán)境
在Linux的早期(20世紀(jì)90年代初期),能用的只有一個(gè)簡(jiǎn)單的Linux操作系統(tǒng)文本界面。這個(gè)文本界面允許系統(tǒng)管理員運(yùn)行程序,控制程序的執(zhí)行,以及在系統(tǒng)中移動(dòng)文件。
隨著Microsoft Windows的普及,電腦用戶已經(jīng)不再滿足于對(duì)著老式的文本界面工作了。這推動(dòng)了OSS社區(qū)的更多開(kāi)發(fā)活動(dòng),Linux圖形化桌面環(huán)境應(yīng)運(yùn)而生。
X Window系統(tǒng)
有兩個(gè)基本要素決定了視頻環(huán)境:顯卡和顯示器。要在電腦上顯示絢麗的畫面,Linux軟件就得知道如何與這兩者互通。X Window系統(tǒng)是圖形顯示的核心部分。
X Window系統(tǒng),是直接和PC上的顯卡及顯示器打交道的底層程序。它控制著Linux程序如何在電腦上顯示出漂亮的窗口和圖形
現(xiàn)在流行的桌面環(huán)境有 Unity GNOME Cinnamon Xfce 等
Linux 發(fā)行版
已經(jīng)了解了構(gòu)成完整Linux系統(tǒng)所需要的4個(gè)關(guān)鍵部件,那你可能在考慮要怎樣才能把它們組成一個(gè)Linux系統(tǒng)。幸運(yùn)的是,已經(jīng)有人為你做好這些了
核心 Linux 發(fā)行版
核心Linux發(fā)行版含有內(nèi)核、一個(gè)或多個(gè)圖形化桌面環(huán)境以及預(yù)編譯好的幾乎所有能見(jiàn)到的Linux應(yīng)用。它提供了一站式的完整Linux安裝Slackware | 最早的Linux發(fā)行版中的一員,在Linux極客中比較流行 Redhat | 主要用于Internet服務(wù)器的商業(yè)發(fā)行版 Gentoo | 為高級(jí)Linux用戶設(shè)計(jì)的發(fā)行版,僅包含Linux源代碼 openSUSE | 用于商用和家用的發(fā)行版 Debian | 在Linux專家和商用Linux產(chǎn)品中流行的發(fā)行版
系統(tǒng)目錄|—— bin # 二進(jìn)制目錄,存放用戶級(jí)的GNU工具(bash命令) |—— boot # 啟動(dòng)目錄,存放用于系統(tǒng)引導(dǎo)時(shí)使用的各種文件 |—— dev # 設(shè)備目錄,存放硬件設(shè)備,創(chuàng)建設(shè)備節(jié)點(diǎn) |—— etc # 系統(tǒng)配置文件目錄,存放系統(tǒng)管理和配置文件 |—— home # 普通用戶的主目錄 |—— lib # 庫(kù)目錄,存放系統(tǒng)和應(yīng)用程序的動(dòng)態(tài)鏈接庫(kù) |—— lost+found # 這個(gè)目錄平時(shí)是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無(wú)家可歸”的文件 |—— media # 媒體目錄,可移動(dòng)媒體設(shè)備的常用掛載點(diǎn) |—— mnt # 掛載目錄,另一個(gè)可移動(dòng)媒體設(shè)備的常用掛載點(diǎn) |—— opt # 可選目錄,常用于存放第三方軟件包和數(shù)據(jù)文件 |—— proc # 進(jìn)程目錄,存放現(xiàn)有硬件及當(dāng)前進(jìn)程的相關(guān)信息,是系統(tǒng)內(nèi)存的映射??芍苯釉L問(wèn)這個(gè)目錄來(lái)獲取系統(tǒng)信息 |—— root # 超級(jí)用戶的主目錄 |—— run # 運(yùn)行目錄,存放系統(tǒng)運(yùn)作時(shí)的運(yùn)行時(shí)數(shù)據(jù) |—— sbin # 系統(tǒng)二進(jìn)制目錄,存放許多GNU管理員級(jí)工具 |—— srv # 服務(wù)目錄,存放本地服務(wù)的相關(guān)文件 |—— sys # 系統(tǒng)目錄,存放系統(tǒng)硬件信息的相關(guān)文件 |—— tmp # 臨時(shí)目錄,可以在該目錄中創(chuàng)建和刪除臨時(shí)工作文件,重啟后清空 |—— usr # 用戶二進(jìn)制目錄,大量用戶級(jí)的GNU工具和數(shù)據(jù)文件都存儲(chǔ)在這里 | |—— bin # 包含系統(tǒng)安裝的可執(zhí)行程序。通常,這個(gè)目錄會(huì)包含許多程序 | |—— games # | |—— include # 寫程序需要使用到的一些頭文件 | |—— lib # 包含由/usr/bin 目錄中的程序所用的共享庫(kù) | |—— local # 是非系統(tǒng)發(fā)行版自帶,卻打算讓系統(tǒng)使用的程序的安裝目錄。 通常,由源碼編譯的程序會(huì)安裝在/usr/local/bin 目錄下 | |—— sbin # 包含許多系統(tǒng)管理程序 | |—— share # 存放幫助文檔和共享文件 | |—— src # |—— var # 可變目錄,用以存放經(jīng)常變化的文件,比如日志文件
文件權(quán)限-權(quán)限符
命令行執(zhí)行: ls -ldrwxr-xr-x # 文件類型 屬主權(quán)限 成員權(quán)限 其他用戶權(quán)限 d rwx r-x r-x |—— 文件類型 | |—— - # 文件 | |—— d # 文件夾 | |—— l # 鏈接 | |—— c # 字符型設(shè)備 | |—— b # 塊設(shè)備 | |—— n # 網(wǎng)絡(luò)設(shè)備 | |—— r # 可讀權(quán)限 |—— w # 可寫權(quán)限 |—— x # 可執(zhí)行權(quán)限
文件系統(tǒng)
ext
Linux操作系統(tǒng)中引入的最早的文件系統(tǒng)叫作擴(kuò)展文件系統(tǒng) (extended filesystem,簡(jiǎn)記為ext)。它為L(zhǎng)inux提供了一個(gè)基本的類Unix文件系統(tǒng):使用虛擬目錄來(lái)操作硬件設(shè)備,在物理設(shè)備上按定長(zhǎng)的塊來(lái)存儲(chǔ)數(shù)據(jù)。
ext文件系統(tǒng)采用名為索引節(jié)點(diǎn)的系統(tǒng)來(lái)存放虛擬目錄中所存儲(chǔ)文件的信息。索引節(jié)點(diǎn)系統(tǒng)在每個(gè)物理設(shè)備中創(chuàng)建一個(gè)單獨(dú)的表(稱為索引節(jié)點(diǎn)表)來(lái)存儲(chǔ)這些文件的信息。存儲(chǔ)在虛擬目錄中的每一個(gè)文件在索引節(jié)點(diǎn)表中都有一個(gè)條目。ext文件系統(tǒng)名稱中的extended部分來(lái)自其跟蹤的每個(gè)文件的額外數(shù)據(jù)- 文件名 - 文件大小 - 文件的屬主 - 文件的屬組 - 文件的訪問(wèn)權(quán)限 - 指向存有文件數(shù)據(jù)的每個(gè)硬盤塊的指針
Linux通過(guò)唯一的數(shù)值(稱作索引節(jié)點(diǎn)號(hào))來(lái)引用索引節(jié)點(diǎn)表中的每個(gè)索引節(jié)點(diǎn),這個(gè)值是創(chuàng)建文件時(shí)由文件系統(tǒng)分配的。文件系統(tǒng)通過(guò)索引節(jié)點(diǎn)號(hào)而不是文件全名及路徑來(lái)標(biāo)識(shí)文件。
ext2
最早的ext文件系統(tǒng)有不少限制,比如文件大小不得超過(guò)2 GB。在Linux出現(xiàn)后不久,ext文件系統(tǒng)就升級(jí)到了第二代擴(kuò)展文件系統(tǒng),叫作ext2
日志文件系統(tǒng)
日志文件系統(tǒng)為L(zhǎng)inux系統(tǒng)增加了一層安全性。它不再使用之前先將數(shù)據(jù)直接寫入存儲(chǔ)設(shè)備再更新索引節(jié)點(diǎn)表的做法,而是先將文件的更改寫入到臨時(shí)文件(稱作日志,journal)中
在數(shù)據(jù)成功寫到存儲(chǔ)設(shè)備和索引節(jié)點(diǎn)表之后,再刪除對(duì)應(yīng)的日志條目。如果系統(tǒng)在數(shù)據(jù)被寫入存儲(chǔ)設(shè)備之前崩潰或斷電了,日志文件系統(tǒng)下次會(huì)讀取日志文件并處理上次留下的未寫入的數(shù)據(jù)
ext3
2001年,ext3文件系統(tǒng)被引入Linux內(nèi)核中,直到最近都是幾乎所有Linux發(fā)行版默認(rèn)的文件系統(tǒng)。它采用和ext2文件系統(tǒng)相同的索引節(jié)點(diǎn)表結(jié)構(gòu),但給每個(gè)存儲(chǔ)設(shè)備增加了一個(gè)日志文件,以將準(zhǔn)備寫入存儲(chǔ)設(shè)備的數(shù)據(jù)先記入日志。
ext4
ext4文件系統(tǒng)在 2008 年受到Linux內(nèi)核官方支持,現(xiàn)在已是大多數(shù)流行的Linux發(fā)行版采用的默認(rèn)文件系統(tǒng)
除了支持?jǐn)?shù)據(jù)壓縮和加密,ext4文件系統(tǒng)還支持一個(gè)稱作區(qū)段(extent)的特性。區(qū)段在存儲(chǔ)設(shè)備上按塊分配空間,但在索引節(jié)點(diǎn)表中只保存起始?jí)K的位置。由于無(wú)需列出所有用來(lái)存儲(chǔ)文件中數(shù)據(jù)的數(shù)據(jù)塊,它可以在索引節(jié)點(diǎn)表中節(jié)省一些空間。
ext4還引入了塊預(yù)分配技術(shù)(block preallocation)。如果你想在存儲(chǔ)設(shè)備上給一個(gè)你知道要變大的文件預(yù)留空間,ext4文件系統(tǒng)可以為文件分配所有需要用到的塊,而不僅僅是那些現(xiàn)在已經(jīng)用到的塊。ext4文件系統(tǒng)用 0 填滿預(yù)留的數(shù)據(jù)塊,不會(huì)將它們分配給其他文件
Linux 中的 LVM
Linux LVM是由Heinz Mauelshagen開(kāi)發(fā)的,于1998年發(fā)布到了Linux社區(qū)。它允許你在Linux上用簡(jiǎn)單的命令行命令管理一個(gè)完整的邏輯卷管理環(huán)境
LVM1
最初的LVM包于1998年發(fā)布,只能用于Linux內(nèi)核2.4版本。它僅提供了基本的邏
LVM2
LVM的更新版本,可用于Linux內(nèi)核2.6版本。它在標(biāo)準(zhǔn)的LVM1功能外提供了額外的功能。
快照
最初的Linux LVM允許你在邏輯卷在線的狀態(tài)下將其復(fù)制到另一個(gè)設(shè)備。這個(gè)功能叫作快照。在備份由于高可靠性需求而無(wú)法鎖定的重要數(shù)據(jù)時(shí),快照功能非常給力。傳統(tǒng)的備份方法在將文件復(fù)制到備份媒體上時(shí)通常要將文件鎖定。快照允許你在復(fù)制的同時(shí),保證運(yùn)行關(guān)鍵任務(wù)的Web服務(wù)器或數(shù)據(jù)庫(kù)服務(wù)器繼續(xù)工作。遺憾的是,LVM1只允許你創(chuàng)建只讀快照。一旦創(chuàng)建了快照,就不能再寫入東西了
LVM2允許你創(chuàng)建在線邏輯卷的可讀寫快照。有了可讀寫的快照,就可以刪除原先的邏輯卷,然后將快照作為替代掛載上。這個(gè)功能對(duì)快速故障轉(zhuǎn)移或涉及修改數(shù)據(jù)的程序試驗(yàn)(如果失敗,需要恢復(fù)修改過(guò)的數(shù)據(jù))非常有用。
條帶化
LVM2提供的另一個(gè)引人注目的功能是條帶化(striping)。有了條帶化,可跨多個(gè)物理硬盤創(chuàng)建邏輯卷。當(dāng)Linux LVM將文件寫入邏輯卷時(shí),文件中的數(shù)據(jù)塊會(huì)被分散到多個(gè)硬盤上。每個(gè)后繼數(shù)據(jù)塊會(huì)被寫到下一個(gè)硬盤上。條帶化有助于提高硬盤的性能,因?yàn)長(zhǎng)inux可以將一個(gè)文件的多個(gè)數(shù)據(jù)塊同時(shí)寫入多個(gè)硬盤,而無(wú)需等待單個(gè)硬盤移動(dòng)讀寫磁頭到多個(gè)不同位置。這個(gè)改進(jìn)同樣適用于讀取順序訪問(wèn)的文件,因?yàn)長(zhǎng)VM可同時(shí)從多個(gè)硬盤讀取數(shù)據(jù)。
鏡像
通過(guò)LVM安裝文件系統(tǒng)并不意味著文件系統(tǒng)就不會(huì)再出問(wèn)題。和物理分區(qū)一樣,LVM邏輯卷也容易受到斷電和磁盤故障的影響。一旦文件系統(tǒng)損壞,就有可能再也無(wú)法恢復(fù)。
LVM快照功能提供了一些安慰,你可以隨時(shí)創(chuàng)建邏輯卷的備份副本,但對(duì)有些環(huán)境來(lái)說(shuō)可能還不夠。對(duì)于涉及大量數(shù)據(jù)變動(dòng)的系統(tǒng),比如數(shù)據(jù)庫(kù)服務(wù)器,自上次快照之后可能要存儲(chǔ)成百上千條記錄。
這個(gè)問(wèn)題的一個(gè)解決辦法就是LVM鏡像。鏡像是一個(gè)實(shí)時(shí)更新的邏輯卷的完整副本。當(dāng)你創(chuàng)建鏡像邏輯卷時(shí),LVM會(huì)將原始邏輯卷同步到鏡像副本中。根據(jù)原始邏輯卷的大小,這可能需要一些時(shí)間才能完成。
一旦原始同步完成,LVM會(huì)為文件系統(tǒng)的每次寫操作執(zhí)行兩次寫入——一次寫入到主邏輯卷,一次寫入到鏡像副本??梢韵氲?這個(gè)過(guò)程會(huì)降低系統(tǒng)的寫入性能。就算原始邏輯卷因?yàn)槟承┰驌p壞了,你手頭也已經(jīng)有了一個(gè)完整的***副本!