Computer >> Máy Tính >  >> Phần mềm >> Máy ảo

Cách chuyển đổi đĩa cứng ảo VMDK sang định dạng AMI của Amazon Elastic Compute Cloud (EC2)

Hãy để tôi giới thiệu khái niệm Amazon Elastic Compute Cloud (EC2) trong giây lát. Amazon EC2 là một dịch vụ web được thiết kế để cung cấp khả năng điện toán có thể thay đổi quy mô, có thể thay đổi kích thước ngay lập tức cho người dùng trên khắp thế giới. Đó là một lưới ảo hóa khổng lồ, nằm trong các trang trại khổng lồ của Amazon, cung cấp các chu kỳ CPU và dung lượng ổ cứng cho bất kỳ ai có thể yêu cầu chúng một cách nhanh chóng. Điều duy nhất bạn phải làm là trả tiền, và thực tế không nhiều như vậy.

Để thực sự hữu ích, Amazon cung cấp dịch vụ với mức giá rất phải chăng, tương đương với những gì bạn có thể phải bỏ ra để mua và duy trì cơ sở hạ tầng của riêng mình. Đối với người dùng gia đình, điều này có vẻ không phải là nhu cầu cấp thiết nhất, nhưng các doanh nghiệp vừa và nhỏ với nhu cầu linh hoạt chắc chắn sẽ thích triển vọng tự do độc lập với phần cứng.

Một số bạn sẽ thích ý tưởng này, một số bạn sẽ ghét nó. Cá nhân tôi nghĩ đây là một dự án tuyệt vời, đặc biệt là khi đám mây Amazon dựa trên Linux và chủ yếu hỗ trợ Linux, tạo cơ hội to lớn cho sự phát triển của thị trường Linux. Mark Shuttleworth đã phải chịu khá nhiều lời chỉ trích vì ý định kết hợp chức năng của Amazon vào bản phát hành Ubuntu sắp tới, nhưng tôi nghĩ đó là một bước đi khôn ngoan, vì nhu cầu hợp nhất giữa máy tính để bàn và Web vẫy gọi một sự linh hoạt "siêu phàm"  chỉ có ở đám mây.

Cách chuyển đổi đĩa cứng ảo VMDK sang định dạng AMI của Amazon Elastic Compute Cloud (EC2)

Ở nhà...

Ở nhà, hiếm khi bạn cần nhiều hơn những gì ảo hóa cổ điển cung cấp. Nhưng bạn có thể sẽ bắt đầu xem xét Amazon bất cứ khi nào thẻ giá có máy chủ cơ sở dữ liệu của riêng bạn với RAM 16GB trong phòng khách xuất hiện.

Nếu điều đó xảy ra, bạn sẽ muốn biết cách sử dụng Amazon EC2. Hướng dẫn đầy đủ chắc chắn nằm ngoài phạm vi của bài viết này; bạn có tài liệu chính thức cho điều đó.

Thay vào đó, tôi sẽ chỉ trình bày một phần của toàn bộ kế hoạch, mặc dù có lẽ là phần quan trọng nhất mà người dùng gia đình có thể gặp phải - việc tạo các hình ảnh máy ảo Amazon. Tôi sẽ chỉ cho bạn cách chuyển đổi đĩa cứng ảo tự tạo được sử dụng bởi các sản phẩm VMware thành hình ảnh tương thích với Amazon mà bạn có thể sử dụng với EC2.

Tại sao không tạo hình ảnh Amazon ngay từ đầu hoặc sử dụng các bản dựng hiện có?

Một câu hỏi hay! Amazon cho phép bạn tạo hình ảnh từ đầu hoặc sử dụng một trong các mẫu hiện có (như SUSE, Ubuntu, RedHat, v.v.) làm điểm bắt đầu. Tuy nhiên, việc tạo hình ảnh hơi phức tạp. Và việc sử dụng các mẫu hiện có có thể không phải là điều bạn muốn. Ví dụ:bạn có thể muốn chạy một bản phân phối đặc biệt, được định cấu hình tùy chỉnh hoặc bạn có thể muốn sử dụng một hình ảnh được ký điện tử, riêng tư không dành cho bất kỳ ai ngoài bạn. Bạn muốn có toàn quyền kiểm soát và bạn không thể để người khác tạo ra hình ảnh cho mình.

Mục tiêu:Tạo hình ảnh tại nhà, sau đó tải lên Amazon

