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

Linux中的使 Amazon EBS 卷可用

将某个 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 AMI 会为您指定的名称创建一个指向重命名设备的符号链接。其他 AMI 的行为可能不同。

    使用 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,但它还未装载。

    对于 C5 和 M5 实例,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)。

      您可以使用系统的当前设备名称 (/dev/sda1/dev/xvda1等)在 /etc/fstab,中,我们建议使用设备的 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 de9a1ccd-a2dd-44f1-8be8-0123456abcdef/dev/xvda1,您可以将以下条目添加到 /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 后,必须检查您的条目是否有效。运行 sudo mount -a 命令,以便装载 /etc/fstab 中的所有文件系统。

      [ec2-user ~]$ sudo mount -a

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

      警告

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

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

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