Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使 Amazon EBS 卷可在 Linux 上使用

将某个 Amazon EBS 卷连接到您的实例后,该卷将显示为块储存设备您可以使用任何文件系统将卷格式化,然后进行装载。在使 EBS 卷可供使用后,您可以像访问其他所有卷一样访问该卷。任何写入此文件系统的数据均写入 EBS 卷,并且对使用该设备的应用程序是透明的。

您可以制作 EBS 卷的快照以进行备份或在您创建其他卷时作为基准。有关更多信息,请参阅Amazon EBS 快照

您可以从 Amazon EC2 用户指南(适用于 Windows 实例) 中的使卷可在 Windows 上使用,获得有关 Windows 实例上的卷的指示。

使 EBS 卷可在 Linux 上使用

  1. 使用 SSH 连接到您的实例。有关更多信息,请参阅连接到您的 Linux 实例

  2. 根据内核的块储存设备驱动程序,附加的设备所采用的名称可能与您指定的名称不同。例如,如果您指定 /dev/sdh 的设备名称,则设备可能命名为 /dev/xvdh/dev/hdh。在大多数情况下,尾部字母保持不变。在某些版本的 Red Hat Enterprise Linux (及其变体,例如,CentOS) 中,即使尾部字母可能发生变化 (/dev/sda 可能变为 /dev/xvde)。在这些情况下,每个设备名称的尾部字母都会递增相同次数。例如,如果 /dev/sdb 重命名为 /dev/xvdf,则 /dev/sdc 重命名为 /dev/xvdg。Amazon Linux 会为您指定的名称创建一个指向重命名设备的符号链接。其他操作系统的行为方式可能有所不同。

    使用 lsblk 命令可查看可用磁盘设备及其装载点(如果适用),以帮助您确定要使用的正确设备名称。

    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdf 202:80 0 100G 0 disk xvda1 202:1 0 8G 0 disk /

    lsblk 的输出从完整的设备路径中去掉了 /dev/ 前缀。在此示例中,/dev/xvda1 装载为根设备 (请注意 MOUNTPOINT 被列为 /,即 Linux 文件系统层次结构的根),且附加了 /dev/xvdf,但它还未装载。

    基于 Nitro 的实例上,EBS 卷显示为 NVMe 块储存设备。您指定的设备名称将使用 NVMe 设备名称 (/dev/nvme[0-26]n1) 进行重命名。有关更多信息,请参阅Amazon EBS 和 NVMe

  3. 确定是否要在卷上创建文件系统。新卷为原始的块储存设备,您必须先在这种设备上创建文件系统,然后才能够装载并使用它们。从快照还原的卷可能已经含有文件系统;如果您在现有的文件系统上创建新的文件系统,则该操作将覆盖您的数据。使用 sudo file -s device 命令列出特殊信息,例如文件系统类型。

    [ec2-user ~]$ sudo file -s /dev/xvdf /dev/xvdf: data

    如果前面的命令的输出仅显示该设备的 data,则说明设备上没有文件系统,您必须创建一个文件系统。您可继续步骤 4。如果您在包含文件系统的设备上运行该命令,则您的输出将有所不同。

    [ec2-user ~]$ sudo file -s /dev/xvda1 /dev/xvda1: Linux rev 1.0 ext4 filesystem data, UUID=1701d228-e1bd-4094-a14c-8c64d6819362 (needs journal recovery) (extents) (large files) (huge files)

    在以上示例中,该设备包含 Linux rev 1.0 ext4 filesystem data,因此,此卷无需创建文件系统 (如果您的输出中显示文件系统数据,则可以跳过步骤 4)。

  4. (视情况而定) 使用以下命令在卷上创建 ext4 文件系统。用设备名称 (例如,/dev/xvdf) 替换 device_name。根据应用程序的要求或操作系统的限制,您可以选择其他文件系统类型,如 ext3 或 XFS。

    警告

    此步骤假定您在装载空的卷。如果装载已包含数据的卷(例如,从快照还原的卷),请勿在装载卷之前使用 mkfs(而是跳到下一步)。否则,您会格式化卷并删除现有数据。

    [ec2-user ~]$ sudo mkfs -t ext4 device_name
  5. 使用以下命令创建卷的装载点目录。装载点是卷在文件系统树中的位置,以及您在安装卷之后读写文件的位置。替换 mount_point 的位置,如 /data

    [ec2-user ~]$ sudo mkdir mount_point
  6. 使用以下命令在您刚才创建的位置装载卷。

    [ec2-user ~]$ sudo mount device_name mount_point
  7. (可选) 要在每一次系统重启时装载此 EBS 卷,可在 /etc/fstab 文件中为该设备添加一个条目。

    1. 创建 /etc/fstab 文件的备份,当您进行编辑时意外损坏或删除了此文件的情况下,可以使用该备份。

      [ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig
    2. 使用任何文本编辑器(如 nanovim)打开 /etc/fstab 文件。

      注意

      您必须以根身份或使用 sudo 命令打开该文件。

    3. 使用以下格式在该文件末尾为您的卷添加一个新行:

      device_name mount_point file_system_type fs_mntops fs_freq fs_passno

      此行的最后三个字段分别是文件系统装载选项、文件系统转储频率和启动时的文件系统检查顺序。如果您不知道这些值应该是什么值,请使用下面的示例中的值 (defaults,nofail 0 2)。有关 /etc/fstab 条目的更多信息,请参阅 fstab 手册页面(通过在命令行上输入 man fstab)。

      您可以在 /etc/fstab 中使用系统的当前设备名称(/dev/sda1/dev/xvda1 等),但建议改为使用设备的 128 位通用唯一标识符 (UUID)。系统声明的块储存设备名称可能会在各种情况下更改,但是格式化时 UUID 会分配给卷分区,并在整个分区的使用寿命期间保留。通过使用 UUID,您可以减少 /etc/fstab 中块储存设备映射的机会,使系统在硬件重新配置后无法引导。

      要查找设备的 UUID,请首先显示可用设备:

      [ec2-user ~]$ df

      下面是示例输出:

      Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 8123812 1876888 6146676 24% / devtmpfs 500712 56 500656 1% /dev tmpfs 509724 0 509724 0% /dev/shm

      接下来,继续本示例,检查两个命令中任意一个的输出,以找到 /dev/xvda1 的 UUID:

      • sudo file -s /dev/xvda1

      • ls -al /dev/disk/by-uuid/

      假设您找到具有 UUID /dev/xvda1de9a1ccd-a2dd-44f1-8be8-0123456abcdef,您可以将以下条目添加到 /etc/fstab 以在装载点 /data 装载 ext4 文件系统:

      UUID=de9a1ccd-a2dd-44f1-8be8-0123456abcdef /data ext4 defaults,nofail 0 2

      注意

      如果您要在未附加该卷的情况下启动实例 (例如,以便该卷可以在不同实例之间向后和向前移动),则应添加 nofail 装载选项,该选项允许实例即使在卷安装过程中出现错误时也可启动。Debian 衍生物 (包括早于 16.04 的 Ubuntu 版本) 还必须添加 nobootwait 装载选项。

    4. 在您将新条目添加到 /etc/fstab 后,必须检查您的条目是否有效。在 /etc/fstab 中运行以下命令以卸载设备,然后装载所有文件系统。

      [ec2-user ~]$ sudo umount /data [ec2-user ~]$ sudo mount -a

      如果 mount 命令未产生错误,则说明您的 /etc/fstab 文件正常,您的文件系统会在下次启动时自动装载。如果该命令产生了任何错误,请检查这些错误并尝试更正 /etc/fstab

      警告

      /etc/fstab 文件中的错误可能显示系统无法启动。请勿关闭 /etc/fstab 文件中有错误的系统。

    5. (可选) 如果您无法确定如何更正 /etc/fstab 错误,则始终可以使用以下命令还原您的备份 /etc/fstab 文件。

      [ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab
  8. 检查新卷装载的文件权限,确保您的用户和应用程序可以向该卷写入数据。有关文件权限的更多信息,请参阅 Linux 文档项目 文件安全性