Tôi đang thu hẹp hướng dẫn này vào một chủ đề rất cụ thể mà tôi thấy khá quan trọng. Bạn muốn có một hình ảnh riêng, có chứng chỉ riêng. Bạn muốn tạo nó ở nhà, khi rảnh rỗi, với thời gian và chi phí của riêng bạn, mà không lãng phí tiền cho băng thông và thời gian cấu hình dài. Khi nó đã sẵn sàng, bạn sẽ chuyển đổi nó và tải nó lên bộ lưu trữ Amazon, được gọi là Amazon Simple Storage Service (S3).

Lưu ý:Bạn sẽ phải có tài khoản Amazon EC2 hợp lệ trước khi có thể sử dụng các hướng dẫn trong hướng dẫn này. Hơn nữa, bạn sẽ phải sử dụng Linux để làm theo hướng dẫn thành công. Một số công cụ được sử dụng ở đây chỉ khả dụng cho Linux - không có gì đáng ngạc nhiên vì Amazon chạy trên Linux.

Câu hỏi đầu tiên:chuyển đổi từ cái gì?

Một câu hỏi hay khác. Có nhiều định dạng ảo hóa máy tính để bàn có sẵn. Tuy nhiên, nếu bạn chạy ảo hóa tại nhà, thì rất có thể bạn đang sử dụng một trong các sản phẩm của VMware. VMware sử dụng định dạng .vmdk cho các đĩa cứng ảo của nó. Đây là định dạng nguồn của chúng tôi mà chúng tôi muốn chuyển đổi sang Amazon Machine Image (AMI).

Tuy nhiên, bạn không thể chuyển đổi trực tiếp đĩa ảo VMDK sang AMI. Để cho bạn thấy những gì cần phải được thực hiện, tôi đã viết hướng dẫn này. Hãy bắt đầu nào.

Bước 1:Đảm bảo bạn có MỌI THỨ mình cần

Trước khi chúng tôi bắt đầu, có một số (khá nhiều) điều rất quan trọng cần xem xét trước khi vội vàng chuyển đổi cái này và cái kia.

Hơn nữa, trước khi bạn bắt đầu đọc, tôi cần bạn nhận ra rằng dự án Amazon EC2 vẫn còn ở giai đoạn sơ khai, vì vậy các đề xuất đưa ra ở đây có thể chỉ áp dụng một phần cho các thiết lập trong tương lai - hoặc hoàn toàn không áp dụng. Mặc dù tôi thường không hạ thấp những phát hiện của mình, nhưng trong trường hợp cụ thể này, do có rất nhiều biến số nhạy cảm nên tôi không thể đảm bảo sự thành công với nỗ lực này. Tuy nhiên, đừng để sự thừa nhận nhỏ này làm bạn thất vọng! Theo tôi.

Yêu cầu chung của Amazon (bất kể VMware):

Yêu cầu xen

Bạn cũng sẽ phải xenify bản phân phối của mình trước khi có thể chuyển đổi và sử dụng nó trên Amazon. Điều đó có nghĩa là gì? Chà, cơ sở hạ tầng ảo của Amazon dựa trên Xen, một trình ảo hóa mã nguồn mở tương tự như VMware, KVM hoặc các sản phẩm ảo hóa khác. Máy ảo Amazon yêu cầu các hạt nhân và mô-đun hạt nhân cụ thể để có thể chạy trên nền tảng này. Bạn sẽ phải tải xuống nhân Xen thích hợp, giải nén nó, cài đặt các mô-đun Xen và cập nhật menu GRUB.

Chi tiết hơn, hãy truy cập trang web / kho lưu trữ phần mềm của bản phân phối yêu thích của bạn và tải xuống kernel có liên quan, phù hợp với phiên bản của bạn. Giải nén kho lưu trữ và đặt các tệp chứa trong đó vào /boot và /lib. Bước tiếp theo của bạn là tạo các tệp mô-đun có liên quan:

depmod -F /boot/System.map--xenU -a -xenU

Trường hợp hạt nhân phù hợp với phiên bản bạn có (uname -r).

Khi điều này được thực hiện, hãy kiểm tra xem các mô-đun có tồn tại trong thư mục /lib/modules/-xenU không. Cuối cùng, cập nhật tệp cấu hình GRUB menu.lst để nó chứa mục nhân Xen. Mục này (khổ thơ) nên được khởi động theo mặc định. Để biết thêm về GRUB, vui lòng xem phần hướng dẫn mở rộng của tôi.

Yêu cầu phân vùng

Một khó khăn khác. Máy ảo Amazon phải có bố cục phân vùng rất cụ thể. Cây /etc/fstab của bạn sẽ trông như thế này:

/dev/sda1   /           ext3    mặc định        1    1
không có        /dev/pts    devpts  gid=5,mode=620  0    0
không có        /dev/shm    tmpfs   mặc định        0    0
none        /proc       proc    mặc định        0    0
không có        /sys        sysfs   mặc định        0    0

