linux 如何掛載硬碟:從基礎到開機自動掛載的完整指南
在 Linux 系統中,管理儲存裝置是日常操作中不可或缺的一部分,特別是對於那些需要處理大量數據、設定伺服器或是擴充儲存空間的使用者而言。學習 linux 如何掛載硬碟 不僅是基本技能,更是確保資料可用性與系統穩定的關鍵。本文將為您提供一份詳細且具體的指南,從識別硬碟到設定開機自動掛載,讓您徹底掌握在 Linux 環境下掛載硬碟的每一個步驟。
Table of Contents
了解硬碟掛載的基礎
在 Linux 中,「掛載 (Mount)」是將一個儲存裝置(如硬碟、USB 隨身碟、光碟機等)的檔案系統與您檔案系統樹中的特定目錄(稱為「掛載點」)連接起來的過程。只有掛載後,您才能透過該掛載點存取裝置上的資料。想像一下,您的 Linux 檔案系統就像一棵大樹,而硬碟或其他儲存裝置就像一顆顆果實,您需要將這些果實「掛」到樹的某個枝椏上,才能夠摘取或放置東西。
硬碟的掛載通常涉及以下幾個核心概念:
- 設備名稱: 您的硬碟或分割區在 Linux 中的識別名稱,例如
/dev/sda
(第一個SATA硬碟) 或/dev/sdb1
(第二個SATA硬碟的第一個分割區)。 - 檔案系統: 儲存資料的方式和結構,常見的有 ext4 (Linux 原生)、XFS、NTFS (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
在這個例子中:
sda
、sdb
、sdc
是不同的硬碟。sda1
、sda2
、sda3
是sda
硬碟上的分割區。sdb1
是sdb
硬碟上的第一個(可能也是唯一一個)分割區。MOUNTPOINT
欄位顯示了目前已掛載的分割區的掛載點。如果一個分割區沒有掛載點,則表示它尚未被掛載。
請特別注意您想要掛載的硬碟名稱,例如 /dev/sdb1
或 /dev/sdc
(如果它是整個硬碟且未分割)。
使用 fdisk -l
或 parted -l
命令
這些命令提供更詳細的分割區資訊,包括分割區類型、大小等。
sudo fdisk -l
或
sudo parted -l
fdisk -l
會列出所有硬碟的分割區表,包含裝置名稱、大小、ID 等資訊。對於新的或未格式化的硬碟,這非常有用。
第二步:準備您的硬碟 – 分割與格式化 (如果需要)
如果您要掛載的是一個全新的硬碟,或者您想清除現有硬碟上的所有資料並重新開始,那麼您需要進行分割區和格式化。
分割區 (Partitioning)
對於一個全新的硬碟,您需要為它建立至少一個分割區。這可以透過 fdisk
(適用於 MBR 分割表) 或 parted
(適用於 MBR 和 GPT 分割表) 命令來完成。
由於分割區操作會涉及到資料風險且步驟較多,本文主要聚焦在掛載。如果您需要進行分割區,建議參考其他專門的指南,例如使用 sudo fdisk /dev/sdb
或 sudo parted /dev/sdb
。
格式化檔案系統 (Formatting)
分割區建立後,您需要為它建立一個檔案系統,以便 Linux 能夠讀寫資料。這是將硬碟變為可用的儲存空間的關鍵步驟。
常用的檔案系統格式化指令範例如下:
- Ext4 (Linux 常用):
- XFS (高效能、常用於伺服器):
- NTFS (與 Windows 系統相容):
- FAT32 (較舊且限制較多,但廣泛相容):
sudo mkfs.ext4 /dev/sdb1
這會將 /dev/sdb1
格式化為 Ext4 檔案系統。
sudo mkfs.xfs /dev/sdb1
如果您需要與 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
sudo mkfs.vfat /dev/sdb1
注意:格式化會清除分割區上所有現有資料,請務必確認您選擇的設備名稱是正確的!
第三步:建立掛載點
掛載點是您在檔案系統樹中指定的一個空目錄,用於存取您的硬碟內容。通常,這些目錄會建立在 /mnt
或 /media
下,但您也可以在任何您有權限的地方建立。
例如,我們想將硬碟掛載到 /mnt/mydisk
:
sudo mkdir /mnt/mydisk
您可以將 mydisk
替換為任何您喜歡的、具有描述性的名稱,例如 data_storage
、backup_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 壽命,並提升某些情況下的效能。relatime
: 比noatime
更常用,只在檔案被修改時才更新存取時間,兼顧效能與資訊完整性。nodev
: 不解釋裝置檔案(例如/dev/null
),增加安全性。nosuid
: 不解釋 set-user-ID 或 set-group-ID 位元,防止執行惡意程式。exec
: 允許執行檔案(預設)。noexec
: 不允許執行檔案,用於增加安全性。user
: 允許非 root 使用者掛載和卸載設備。如果沒有指定noauto
,user
也會暗示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/mydisk
或 fuser -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 鍵分隔:
(檔案系統):- 建議使用
UUID=
: 例如UUID=12345678-ABCD-EFGH-IJKL-0123456789AB
。 - 或使用設備名稱: 例如
/dev/sdb1
(不推薦用於永久掛載)。 - 或使用
LABEL=
: 如果您為分割區設定了標籤,例如LABEL=MyDataDisk
。
- 建議使用
(掛載點):- 硬碟將被掛載到的目錄,例如
/mnt/mydisk
。該目錄必須存在且為空。
- 硬碟將被掛載到的目錄,例如
(檔案系統類型):- 指定檔案系統類型,如
ext4
,xfs
,ntfs
,vfat
,swap
等。
- 指定檔案系統類型,如
(掛載選項):- 控制掛載行為。多個選項之間用逗號分隔,無空格。
defaults
: 這是最常用的選項,包含rw, suid, dev, exec, auto, nouser, async
。noatime
或relatime
: 建議用於提高效能和延長 SSD 壽命。nofail
: 這是非常重要的一個選項。如果在啟動時無法找到該設備,系統將繼續啟動而不會卡住。對於外部或可選硬碟尤其有用。user
/users
: 允許非 root 使用者掛載/卸載。rw
: 讀寫模式。
(備份):- 通常設定為
0
。這個欄位是由dump
工具使用的,表示是否應該備份檔案系統。0
表示不備份。
- 通常設定為
(開機檢查順序):- 這個欄位由
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/sdb1
或sudo 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_point
或 fuser -m /mnt/your_mount_point
來查找並終止使用該硬碟的程序。
UUID 和設備名稱有什麼不同?哪種更好?
設備名稱 (例如 /dev/sdb1
) 是根據 Linux 核心偵測硬碟的順序而定,這個名稱在系統重啟、新增或移除硬碟後可能會改變。UUID (Universally Unique Identifier) 是一個唯一的識別碼,它對於每個檔案系統都是獨一無二的,且在系統重啟後不會改變。因此,在設定 /etc/fstab
進行開機自動掛載時,強烈建議使用 UUID,以確保掛載的穩定性和可靠性。