Links#
- Make an Amazon EBS volume available for use
- Map Amazon EBS volumes to NVMe device names
- Device names for volumes on Amazon EC2 instances
1. Important Points#
在 Linux EC2 上,EBS 卷在 Nitro 实例里通常会显示成 nvme 设备,而不是你 attach 时填写的 /dev/sdb 这类名字。实际设备名可能变化,所以第一步不是直接 mount,而是先识别真实设备。
核心原则:
先识别设备,再决定是否格式化
空盘才 mkfs
已有数据的卷不要 mkfs
持久挂载用 UUID,不要依赖 /dev/nvme* 这种会变的名字适合这个流程的场景:
new empty EBS volume:
create filesystem
mount to data directory
volume restored from snapshot or attached from another instance:
inspect filesystem
mount existing filesystem directly
boot persistence:
add UUID entry to /etc/fstab2. Find The Real Device#
先看块设备布局:
lsblk
lsblk -f如果需要更直接地确认设备上有没有文件系统:
sudo file -s /dev/nvme1n1判断标准:
lsblk:
看设备名、分区、挂载点
lsblk -f:
看 filesystem type 和 UUID
file -s:
看这个块设备是不是已经有文件系统签名如果看到的是分区而不是裸盘,比如 /dev/nvme1n1p1,就挂载分区,不要直接挂裸盘。
3. Format And Mount A New Empty Volume#
只有在确认是空盘时才格式化。文件系统按你的标准选 ext4 或 xfs 都可以;AWS 文档示例常用 xfs。
sudo mkfs -t xfs /dev/nvme1n1
sudo mkdir -p /data
sudo mount /dev/nvme1n1 /data
df -h /data如果你们标准是 ext4,命令就换成:
sudo mkfs -t ext4 /dev/nvme1n1如果设备已经有分区:
sudo mount /dev/nvme1n1p1 /data4. Mount An Existing Volume#
如果卷里本来就有数据,直接挂载对应设备或分区即可,不要执行 mkfs。
sudo mkdir -p /data
sudo mount /dev/nvme1n1 /data
df -h /data挂载前先确认文件系统类型:
lsblk -f
sudo file -s /dev/nvme1n15. Persistent Mount With UUID#
先拿 UUID:
sudo blkid /dev/nvme1n1把结果写到 /etc/fstab,推荐用 UUID=,不要用会变化的 /dev/nvme* 路径。
UUID=xxxx-xxxx /data xfs defaults,nofail 0 2如果你用的是 ext4,把第三列改成 ext4。
fstab 里常见的安全参数:
defaults:
常规挂载选项
nofail:
没挂上时不要直接把启动卡死更新后可以先验证一次:
sudo umount /data
sudo mount -a
df -h /data6. Directory Ownership And Shared Access#
挂载完成后,如果要让其他用户使用这块卷上的目录,通常是改挂载点里的目录权限,而不是改设备本身。
单用户目录:
sudo chown appuser:appuser /data
sudo chmod 750 /data多用户共享写入,推荐用组:
sudo groupadd datawriters
sudo usermod -aG datawriters alice
sudo usermod -aG datawriters bob
sudo chown root:datawriters /data
sudo chmod 2775 /data2775 里的 2 是 setgid 位,作用是让新建文件和子目录继承父目录的组,方便团队共享。
如果你要更细粒度控制,可以用 ACL:
sudo setfacl -m u:alice:rwx /data
sudo setfacl -m u:bob:rwx /data
sudo setfacl -d -m g:datawriters:rwx /data注意:
ext4 / xfs 这类常见 Linux 文件系统通常用 chown / chmod / setfacl
uid=/gid= 这类挂载参数更多用于 vfat / exfat 之类文件系统
权限要设在挂载后的目录上7. Classic Checks#
1. lsblk 看设备名、分区、挂载点
2. file -s 或 lsblk -f 确认是否已有文件系统
3. 空盘才 mkfs
4. mount 到目标目录
5. 需要重启后自动挂载就写 /etc/fstab8. Notes#
Nitro 实例:
/dev/sdb 这类名字不一定会原样出现在系统里
看到 nvme 设备是正常的
已有数据的卷:
直接挂载
不要先格式化
>2 TiB 卷:
如需手工分区,通常应使用 GPT