如何降低我的EBS卷容量

时间:2013-11-25 09:31:06

标签: amazon-ec2

我想在不丢失数据的情况下降低EBS卷容量

我想将容量从1TB更改为200 GB

请提供详细步骤。

2 个答案:

答案 0 :(得分:13)

我采用的降低EBS根卷的方法如下:

停止(不终止)目标实例,并分离根EBS卷。或者,您可以快照根卷(或使用现有快照)并从中创建新的EBS卷。 (例如/ dev / xvda1)

注意:您在上述步骤中使用的音量将被更改 - 因此您可能想拍摄快照(如果您尚未拍摄)。

Create a new EBS volume that is the desired size (e.g. /dev/xvdg)

Launch an instance, and attach both EBS volumes to it

Check the file system (of the original root volume): (e.g.) e2fsck -f /dev/xvda1

Maximally shrink the original root volume: (e.g. ext2/3/4) resize2fs -M -p /dev/xvda1

Copy the data over with dd:
    Choose a chunk size (I like 16MB)

    Calculate the number of chunks (using the number of blocks from the resize2fs output): blocks*4/(chunk_size_in_mb*1024) - round up a bit for safety

    Copy the data: (e.g.) dd if=/dev/xvda1 ibs=16M of=/dev/xvdg obs=16M count=80

Resize the filesystem on the new (smaller) EBS volume: (e.g.) resize2fs -p /dev/xvdg

Check the file system (of the new volume): (e.g.) e2fsck -f /dev/xvdg

Detach your new EBS root volume, and attach it to your original instance

答案 1 :(得分:0)

来自ezhilrean的回答没问题,但有一种更简单的方法。

假设您在/ dev / sdf1上有/ var分区的实例,并且希望将其从300GB减少到200GB(假设/ var上有<200GB的数据)

在与原始卷相同的AZ中创建新卷 将其作为/ dev / sdg附加到实例 使用root权限登录实例

fdisk /dev/sdg
n (for New)
p (for Primary)
Accept defaults for other fdisk options
w (for Write)

fdisk将退出。您现在需要在新分区上创建文件系统

mkfs.ext4 /dev/sdg1 (presuming that ext4 was used on existing partition)

接下来,在临时挂载点挂载新分区

mkdir /new
mount /dev/sdg1 /new

现在,复制您的数据

cd / var    cp -ax * / new /

更新/ etc / fstab以使用/ var

的新分区
/dev/sdg1   /var        ext4    defaults        0   0

重新启动

init 6

如果您需要/ var分区具有标识符/ dev / sdf1,则可以停止实例,分离两个EBS卷,并将新的较小的重新附加为/ dev / sdf 记住更改/ etc / fstab在你这样做之前