名下有多台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
参考
https://docs.aws.amazon.com/storagegateway/latest/userguide/initiator-connection-common.html#CustomizeLinuxiSCSISettings