Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)

使 Amazon EBS 卷可在 Linux 上使用

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

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

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

格式化并附加到附加卷

假设您的根设备 /dev/xvda 拥有一个具有 EBS 卷的 EC2 实例,并且您已使用 /dev/sdf 将一个空的 EBS 卷添加到了该实例。按照以下过程使新附加的卷可用。

在 Linux 上格式化并挂载 EBS 卷

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

  2. 设备可附加到设备名称与您在块储存设备映射中指定的设备名称不同的实例。有关更多信息,请参阅Linux 实例上的设备命名。使用 lsblk 命令可查看可用磁盘设备及其挂载点(如果适用),以帮助您确定要使用的正确设备名称。lsblk 的输出从完整的设备路径中去掉了 /dev/ 前缀。

    以下是基于 Nitro 的实例的示例输出,输出将 EBS 卷显示为 NVMe 块储存设备。根设备为 /dev/nvme0n1。如果尚未附加,则附加卷为 /dev/nvme1n1

    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:0 0 10G 0 disk nvme0n1 259:1 0 8G 0 disk -nvme0n1p1 259:2 0 8G 0 part / -nvme0n1p128 259:3 0 1M 0 part

    以下是 T2 实例的示例输出。根设备为 /dev/xvda。如果尚未附加,则附加卷为 /dev/xvdf

    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk -xvda1 202:1 0 8G 0 part / xvdf 202:80 0 10G 0 disk
  3. 确定卷上是否存在文件系统。新卷为原始的块储存设备,您必须先在这种设备上创建文件系统,然后才能够挂载并使用它们。从快照还原的卷可能已经含有文件系统;如果您在现有的文件系统上创建新的文件系统,则该操作将覆盖您的数据。

    使用 file -s 命令获取设备信息,例如其文件系统类型。如果输出仅显示 data(如以下示例输出),则说明设备上没有文件系统,您必须创建一个文件系统。

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

    如果设备有文件系统,该命令会显示有关文件系统类型的信息。例如,以下示例输出显示具有 XFS 文件系统的根设备。

    [ec2-user ~]$ sudo file -s /dev/xvda1 /dev/xvda1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
  4. (有条件)如果您在上一步中发现设备上存在文件系统,请跳过此步骤。如果您有一个空卷,请使用 mkfs -t 命令在该卷上创建一个文件系统。

    警告

    如果要挂载已具有数据的磁盘(例如,通过快照还原的磁盘),请勿使用此命令。否则,您会格式化卷并删除现有数据。

    [ec2-user ~]$ sudo mkfs -t xfs /dev/xvdf

    如果出现“找不到 mkfs.xfs”错误,请使用以下命令安装 XFS 工具,然后重复上一命令:

    [ec2-user ~]$ sudo yum install xfsprogs
  5. 使用 mkdir 命令创建卷的挂载点目录。挂载点是卷在文件系统树中的位置,以及您在安装卷之后读写文件的位置。下面的示例创建一个名为 /data 的目录。

    [ec2-user ~]$ sudo mkdir /data
  6. 使用以下命令在您在上一步中创建的目录挂载卷。

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

  8. 重启实例后,挂载点不会自动保留。要在重启后自动挂载此 EBS 卷,请使用重启后自动附加附加卷

重启后自动附加附加卷

要在每次系统重启时附加附加的 EBS 卷,可在 /etc/fstab 文件中为该设备添加一个条目。

您可以在 /etc/fstab 中使用设备名称(如 /dev/xvdf),但建议改为使用设备的 128 位通用唯一标识符 (UUID)。设备名称可以更改,但 UUID 会在整个分区的使用寿命期间保留。通过使用 UUID,您可以减少系统在硬件重新配置后无法启动的机会。有关更多信息,请参阅识别 EBS 设备

重启后自动附加附加卷

  1. (可选)创建 /etc/fstab 文件的备份,以便在编辑时误损坏或删除此文件时使用。

    [ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig
  2. 使用 blkid 命令查找设备的 UUID。

    [ec2-user ~]$ sudo blkid /dev/xvda1: LABEL="/" UUID="ca774df7-756d-4261-a3f1-76038323e572" TYPE="xfs" PARTLABEL="Linux" PARTUUID="02dcd367-e87c-4f2e-9a72-a3cf8f299c10" /dev/xvdf: UUID="aebf131c-6957-451e-8d34-ec978d9581ae" TYPE="xfs"

    对于 Ubuntu 18.04,请使用 lsblk 命令。

    [ec2-user ~]$ sudo lsblk -o +UUID
  3. 使用任何文本编辑器(如 nanovim)打开 /etc/fstab 文件。

    [ec2-user ~]$ sudo vim /etc/fstab
  4. 将以下条目添加到 /etc/fstab 以在指定的挂载点挂载设备。这些字段是 blkid(或用于 Ubuntu 18.04 的 lsblk)返回的 UUID 值、挂载点、文件系统以及建议的文件系统挂载选项。有关更多信息,请参阅 fstab 的手册页(运行 man fstab)。

    UUID=aebf131c-6957-451e-8d34-ec978d9581ae /data xfs defaults,nofail 0 2

    注意

    如果您要在未附加此卷的情况下启动实例(例如,将卷移动到另一个实例之后),nofail 附加选项允许该实例即使在卷附加过程中出现错误时也可启动。Debian 衍生物 (包括早于 16.04 的 Ubuntu 版本) 还必须添加 nobootwait 挂载选项。

  5. 要检查条目是否有效,请在 /etc/fstab 中运行以下命令以卸载设备,然后挂载所有文件系统。如果未产生错误,则说明 /etc/fstab 文件正常,您的文件系统会在重启后自动挂载。

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

    如果收到错误消息,请解决文件中的错误。

    警告

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

    如果您无法确定如何更正 /etc/fstab 中的错误并且您在此过程的第一步中创建了一个备份文件,则可以使用以下命令从您的备份文件还原。

    [ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab