Làm thế nào để giảm kích thước âm lượng gốc AWS EBS?


16

Phóng to một thể hiện EC2 dễ như một hơi thở (ví dụ: tạo AMI, khởi chạy một thể hiện từ nó và sau đó thay đổi kích thước lưu trữ).

Nhưng giảm nó trở nên khó khăn hơn. Tôi muốn giảm kích thước khối lượng gốc của Amazon Block Services (EBS) của Amazon Web Services (AWS). Có một vài thủ tục cấp cao cũ trên mạng. Phiên bản chi tiết hơn mà tôi tìm thấy là câu trả lời một năm cho câu hỏi StackOverflow: làm thế nào để tôi có thể giảm dung lượng âm lượng ebs của mình , các bước có mức khá cao:

Tạo một khối EBS mới có kích thước mong muốn (ví dụ / dev / xvdg)

Khởi chạy một thể hiện và đính kèm cả hai khối EBS vào nó

Kiểm tra hệ thống tệp (của khối lượng gốc ban đầu): (ví dụ) e2fsck -f / dev / xvda1

Thu nhỏ tối đa âm lượng gốc: (ví dụ: ext2 / 3/4) thay đổi kích thước2fs -M -p / dev / xvda1

Sao chép dữ liệu qua dd:

  • Chọn kích thước khối (tôi thích 16MB)

  • Tính số lượng khối (sử dụng số khối từ đầu ra resize2fs): khối * 4 / (chunk_size_in_mb * 1024) - làm tròn một chút cho an toàn

  • Sao chép dữ liệu: (ví dụ) dd if = / dev / xvda1 ibs = 16M of = / dev / xvdg obs = 16M Count = 80

Thay đổi kích thước hệ thống tập tin trên ổ EBS mới (nhỏ hơn): (ví dụ) resize2fs -p / dev / xvdg

Kiểm tra hệ thống tệp (của khối gốc gốc): (ví dụ) e2fsck -f / dev / xvdg

Tháo khối lượng gốc EBS mới của bạn và đính kèm nó vào thể hiện ban đầu của bạn

Tôi không thể tìm thấy một bước chi tiết từng bước cách làm thế nào để giải pháp.

Khối lượng gốc EBS của tôi được đính kèm với một phiên bản Ubuntu HVM.

Bất kỳ trợ giúp sẽ được thực sự đánh giá cao.


Đó có vẻ là một giải pháp "làm thế nào" khá tốt.
ceejayoz

dd - bản sao đĩa-to-disk dd if = / dev / xvdf of = / dev / xvdh bs = 4k count = 227.613 e2fsck -f / dev / xvdh1 resize2fs -p / dev / xvdh1
sirkubax

Câu trả lời:


6

Trong Bảng điều khiển AWS:

  1. Dừng trường hợp bạn muốn thay đổi kích thước

  2. Tạo ảnh chụp nhanh của âm lượng hoạt động và sau đó tạo âm lượng "SSD Mục đích chung" từ ảnh chụp nhanh đó.

  3. Tạo một âm lượng "SSD mục đích chung" khác theo kích thước bạn muốn.

  4. Đính kèm 3 tập này vào ví dụ như:

    • / dev / sda1 cho âm lượng hoạt động.
    • / dev / xvdf cho âm lượng là kích thước đích.
    • / dev / xvdg cho âm lượng được tạo từ ảnh chụp nhanh của âm lượng hoạt động.
  5. Bắt đầu ví dụ.

  6. Đăng nhập vào thể hiện mới thông qua SSH.

  7. tạo các thư mục mới này:

mkdir /source /target

  1. tạo một hệ thống tập tin ext4 trên ổ đĩa mới:

mkfs.ext4 /dev/xvdf

  1. gắn kết nó vào thư mục này:

mount -t ext4 /dev/xvdf /target

  1. Điều này rất quan trọng, hệ thống tệp cần một e2label cho linux để nhận ra nó và khởi động nó, sử dụng "e2label / dev / xvda1" trên một ví dụ hoạt động để xem nó nên như thế nào, trong trường hợp này là nhãn: "/"

e2label /dev/xvdf /

  1. gắn kết âm lượng được tạo từ ảnh chụp nhanh:

mount -t ext4 /dev/xvdg /source

  1. Sao chép nội dung:

rsync -ax /source/ /target

Lưu ý: không có "/" theo sau "/ đích". Ngoài ra, có thể có một vài lỗi về symlink và attrs, nhưng thay đổi kích thước vẫn thành công

  1. Umount các hệ thống tập tin:

umount /target
umount /source

  1. Quay lại Bảng điều khiển AWS: Dừng phiên bản và tách tất cả các ổ đĩa.

  2. Đính kèm âm lượng có kích thước mới vào ví dụ: "/ dev / sda1"

  3. Bắt đầu ví dụ, và nó sẽ khởi động.

BƯỚC 10 QUAN TRỌNG : Dán nhãn cho âm lượng mới bằng "e2label" như đã đề cập ở trên, hoặc trường hợp sẽ xuất hiện để khởi động trong aws nhưng sẽ không vượt qua kiểm tra kết nối.


9
Tôi đã chạy qua các bước này nhiều lần (Ubuntu 14.04) và mỗi lần tôi đính kèm âm lượng mới, cá thể chỉ dừng lại. Bất kỳ ai khác gặp vấn đề này? Đây là bộ não của tôi!
thiesdiggity

2
Bạn không phải là người duy nhất. Tôi đã thử giải pháp này và các giải pháp khác và cũng như bản thân tốt của bạn, ví dụ của tôi cũng tắt.
blairmeister

1
@blairmeister Tôi có vấn đề tương tự, nhưng đã xoay sở để làm cho nó hoạt động! Hãy xem câu trả lời của tôi dưới đây nếu bạn vẫn bị mắc kẹt :)
Ruben Serrate

e2label của tôi là cloudimg-rootfs ... theo tất cả các bước này tôi có thể xác nhận trên Ubuntu 14.04 không hoạt động
NineCattoRules

1
Tôi bỏ qua câu trả lời này vì nó không bao gồm đủ các trường hợp sử dụng cho một âm lượng (như âm lượng khởi động) để bảo vệ người dùng khỏi thiệt hại do sơ ý.
Jesse Adelman

6

Không có giải pháp nào khác hoạt động nếu âm lượng được sử dụng làm thiết bị gốc (có thể khởi động).

Đĩa vừa tạo bị thiếu phân vùng khởi động, do đó, nó cần phải được cài đặt GRUB và một số cờ được thiết lập chính xác trước khi một cá thể có thể sử dụng nó làm ổ đĩa gốc.

Giải pháp của tôi (tính đến hôm nay, làm việc ) để thu nhỏ một khối lượng gốc là:

Bối cảnh: Chúng tôi có một ví dụ A, có khối lượng gốc mà chúng tôi muốn thu nhỏ. Hãy gọi tập này là VA. Chúng tôi muốn thu nhỏ VA từ 30 GB xuống còn 10 GB

  1. Tạo một thể hiện ec2 mới, B, có cùng hệ điều hành với thể hiện A. Là bộ lưu trữ, chọn một ổ đĩa cùng loại với VA, nhưng có kích thước 10GB. (hoặc bất cứ kích thước mục tiêu của bạn là gì). Vì vậy, bây giờ chúng ta có một cá thể B sử dụng tập mới này (hãy gọi nó là VB) làm tập gốc.
  2. Khi cá thể mới (B) đang chạy. Dừng lại và tách khối lượng gốc của nó (VB).

