跳到主要內容
節省工具箱Jason Tools
經驗分享

PBS 掛載 iSCSI 作為備份儲存區

Jason Cheng 發布 瀏覽 1 次
PBS 掛載 iSCSI 作為備份儲存區
本文目錄
  1. 環境與規劃
  2. NAS 端準備
  3. 連線 iSCSI Target
  4. 格式化
  5. 掛載
  6. 開機自動連線與掛載
  7. 建立 datastore
  8. 移除 iSCSI datastore
  9. 結論
  10. 參考資料

Proxmox Backup Server(PBS)的備份空間不夠時,如果手邊有一台 NAS(例如 Synology),可以切一個 iSCSI LUN 給 PBS,當成 datastore 使用。對 PBS 來說,iSCSI 就是一顆本機磁碟,格式化、掛載之後,用法和本機硬碟完全一樣。

這篇整理從連線 iSCSI Target、格式化、設定開機自動掛載,到建立 datastore 的完整步驟,最後附上要移除時的做法。

環境與規劃

項目範例
NASSynology,IP 192.168.10.50
iSCSI Targetiqn.2000-01.com.synology:nas01.Target-3.xxxxxxxxxx
LUN 大小100 GB(範例)
PBS 掛載點/mnt/datastore/iscsi-pbs1

開始前先想清楚兩件事:

  • 備份不要和正式資料放在同一台 NAS:如果 VM 本身也放在這台 NAS 上,NAS 一壞,正式資料和備份會一起不見
  • iSCSI 建議走獨立的網路:備份流量大,和一般服務共用網路會互相影響

NAS 端準備

在 Synology 的 SAN Manager 建立 LUN 與 iSCSI Target,並且:

  • 在 Target 的權限(遮罩)設定裡只允許 PBS 的 initiator 連線,不要開放給所有人
  • 需要的話設定 CHAP 驗證

PBS 的 initiator 名稱在這裡:

apt install -y open-iscsi
cat /etc/iscsi/initiatorname.iscsi

注意:同一個 LUN 只能給一台主機掛載使用。ext4 這類一般檔案系統不支援多台同時掛載,兩台主機同時寫入會讓檔案系統損毀,備份資料全部報銷。

連線 iSCSI Target

探索 NAS 提供的 Target:

iscsiadm -m discovery -t sendtargets -p 192.168.10.50
192.168.10.50:3260,1 iqn.2000-01.com.synology:nas01.Target-1.xxxxxxxxxx
192.168.10.50:3260,1 iqn.2000-01.com.synology:nas01.Target-2.xxxxxxxxxx
192.168.10.50:3260,1 iqn.2000-01.com.synology:nas01.Target-3.xxxxxxxxxx

有設定 CHAP 的話,登入前先寫入帳密:

T=iqn.2000-01.com.synology:nas01.Target-3.xxxxxxxxxx
iscsiadm -m node -T $T -p 192.168.10.50 --op update -n node.session.auth.authmethod -v CHAP
iscsiadm -m node -T $T -p 192.168.10.50 --op update -n node.session.auth.username -v your-chap-user
iscsiadm -m node -T $T -p 192.168.10.50 --op update -n node.session.auth.password -v your-chap-password

登入:

iscsiadm -m node -T $T -p 192.168.10.50 --login
iscsiadm -m session

確認新磁碟出現:

lsblk
ls -l /dev/disk/by-path/ | grep iscsi
sdi    8:128  0   100G  0 disk

/dev/disk/by-path/ 底下的名稱會帶有 Target 的 IQN,用它來確認 sdi 真的是剛連上的那顆 iSCSI 磁碟。

格式化

mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sdi
  • -m 0
    不保留給 root 的空間(預設 5%),datastore 專用的磁碟不需要
  • lazy_itable_init=0,lazy_journal_init=0
    格式化時就把 inode 表和日誌初始化完成,不在背景慢慢做,避免剛開始使用時效能被拖慢

注意:格式化前務必再確認一次裝置名稱,mkfs 打錯磁碟就是把那顆磁碟的資料全部清掉。可以直接用 /dev/disk/by-path/ 的完整路徑來格式化,比 /dev/sdX 保險。

掛載

