linux 如何掛載硬碟:從基礎到開機自動掛載的完整指南

在 Linux 系統中,管理儲存裝置是日常操作中不可或缺的一部分,特別是對於那些需要處理大量數據、設定伺服器或是擴充儲存空間的使用者而言。學習 linux 如何掛載硬碟 不僅是基本技能,更是確保資料可用性與系統穩定的關鍵。本文將為您提供一份詳細且具體的指南,從識別硬碟到設定開機自動掛載,讓您徹底掌握在 Linux 環境下掛載硬碟的每一個步驟。

了解硬碟掛載的基礎

在 Linux 中,「掛載 (Mount)」是將一個儲存裝置(如硬碟、USB 隨身碟、光碟機等)的檔案系統與您檔案系統樹中的特定目錄(稱為「掛載點」)連接起來的過程。只有掛載後,您才能透過該掛載點存取裝置上的資料。想像一下,您的 Linux 檔案系統就像一棵大樹,而硬碟或其他儲存裝置就像一顆顆果實,您需要將這些果實「掛」到樹的某個枝椏上,才能夠摘取或放置東西。

硬碟的掛載通常涉及以下幾個核心概念:

  • 設備名稱: 您的硬碟或分割區在 Linux 中的識別名稱,例如 /dev/sda (第一個SATA硬碟) 或 /dev/sdb1 (第二個SATA硬碟的第一個分割區)。
  • 檔案系統: 儲存資料的方式和結構,常見的有 ext4 (Linux 原生)、XFSNTFS (Windows 常用)、FAT32 等。
  • 掛載點: 您希望透過哪個目錄來存取硬碟內容,例如 /mnt/data/home/user/my_disk

第一步:識別您的硬碟與分割區

在執行任何掛載操作之前,最重要的是要正確識別您的硬碟及其分割區。錯誤的識別可能導致資料遺失。

使用 lsblk 命令

lsblk (list block devices) 是最常用且直觀的工具之一,它會以樹狀結構列出所有區塊裝置,包括硬碟、分割區、光碟機等。

在終端機中輸入:

lsblk

您將看到類似以下的輸出:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 238.5G  0 disk 
├─sda1        8:1    0   512M  0 part /boot/efi
├─sda2        8:2    0     1G  0 part /boot
└─sda3        8:3    0 237.1G  0 part 
  └─vg0-root 254:0    0 237.1G  0 lvm  /
sdb           8:16   0   931.5G 0 disk 
└─sdb1        8:17   0   931.5G 0 part 
sdc           8:32   0    10G   0 disk 

在這個例子中:

  • sdasdbsdc 是不同的硬碟。
  • sda1sda2sda3sda 硬碟上的分割區。
  • sdb1sdb 硬碟上的第一個(可能也是唯一一個)分割區。
  • MOUNTPOINT 欄位顯示了目前已掛載的分割區的掛載點。如果一個分割區沒有掛載點,則表示它尚未被掛載。

請特別注意您想要掛載的硬碟名稱,例如 /dev/sdb1/dev/sdc (如果它是整個硬碟且未分割)。

使用 fdisk -lparted -l 命令

這些命令提供更詳細的分割區資訊,包括分割區類型、大小等。

sudo fdisk -l

sudo parted -l

fdisk -l 會列出所有硬碟的分割區表,包含裝置名稱、大小、ID 等資訊。對於新的或未格式化的硬碟,這非常有用。

第二步:準備您的硬碟 – 分割與格式化 (如果需要)

如果您要掛載的是一個全新的硬碟,或者您想清除現有硬碟上的所有資料並重新開始,那麼您需要進行分割區和格式化。

分割區 (Partitioning)

對於一個全新的硬碟,您需要為它建立至少一個分割區。這可以透過 fdisk (適用於 MBR 分割表) 或 parted (適用於 MBR 和 GPT 分割表) 命令來完成。

由於分割區操作會涉及到資料風險且步驟較多,本文主要聚焦在掛載。如果您需要進行分割區,建議參考其他專門的指南,例如使用 sudo fdisk /dev/sdbsudo parted /dev/sdb

格式化檔案系統 (Formatting)

分割區建立後,您需要為它建立一個檔案系統,以便 Linux 能夠讀寫資料。這是將硬碟變為可用的儲存空間的關鍵步驟。