LƯU Ý: Các bước sau đây chủ yếu được lấy từ giải pháp của @bill:

  1. Dừng trường hợp bạn muốn thay đổi kích thước (A).

  2. Tạo ảnh chụp nhanh của âm lượng VA và sau đó tạo âm lượng "SSD Mục đích chung" từ ảnh chụp nhanh đó. Tập này chúng tôi sẽ gọi nó là VASNAP.

  3. Quay một phiên bản mới với amazon Linux, chúng tôi sẽ gọi trường hợp này C. Chúng tôi sẽ chỉ sử dụng phiên bản này để sao chép nội dung của VASNAP sang VB. Chúng tôi có lẽ cũng có thể sử dụng ví dụ A để thực hiện các bước này, nhưng tôi thích làm điều đó trong một máy độc lập.

  4. Đính kèm các tập sau vào thể hiện C. / dev / xvdf cho VB. / dev / xvdg cho VASNAP.

  5. Khởi động lại ví dụ C.

  6. Đăng nhập vào thể hiện C thông qua SSH.

  7. Tạo các thư mục mới này:

mkdir /source /target

  1. Định dạng phân vùng chính của VB với hệ thống tệp ext4:

mkfs.ext4 /dev/xvdf1

Nếu bạn không gặp lỗi, hãy chuyển sang Bước 11. Mặt khác, nếu bạn không có /dev/xvdf1, bạn cần tạo phân vùng bằng cách thực hiện i-vii sau:

i) Nếu /dev/xvdf1không tồn tại vì bất kỳ lý do gì, bạn cần tạo nó. Đầu tiên nhập:

sudo fdisk /dev/xvdf.

ii) Xóa đĩa bằng cách nhập: wipefs

iii) Tạo phân vùng mới bằng cách nhập: n

iv) Nhập pđể tạo phân vùng chính

v) Tiếp tục nhấn enter để tiếp tục cài đặt mặc định.

vi) Khi nó yêu cầu một lệnh một lần nữa, hãy nhập wđể viết các thay đổi và thoát.

vii) Xác minh bạn có /dev/xvdf1phân vùng bằng cách thực hiện: lsblk

Bạn sẽ thấy một cái gì đó như:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  250G  0 disk
└─xvda1 202:1    0  250G  0 part
xvdf    202:80   0   80G  0 disk
└─xvdf1 202:81   0   80G  0 part 
xvdg    202:96   0  250G  0 disk
└─xvdg1 202:97   0  250G  0 part

Bây giờ tiến hành Bước 11.

  1. Gắn kết nó vào thư mục này:

mount -t ext4 /dev/xvdf1 /target

  1. Điều này rất quan trọng, hệ thống tệp cần có một e2label để Linux nhận ra nó và khởi động nó, sử dụng "e2label / dev / xvda1" trên một ví dụ hoạt động để xem nó nên như thế nào, trong trường hợp này là nhãn: "/"

e2label /dev/xvdf1 /

  1. Gắn VASNAP trên / nguồn:

mount -t ext4 /dev/xvdg1 /source

  1. Sao chép nội dung:

rsync -vaxSHAX /source/ /target

Lưu ý: không có "/" theo sau "/ đích". Ngoài ra, có thể có một vài lỗi về symlink và attrs, nhưng thay đổi kích thước vẫn thành công

  1. Umount VB:

umount /target

  1. Quay lại Bảng điều khiển AWS: Dettach VB từ phiên bản C và cũng nhận được VA từ A.

  2. Đính kèm âm lượng có kích thước mới (VB) vào ví dụ: "/ dev / xvda"

  3. Khởi động A, bây giờ thiết bị gốc của nó là 10GB :)

  4. Xóa cả hai trường hợp B và C, và tất cả các tập trừ VB, hiện là tập gốc của A.


HĐH của bạn là gì?
NineCattoRules

@NineCattoRules Amazon Linux
Ruben Serrate

Tôi đã thử trên Ubuntu 14.04 và nó không hoạt động
NineCattoRules

@NineCattoRules Ouch ... Tôi có thể xác nhận nó hoạt động cho Amazon Linux, phải thực hiện gần đây.
Ruben Serrate