Nếu bạn đang sử dụng điểm gắn kết trao đổi và /mnt của riêng mình, hãy xóa chúng khỏi /etc/fstab, vì Amazon sẽ sử dụng điểm gắn kết của riêng mình khi chạy phiên bản máy.

Nói chung, vui lòng đọc tài liệu Tạo tài liệu AMI để biết nhiều chi tiết thú vị về cách máy ảo của bạn sẽ trông như thế nào. Đừng lo lắng bởi lượng dữ liệu quá dồi dào, vì hầu hết mọi thứ đều không liên quan đến trường hợp thử nghiệm của chúng tôi. Những gì bạn cần chú ý là các mô-đun hạt nhân, bố cục phân vùng và cấu hình mạng.

Mức chạy mặc định &dịch vụ

Hơn nữa, để thực sự có thể kết nối với máy Amazon của bạn, bạn sẽ phải tắt hoặc định cấu hình dịch vụ tường lửa để cho phép các kết nối đến SSH và đương nhiên, dịch vụ SSH được bật trong mức chạy mặc định của bạn. Theo mặc định, SSH sử dụng cổng TCP 22.

Nói về mức chạy, các máy Xen thường khởi động vào mức chạy 4 không sử dụng, vì vậy bạn sẽ phải chỉnh sửa tệp /etc/inittab của mình và bỏ ghi chú mức chạy 4 không sử dụng và đặt nó làm mức chạy mặc định. Thứ hai, bạn sẽ phải kích hoạt các dịch vụ có liên quan. Thật không may, tôi không có bộ phép thuật nào để giới thiệu.

Tương tự như vậy, bạn không thể chạy X trong Amazon (chưa), vì vậy runlevel 5 là điều không cần bàn cãi. Nếu bạn cần trợ giúp cấu hình các dịch vụ để chạy trong các mức thực thi khác nhau, hãy xem hướng dẫn về các dịch vụ Linux của tôi.

Giao diện mạng

Bạn cũng sẽ phải định cấu hình thiết bị mạng của mình để thuê địa chỉ IP qua DHCP và tắt giao thức IPv6. Trong hầu hết các trường hợp, đây là cài đặt mặc định, vì vậy bạn sẽ không phải làm việc quá sức ở đây.

Ghi chú quan trọng khác:

Các sản phẩm của VMware cho phép bạn tạo các hình ảnh có thể mở rộng linh hoạt, phát triển khi chúng chứa đầy dữ liệu. Do đó, một đĩa ảo 40 GB chỉ có thể nặng 700 MB, nếu nó chỉ chứa 700 MB dữ liệu. Cũng có thể phân bổ trước kích thước, trong trường hợp đó, đĩa sẽ được tăng lên đến kích thước 40 GB đầy đủ của nó. Tuy nhiên, để tiết kiệm dung lượng đĩa cứng, nhiều người dùng sẽ chọn sử dụng tùy chọn đầu tiên - đĩa cứng động.

Khi nói đến việc chuyển đổi VMDK sang RAW, mọi lợi ích thu được với việc mở rộng động sẽ bị mất. Hình ảnh đĩa sẽ được phóng to với kích thước thực của nó. Vì vậy, hãy cẩn thận khi tạo máy ảo và chú ý đến kích thước đĩa.

Thứ hai, Amazon hiện chỉ hỗ trợ hình ảnh tối đa 10GB. Điều này có nghĩa là VMDK của bạn không được vượt quá 10GB. Nếu không, bạn sẽ không thể tạo AMI. Sử dụng hình ảnh quá lớn và bạn sẽ gặp lỗi:

LỖI:tệp hình ảnh được chỉ định .raw quá lớn

Một hình ảnh ví dụ:

Thứ ba, bạn sẽ cần cài đặt java và ruby ​​trên máy Linux của mình. Và vâng, bạn sẽ cần một máy Linux cho bước 3 của hướng dẫn này. Hãy chắc chắn rằng bạn đáp ứng TẤT CẢ những yêu cầu này trước khi mạo hiểm thực hiện cuộc tẩu thoát của mình.

Bước 2:Chuyển VMDK sang RAW

Bây giờ chúng tôi biết những gì chúng tôi cần, chúng tôi sẽ sử dụng QEMU để chuyển đổi. QEMU, có sẵn cho cả Windows và Linux, là một tiện ích hình ảnh/mô phỏng/trình giả lập đa năng, khá mạnh mẽ, cho phép bạn chuyển đổi các tệp VMDK sang định dạng RAW.

