Thu nhỏ kích thước khối lượng Amazon EBS


25

Tôi đã thấy câu trả lời này để tăng khối lượng EBS , nhưng tôi muốn thu nhỏ lại.

Hình ảnh máy chủ Ubuntu mặc định là 15 GB trong khi tôi thực sự chỉ cần tối đa 2 GB (tôi sử dụng một âm lượng khác cho dữ liệu). Có cách nào để thu nhỏ kích thước của âm lượng không?

Câu trả lời:


27

Tôi đã có cùng một câu hỏi với bạn, vì vậy tôi đã tìm ra cách để làm điều đó.

Đầu tiên, tôi đã làm điều này từ ami được hỗ trợ EBS của Ubuntu 32 bit từ khu vực Đông Hoa Kỳ, các hình ảnh hoặc hệ điều hành khác có thể hoạt động khác nhau. Tuy nhiên, tôi nghi ngờ rằng bạn sẽ ổn, miễn là bạn đang sử dụng một hệ thống tập tin ext *. Nó có thể hoạt động trên các hệ thống tập tin khác, nhưng bạn sẽ phải tự mình tìm ra cách thay đổi kích thước chúng.

Các bước cơ bản là:

  1. Đính kèm hai tập vào một thể hiện đang chạy, lần đầu tiên dựa trên ảnh chụp nhanh bạn muốn thu nhỏ và lần thứ hai một tập trống có kích thước mới mà bạn muốn thu nhỏ lại.

  2. Kiểm tra hệ thống tập tin của tập đầu tiên và sửa chữa bất kỳ lỗi nào.

  3. Thu nhỏ hệ thống tệp trên ổ đĩa đầu tiên để nó chỉ lớn bằng mức cần thiết để giữ dữ liệu.

  4. Sao chép hệ thống tập tin từ tập đầu tiên sang tập thứ hai.

  5. Mở rộng hệ thống tệp trên ổ đĩa thứ hai đến kích thước tối đa của nó.

  6. Hãy chắc chắn rằng mọi thứ đều ổn bằng cách kiểm tra lỗi thứ hai.

  7. Chụp nhanh tập thứ hai.

  8. Tạo hình ảnh máy dựa trên ảnh chụp nhanh của tập thứ hai bạn vừa chụp.

Trước tiên bạn cần lấy một số thông tin từ ami bạn muốn thu nhỏ. Cụ thể, bạn cần ID hạt nhân và ID ramdisk, nếu có (hình ảnh tôi thu nhỏ không có ramdisk). Tất cả thông tin này nên có sẵn từ bảng điều khiển quản lý aws, trong cửa sổ AMI.

ID kernel trông giống như kia-xxxxxxxx và ID snapshot trông giống như snap-xxxxxxxx và ID ramdisk trông giống như RIA-xxxxxxxx.

Tiếp theo, khởi chạy một phiên bản linux. Tôi đã khởi chạy một phiên bản Ubuntu. Bạn có thể sử dụng một ví dụ t1.micro nếu bạn muốn. Nó không mất nhiều sức để làm những bước tiếp theo.

Sau khi máy đang chạy, hãy đính kèm ảnh chụp nhanh mà bạn đã ghi lại từ bước đầu tiên. Trong trường hợp của tôi, tôi đã đính kèm nó vào / dev / sdf

Sau đó, tạo một âm lượng mới, có kích thước bạn muốn. Trong trường hợp của tôi, tôi đã tạo ra dung lượng 5 GB, vì đó là kích thước tôi muốn thu nhỏ lại. Đừng tạo tập mới này từ ảnh chụp nhanh. Chúng tôi cần một khối lượng trống mới. Tiếp theo, đính kèm nó vào ví dụ đang chạy, trong trường hợp của tôi, tôi đã đính kèm nó dưới dạng / dev / sdg

Tiếp theo, ssh vào máy nhưng không gắn khối lượng đính kèm.

Tại thời điểm này, tôi đã nhầm lẫn về phía hoang tưởng và tôi đã chọn kiểm tra hệ thống tệp trên khối lượng lớn, chỉ để đảm bảo không có lỗi. Nếu bạn tự tin rằng không có ai, bạn có thể bỏ qua bước này:

$ sudo e2fsck -f /dev/sdf

Tiếp theo, tôi thay đổi kích thước hệ thống tệp trên ổ đĩa lớn để nó chỉ lớn bằng dữ liệu trên đĩa:

$ sudo resize2fs -M -p /dev/sdf

-M thu nhỏ nó và -p in tiến trình.

Resize2fs sẽ cho bạn biết hệ thống tập tin shrunkin lớn như thế nào. Trong trường hợp của tôi, nó cho tôi kích thước trong các khối 4K.

