開始前先了解
請先完成為虛擬機新增額外硬碟. 本篇所有指令都在 Ubuntu 虛擬機內執行, 不在 Proxmox VE 節點 Shell 操作.
分割與格式化會清除選定磁碟的資料. 本篇只適用於已確認沒有資料, 沒有掛載, 也不屬於系統或 LVM 的新空白碟. 需要保留的磁碟不可照本篇重新格式化.
示範新增容量為 4 GiB, 以下以 /dev/sdb 及 /dev/sdb1 說明. 裝置名稱必須依自己的查詢結果替換, 不能假定第二顆磁碟永遠叫作 sdb.
如果磁碟有加密, RAID, 既有 LVM 或其他分割配置, 請先確認對應的管理方式, 不要套用這個空白單碟流程.
本系列使用 Proxmox VE 9 繁體中文介面的真實截圖. 節點, 儲存名稱與示範數值請換成自己的環境; 作業系統安裝程式可能維持其原有語言.
01先確認新資料碟, 排除系統磁碟
登入 Ubuntu, 查詢磁碟容量, 檔案系統與掛載關係:
lsblk -o NAME,SIZE,TYPE,FSTYPE,UUID,MOUNTPOINTS
findmnt /
用新增前後差異, 4 GiB 容量與 Proxmox VE 硬體頁資訊共同辨識資料碟. findmnt / 顯示根目錄的來源; 即使根目錄位於 LVM 邏輯卷, 也要在 lsblk 樹狀結構中找出它上層的實體裝置並排除.
確認資料碟沒有掛載點, 沒有既有分割區, 沒有檔案系統, 也不是 LVM 的成員. 如有任何項目與新空白碟不符, 先停止確認. 看不到掛載點不等於磁碟可以清除.
放大圖片
02在已確認的空白碟建立 GPT 分割區
只有在上一個步驟確認 /dev/sdb 是這次新增且可清除的空白資料碟後, 才執行以下指令. 若你的裝置名稱不同, 先替換再操作.
先安裝分割工具, 再建立 GPT 分割表與一個使用整顆資料碟的分割區. mklabel gpt 會重建分割表, 不可對系統碟或有資料的磁碟執行.
sudo apt-get update
sudo apt-get install -y parted
sudo parted /dev/sdb --script mklabel gpt
sudo parted /dev/sdb --script mkpart primary ext4 1MiB 100%
sudo udevadm settle
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS /dev/sdb
確認新的分割區為 /dev/sdb1, 類型為 part, 容量略小於整顆磁碟. 若顯示裝置忙碌, 分割表錯誤或其他警告, 先停止處理, 不要追加強制選項.
放大圖片
03將新分割區格式化為 ext4
再次核對這次建立的分割區名稱與容量. 接著只格式化 新資料碟上的新分割區, 不要格式化 /dev/sda 或根目錄使用的邏輯卷.
下列格式化指令會覆蓋指定分割區原本的檔案系統. 本篇不加入強制覆寫參數; 如果工具提示已有檔案系統或資料, 應先停止確認.
sudo mkfs.ext4 -L demo-data /dev/sdb1
sudo blkid /dev/sdb1
記錄輸出的 UUID 與 TYPE="ext4". 後續自動掛載使用的是檔案系統 UUID, 不是磁碟標籤或 Proxmox VE 的儲存卷名稱.
放大圖片
04建立空資料夾並先手動掛載
本篇將資料碟掛載到 /srv/data. 先確認該資料夾沒有既有業務檔案; 掛載到有檔案的資料夾會暫時遮住原本內容, 容易誤以為資料遺失.
在 Ubuntu 執行以下指令, 核對來源裝置, 檔案系統與可用容量:
sudo mkdir -p /srv/data
sudo mount /dev/sdb1 /srv/data
findmnt /srv/data
df -hT /srv/data
findmnt 應顯示資料碟掛載在 /srv/data, df 的檔案系統應為 ext4. 若需要讓網站或特定帳號寫入, 依該服務的實際帳號設定擁有者與權限, 不要為了測試直接給所有人完整寫入權限.
放大圖片
05使用 UUID 設定重新開機後自動掛載
先備份 /etc/fstab, 再用編輯器開啟. 保留原本的系統掛載設定, 只增加這顆資料碟的項目:
sudo cp -a /etc/fstab /etc/fstab.before-data-disk
sudo nano /etc/fstab
新增一行如下. 請把 YOUR-DATA-DISK-UUID 替換成步驟 03 查到的實際 UUID, 這個文字不能原樣使用. 若選擇其他掛載目錄, 也要一併替換.
UUID=YOUR-DATA-DISK-UUID /srv/data ext4 defaults,nofail 0 2
nofail 可讓此額外磁碟掛載失敗時不阻止開機, 但不代表應用程式可以忽略掛載失敗. 需要此資料碟的服務, 必須在磁碟成功掛載後才啟動, 避免把檔案寫進系統碟上的同名資料夾.
sudo systemctl daemon-reload
findmnt --verify --verbose
放大圖片
06測試掛載設定, 再核對重新開機
先確定沒有程式正在使用 /srv/data, 離開該資料夾, 再卸載並依 fstab 重新掛載. 這次 mount 只指定目錄, 用來確認它能正確讀取新增的設定:
cd ~
sudo umount /srv/data
sudo mount /srv/data
findmnt /srv/data
df -hT /srv/data
如果重新掛載失敗, 先修正 UUID, 路徑或檔案系統類型, 不要在設定仍有錯誤時重新開機. 確認測試通過後, 安排正常重新開機並再次執行 findmnt /srv/data 與 df -hT /srv/data.
只有確認資料碟已掛載到正確位置後, 才讓應用程式開始寫入. 如果之後要移除資料碟, 須先停止服務, 移除對應 fstab 項目並卸載, 再到 Proxmox VE 卸離.
放大圖片
完成後如何確認
資料碟具有 ext4 檔案系統, 可在指定目錄使用, 且能依自己的 UUID 重新掛載. 掛載失敗時先停止相關服務, 不要持續向未掛載的同名目錄寫入.
常見問題
為什麼不用 sdb1 直接寫進 fstab?
裝置名稱可能因硬體或偵測順序改變. 檔案系統 UUID 用來辨識特定檔案系統, 較適合這個獨立資料分割區的自動掛載.
磁碟已經有檔案系統, 還要格式化嗎?
需要保留資料時不可格式化. 先確認檔案系統類型與資料內容, 再規劃掛載. 本篇分割與格式化流程只用於已確認可清除的新空白資料碟.
掛載後為什麼不能寫入?
先用 findmnt 確認真的掛載到資料碟, 再核對檔案系統是否唯讀與服務帳號的目錄權限. 不要直接以開放所有人寫入的權限掩蓋問題.