1
Không phải chúng ta nên gắn âm lượng ở bước 17 vào phần /dev/sda1nội bộ của /dev/xvda@RubenSerrate sao?
alper

2

Các bước sau đây làm việc cho tôi

Bước 1. Tạo ảnh chụp nhanh của âm lượng gốc và tạo âm lượng mới từ ảnh chụp nhanh (hãy gọi đây là bản sao âm lượng)

Bước 2. Tạo cá thể mới với khối lượng gốc ebs với kích thước mong muốn. (hãy gọi đây là thay đổi kích thước âm lượng) Âm lượng ebs này sẽ có phân vùng chính xác để khởi động. (Tạo một khối lượng ebs mới từ đầu không hiệu quả với tôi)

Bước 3. Đính kèm thay đổi kích thước âm lượng và sao chép âm lượng vào một thể hiện.

Bước 4. Định dạng thay đổi kích thước âm lượng.

sudo fdisk -l
    sudo mkfs -t ext4 /dev/xvdf1

Lưu ý: đảm bảo khối lượng phân vùng được nhập /dev/xvdf1không/dev/xvdf

Bước 5. Gắn thay đổi kích thước âm lượng và sao chép âm lượng mkdir / mnt / sao chép mkdir / mnt / thay đổi kích thước

sudo mount /dev/xvdh1 /mnt/copy
sudo mount /dev/xvdf1 /mnt/resize

Bước 6. Sao chép tập tin

rsync -ax /mnt/copy/ /mnt/resize

Bước 7. Đảm bảo nhãn e2 giống như âm lượng gốc

sudo E2label /dev/xvdh1 > cloudimg-rootfs
sudo E2label /dev/xvdf1 cloudimg-rootfs

Bước 8. Cập nhật grub.conf trên sao chép âm lượng để phù hợp với âm lượng mới udid

Tìm kiếm và thay thế uudid trong /boot/grub/grub.cfg

ubuntu@server:~/mnt$ sudo blkid
/dev/xvdh1: LABEL="cloudimg-rootfs" UUID="1d61c588-f8fc-47c9-bdf5-07ae1a00e9a3" TYPE="ext4"
/dev/xvdf1: LABEL="cloudimg-rootfs" UUID="78786e15-f45d-46f9-8524-ae04402d1116" TYPE="ext4"

Bước 9. Unmount volume

Bước 10. Đính kèm âm lượng ebs đã thay đổi kích thước mới vào thể hiện / dev / sda1


1
Kết hợp câu trả lời răng cưa @ruben với bản cập nhật UUID grub là những gì làm việc cho tôi.
Jonathan Maim

Lưu ý nhỏ khi tôi vừa lãng phí thời gian: Chạy blkidmà không sudotrả về kết quả được lưu trong bộ nhớ cache mà không xác nhận chúng. Vì vậy, nó sẽ trông giống như UUID đã không thay đổi.
Akhil Nair

0

Đây là một cách tiếp cận khác;

Đính kèm và gắn âm lượng EBS cũ trên phiên bản EC2 đang chạy. Nếu bạn muốn sao chép một ổ đĩa khởi động, tốt nhất nên thực hiện nó trong một trường hợp khác, với âm lượng cũ được gắn dưới dạng dữ liệu, không phải với âm lượng được sử dụng như một hệ thống trực tiếp.

Tạo một khối EBS mới có kích thước mong muốn.

Đính kèm âm lượng mới vào thể hiện và (cẩn thận) định dạng một hệ thống tệp mới trên nó (ví dụ: sử dụng mkfs). Gắn nó

Sao chép nội dung hệ thống tập tin cũ từ ổ đĩa cũ sang ổ đĩa mới:

rsync -vaxSHAX /oldvol/ /newvol/

Tháo âm lượng mới và tách nó ra khỏi thể hiện.

Nếu bạn đã sao chép hệ thống tập tin gốc, thì:

Tạo ảnh chụp nhanh EBS của âm lượng mới.

Đăng ký ảnh chụp nhanh như một AMI mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.