Linux 檔案系統管理涉及多層架構,從底層硬體到使用者介面的檔案和目錄。核心以區塊為單位與儲存裝置互動,並透過分割區管理邏輯上分離資料。分割表(MBR 和 GPT)則記錄分割區資訊。Linux 支援多種檔案系統,例如 EXT4、BTRFS、XFS 和 ZFS,各有其特性和適用場景。儲存裝置在 /dev 目錄下以檔案形式呈現,並可透過 /etc/fstab 設定自動掛載。LVM 則提供更彈性的儲存管理方式,允許動態調整邏輯卷大小、跨裝置管理和建立快照。
Linux 儲存管理深度解析
Linux 提供了一套強大的工具集來管理儲存裝置,本文將探討這些命令,並綜述檔案系統如何利用儲存空間。
儲存架構概述
儲存架構可分為多個層級,每個層級都有其特定的功能和作用:
- 第 0 層:基礎設施層 - 這是儲存架構的最底層,包括硬體、虛擬機器、雲端和物聯網等基礎設施。
- 第 1 層:儲存層 - 這層代表實際的儲存裝置,可以是物理的,也可以是虛擬的,例如硬碟、SSD 或 USB 隨身碟。
- 第 2 層:分割區層 - 在這層,儲存裝置被分割成多個分割區,每個分割區可以被檔案系統獨立管理。
- 第 3 層:檔案系統層 - 這層定義瞭如何在分割區上儲存和檢索資料,不同的檔案系統如 EXT4、BTRFS 等提供了不同的功能和特性。
- 第 4 層:檔案和目錄層 - 使用者與檔案系統互動的介面,用於建立、修改和管理檔案及目錄。
區塊儲存
區塊儲存是 Linux 核心用來與儲存裝置互動的基本方式。核心將資料以固定大小的區塊(block)為單位儲存在這些裝置上。無論是傳統的硬碟還是固態硬碟硬碟,核心都將其視為區塊裝置。
分割區管理
當對儲存裝置進行分割時,裝置上的可用空間被劃分成多個較小的單元。例如,一個 1TB 的硬碟可以被劃分為兩個 512GB 的分割區,使其看起來像是兩個獨立的磁碟。這樣可以邏輯上分離資料,例如在第一個分割區安裝作業系統和應用程式,而在第二個分割區儲存使用者資料。
分割表
建立分割區時,需要建立一個分割表,它是一個索引,記錄了分割區內所有資料的儲存位置。目前主要有兩種分割表:MBR(主開機紀錄)和 GPT(GUID 分割表)。
MBR:是一種較舊的分割表格式,最多支援四個主要分割區,單一分割區大小上限為 2TB。雖然它具有與舊系統的相容性,但由於其限制,已逐漸被 GPT 取代。
GPT:是一種較新的分割表標準,克服了 MBR 的限制。它支援更多的分割區和更大的分割區大小,但需要較新的硬體和韌體支援。
檔案系統
一旦儲存裝置被正確地分割,就需要對其進行格式化,以便檔案系統能夠使用。格式化過程準備了分割區,使其能夠儲存資料。Linux 支援多種檔案系統,每種都有其優缺點。
常見的 Linux 檔案系統
BTRFS:是一種較新的檔案系統,使用複製寫入(copy-on-write)技術,提供了諸如快照和卷管理等功能。然而,其成熟度仍是需要考慮的問題。
EXT4:是 EXT 檔案系統的第四個版本,是一種成熟的日誌式檔案系統,具有良好的相容性和穩定性,是目前最常用的 Linux 檔案系統之一。
XFS:是一種高效能的檔案系統,尤其在處理大檔案時表現出色。它支援元資料日誌記錄,並具有良好的擴充套件性。
ZFS:是一種複製寫入檔案系統,具有成熟且強大的卷管理功能,支援資料完整性檢查、大檔案處理和軟體 RAID 等功能。然而,由於授權問題,其在不同發行版中的支援程度不一。
管理儲存裝置
在 Linux 中,所有裝置都被視為檔案。儲存裝置在 /dev 目錄下以檔案形式呈現,其名稱通常以 sd 或 hd 開頭,後面跟隨一個字母來標識不同的裝置。分割區也在同一目錄下以類別似的方式命名,並在裝置名稱後加上數字來表示不同的分割區。
自動掛載與 /etc/fstab
Linux 使用 /etc/fstab 檔案來管理開機時的檔案系統掛載。每個需要開機自動掛載的檔案系統都在此檔案中有一條記錄。該檔案包含了區塊裝置的名稱、掛載點、檔案系統型別等資訊。
# 示例 fstab 專案
UUID=12345678-1234-1234-1234-1234567890ab / ext4 defaults,discard 0 1
內容解密:
UUID=12345678-1234-1234-1234-1234567890ab:指定要掛載的區塊裝置的 UUID。/:指定掛載點為根目錄。ext4:指設定檔案系統型別為 EXT4。defaults,discard:指定掛載選項,defaults表示使用預設選項,discard用於支援 SSD 的 TRIM 功能。0 1:第一個數字表示是否備份該檔案系統(0 表示否),第二個數字表示 fsck 在開機時檢查檔案系統的順序(1 表示優先檢查,通常用於根目錄)。
邏輯捲管理(LVM)與儲存管理實務
邏輯捲管理(Logical Volume Management,LVM)提供了一種抽象化多個實體區塊儲存裝置的方法,使其表現為一個更大的邏輯儲存裝置。透過LVM,可以對這個大型儲存裝置進行分割,建立出多個較小的邏輯捲。LVM還能克服傳統儲存分割槽的限制,例如能夠動態擴充套件LVM捲的大小、跨越多個裝置、建立快照分割槽,以及在不同儲存裝置之間遷移邏輯捲。
LVM基本指令
LVM提供了豐富的指令集來實作其核心功能,以下是一些常用的LVM指令:
- lvchange:變更邏輯捲的屬性。
- lvconvert:轉換邏輯捲的型別,例如從線性轉換為映象或快照。
- lvcreate:在現有的卷組中建立新的邏輯捲。
- lvdisplay:顯示邏輯捲的詳細屬性。
- lvextend:擴充套件邏輯捲的大小。
- lvmchange:變更LVM的屬性。
- lvmconfig:顯示LVM的組態資訊。
- lvmdiskscan:掃描所有對LVM2可見的裝置。
- lvmdump:為診斷目的建立LVM2資訊轉儲。
- lvreduce:縮減邏輯捲的大小。
- lvremove:移除邏輯捲。
- lvrename:重新命名邏輯捲。
- lvresize:調整邏輯捲的大小。
- lvs:報告邏輯捲的資訊。
- lvscan:掃描所有磁碟上的邏輯捲。
準備第二塊硬碟
準備步驟
檢視可用的磁碟:
ls -l /dev/sd*注意:
/dev/sda代表第一個實體磁碟,/dev/sda1代表其第一個分割槽。準備(分割槽和格式化)掛載點:
sudo fdisk /dev/sdb在
fdisk中輸入:n(新建分割槽)、p(主要分割槽)、1(分割槽編號)、兩次Enter(接受預設的起始和結束磁柱)、w(寫入變更)。在新磁碟上建立檔案系統:
sudo /sbin/mkfs.ext4 -L /opt/app_name /dev/sdb1建立掛載點目錄:
sudo mkdir /opt/app_name變更掛載點的許可權:
sudo chmod 755 /opt/app_name將磁碟掛載到掛載點:
sudo mount /dev/sdb1 /opt/app_name取得磁碟的UUID:
sudo blkid備份並更新
/etc/fstab:sudo cp /etc/fstab /etc/fstab.bak sudo nano /etc/fstab在檔案中新增:
UUID="<UUID>" /opt/app_name ext4 defaults 0 2
自動掛載組態
編輯/etc/fstab檔案可實作開機自動掛載。新增相關UUID資訊後,執行:
mount -a
來測試組態是否正確。
建立可開機的USB隨身碟
步驟概述
建立可開機的USB隨身碟可用於在實體電腦上啟動Linux發行版,無需修改電腦原本的系統,或用於修復和診斷系統問題。
準備條件
- 具有root許可權,能夠安裝服務和修改作業系統。
- 一個至少8GB的USB隨身碟(大小取決於所選Linux發行版)。
- 已下載的Linux發行版ISO檔案。
建立流程
- 下載Linux發行版ISO檔案。
- 使用工具(如Rufus、dd命令等)將ISO檔案寫入USB隨身碟,使其成為可開機裝置。
- 設定電腦從USB裝置啟動,並測試是否能夠成功啟動Linux發行版。
注意事項
建立可開機USB隨身碟時,需注意所使用的工具和命令,以免損壞現有的系統或資料。建議在不重要的電腦或虛擬機器上進行測試。
建立可開機的USB隨身碟
下載您想要從中啟動的Linux發行版的USB可開機版本。
USB可開機Linux發行版
- Puppy Linux:一個超小型Linux發行版,具有非常小的儲存和硬體需求。(更多資訊:http://puppylinux.org/)
- Slax:與Puppy Linux類別似,這也是一個超小型Linux發行版,具有非常小的儲存和硬體需求。(更多資訊:https://www.slax.org/)
- Kali Linux:這個版本的Linux是為資料安全專家設計的,包含多個特定於該領域的實用工具。(更多資訊:https://www.kali.org/)
- Knoppix:最早成為流行的Live CD發行版之一。這個發行版包含了超過一千個軟體包。(更多資訊:http://knoppix.net/)
將USB隨身碟插入電腦。
警告
- USB隨身碟上的所有資料將被銷毀。在繼續之前,請備份任何重要資料。
- 若要檢視所有區塊裝置並找到USB裝置的名稱(通常是類別似sdX的形式),請輸入:
sudo lsblk
警告
- 請勿混淆裝置,您可能會銷毀資料。這些名稱在不同發行版版本之間可能會有所不同。如果您不確定自己在做什麼,請在此停止。
將檔案內容複製到您的USB隨身碟(將X替換為來自lsblk的正確字母),請輸入:
sudo dd if=/path/to/file.iso of=/dev/sdX bs=4M status=progress
重新啟動電腦,並檢查是否有選項允許從USB隨身碟啟動。
注意
如果您沒有此選項,請參閱您的電腦製造商手冊或網站,瞭解如何在系統韌體中組態此設定。
有趣且無用的東西(包括:彩蛋)
概述
Linux有多個酷炫的程式和「彩蛋」。對於那些可能不熟悉「彩蛋」這個術語的人來說,它基本上是一個隱藏或不太為人知的功能。
先決條件
本文要求您對系統具有root許可權,以便安裝服務並對作業系統進行更改。
在開始本文之前,請確保您已獲得套件管理器儲存函式庫的最新列表,以便獲得最新版本的程式、服務和函式庫,請輸入:
sudo apt-get update
或
sudo yum update
本文涵蓋了幾個酷炫的程式和技巧。它還提供了對它們的簡要介紹。另請務必檢視這些實用程式的手冊頁,以取得更多資訊和可用的選項。
安裝和使用有趣的工具
termsaver:一個花哨的ASCII螢幕保護程式。包含多個不同的螢幕保護程式,如矩陣、時鐘、星際大戰等。要開始使用此實用程式,請輸入:
termsaver或
termsaver clock若要安裝,請輸入:
sudo apt-get install termsaver模擬忙碌畫面:此命令將在螢幕上生成大量無用的資料,請輸入:
cat /dev/urandom | hexdump -C | grep "ca fe"計算最小公倍數:輸入:
factor 42顯示π到任意小數位:輸入:
pi 500若要安裝,請輸入:
sudo apt-get install pi多語言語音合成器:輸入:
espeak "HelloWorld"若要安裝,請輸入:
sudo apt-get install espeakapt-get的彩蛋:輸入:
sudo apt-get moo為命令輸出新增顏色:輸入:
cal 2020 | lolcat或
cal 2020 | lolcat -a若要安裝,請輸入:
sudo apt-get install lolcatASCII動畫火車:輸入:
sl或
sl -h(帶有客車的火車)。反轉輸出:輸入:
df | rev模擬Matrix效果:輸入:
cmatrix若要安裝,請輸入:
sudo apt-get install cmatrix偽Matrix效果單行命令:輸入:
echo -ne "\e[32m" ; while true ; do echo -ne "\e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done讓系統輸出有顏色和侮辱性評論:編輯
sudo visudo,在Defaults行的末尾新增一行Defaults insults,然後儲存。占卜運勢:輸入:
fortune若要安裝,請輸入:
sudo apt-get install fortune fortune | cowsay -f daemon fortune -sca | cowsay -dW 45 curl parrot.live telnet towel.blinkenlights.nl xeyes rig bb aafire echo "simulate on-screen typing like the movies" | pv -qL 10 calendar -f /usr/share/calendar/calendar.lotr -A 365
內容解密:
termsaver:一個有趣的命令列螢幕保護工具,提供多種動畫效果。cat /dev/urandom | hexdump -C | grep "ca fe":透過將/dev/urandom的輸出導向hexdump,並過濾出包含“ca fe”的行,來模擬忙碌的畫面。factor 42:用於計算數字42的質因數。pi 500:顯示π的值到小數點後500位。espeak "HelloWorld":使用語音合成器讀出“HelloWorld”。apt-get moo:apt-get套件管理器的隱藏彩蛋,會顯示一隻牛。cal 2020 | lolcat:使用lolcat為日曆輸出新增顏色。sl:在終端機中顯示一輛動態的ASCII火車。df | rev:反轉df命令的輸出,使其從右到左顯示。cmatrix:模擬電影《駭客任務》中的Matrix效果。echo -ne "\e[32m" ; while true ; do echo -ne "\e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done:一個單行命令,用於建立一個偽Matrix效果。sudo visudo並新增Defaults insults:組態sudo,使其在密碼錯誤時顯示侮辱性評論。fortune:顯示一則隨機的名言或預言。fortune | cowsay -f daemon:讓一隻ASCII藝術牛說出一則名言,使用特定的角色形象。curl parrot.live:觀看一個動態的ASCII藝術鸚鵡頭。telnet towel.blinkenlights.nl:透過Telnet觀看ASCII藝術版的《星球大戰》電影。xeyes:在桌面上顯示一對跟隨滑鼠指標的眼珠。rig:生成一個隨機的身分資訊。bb:一個高品質的視聽演示程式,在終端機中執行。aafire:在終端機中顯示一個燃燒的ASCII藝術火焰動畫。echo "simulate on-screen typing like the movies" | pv -qL 10:模擬電影中打字效果,逐字顯示文字。calendar -f /usr/share/calendar/calendar.lotr -A 365:顯示《魔戒》日曆中的重要日期,以及未來365天的日期。