快轉到主要內容

要用/mnt還是/media?Linux自動掛載硬碟建議的路徑

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux使用技巧
標籤   Systemd KDE Plasma GNOME Freedesktop Specifications
目錄

在Linux掛載儲存裝置的時候,你應該要用/mnt還是/media還是/run/media路徑?

讓我們試圖回答這個問題。

並討論Linux系統常見的自動掛載硬碟手段。其實你不一定要手寫/etc/fstab!?在有安裝圖形介面的情況下,可以透過桌面環境的圖形界面設定自動掛載硬碟。

這張圖片使用ComfyUI + FLUX.1生成

1. 如何列出Linux所有的儲存裝置
#

對於Linux來說,所有的儲存裝置都是一個檔案。插入電腦之後,會統一出現在/dev/之下,例如/dev/sda/dev/sdb/dev/sdc。如果硬碟沒有檔案系統,使用者需要先將其格式化,建立檔案系統(例如EXT4、FAT32、BTRFS、NTFS),再用mount指令,將/dev/sdX裝置掛載到掛載點,才能存取裡面的資料。掛載點可能是由使用者自行建立的一個目錄,或者是系統服務自動幫你建立。

因此,在掛載硬碟的時候,要先確認的就是/dev/的儲存裝置代號,再來規劃硬碟的掛載點。

指令工具:fdisk、lsblk、parted,例如fdisk -l指令。這些工具也可以用來格式化硬碟。

圖形介面:Gparted、GNOME Disk、KDE Partition Manager。這些工具也可以用來格式化硬碟。

2. 硬碟掛載點的路徑標準
#

事實上Linux的掛載系統很寬鬆,只要權限夠,你想挑哪個目錄當掛載點都行。譬如你可以將另一個硬碟/dev/sdb掛載到目前系統的/home,實現系統橫跨兩個硬碟儲存的操作。

不過萬事都要有個標準來遵循吧。

常見的掛載路徑選擇有/mnt/media/run/media,他們有什麼差呢?

/mnt
#

依照Linux基金會的檔案系統階層標準 FHS 3.0建議,/mnt應該是臨時掛載檔案用的,只給系統管理員操作,比如mount一個chroot檔案系統或者ISO,短時間存取裡面的資料然後移除。

不過,對於個人電腦來說,由於通常只有一個使用者,因此限定系統管理員才能用的說法並不適用。所以其實沒有規定說/mnt不能掛載硬碟。將硬碟掛載在這個路徑也能在用cd指令的時候少打幾個字吧。但我覺得還是遵循FHS建議的標準較佳。

/media與/run/media
#

依照Linux基金會的檔案系統階層標準 FHS 3.0建議,/media是給一般使用者使用的,用於掛載可卸除的儲存媒介(不論他們是暫時性掛載或者是開機自動掛載),例如硬碟、光碟、USB隨身碟、SMB共享目錄等等。

部份桌面環境的服務會自動偵測使用者插入的卸除式儲存裝置,然後自動建立掛載點。比如GNOME的udisks。

那麼為什麼會有/media/run/media的差異呢?有些發行版採用後者的理由是因為/run這個路徑在每次重開機後都會清空,所以能夠保持系統整潔。每次重開機交由系統服務動態建立掛載點。反之如果是/media的話,掛載點的目錄一旦建立就會一直存在,不論硬碟有無成功掛載,總是會有一個空目錄在那邊,長此以往將造成大量垃圾。

不過這兩個目錄的差異不大,端看發行版與桌面環境怎麼操作而已。

Ubuntu與Debian比較習慣使用/media/

Fedora與openSUSE則是會選取/run/media/

這個掛載路徑的選擇,反映在它們的套件編譯選項裡面,所以要套用另一個發行版的規則,可能得手動編輯路徑。

3. 使用圖形界面設定硬碟掛載規則
#

講到掛載硬碟多半會想要手動編輯/etc/fstab吧,但是在有安裝圖形介面的情況下,可以透過桌面環境的工具設定自動掛載硬碟的規則。它會根據使用者的儲存裝置情況,建議合適的掛載點並完成操作,最後將變更寫入到/etc/fstab

GNOME
#

  1. GNOME 48是使用udisks和gvfs服務,應該已經隨GNOME桌面環境一同安裝。用以下指令確認服務狀態:
systemctl --user status udisks2
  1. 開啟磁碟 (GNOME Disk Utility) 程式

  2. 選取要掛載的硬碟。如果已經掛載,先按下暫停鍵取消掛載。

  3. 點選編輯掛載選項

  4. 取消勾選使用者工作階段預設值。

  5. 設定掛載規則。首先,設定識別為UUID,讓它以UUID為依據下去掛載硬碟,這樣可以防止因為換硬碟導致/dev/sda變化而無法掛載。然後掛載點的部份可以任意取名,建議設定為/media/<使用者名稱>/<你喜歡的硬碟代號>,不然的話自動依照UUID建立的掛載點一長串很醜。檔案系統設定為auto讓它自動判斷。

  6. 點選播放鍵掛載硬碟。

  7. 掛載的硬碟會出現在檔案管理器的選單。

註解:udisks有時候會無視/etc/fstab設定,自行掛載儲存裝置。這得透過udisksctl指令調整。

KDE Plasma
#

KDE Plasma 6需要使用者指定自動掛載的規則。

  1. 開啟KDE磁碟分割區管理員 (KDE Partition Manager)

  2. 選取要掛載的硬碟。如果已經掛載,先按下右鍵取消掛載。

  3. 按右鍵,編輯掛載點

  4. 識別方式選取UUID,讓它以UUID為依據下去掛載硬碟,這樣可以防止因為換硬碟導致/dev/sda變化而無法掛載。路徑就是掛載點,建議設定為/media/<使用者名稱>/<你喜歡的硬碟代號>

  5. 儲存變更。掛載硬碟。

  6. 掛載的硬碟會出現在檔案管理器的選單。

4. 手寫/etc/fstab設定硬碟掛載規則
#

編輯/etc/fstab,用於定義開機後的掛載規則。這是最傳統的做法,任何Linux發行版都適用。未來可能會流行systemd-mount,藉由編輯多個服務檔來定義個別硬碟的掛載規則。不過在那之前用單一檔案定義全部規則的/etc/fstab仍是最穩健的選擇。/etc/fstab裡面所寫的規則,一定會在開機後自動掛載。

  1. /etc/fstab會要求你指定掛載點,那麼就以硬碟來說,建議的掛載點規則是這樣:
檔案系統UUID=""   掛載點  檔案系統類型  參數

關於最前面的檔案系統,傳統的作法是用/dev/sdX,但考慮到硬碟有可能會抽換,導致/dev/sda指向的不見得是原本的硬碟。比較好的方法是透過UUID來認硬碟,確保每次掛載的都是指向正確的硬碟。

  1. blkid指令列出所有硬碟分區的UUID。

  2. 接著是掛載點的部份。選取/media//run/media。在你使用/etc/fstab的時候,/run不會因為重開機清空而影響掛載。

路徑格式:/media/<使用者名稱>/<你喜歡的硬碟代號>。如果你不知道怎麼取名,我會建議取名叫做HDD1,或者以硬碟的型號下去命名,例如ST8000DX001,再不濟就用UUID當掛載點名稱。

  1. 最後面的檔案系統類型與參數通常維持預設就好。

  2. 舉例來說,用sudo lsblk指令得出要掛載的硬碟路徑如下,它有一個EXT4的檔案系統:

/dev/sdb2: UUID="26c57dd3-de9f-4409-b385-cf218501a739" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="bf86f923-91f5-4c54-b8e4-33ecc6dfeb33"
  1. 然後我們預計要掛載到/media/user/HDD1,並允許所有使用者都能讀取與寫入。所以手動建立該掛載點,然後修改權限
sudo mkdir -p /media/user/HDD1

sudo chmod 777 /media/user/HDD1
  1. 編輯/etc/fstab
sudo vim /etc/fstb
  1. 填入以下掛載規則
UUID=26c57dd3-de9f-4409-b385-cf218501a739  /media/user/HDD1  ext4  defaults  0  0
  1. 重開機,使用lsblk指令查看硬碟是否有自動掛載。
# 範例輸出
sdb                         8:00   0   7.6T  0 disk 
└─sdb1                      8:00   0   7.6T  0 part /media/user/HDD1

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。