Bây giờ chúng tôi sao chép hệ thống tập tin shrunkin vào đĩa mới. Chúng tôi sẽ sao chép dữ liệu trong các đoạn 16 MB, vì vậy chúng tôi cần tìm ra số lượng 16 MB mà chúng tôi cần sao chép. Đây là nơi mà kích thước hệ thống tập tin thu nhỏ trong handey.

Trong trường hợp của tôi, hệ thống tệp bị thu hẹp chỉ hơn 1 GB, vì tôi đã cài đặt rất nhiều chương trình khác trên hệ thống Ubuntu cơ bản trước khi chụp ảnh nhanh. Tôi có thể đã nhận được chỉ với việc sao chép kích thước của hệ thống tệp được làm tròn đến 16 MB gần nhất, nhưng tôi muốn chơi nó an toàn.

Vì vậy, 128 lần khối 16 MB = 2GB:

$ sudo dd if=/dev/sdf ibs=16M of=/dev/sdg obs=16M count=128

Tôi đã sao chép trong các khối 16 MB vì ​​với EBS, bạn trả tiền cho mỗi lần đọc và viết, vì vậy tôi muốn giảm thiểu số lượng chúng càng nhiều càng tốt. Tôi không biết nếu làm theo cách này đã làm như vậy, nhưng có lẽ nó không bị tổn thương.

Sau đó, chúng ta cần thay đổi kích thước hệ thống tệp mà chúng ta vừa sao chép sang ổ đĩa mới để nó sử dụng tất cả không gian có sẵn trên ổ đĩa.

$ sudo resize2fs -p /dev/sdg

Cuối cùng, hãy kiểm tra nó, để đảm bảo mọi thứ đều ổn:

$ sudo e2fsck -f /dev/sdg

Đó là tất cả những gì chúng ta cần làm trong cỗ máy này, mặc dù việc lắp âm lượng mới không phải là một thử nghiệm. Tuy nhiên, bước này gần như chắc chắn là tùy chọn, vì e2fsck nên đã bắt gặp bất kỳ vấn đề nào.

Bây giờ chúng ta cần chụp nhanh ổ đĩa mới và tạo AMI dựa trên nó. Chúng tôi đã hoàn thành với máy, vì vậy bạn có thể chấm dứt nếu bạn muốn.

Đảm bảo âm lượng nhỏ không bị ngắt nếu bạn gắn nó, và sau đó chụp ảnh nhanh. Một lần nữa, bạn có thể làm điều này trong bảng điều khiển quản lý.

Bước cuối cùng yêu cầu các công cụ ec2 dòng lệnh.

CHỈNH SỬA:

Vì câu trả lời này đã được đăng, bảng điều khiển AWS cho phép bạn chỉ cần nhấp chuột phải vào ảnh chụp nhanh và chọn Tạo hình ảnh từ Ảnh chụp. Bạn vẫn sẽ cần chọn ID hạt nhân thích hợp. Nếu nó không xuất hiện trong danh sách, hãy đảm bảo bạn đã chọn kiến ​​trúc phù hợp.

Chúng tôi sử dụng ứng dụng đăng ký ec2 để đăng ký AMI dựa trên ảnh chụp nhanh bạn vừa chụp, vì vậy hãy ghi lại giá trị snap-xxxxxxxx từ ảnh chụp bạn vừa chụp.

Sau đó, bạn nên sử dụng một lệnh như:

ec2-register -C cert.pem -K sk.pem -n The_Name_of_Your_New_Image
-d Your_Description_of_This_New_AMI --kernel aki-xxxxxxxx
-b "/dev/sda1=snap-xxxxxxxx" --root-device-name /dev/sda1

Tất nhiên bạn cần thay thế ID kernel bằng ID bạn đã viết ở đầu và ID snapshot bằng ID bạn đã tạo ở bước trước. Bạn cũng cần trỏ nó vào khóa bí mật của bạn (được gọi là sk.pem) ở trên và chứng chỉ x509 của bạn (được gọi là cert.pem). Tất nhiên bạn có thể chọn bất cứ điều gì bạn muốn cho tên và mô tả.

Hi vọng điêu nay co ich.


Cảm ơn, điều đó đã giúp! Đối với khối lượng lớn (như 1TB), quy trình này mất nhiều thời gian trong trường hợp vi mô. Tôi đã thấy sao chép âm lượng dựa trên rsync, dựa trên rsync (ví dụ ở đây ubuntuforums.org/showpost.php?p=9866025&postcount=27 ), nhưng cách tiếp cận dựa trên dd cảm thấy đáng tin cậy hơn nhiều, ngay cả đối với các ổ đĩa không gốc.
chronos

Lệnh đầu tiên sudo e2fsck -f /dev/sdfcó thể là một bước bắt buộc trước khi thực hiện thay đổi kích thước (trong trường hợp cụ thể của tôi, Amazon Linux AMI).
notacouch

