

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 Lightsail 块存储磁盘并将其连接到 Linux 实例
<a name="create-and-attach-additional-block-storage-disks-linux-unix"></a>

您可以为您的 Amazon Lightsail 实例创建和附加额外的块存储磁盘。创建其他磁盘后，您需要连接到基于 Linux/UNIX 的 Lightsail 实例，然后格式化并装载该磁盘。

本主题向您展示如何使用 Lightsail 创建新磁盘并连接该磁盘。它还介绍了如何使用 SSH 连接到基于 Linux/Unix 的实例，以便格式化并装载连接的磁盘。

如果您拥有基于 Windows Server 的实例，请改为参阅以下主题：[创建数据块存储磁盘并将其附加到 Windows Server 实例](create-and-attach-additional-block-storage-disks-windows.md)。

## 步骤 1：创建新磁盘并将其连接到您的实例
<a name="create-attach-new-disk-to-linux-unix-instance"></a>

1. 在左侧导航窗格中，选择**存储**。

1. 选择**创建磁盘**。

1. 选择您的 Lightsail 实例所在的 AWS 区域 和可用区。

1. 选择一种大小。

1. 输入磁盘的名称。

   资源名称：
   + 在你的 Lightsail 账户 AWS 区域 中，每个账户中必须是唯一的。
   + 必须包含 2 到 255 个字符。
   + 必须以字母数字字符或数字作为开头和结尾。
   + 可以包括字母数字字符、数字、句点、连字符和下划线。

1. 选择以下选项之一以将标签添加到磁盘：
   + **添加“仅限键”标签**或**管理标签**（如果已添加标签）。在标签键文本框中输入新标签，然后按 **Enter**。在您输入标签以添加它们后，选择 **Save**（保存），或者选择 **Cancel**（取消）以取消添加。  
![\[Lightsail 控制台中的仅限密钥的标签。\]](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-key-only-tags.png)
   + **创建一个键值标签**，然后在 **Key**（键）文本框中输入一个键，并在 **Value**（值）文本框中输入一个值。输入标签后，选择 **Save**（保存），或者选择 **Cancel**（取消）以取消添加。

     一次只能添加一个键值标签，然后进行保存。要添加多个键值标签，请重复前面的步骤。  
![\[Lightsail 控制台中的键值标签。\]](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-key-value-tag.png)
**注意**  
有关“仅键”标签和键值标签的更多信息，请参阅[标签](amazon-lightsail-tags.md)。

1. 选择 **Create disk**（创建磁盘）。

   在几秒钟后，将创建您的磁盘，并显示新的磁盘管理页面。

1. 从列表中选择您的实例，然后选择 **Attach**（连接）以将新磁盘连接到您的实例。

## 步骤 2：连接到您的实例以格式化并装载磁盘
<a name="connect-to-linux-unix-instance-using-ssh-format-mount-disk"></a>

1. 创建并连接磁盘后，返回 Lightsail 中的实例管理页面。

   默认情况下，将显示 **Connect**（连接）选项卡。  
![\[实例管理页面的 Connect 选项卡\]](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/lightsail-instance-management-page-connect-tab.png)

1. 选择 **Connect using SSH**（使用 SSH 连接）以连接到您的实例。

1. 在终端窗口中输入以下命令：

   ```
   lsblk
   ```

   `lsblk` 的输出从磁盘路径中忽略 `/dev/` 前缀。
**注意**  
2023 年 6 月 29 日，我们更新了 Lightsail 实例的基础硬件。在以下示例中，上一代实例的设备名称显示为 `/dev/xvda`。在此日期之后创建的实例的设备名称显示为 `/dev/nvme0n1`。

------
#### [ Current generation instances ]

   在以下示例输出中，根卷（`nvme0n1`）有两个分区（`nvme0n1p1` 和 `nvme0n1p128`），而额外的卷（`nvme1n1`）没有分区。

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

------
#### [ Previous generation instances ]

   在以下示例输出中，根卷（`xvda`）有一个分区（`xvda1`），而额外的卷（`xvdf`）没有分区。

   ```
   [ec2-user ~]$ sudo lsblk                
   NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   xvda    202:0    0  16G  0 disk
   └─xvda1 202:1    0   8G  0 part /
   xvdf    202:80   0  24G  0 disk
   ```

------

1. 确定是否在磁盘上创建文件系统。新磁盘为原始块存储设备，您必须在这些设备上创建文件系统，然后才能装载并使用这些设备。在通过快照还原的磁盘上可能已具有文件系统。如果在现有的文件系统上创建新的文件系统，该操作将覆盖您的数据。

   使用以下方法来确定您的磁盘是否有文件系统。如果您的磁盘没有文件系统，请继续执行**步骤 2.5**。如果您的磁盘确实有文件系统，请跳至**步骤 2.6**。

------
#### [ Current generation instances ]

   ```
   sudo file -s /dev/nvme1n1
   ```

   将会在全新的磁盘上看到以下输出。

   ```
   /dev/nvme1n1: data
   ```

   如果看到类似下面的输出，这意味着您的磁盘已具有文件系统。

   ```
   /dev/nvme1n1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
   ```

