我正在运行一台带有 512GB EBS 挂载点的 Amazon EC2 机器。我的计划是将 EBS 分成两部分 - 一部分由 Docker 1.11 用于其镜像(通过 devicemapper),另一部分绑定到 docker VM(用于持久存储一些大数据)
admin@ip-172:~/docker-setup$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data direct-lvm twi-a-tz-- 230.39g 4.19 10.06
homedata direct-lvm -wi-a----- 256.00g
metadata direct-lvm -wi-a----- 12.00g
admin@ip-172:~/docker-setup$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/xvdg1 direct-lvm lvm2 a-- 512.00g 13.38g
admin@ip-172:~/docker-setup$ sudo dmsetup ls --tree
docker-202:2-407552-76fd7e91f9d116412221e660108dbf577ecaa301796068e63bd3007e402d2ccf (254:6)
└─direct--lvm-data-tpool (254:4)
├─direct--lvm-data_tdata (254:3)
│ └─ (202:97)
└─direct--lvm-data_tmeta (254:1)
└─ (202:97)
direct--lvm-metadata (254:2)
└─ (202:97)
direct--lvm-data (254:5)
└─direct--lvm-data-tpool (254:4)
├─direct--lvm-data_tdata (254:3)
│ └─ (202:97)
└─direct--lvm-data_tmeta (254:1)
└─ (202:97)
direct--lvm-homedata (254:0)
└─ (202:97)
我正在将 /dev/direct-lvm/homedata 挂载到 docker VM 上的 /bigdata。docker inspect 显示以下内容:
{
"Source": "/dev/direct-lvm/homedata",
"Destination": "/bigdata",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
但是,目录 /bigdata 显示为 10mb udev mount。
deployer@b11853af11c3$$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/docker-202:2-407552-76fd7e91f9d116412221e660108dbf577ecaa301796068e63bd3007e402d2ccf 10475520 6065028 4410492 58% /
tmpfs 7849700 0 7849700 0% /dev
tmpfs 7849700 0 7849700 0% /sys/fs/cgroup
/dev/xvda2 8124836 1231776 6457300 17% /run
udev 10240 56 10184 1% /bigdata
shm 65536 0 65536 0% /dev/shm
我还有很多其他挂载,它们只是本地目录,它们工作得很好。但是当我尝试绑定挂载 lvm 卷时,它根本不起作用。怎么回事?我应该在这里对 lvm 卷做些什么来使其可挂载吗?请帮忙。
答案1
对于将来遇到这种情况的其他人。另外,抱歉我回避了这个问题。
在 AWS EC2 和 EBS 卷的特定情况下,您可以进行一些特定于云的更改,以使您的方法更加“云化”。
迭代 1:仅使用单独的 EBS 卷
使用单独的 EBS 卷比使用 LVM 管理单个 EBS 卷上的逻辑卷要简单得多。使用单独的 EBS 卷还可以获得更好的 I/O 性能。
迭代 2:原生使用 EBS 卷
您还可以使用音量插件(例如云存储这将允许您为每个容器分配单独的 EBS 卷。