我正在使用 AWS 作为我的生产服务器。昨天我的 mongodb 停止运行,它说没有足够的空间用于日志记录。为了添加更多空间,我在AWS控制台中编辑了卷并将卷大小增加到16Gib。linux命令行上lsblk的结果如下
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 8G 0 part /
parted 中的打印命令显示以下结果
print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
128 1049kB 2097kB 1049kB BIOS Boot Partition bios_grub
1 2097kB 8590MB 8588MB ext4 Linux
2 8590MB 17.2GB 8590MB Linux
df-h 显示以下结果
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 4.3G 3.5G 56% /
devtmpfs 488M 56K 488M 1% /dev
tmpfs 498M 0 498M 0% /dev/shm
我需要将额外的 8 GB 空间添加到 /dev/xvda1,而不丢失服务器上的任何内容。我对 Linux 服务器相当陌生。任何帮助或建议表示赞赏
EDIT1 - 在谷歌之后我也尝试做 resize2fs 但它显示以下输出
resize2fs /dev/xvda1
resize2fs 1.42.12 (29-Aug-2014)
The filesystem is already 2096635 (4k) blocks long. Nothing to do!
答案1
首先,在尝试此类操作之前,您应该进行完整备份。
您需要从分区表中删除第二个分区(例如使用gdisk
或parted
),然后将第一个分区扩展到新可用空间的末尾,最后扩展文件系统,以便它知道它有更多可用存储 - 最后一步是每种文件系统类型都不同。例如,如果 fs 是 xfs,您将使用xfs_growfs
.对于 ext2/3/4,您可以使用resize2fs
.该网站上有几个问题有很好的答案增长文件系统- 我强烈建议在尝试之前广泛研究这个主题。这并不困难,但即使是小错误也可能导致灾难性的数据丢失。
另一种选择是仅创建一个具有 16G 或更大磁盘的新虚拟机(或者一个较小的 1-4GB /dev/xvda boot/OS 磁盘和第二个较大的 /dev/xvdb 磁盘用于数据库 - 这将使事情变得更简单,如果您是否需要再次增加存储空间)。让第二个虚拟机与原始虚拟机完全相同,然后将数据从原始虚拟机复制到新虚拟机。
rsync
可能最适合复制 - 您可以在原始虚拟机仍在运行并为请求提供服务以获取大量数据时 rsync 数据,然后关闭其上的数据库服务并再次 rsync 以传输添加/更改的任何数据/自第一次 rsync 开始后已删除。然后关闭原始虚拟机,并重新启动新虚拟机,使其具有与原始虚拟机相同的 IP 地址等。这将最大限度地减少停机时间。