使用Amazon EBS作为EC2的数据盘

在AWS的EC2上部署深度学习时,通常会有较大的数据集,动辄几个GB。为了避免每次启动EC2实例后再重新下载数据集,可以在终止实例前保存为自己的AMI,相当于将整个实例环境和数据备份,下一次从保存的AMI中启动实例,可以做到无缝对接。

但是现在官方Deep Learning AMI最低启动容量上升到75GB,而0.1$/GB/month的价格实在有点肉疼,而且每次处理完都要保存本次AMI、删掉上次的AMI和EBS也是相当麻烦。

最经济实惠省事的方法创建一个EBS卷作为数据盘(不用太大,根据数据集大小来,一般30GB的免费空间足以),每次启动实例之后再将这个EBS卷挂载到实例上,结束后将卷与实例分离,然后终止实例即可。

创建EBS卷

Amazon EBS全称Amazon Elastic Block Store,分为固态硬盘(SSD)和机械硬盘(HDD)两大类,又分为通用型SSD(gp2)、预配置 IOPS SSD (io1)、吞吐优化 HDD (st1)和Cold HDD (sc1)四大类。一般默认选择通用型SSD(gp2)

1、打开 Amazon EC2 控制台

2、在导航窗格中,选择 ELASTIC BLOCK STORE、卷;

3、选择“创建卷”;

4、输入“大小(GiB)”和“可用区域”。

5、选中新建的卷,点击“操作”—>“连接卷”,选择需要挂载的实例。

可用区域要和实例所在的区域一致。比如都设置为“us-east-1c”。

使卷可在Linux上使用

由于我们使用Deep Learning AMI均是在Linux操作系统下,这里只介绍Linux下的使用方法。(适用于windows的可以参考使卷可在Windows下可用

1、连接到实例,打开putty窗口(具体可参考windows下如何配置AWS进行深度学习);

2、附加的设备所采用的名称可能与指定的名称不同。例如,如果指定 /dev/sdf 的设备名称,则设备可能命名为 /dev/xvdf 或/dev/hdf。
使用$ df -h查看当前磁盘情况。并没有出现新添加的磁盘。

udacity@ip-x-x-x-x:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            483M     0  483M   0% /dev
tmpfs           100M  3.0M   97M   4% /run
/dev/xvda1       32G   13G   18G  42% /
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           496M     0  496M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/1001

使用lsblk命令查看可用磁盘设备及其装载点 (如果适用),其输出删除了完整设备路径中的 /dev/ 前缀。此例中,/dev/xvda1 装载为根设备 (请注意 MOUNTPOINT 被列为 /,即 Linux 文件系统层次结构的根),且附加了 /dev/xvdf,但它还未装载。

udacity@ip-x-x-x-x:~$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk
└─xvda1 202:1    0  32G  0 part /
xvdf    202:80   0  10G  0 disk

3、使用file 命令查看是否需要创建文件系统。新卷为原始的块存储设备,必须先创建文件系统,才能装载使用;快照还原的卷可能已经有文件系统。使用sudo file -s device_name命令(device_name为设备名称),若显示data,则说明设备上没有文件系统。

udacity@ip-x-x-x-x:~$ sudo file -s /dev/xvdf
/dev/xvdf: data

sudo表示使用管理员权限

(若没有文件系统)使用mkfs在卷上创建ext4文件系统。sudo mkfs -t ext4 device_name

udacity@ip-x-x-x-x:~$ sudo mkfs -t ext4 /dev/xvdf

(若有文件系统)应该如此显示。

udacity@ip-x-x-x-x:~$ sudo file -s /dev/xvdf
/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=bba95d3c-e229-4570-aa40-84bc60baba95 (extents) (large files) (huge files)

4、创建装载点目录。装载点是卷在文件系统树中的位置,以及安装卷之后读写文件的位置。使用命令sudo mkdir mount_point,替换 mount_point 的位置,如 /data。

udacity@ip-x-x-x-x:~$ sudo mkdir /data

5、使用mount命令在刚才创建的位置装载卷。sudo mount device_name mount_point

udacity@ip-x-x-x-x:~$ sudo mount /dev/xvdf /data

再次运行$ df -h,可以看到已经装载成功。

udacity@ip-x-x-x-x:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            483M     0  483M   0% /dev
tmpfs           100M  3.1M   97M   4% /run
/dev/xvda1       32G   13G   18G  42% /
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           496M     0  496M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/1001
/dev/xvdf       9.8G   23M  9.2G   1% /data

将数据存入卷中

实际上就是将数据存入/data文件夹中。
使用$ ls -l /data可以查看新装载的卷的文件权限。

udacity@ip-x-x-x-x:~$ ls -l /data
total 16
drwx------ 2 root root 16384 May 20 05:50 lost+found
  • 其中第一位表示文件类型,d 是目录文件,l 是链接文件,- 是普通文件。
  • 第2-4位表示文件所有者的权限;第5-7位表示同组用户所具有的权限;第8-10位表示其他用户的权限。
  • r代表读,w代表写,x代表执行。

如果是上传文件,采用winscp是无法传入的,会被拒绝访问。可以先上传至AMI的用户目录下,然后使用$ sudo cp <-r>$ sudo mv <-r>命令复制或移动到EBS卷中。

udacity@ip-x-x-x-x:~$ sudo cp /home/carnd/test1.zip /data  # 复制文件
udacity@ip-x-x-x-x:~$ sudo cp -r /home/carnd/test1/ /data  # 复制文件夹
udacity@ip-x-x-x-x:~$ sudo mv /home/carnd/train.zip /data  # 移动文件
udacity@ip-x-x-x-x:~$ sudo rm -r /home/carnd/test1/ /data  # 删除文件夹

对于整体复制或者移动的文件夹,会继承源文件中的权限(一般为drwx------),因此需要修改权限,可以使用chmod命令。

udacity@ip-x-x-x-x:~$ sudo chmod 777 /data  # 将data文件夹修改为可读可写执行

r w x - 可以用数字表示:r(4), w(2), x(1), -(0)。因此权限修改可以用三位数字代替:
- rw——- (600) 只有所有者才有读和写的权限
- rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
- rwx—— (700) 只有所有者才有读,写,执行的权限
- rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
- rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
- rw-rw-rw- (666) 每个人都有读写的权限
- rwxrwxrwx (777) 每个人都有读写和执行的权限

将卷与实例分离

1、使用以下命令卸载 /dev/xvdf 设备。

udacity@ip-x-x-x-x:~$ sudo umount -d /dev/xvdf

2、打开 Amazon EC2 控制台

3、在导航窗格中,选择 Volumes;

4、选择卷,然后选择 Actions、Detach Volume;

5、在确认对话框中,选择 Yes, Detach。


[1] https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/EBSVolumes.html
[2] https://www.cnblogs.com/geekdc/p/5497919.html(Linux chmod命令修改文件与文件夹权限命令代码)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值