返回文章列表

Linux 儲存管理與實務操作

本文探討 Linux 儲存管理,涵蓋儲存架構、區塊儲存、分割表、檔案系統型別比較(BTRFS、EXT4、XFS、ZFS)以及 LVM 指令操作。此外,文章也提供實務教學,包含準備第二塊硬碟、自動掛載組態、建立可開機 USB 隨身碟等,並額外介紹 Linux 系統中一些有趣的小工具和彩蛋。

Linux 系統管理

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 目錄下以檔案形式呈現,其名稱通常以 sdhd 開頭,後面跟隨一個字母來標識不同的裝置。分割區也在同一目錄下以類別似的方式命名,並在裝置名稱後加上數字來表示不同的分割區。

自動掛載與 /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:掃描所有磁碟上的邏輯捲。

準備第二塊硬碟

準備步驟

  1. 檢視可用的磁碟

    ls -l /dev/sd*
    

    注意:/dev/sda代表第一個實體磁碟,/dev/sda1代表其第一個分割槽。

  2. 準備(分割槽和格式化)掛載點

    sudo fdisk /dev/sdb
    

    fdisk中輸入:n(新建分割槽)、p(主要分割槽)、1(分割槽編號)、兩次Enter(接受預設的起始和結束磁柱)、w(寫入變更)。

  3. 在新磁碟上建立檔案系統

    sudo /sbin/mkfs.ext4 -L /opt/app_name /dev/sdb1
    
  4. 建立掛載點目錄

    sudo mkdir /opt/app_name
    
  5. 變更掛載點的許可權

    sudo chmod 755 /opt/app_name
    
  6. 將磁碟掛載到掛載點

    sudo mount /dev/sdb1 /opt/app_name
    
  7. 取得磁碟的UUID

    sudo blkid
    
  8. 備份並更新/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發行版,無需修改電腦原本的系統,或用於修復和診斷系統問題。

準備條件

  1. 具有root許可權,能夠安裝服務和修改作業系統。
  2. 一個至少8GB的USB隨身碟(大小取決於所選Linux發行版)。
  3. 已下載的Linux發行版ISO檔案。

建立流程

  1. 下載Linux發行版ISO檔案
  2. 使用工具(如Rufus、dd命令等)將ISO檔案寫入USB隨身碟,使其成為可開機裝置。
  3. 設定電腦從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

本文涵蓋了幾個酷炫的程式和技巧。它還提供了對它們的簡要介紹。另請務必檢視這些實用程式的手冊頁,以取得更多資訊和可用的選項。

安裝和使用有趣的工具

  1. termsaver:一個花哨的ASCII螢幕保護程式。包含多個不同的螢幕保護程式,如矩陣、時鐘、星際大戰等。要開始使用此實用程式,請輸入:

    termsaver
    

    termsaver clock
    

    若要安裝,請輸入:

    sudo apt-get install termsaver
    
  2. 模擬忙碌畫面:此命令將在螢幕上生成大量無用的資料,請輸入:

    cat /dev/urandom | hexdump -C | grep "ca fe"
    
  3. 計算最小公倍數:輸入:

    factor 42
    
  4. 顯示π到任意小數位:輸入:

    pi 500
    

    若要安裝,請輸入:

    sudo apt-get install pi
    
  5. 多語言語音合成器:輸入:

    espeak "HelloWorld"
    

    若要安裝,請輸入:

    sudo apt-get install espeak
    
  6. apt-get的彩蛋:輸入:

    sudo apt-get moo
    
  7. 為命令輸出新增顏色:輸入:

    cal 2020 | lolcat
    

    cal 2020 | lolcat -a
    

    若要安裝,請輸入:

    sudo apt-get install lolcat
    
  8. ASCII動畫火車:輸入:

    sl
    

    sl -h(帶有客車的火車)。

  9. 反轉輸出:輸入:

    df | rev
    
  10. 模擬Matrix效果:輸入:

    cmatrix
    

    若要安裝,請輸入:

    sudo apt-get install cmatrix
    
  11. 偽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
    
  12. 讓系統輸出有顏色和侮辱性評論:編輯sudo visudo,在Defaults行的末尾新增一行Defaults insults,然後儲存。

  13. 占卜運勢:輸入:

    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
    

內容解密:

  1. termsaver:一個有趣的命令列螢幕保護工具,提供多種動畫效果。
  2. cat /dev/urandom | hexdump -C | grep "ca fe":透過將/dev/urandom的輸出導向hexdump,並過濾出包含“ca fe”的行,來模擬忙碌的畫面。
  3. factor 42:用於計算數字42的質因數。
  4. pi 500:顯示π的值到小數點後500位。
  5. espeak "HelloWorld":使用語音合成器讀出“HelloWorld”。
  6. apt-get mooapt-get套件管理器的隱藏彩蛋,會顯示一隻牛。
  7. cal 2020 | lolcat:使用lolcat為日曆輸出新增顏色。
  8. sl:在終端機中顯示一輛動態的ASCII火車。
  9. df | rev:反轉df命令的輸出,使其從右到左顯示。
  10. cmatrix:模擬電影《駭客任務》中的Matrix效果。
  11. 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效果。
  12. sudo visudo並新增Defaults insults:組態sudo,使其在密碼錯誤時顯示侮辱性評論。
  13. fortune:顯示一則隨機的名言或預言。
  14. fortune | cowsay -f daemon:讓一隻ASCII藝術牛說出一則名言,使用特定的角色形象。
  15. curl parrot.live:觀看一個動態的ASCII藝術鸚鵡頭。
  16. telnet towel.blinkenlights.nl:透過Telnet觀看ASCII藝術版的《星球大戰》電影。
  17. xeyes:在桌面上顯示一對跟隨滑鼠指標的眼珠。
  18. rig:生成一個隨機的身分資訊。
  19. bb:一個高品質的視聽演示程式,在終端機中執行。
  20. aafire:在終端機中顯示一個燃燒的ASCII藝術火焰動畫。
  21. echo "simulate on-screen typing like the movies" | pv -qL 10:模擬電影中打字效果,逐字顯示文字。
  22. calendar -f /usr/share/calendar/calendar.lotr -A 365:顯示《魔戒》日曆中的重要日期,以及未來365天的日期。