EBS Volume Mount


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/fstab

2. 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#

只有在确认是空盘时才格式化。文件系统按你的标准选 ext4xfs 都可以;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 /data

4. Mount An Existing Volume#

如果卷里本来就有数据,直接挂载对应设备或分区即可,不要执行 mkfs

sudo mkdir -p /data
sudo mount /dev/nvme1n1 /data
df -h /data

挂载前先确认文件系统类型:

lsblk -f
sudo file -s /dev/nvme1n1

5. 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 /data

6. 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 /data

2775 里的 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/fstab

8. Notes#

Nitro 实例:
    /dev/sdb 这类名字不一定会原样出现在系统里
    看到 nvme 设备是正常的

已有数据的卷:
    直接挂载
    不要先格式化

>2 TiB 卷:
    如需手工分区,通常应使用 GPT