1
Nên rõ ràng nhưng đừng quên tạo một hệ thống tệp trên ổ đĩa (/ facepalm) theo tài liệu AWS , sudo mkfs -t ext4 /dev/sdg.
notacouch

1

Vâng, tôi đã tự hỏi điều này quá. Hướng dẫn sau đây là quá mức cần thiết, nhưng tôi nghĩ rằng nó chứa các công cụ cần thiết: http://www.linuxconfig.org/Howto_CREATE_BUNDLE_UPLOAD_and_ACCESS_custom_Debian_AMI_USE_ub Ubuntu

Thay vì cài đặt vào một hình ảnh đĩa mới như trên, có thể kích hoạt AMI lớn, tạo EBS mới, gắn EBS vào phiên bản đang chạy và sao chép AMI đang chạy sang EBS mới. Cuối cùng, đăng ký EBS mới dưới dạng AMI.

Hãy xem bài đăng trên blog này để biết thêm một số nền tảng, đặc biệt là nhận xét của freremark: http://alests.com/2010/01/public-ebs-boot-amis-for-ub Ubuntu-on-amazon-ec2

Trên một lưu ý cuối cùng, euca2ools có vẻ như là một sự thay thế tuyệt vời cho ec2-ami-tools - euca2ools bao gồm các trang thực tế! Chúng có tất cả các tên giống như các lệnh ec2- *, chỉ với tiền tố euca-. http://open.eucalyptus.com/wiki/Euca2oolsSử dụng


0

Tôi muốn giảm kích thước của âm lượng đang được sử dụng bởi một thể hiện EC2 chung. Tôi đã làm theo các bước tương tự với các câu trả lời khác ở đây nhưng gặp phải một vấn đề. Vì vậy, đây là những gì tôi đã phải làm để thu nhỏ khối lượng gốc của mình ...

Trong bảng điều khiển AWS

 1. Stop the source EC2 instance
 2. Create a snapshot of the volume you want to shrink
 3. Use the snapshot to create a new 'source' volume
 4. Created a new volume with smaller size (made sure it was big enough for the data on source)
 5. Attached both volumes to any EC2 instance (mine were /dev/sdf = source & /dev/sdg = target)
 6. Start the EC2 instance

Trên ví dụ EC2

 7. sudo su -   (everything from here is run as root)
 8. mkdir /source /target
 9. mount -t ext4 /dev/sdf /source
 10. mkfs.ext4 /dev/sdg
 11. mount -t ext4 /dev/sdg /target
 12. rsync -aHAXxSP /source/ /target 
     ** notice that there is no trailing '/' after target if 
       you put one there your data will be copied to 
       /target/source and you will have to move it up a directory
 13. cat /boot/grub/grub.conf  (indicated that grub is using root=LABEL=/)
 14. cat /source/etc/fstab (indicated that fstab was also using LABEL=/)
 15. e2label /dev/sdg /
 16. umount /source
 17. umount /target

Quay lại Bảng điều khiển AWS

 18. Stop the instance
 19. Detach ALL volumes from the instance
 20. Attach the 'target' volume to the instance using /dev/sda1 as the device
 21. Start the instance

Đây là nơi chúng tôi gặp phải vấn đề chưa được đề cập đến như tôi có thể tìm thấy. Ví dụ bắt đầu tốt, tuyệt vời! Nhưng khi tôi cố gắng ssh đến ví dụ, tôi không thể kết nối. Sau nhiều biến thể của các bước trên, cuối cùng tôi đã quyết định thử sử dụng âm lượng gốc từ một phiên bản EC2 mới xuất hiện.

Trong bảng điều khiển AWS

 1. Create a new EC2 instance with the right sized root volume
 2. Stop the new instance
 3. Detach the /dev/sda1 volume from the new instance
    ** used the 'source' volume from before & the new volume we just detached
 4. Attached both volumes to the original EC2 instance (/dev/sdf & /dev/sdg)
 5. Start the instance with the attached volumes

Trên ví dụ EC2

 1. sudo su - 
 2. mkdir /source /target (only need to do this if you don't already have these directories)
 3. mount -t ext4 /dev/sdf /source
 4. mount -t ext4 /dev/sdg /target (no need to create a file system because it is already there)
 5. rsync -aHAXxSP /source/ /target 
 6. umount /source
 7. umount /target

Quay lại Bảng điều khiển AWS

 1. Stop the instance
 2. Detach the 'source' and 'target' volumes from instance
 3. Attach the 'target' volume to the instance from step 1 using /dev/sda1 as the device
 4. Start the instance
 5. ** we use an elastic IP so we just reassigned the IP to the new instance

Hy vọng điều này sẽ giúp ai đó


Kích thước của một khối lượng chỉ có thể được tăng lên, không giảm. từ ảnh chụp nhanh.
Ankit Kumar Rajpoot
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.