常用的檔案系統格式化指令範例如下:

  • Ext4 (Linux 常用):
  • sudo mkfs.ext4 /dev/sdb1

    這會將 /dev/sdb1 格式化為 Ext4 檔案系統。

  • XFS (高效能、常用於伺服器):
  • sudo mkfs.xfs /dev/sdb1

  • NTFS (與 Windows 系統相容):
  • 如果您需要與 Windows 系統交換資料,可以格式化為 NTFS。您可能需要先安裝 ntfs-3g 套件:

    sudo apt update (Debian/Ubuntu)

    sudo apt install ntfs-3g (Debian/Ubuntu)

    sudo yum install ntfs-3g (CentOS/RHEL)

    sudo mkfs.ntfs /dev/sdb1

  • FAT32 (較舊且限制較多,但廣泛相容):
  • sudo mkfs.vfat /dev/sdb1

注意:格式化會清除分割區上所有現有資料,請務必確認您選擇的設備名稱是正確的!

第三步:建立掛載點

掛載點是您在檔案系統樹中指定的一個空目錄,用於存取您的硬碟內容。通常,這些目錄會建立在 /mnt/media 下,但您也可以在任何您有權限的地方建立。

例如,我們想將硬碟掛載到 /mnt/mydisk

sudo mkdir /mnt/mydisk

您可以將 mydisk 替換為任何您喜歡的、具有描述性的名稱,例如 data_storagebackup_disk 等。

第四步:手動掛載硬碟

一旦您有了準備好的硬碟(已分割並格式化)和一個空的掛載點,就可以手動將其掛載。

使用 mount 命令

mount 命令的基本語法是:

sudo mount [設備名稱] [掛載點]

假設我們要將 /dev/sdb1 這個分割區掛載到 /mnt/mydisk

sudo mount /dev/sdb1 /mnt/mydisk

如果您的分割區是 Ext4 檔案系統,Linux 通常會自動偵測。但您也可以明確指定檔案系統類型:

sudo mount -t ext4 /dev/sdb1 /mnt/mydisk

mount 命令的常用選項:

  • -t <檔案系統類型> 指定檔案系統類型,例如 ext4, xfs, ntfs, vfat (FAT32)。
  • -o <選項> 指定掛載選項。這非常重要,因為它控制了掛載後的行為和權限。常用的選項包括:
    • defaults 使用預設的掛載選項,包括 rw (讀寫), suid, dev, exec, auto, nouser, async
    • rw 以讀寫模式掛載(預設)。
    • ro 以唯讀模式掛載。
    • noatime 存取檔案時不更新檔案的存取時間。這可以減少寫入操作,延長 SSD 壽命,並提升某些情況下的效能。
    • relatimenoatime 更常用,只在檔案被修改時才更新存取時間,兼顧效能與資訊完整性。
    • nodev 不解釋裝置檔案(例如 /dev/null),增加安全性。
    • nosuid 不解釋 set-user-ID 或 set-group-ID 位元,防止執行惡意程式。
    • exec 允許執行檔案(預設)。
    • noexec 不允許執行檔案,用於增加安全性。
    • user 允許非 root 使用者掛載和卸載設備。如果沒有指定 noautouser 也會暗示 noauto
    • users 允許任何非 root 使用者掛載和卸載設備。

範例:以讀寫模式且不更新存取時間的方式掛載一個 NTFS 檔案系統:

sudo mount -t ntfs -o rw,noatime /dev/sdb1 /mnt/mydisk

驗證掛載

掛載完成後,您可以使用 df -h 命令來驗證它是否成功:

df -h

您應該會看到您的硬碟掛載在指定的掛載點上,並顯示其大小和使用情況。

Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           784M  1.6M  782M   1% /run
/dev/sda3       237G   12G  213G   6% /
/dev/sdb1       932G  5.0G  927G   1% /mnt/mydisk  <-- 您的新掛載

您也可以透過進入掛載點目錄來驗證:

cd /mnt/mydisk

ls -l

卸載硬碟 (Unmount)

當您不再需要使用硬碟或需要安全地移除它時,務必先將其卸載。這可以防止資料損壞。

sudo umount /mnt/mydisk

sudo umount /dev/sdb1

如果系統提示「target is busy」,表示有程式正在使用該硬碟。您可以使用 lsof /mnt/mydiskfuser -m /mnt/mydisk 來找出哪些程序正在使用它,並將其關閉或終止。

第五步:設定開機自動掛載 (fstab)

手動掛載只在當前會話中有效,系統重啟後會失效。為了讓硬碟在每次開機時都自動掛載,您需要編輯 /etc/fstab 檔案。

了解 /etc/fstab 檔案

/etc/fstab 是 Linux 系統中一個重要的設定檔,它包含了系統啟動時需要掛載的所有檔案系統資訊。每一行代表一個要掛載的檔案系統,包含六個欄位。

