【发布时间】:2021-03-03 04:12:29
【问题描述】:
我正在使用 AWS Batch,但希望增加容器可用的磁盘空间。我正在使用 CloudFormation 创建堆栈,并添加了一个 EC2::LaunchTemplate 以向我的实例添加 100GB 磁盘:(从堆栈中提取)
BigDiskTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
BlockDeviceMappings:
- DeviceName: '/dev/xvdcz'
Ebs:
Encrypted: true
VolumeSize: 100
VolumeType: gp2
LaunchTemplateName: BigDiskTemplate
MyComputeEnvironment:
Type: 'AWS::Batch::ComputeEnvironment'
Properties:
Type: MANAGED
ComputeEnvironmentName: MyEnv
ComputeResources:
Type: EC2
MinvCpus: 0
DesiredvCpus: 0
MaxvCpus: 256
LaunchTemplate:
LaunchTemplateName: BigDiskTemplate
InstanceTypes:
- optimal
- c5.large
Subnets:
- !Ref Subnet
SecurityGroupIds:
- !Ref SecurityGroup
InstanceRole: !Ref IamInstanceProfile
ServiceRole: !Ref BatchServiceRole
}
是的,我希望磁盘是临时的。是的,我知道一些 EC2 实例支持更大的磁盘,但我也想用 GPU 实例来做到这一点。
当我在容器中运行 lsblk 时,我得到:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1 259:0 0 100G 0 disk
└─nvme1n1p1 259:6 0 100G 0 part
nvme0n1 259:1 0 8G 0 disk
├─nvme0n1p1 259:2 0 8G 0 part /etc/hosts
└─nvme0n1p128 259:3 0 1M 0 part
太棒了!这是我的 100GB 磁盘。 但我不知道如何安装它。 根据示例和教程(诚然适用于 EC2),模板磁盘应该可以通过以下方式安装:
file -s /dev/nvme1n1
mkfs -t xfs /dev/nvme1n1
mkdir /data
mount /dev/nvme1n1 /data
但是,这些步骤中的大多数都会出错。如“/dev/nvme1n1: 无法打开`/dev/nvme1n1' (No such file or directory)”; “mkfs.xfs:没有这样的文件或目录”; “挂载:/数据:权限被拒绝” 我也尝试过不同的驱动器名称 - 例如。 /dev/nvme1n1p1、nvme1n1 或 /nvme1n1/nvme1n1p1
那么我如何将这个磁盘挂载到我的容器中呢? Docker 是问题的一部分吗?
【问题讨论】:
-
您需要使用 sudo 或 root shell。
-
这是在 docker 容器内 - 即。默认为根。只是为了确保我尝试了 sudo(结果相同) - 但请注意,我必须将 sudo 安装到容器中才能使用它。
-
您需要创建文件系统并从容器外部挂载它。然后使用 docker 的
-v标志将它绑定到容器内。 -
我该怎么做?容器内的 lsblk 正在显示磁盘。
标签: amazon-web-services docker amazon-cloudformation amazon-ecs mount