mkdir -p /mnt/datastore/iscsi-pbs1
mount /dev/sdi /mnt/datastore/iscsi-pbs1
df -h /mnt/datastore/iscsi-pbs1
/dev/sdi   98G  2.1M   98G   1% /mnt/datastore/iscsi-pbs1

開機自動連線與掛載

iSCSI 自動登入

iscsiadm -m node -T $T -p 192.168.10.50 --op update -n node.startup -v automatic
systemctl enable iscsid open-iscsi

fstab

/dev/sdi 這種名稱在重新開機後可能會變,一律用 UUID:

blkid /dev/sdi
/dev/sdi: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4"

編輯 /etc/fstab 加入:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /mnt/datastore/iscsi-pbs1  ext4  defaults,_netdev,nofail  0  2
  • _netdev
    告訴系統這是網路磁碟,要等網路與 iSCSI 連線好才掛載
  • nofail
    NAS 剛好沒開或連不上時,PBS 仍然可以正常開機,不會卡在開機畫面

注意:掛載選項不要加 noatime。PBS 的垃圾回收(GC)第一階段會更新每個仍在使用的 chunk 的存取時間(atime),第二階段再依 atime 判斷哪些 chunk 可以刪除。官方文件說明 GC 的寬限期是依照一般預設的 relatime 設計的,維持預設的掛載選項最保險。

測試設定是否正確:

umount /mnt/datastore/iscsi-pbs1
mount -a
df -h /mnt/datastore/iscsi-pbs1

最好實際重新開機一次,確認開機後會自動連線並掛載。

建立 datastore

網頁介面

  1. 登入 PBS 網頁介面
  2. 「資料儲存區 → 增加資料儲存區」
  3. 名稱填 iscsi-pbs1,備份路徑填 /mnt/datastore/iscsi-pbs1
  4. 設定 GC 與清理(prune)排程後儲存
  5. 確認資料儲存區顯示的容量正確

指令

proxmox-backup-manager datastore create iscsi-pbs1 /mnt/datastore/iscsi-pbs1
proxmox-backup-manager datastore list

PBS 建立 datastore 時會自己設定目錄的擁有者為 backup,並建立 .chunks 目錄結構,不需要手動 chown。

接著就可以在 PVE 的「資料中心 → 儲存」新增這個 PBS datastore,或設定同步工作把其他 datastore 的備份複製過來。

注意:PBS 網頁介面「管理 → 存放裝置/磁碟 → 目錄」也可以直接格式化磁碟並建立 datastore,但它是用 systemd 的 mount unit 掛載,對 iSCSI 這種網路磁碟不一定會等到連線建立才掛載。網路磁碟我習慣自己寫 fstab 加 _netdev,開機順序比較確定。

移除 iSCSI datastore

之後不用了,要依序拆除:

移除 datastore

先確認 PVE 已經沒有使用這個 datastore(儲存設定、備份工作),再到 PBS「資料儲存區 → 選擇該儲存區 → 選項 → 移除資料儲存區」。

卸載

# 確認沒有程式在使用
lsof +D /mnt/datastore/iscsi-pbs1
fuser -vm /mnt/datastore/iscsi-pbs1

umount /mnt/datastore/iscsi-pbs1

移除 fstab 設定

編輯 /etc/fstab,刪掉之前加的那一行,否則下次開機會一直嘗試掛載。

登出並刪除 iSCSI 連線設定

# 登出
iscsiadm -m node -T $T -p 192.168.10.50 --logout

# 刪除連線設定,開機就不會再自動登入
iscsiadm -m node -T $T -p 192.168.10.50 --op delete

# 確認磁碟已經消失
lsblk
iscsiadm -m session

清理掛載點

rmdir /mnt/datastore/iscsi-pbs1

用 rmdir 而不是 rm -rf:目錄是空的才刪得掉,萬一卸載沒有成功,也不會誤刪到 iSCSI 磁碟裡的資料。

最後記得回 NAS 端把 LUN 與 Target 刪除,釋放空間。

結論

iSCSI 給 PBS 當 datastore 是很實用的擴充方式,NAS 上多的空間馬上就能拿來放備份。重點就三個:一個 LUN 只給一台主機掛、fstab 要用 UUID 並加上 _netdev、nofail、不要動 atime 相關的掛載選項。

參考資料

Jason Cheng

Jason Cheng

企業開源技術顧問,專注架構規劃與實務導入

關於作者 →

延伸閱讀