Tôi đã giới thiệu QEMU như một công cụ tuyệt vời để tạo đĩa cứng ảo trong bài viết VMware Player của mình từ lâu. Bạn cũng có thể sử dụng nó cho các tác vụ khác liên quan đến đĩa, chẳng hạn như chuyển đổi.

Bây giờ, bạn sẽ phải chuyển đổi các đĩa VMware sang định dạng thô. Essentially, this will strip the hard disk image of any smart VMware algorithms and expand it into a sector-by-sector disk image.

QEMU does this well. In fact, you can use QEMU for all sorts of conversions. But currently, we're interested in vmdk> raw. To convert, simply locate the relevant .vmdk file and run the following qemu-img command:

qemu-img convert -O raw source.vmdk target.raw

Let the process run. Depending on your machine specs and the image size, it can take quite a while.

Step 3:Bundle the image with AMI tools

Amazon offers two bundles of tools for work with their EC2 service. One is the set of API tools, a client interface for the EC2 service. The other is the set of AMI tools, a collection of command utilities used to create, bundle and upload AMI to Amazon S3.

We need the AMI tools. Download and extract them, preferably inside your home directory. Now, you will have to run a long and tedious conversion command that will look something like this:

./ec2-bundle-image -i -r -c ->
-> -k --user

Let's explain the options:

  • -i - This is your RAW file.
  • -r - This is the architecture of your virtual machine (i386, x86_64, etc).
  • -c - This is the certificate you received from Amazon. You should keep them in the home directory or the same directory against which you're running the command, because the ec2-bundle-image command does not permit trailing slashes in the path to certificate. I don't know why this is, it just is. If you do use it, you'll get an error like this one:
--prefix has invalid value 'cert.pem':'/' character not allowed.

Here's an actual screenshot of such an error (output manipulated for clarity):

  • -k - Your private key. Again, the same rules apply as for the certificate.
  • --user - Your Amazon user ID.

Requirements

But this is not enough. Even if you follow the command to the letter, the ec2-bundle-image will complain. Something like this:

ec2-bundle-image:line 3:EC2_HOME:Neither of EC2_AMITOOL or EC2_HOME environment variables are set

This means you will have to export a few environment variables before using the utility.

BASH

On Bash, you will use the export command, like this:

export EC_HOME=
export EC_AMITOOL_HOME=

TCSH

TCSH does not support export. So instead, you will have to use setenv:

setenv EC_HOME 
setenv EC_AMITOOL_HOME 

The paths should correspond to the following:

  • EC_HOME - your home directory or perhaps an ec2 sub-directory inside it, most likely. Do not use the /tmp filesystem as EC_HOME might complain about an insecure, world-readable directory.
  • EC_AMITOOL_HOME - the directory where you extracted the AMI tools.

You may also want to export/setenv other variables, which makes the process of typing them manually rather boring. To make things more efficient, you may want to create a file, contain all your variables and their values and then source it when you need to run the AMI tools. Something like this:

source file-containing-all-exports

Now, we're ready. Hit Enter against your long conversion command. And wait. After a while, the process should complete successfully. The emphasis is on the word should, as you have to complete a series of delicate preparations for the thing to work.

If you did successfully convert the VMDK> RAW> AMI, then you're ready to upload the file. The indication that your conversion was successful will be a list of files in the /tmp directory and an XML manifest file. This is the default output directory.

This concludes the actual conversion process. Your next step is the upload, but this is beyond the scope of this article. We'll talk about this on another occasion. Amazon is here to stay and you're likely to see several more articles on the subject on Dedoimedo in the future.

Kết luận

As you can see, the task is not that simple, but it is manageable and will save you quite a bit of time, bandwidth and ultimately money. Being able to convert images offers you freedom beyond the specific needs of the Amazon EC2 service. We've already seen how to use VMware Converter to this end. Now, QEMU is another power tool we can use to enhance our virtualization needs.

You must satisfy quite a few rules though, especially in regard to AMI tools. You must make sure the image is not too big, not to use the trailing slash in front of the certificate and private key paths, make sure the environment variables are exported, and in general, not to place the Amazon tools in "unsafe" directories. Now, have fun walking on clouds.

In the sequel articles, we will talk about Kiwi, a handsome component of the powerful SUSE Build Service and see how it can be used to create Xen or even AMI images from custom distributions or even your own physical installation, offering similar capabilities to VMware Converter - and then some. To this end, we'll play with Image Creator and Product Creator. We will also talk about SUSE Studio and many other exciting, revolutionary concepts, ideas and projects.

Markus, you asked about an AMI tutorial? Here you go. Vui thích.

Chúc mừng.