在編輯 fstab 之前,強烈建議先備份該檔案! 錯誤的設定可能導致系統無法啟動。

sudo cp /etc/fstab /etc/fstab.bak

然後使用文字編輯器開啟 fstab

sudo nano /etc/fstab

sudo vim /etc/fstab

使用 UUID 而非設備名稱

為了確保掛載的穩定性,建議使用硬碟的 UUID (Universally Unique Identifier) 而非設備名稱 (如 /dev/sdb1)。這是因為設備名稱可能會在重啟或新增硬碟後發生變化,而 UUID 是唯一的,不會變動。

使用 blkid 命令查看硬碟的 UUID:

sudo blkid

找到您要掛載的硬碟或分割區的 UUID。例如,如果 /dev/sdb1 的 UUID 是 "12345678-ABCD-EFGH-IJKL-0123456789AB"

/dev/sdb1: UUID="12345678-ABCD-EFGH-IJKL-0123456789AB" TYPE="ext4" PARTUUID="..."

/etc/fstab 欄位解釋

/etc/fstab 中的每一行通常有六個欄位,以空格或 Tab 鍵分隔:

          
  1. (檔案系統):
    • 建議使用 UUID= 例如 UUID=12345678-ABCD-EFGH-IJKL-0123456789AB
    • 或使用設備名稱: 例如 /dev/sdb1 (不推薦用於永久掛載)。
    • 或使用 LABEL= 如果您為分割區設定了標籤,例如 LABEL=MyDataDisk
  2. (掛載點):
    • 硬碟將被掛載到的目錄,例如 /mnt/mydisk。該目錄必須存在且為空。
  3. (檔案系統類型):
    • 指定檔案系統類型,如 ext4, xfs, ntfs, vfat, swap 等。
  4. (掛載選項):
    • 控制掛載行為。多個選項之間用逗號分隔,無空格。
    • defaults 這是最常用的選項,包含 rw, suid, dev, exec, auto, nouser, async
    • noatimerelatime 建議用於提高效能和延長 SSD 壽命。
    • nofail 這是非常重要的一個選項。如果在啟動時無法找到該設備,系統將繼續啟動而不會卡住。對於外部或可選硬碟尤其有用。
    • user/users 允許非 root 使用者掛載/卸載。
    • rw 讀寫模式。
  5. (備份):
    • 通常設定為 0。這個欄位是由 dump 工具使用的,表示是否應該備份檔案系統。0 表示不備份。
  6. (開機檢查順序):
    • 這個欄位由 fsck 工具使用,用於在啟動時檢查檔案系統的順序。
    • 0 不檢查。對於非根分割區,通常設定為 0。
    • 1 首先檢查根檔案系統 (/)。通常只有根檔案系統為 1。
    • 2 其次檢查所有其他檔案系統。您可以將所有其他需要檢查的分割區設定為 2。

新增 fstab 條目範例

假設您要將 UUID 為 12345678-ABCD-EFGH-IJKL-0123456789AB 的 Ext4 分割區掛載到 /mnt/mydisk,並希望在開機時自動掛載,且以讀寫模式、不更新存取時間、並允許系統在找不到設備時正常啟動,您可以新增以下行:

UUID=12345678-ABCD-EFGH-IJKL-0123456789AB /mnt/mydisk ext4 defaults,noatime,nofail 0 2

或者,如果您掛載的是 NTFS 檔案系統:

UUID=ABCDEF1234567890 /mnt/win_share ntfs-3g defaults,nofail 0 0

儲存並關閉 fstab 檔案。

測試 fstab 設定

在重啟系統之前,強烈建議測試您的 fstab 設定是否正確。您可以先卸載該硬碟,然後使用 mount -a 命令來測試:

sudo umount /mnt/mydisk (如果已掛載)

sudo mount -a

如果沒有錯誤訊息,並且您再次使用 df -h 看到硬碟已掛載到 /mnt/mydisk,那麼恭喜您,設定成功!現在您可以安全地重啟系統,硬碟將會自動掛載。

常見的掛載情境與注意事項

權限問題

硬碟掛載後,其根目錄的權限可能仍然是屬於 root 用戶。如果您想讓其他使用者能夠讀寫,您可能需要調整掛載點的權限。

範例:將 /mnt/mydisk 的所有權限賦予使用者 your_username

sudo chown your_username:your_username /mnt/mydisk

如果您希望所有使用者都能讀寫,可以調整權限:

sudo chmod 777 /mnt/mydisk (這會給予所有使用者完全權限,請謹慎使用)

或更安全的,給予組寫入權限,並將用戶添加到該組:

sudo chmod 775 /mnt/mydisk

