手上有一台 2015 年的 ThinkPad,8GB RAM、256GB SSD,法國家裡光纖 1Gbps/700Mbps,Freebox Pop。原本只是裝 Proxmox VE 8 跑一台 Debian LXC 當內網跳板,順便放個 Samba 給家人備份照片。實際用起來發現兩個現象:一是從外網連回來,大概十幾分鐘沒動作就斷;二是備份照片時整台機器會卡到 SSH 都進不去。資料量不大,照片約 400GB,但一次同步就是幾千個小檔。
先講斷線。我一開始以為是 Freebox 的 NAT 逾時,後來在 LXC 裡看 ss -tnp 才發現是我自己這端 SSH 沒有 keepalive。做法很簡單,在 client 的 ~/.ssh/config 加:
Host jumpbox
HostName 192.168.1.20
User ops
ServerAliveInterval 30
ServerAliveCountMax 3
TCPKeepAlive no
Server 端也順手在 /etc/ssh/sshd_config 設 ClientAliveInterval 60 與 ClientAliveCountMax 3。代價是每 30 秒多一個小封包,行動網路下會多一點耗電,但換來連線不會莫名消失。
再來是備份卡頓。Proxmox 預設的 LXC 是寫在 SSD 上,Samba 同步時 I/O 排隊拉高,整台機器連帶受影響。我沒有加購硬碟,而是把照片目錄掛到一顆外接 USB3 硬碟,並在 LXC 的設定裡限制 I/O:
lxc.cgroup2.devices.allow: b 8:* rwm
lxc.mount.entry: /dev/sdb1 mnt/photos none bind,create=dir 0 0
外接碟用 ext4,掛載時加 noatime,Samba 的 smb.conf 裡把 aio read size 設 16384。這樣做的好處是照片寫入不會跟系統碟搶 I/O,代價是外接碟本身沒有 RAID,壞了就是壞了,所以我另外用 rsync --delete 每週拉一份到另一顆舊硬碟,兩顆都放同一個房間,這點我自己也知道不算異地備援。
會失效的地方:USB 外接碟在 Proxmox 重開機後裝置名可能從 sdb 變成 sdc,我踩過一次,照片目錄直接掛空。現在改用 by-id 路徑,例如 /dev/disk/by-id/usb-...-0:0-part1。另外 LXC 的 bind mount 不建議直接掛到 host 的 /mnt,我曾經因為 host 上同路徑有東西而掛錯,現在都寫完整路徑。
還有一個邊界:這台筆電只有 8GB RAM,跑 Proxmox 加一個 LXC 還行,但想再開一台 VM 就會開始吃 swap,風扇一直轉。我後來放棄在它上面跑 VM,只留 LXC。
你們在法國用舊機器跑 Proxmox 時,外接碟是怎麼固定裝置名的?我目前用 by-id,但換外接盒就又要改一次,有點煩。
0 条评论
还没有评论,写下第一条。