------
#### [ Previous generation instances ]

   ```
   sudo file -s /dev/xvdf
   ```

   将会在全新的磁盘上看到以下输出。

   ```
   /dev/xvdf: data
   ```

   如果看到类似下面的输出，这意味着您的磁盘已具有文件系统。

   ```
   /dev/xvda1: Linux rev 1.0 ext4 filesystem data, UUID=1701d228-e1bd-4094-a14c-12345EXAMPLE (needs journal recovery) (extents) (large files) (huge files)
   ```

------

1. 可以使用以下命令在磁盘上创建新的文件系统。用设备名称（例如`/dev/nvme1n1`）代替*device\$1name*。根据应用程序要求或操作系统限制，您可以选择不同的文件系统类型，如 `ext3` 或 `ext4`。
**重要**  
该步骤假定您装载的是空磁盘。如果在要装载的磁盘上已具有数据（例如，通过快照还原的磁盘），请在装载该磁盘之前不要使用 `mkfs`。而是跳到**步骤 2.6** 并创建一个挂载点。否则，您将会格式化磁盘并删除现有的数据。

------
#### [ Current generation instances ]

   ```
   sudo mkfs -t xfs device_name
   ```

   将会看到类似下面的输出。

   ```
   meta-data=/dev/nvme1n1           isize=512    agcount=16, agsize=1048576 blks
            =                       sectsz=512   attr=2, projid32bit=1
            =                       crc=1        finobt=1, sparse=1, rmapbt=0
            =                       reflink=1    bigtime=1 inobtcount=1
   data     =                       bsize=4096   blocks=16777216, imaxpct=25
            =                       sunit=1      swidth=1 blks
   naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
   log      =internal log           bsize=4096   blocks=16384, version=2
            =                       sectsz=512   sunit=1 blks, lazy-count=1
   realtime =none                   extsz=4096   blocks=0, rtextents=0
   ```

------
#### [ Previous generation instances ]

   ```
   sudo mkfs -t ext4 device_name
   ```

   您应看到类似下面的输出。

   ```
   mke2fs 1.42.9 (4-Feb-2014)
   Filesystem label=
   OS type: Linux
   Block size=4096 (log=2)
   Fragment size=4096 (log=2)
   Stride=0 blocks, Stripe width=0 blocks
   4194304 inodes, 16777216 blocks
   838860 blocks (5.00%) reserved for the super user
   First data block=0
   Maximum filesystem blocks=4294967296
   512 block groups
   32768 blocks per group, 32768 fragments per group
   8192 inodes per group
   Superblock backups stored on blocks:
   32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
   4096000, 7962624, 11239424
   
   Allocating group tables: done
   Writing inode tables: done
   Creating journal (32768 blocks): done
   Writing superblocks and filesystem accounting information: done
   ```

------

1. 可以使用以下命令创建磁盘的装载点目录。装载点是磁盘在文件系统树中的位置，以及在装载磁盘后读写文件的位置。将位置替换为未使用的空间，例如`/data`。*mount\$1point*

   ```
   sudo mkdir mount_point
   ```

1. 您可以输入以下命令，以验证在磁盘上现在是否具有文件系统。

------
#### [ Current generation instances ]

   ```
   sudo file -s /dev/nvme1n1
   ```

   您将会看到类似下面的输出，而不是 `/dev/nvme1n1: data`。

   ```
   /dev/nvme1n1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
   ```

------
#### [ Previous generation instances ]

   ```
   sudo file -s /dev/xvdf
   ```

   您将会看到类似下面的输出，而不是 `/dev/xvdf: data`。

   ```
   /dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=0ee83fdf-e370-442e-ae38-12345EXAMPLE (extents) (large files) (huge files)
   ```

------

1. 最后，键入以下命令以挂载磁盘。

   ```
   sudo mount device_name mount_point
   ```

   检查新磁盘装载的文件权限，以确保您的用户和应用程序可以在该磁盘中写入数据。有关文件权限的更多信息，请参阅《Amazon EC2 用户指南》**中的[使 Amazon EBS 卷可用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html)。

## 步骤 3：每次重启您的实例时装载磁盘
<a name="mount-disk-every-time-reboot-instance-linux-unix"></a>

每次重启 Lightsail 实例时，你可能都想挂载这张磁盘。如果不希望这样做，则该步骤是可选的。

1. 要在每次系统重启时装载该磁盘，请在 `/etc/fstab` 文件中为该设备添加一个条目。

   创建 `/etc/fstab` 文件的备份，以便在编辑时误损坏或删除该文件时使用。

   ```
   sudo cp /etc/fstab /etc/fstab.orig
   ```

1. 使用任何文本编辑器（如 vim）打开 `/etc/fstab` 文件。

   您必须在打开该文件之前输入 `sudo`，以便保存更改。

1. 在该文件末尾，使用以下格式为磁盘添加一个新行。

   ```
   device_name  mount_point  file_system_type  fs_mntops  fs_freq  fs_passno
   ```

   例如，新行可能如下所示。

------
#### [ Current generation instances ]

   ```
   /dev/nvme1n1 /data xfs defaults,nofail 0 2
   ```

------
#### [ Previous generation instances ]

   ```
   /dev/xvdf /data ext4 defaults,nofail 0 2
   ```

------

1. 保存文件并退出文本编辑器。