在 Ubuntu 18.04 上安装大于 2TB 的 EBS 卷

在 Ubuntu 18.04 上安装大于 2TB 的 EBS 卷

我在 EC2 上运行了一个 Ubuntu 服务器,并在 上挂载了一个 EBS 卷/。我将 EBS 卷的大小调整为 16TB,然后才意识到将其用作根卷意味着分区,并且我可能需要一个特定的分区方案才能增加大小。

$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  7.4G     0  7.4G   0% /dev
tmpfs          tmpfs     1.5G  840K  1.5G   1% /run
/dev/xvda1     ext4      2.0T  1.8T  200G  90% /
tmpfs          tmpfs     7.4G     0  7.4G   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     7.4G     0  7.4G   0% /sys/fs/cgroup
/dev/loop1     squashfs   56M   56M     0 100% /snap/core18/1932
/dev/loop3     squashfs   29M   29M     0 100% /snap/amazon-ssm-agent/2333
/dev/loop4     squashfs   33M   33M     0 100% /snap/amazon-ssm-agent/2996
tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/1000
/dev/loop5     squashfs   56M   56M     0 100% /snap/core18/1944
/dev/loop6     squashfs   98M   98M     0 100% /snap/core/10577
/dev/loop2     squashfs   98M   98M     0 100% /snap/core/10583

运行后fdisk -l,我看到 /dev/xvda 是 15.6TiB,但我只在 /dev/xvda1 上使用其中的一部分:

Disk /dev/xvda: 15.6 TiB, 17179869184000 bytes, 33554432000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb32e823c

Device     Boot Start        End    Sectors Size Id Type
/dev/xvda1 *     2048 4294967294 4294965247   2T 83 Linux

在尝试后growpart /dev/xvda 1,我发现:

WARNING: MBR/dos partitioned disk is larger than 2TB. Additional space will go unused.
NOCHANGE: partition 1 could only be grown by 1 [fudge=2048]

经过谷歌搜索后,很明显我需要使用 GPT 重新分区如果我想挂载更大的根分区,可能还需要在 Ubuntu 内核中启用 GPT (?)。我实际上并不关心 EBS 卷是否挂载为根卷,我的唯一目标是 (1) 在某处挂载 16TB EBS 卷,以及 (2) 保留当前卷上特定目录中的数据。

我几乎没有处理这类事情的经验;这里最简单的事情是什么?

  1. 我是否可以创建一个新的、无分区的 16TB EBS 卷,将其安装在同一个 EC2 实例上(而不是作为根卷),然后将数据从根卷复制到新的更大的卷?
  2. 如果它不是根卷,我是否能够默认安装该大小的 EBS 卷?

答案1

经过一些实验,我可以说 (1) 和 (2) 的答案是“是”和“是”——唯一真正的问题是尝试使用大型 EBS 卷作为根卷

您确实可以安装没有分区的 16TB EBS 卷,Ubuntu 18.04 可以毫无问题地处理它。因此,最简单的方法是创建一个新的 16TB EBS 卷,将其安装在 EC2 实例上,然后复制所需的数据。

首先,您需要备份当前卷上的所有数据,以防万一。为此,您需要停止 EC2 实例(这仅在快照根卷时才需要)。然后,转到 EC2 控制台的 Elastic Block Store Volumes 页面,并选择“操作”下的“创建快照”。完成后,重新启动 EC2 实例。更多详细信息这里

  1. 在 AWS 控制台中创建一个 EBS 卷,并配置所需的大小和类型(gpt3 适合问题中的规格,但请参阅“Amazon EBS 卷类型”了解更多信息),并将其附加到正在运行的实例。此时无需停止实例或更改其配置。

  2. 通过 SSH 进入 EC2 实例并检查卷是否已连接但尚未挂载:

    ubuntu:~$ lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    loop1     7:1    0 55.4M  1 loop /snap/core18/1932
    loop2     7:2    0 97.9M  1 loop /snap/core/10583
    loop3     7:3    0 28.1M  1 loop /snap/amazon-ssm-agent/2333
    loop4     7:4    0 32.3M  1 loop /snap/amazon-ssm-agent/2996
    loop5     7:5    0 55.4M  1 loop /snap/core18/1944
    loop6     7:6    0 97.9M  1 loop /snap/core/10577
    xvda    202:0    0 15.6T  0 disk 
    └─xvda1 202:1    0    2T  0 part /
    xvdf    202:80   0   16T  0 disk 
    

    请注意,xvda(根卷)下面有一个分区(xvda1)并安装在 / 上,而新的 xvdf 卷既没有分区也没有挂载点。

  3. 新的 EBS 卷没有文件系统,因此您需要创建一个:sudo mkfs -t xfs /dev/xvdf。注意引用正确的卷,否则你将覆盖数据如果您尝试在已经包含文件系统的卷上创建新的文件系统。

  4. 创建一个位置来安装卷,我将其称为“数据”:sudo mkdir /data

  5. 挂载该卷,您将看到它出现在 的输出中df。(可选)更新 fstab 文件以在重启后自动挂载该卷,如所述这里

    ubuntu:~$ sudo mount /dev/xvdf /data
    ubuntu:~$ df -hT
    Filesystem     Type      Size  Used Avail Use% Mounted on
    udev           devtmpfs  7.4G     0  7.4G   0% /dev
    tmpfs          tmpfs     1.5G  828K  1.5G   1% /run
    /dev/xvda1     ext4      2.0T  1.8T  180G  91% /
    tmpfs          tmpfs     7.4G     0  7.4G   0% /dev/shm
    tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
    tmpfs          tmpfs     7.4G     0  7.4G   0% /sys/fs/cgroup
    /dev/loop1     squashfs   56M   56M     0 100% /snap/core18/1932
    /dev/loop3     squashfs   29M   29M     0 100% /snap/amazon-ssm-agent/2333
    /dev/loop4     squashfs   33M   33M     0 100% /snap/amazon-ssm-agent/2996
    tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/1000
    /dev/loop5     squashfs   56M   56M     0 100% /snap/core18/1944
    /dev/loop6     squashfs   98M   98M     0 100% /snap/core/10577
    /dev/loop2     squashfs   98M   98M     0 100% /snap/core/10583
    /dev/xvdf      xfs        16T   17G   16T   1% /data
    
  6. 最后,设置所需的文件权限/data,并将您想要的任何文件复制到新驱动器上。考虑rsync在此处使用 ,因为它是一种不太脆弱的替代方案cp

相关内容