掛載網路共用 (NFS/SMB/CIFS)

雖然本文主要討論本機硬碟掛載,但 fstab 也可以用於自動掛載網路檔案系統。例如,NFS 或 SMB/CIFS (Windows 網路共用)。

SMB/CIFS (Windows 共用) 範例:

您需要安裝 cifs-utils

sudo apt install cifs-utils (Debian/Ubuntu)

sudo yum install cifs-utils (CentOS/RHEL)

然後在 fstab 中新增:

//[Windows_IP]/[Share_Name] /mnt/windows_share cifs username=[your_username],password=[your_password],iocharset=utf8,defaults,nofail 0 0

請注意,將密碼直接寫入 fstab 不夠安全。更推薦的方式是將認證資訊放在一個單獨的權限受限的檔案中,並在 fstab 中引用它。

故障排除

  • mount: /mnt/mydisk: mount point does not exist. 您嘗試掛載到的目錄不存在。請先使用 sudo mkdir /mnt/mydisk 建立。
  • mount: /dev/sdb1 is already mounted or /mnt/mydisk is busy. 硬碟已被掛載或掛載點正在被使用。使用 sudo umount /dev/sdb1sudo umount /mnt/mydisk 先卸載,或使用 lsof /mnt/mydisk 找出使用中的程序。
  • mount: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error. 檔案系統類型錯誤、掛載選項錯誤、或分割區本身有問題。請檢查 -t 選項是否正確,並確保硬碟已正確格式化。
  • 系統啟動時卡住 (編輯 fstab 後): 這很可能是 fstab 配置錯誤導致。
    • 重啟時,如果系統進入緊急模式或提示錯誤,輸入 root 密碼。
    • 使用 mount -o remount,rw / 將根檔案系統重新掛載為可讀寫。
    • 編輯 /etc/fstab 並修正錯誤或將新添加的行註解掉 (在行首加 #)。
    • 重啟系統。

總結

掌握 linux 如何掛載硬碟 是 Linux 系統管理中一項至關重要的技能。透過本文的詳細步驟,您應該已經學會了如何識別硬碟、進行必要的格式化、建立掛載點、手動掛載以及設定開機自動掛載。正確地管理硬碟可以極大地提升您的 Linux 使用體驗,並確保資料的安全與高效利用。請記住,在進行任何可能修改硬碟分割區或檔案系統的操作時,務必小心謹慎,並始終備份重要資料。

常見問題 (FAQ)

如何知道我的硬碟設備名稱?

您可以使用 lsblk 命令來查看所有區塊裝置及其分割區的樹狀結構。它會顯示設備名稱(如 /dev/sda, /dev/sdb1)、大小、類型以及是否已掛載。這是最直觀的方式。

為何我掛載的硬碟無法寫入?

這通常是權限問題。掛載後的硬碟其根目錄可能屬於 root 用戶,普通用戶沒有寫入權限。您可以透過 sudo chown your_username:your_username /mnt/your_mount_point 來更改掛載點的擁有者,或者使用 sudo chmod 777 /mnt/your_mount_point 來賦予所有用戶讀寫執行權限 (後者安全性較低)。另外,檢查您是否以唯讀 (ro) 模式掛載。

掛載後硬碟資料不見了怎麼辦?

如果掛載後發現掛載點下是空的,這通常不是資料消失,而是您將硬碟掛載到了「一個非空的目錄上」。Linux 會將該目錄原本的內容「遮蔽」起來,只顯示新掛載硬碟的內容。您只需要安全地卸載硬碟 (sudo umount /mnt/your_mount_point),原本目錄的內容就會重新出現。在掛載之前,確保掛載點是一個空的目錄是個好習慣。

如何安全地卸載硬碟?

使用 sudo umount /mnt/your_mount_point 命令來卸載硬碟。在卸載前,請確保沒有任何程序正在使用該掛載點下的檔案或目錄。如果提示「device is busy」,您可以使用 lsof /mnt/your_mount_pointfuser -m /mnt/your_mount_point 來查找並終止使用該硬碟的程序。

UUID 和設備名稱有什麼不同?哪種更好?

設備名稱 (例如 /dev/sdb1) 是根據 Linux 核心偵測硬碟的順序而定,這個名稱在系統重啟、新增或移除硬碟後可能會改變。UUID (Universally Unique Identifier) 是一個唯一的識別碼,它對於每個檔案系統都是獨一無二的,且在系統重啟後不會改變。因此,在設定 /etc/fstab 進行開機自動掛載時,強烈建議使用 UUID,以確保掛載的穩定性和可靠性。

linux 如何掛載硬碟

Similar Posts