名下有多台 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