名下有多台 VPS 伺服器放在不同的雲供應商那裡,定期備份伺服器資料成了很棘手的問題。習慣上會使用掛載 nfs 方式,使用 s3fs-fuse 先將 S3 的 Bucket 掛載到本機分區,然後向該分區寫入需要備份的檔案,
但是近期 S3 的接入穩定性確實很差,即使是 AWS 的老家美國,使用 s3fs-fuse 掛載的分區,也不能有比較穩定的讀寫。碰到大量檔案和持續讀寫的情況,效果非常不理想
近期發現使用 AWS Storage Gateway 可以直接讓虛擬機連接到 iscsi 的 target,然後操作相應的 LUN 和卷。iscsi 協議因為使用了比 HTTP/S 更低的 TCP/IP 協議,相對 s3fs 方式可以更穩定。
另外 AWS Storage Gateway 的傳入流量是免費的,只收取存儲到 S3,EBS 的存儲費用。
伺服器版本:Ubuntu18.04 LTS 設備目標:/dev/sdc
一、安裝和配置 iscsi 發起端程式 1. 安裝 open-scsi 和 utils
#安裝 open-scsi 和 utils
sudo apt-get install open-iscsi open-iscsi-utils
2. 發現 iscsi target
#發現 iscsi target
sudo iscsiadm -m discovery -t sendtargets -p XXX.XXX.XXX.XXX:3260
3. 登入 target
#登入 target
sudo iscsiadm -m node --targetname iqn.1997-05.com.amazon.XXXXXX -p XXX.XXX.XXX.XXX:3260 --login
二、掛載硬碟
1. 發現並分區格式化磁碟
fdisk -l
2. 分區格式化 LUN
fdisk /dev/sdc
mkfs.ext4 /dev/sdc1
3. 掛載到指定
sudo mkdir /mnt/backup
sudo mount /dev/sdc1 /mnt/backup
4. 卸載硬碟
sudo unmount /mnt/backup
三、開機自動連接到 LUN,掛載硬碟
1. 開機自動登入 target 修改 /etc/iscsi/iscsid.conf,開啟自動登入到 Gateway
vi /etc/iscsi/iscsid.conf
#自動開啟
node.startup = automatic
2. 修改 /etc/fstab,實現開機自動掛載
#獲取檔案系統的 UUID
tune2fs -l
修改 /etc/fstab,實現開機自動掛載
#修改 /etc/fstab
sudo vi /etc/fstab
#在 /etc/fstab 中添加
UUID=6dba31ff-xxxx-4430-bbd2-c1a932a53308 /backup ext4 _netdev 0 0
幾個需要注意的地方: 1. 如果跟 AWS Storage Gateway 連接期間發生未知中斷,可以試試強制刷新設備
udevadm test /sys/block/sdc
2. 如果發生連接超時的情況,通常跟網路品質有關,AWS 推薦可以修改 iscsid.conf
vi /etc/iscsi/iscsid.conf
# 修改連接超時參數
node.session.timeo.replacement_timeout = 600
node.conn[0].timeo.noop_out_interval = 60
node.conn[0].timeo.noop_out_timeout = 600