Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Chuyển đổi đĩa ảo VMDK sang EC2 AMI: Hướng dẫn từng bước

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

Để thực sự hữu ích, Amazon cung cấp dịch vụ với mức giá rất hợp lý, so sánh được với chi tiêu mua và duy trì cơ sở hạ tầng riêng. Với người dùng gia đình, có vẻ không phải nhu cầu cấp bách, nhưng doanh nghiệp vừa và nhỏ với nhu cầu linh hoạt chắc chắn sẽ thích sự tự do không phụ thuộc phần cứng.

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

Chuyển đổi đĩa ảo VMDK sang EC2 AMI: Hướng dẫn từng bước

Tại nhà...

Tại nhà, bạn hiếm khi cần hơn những gì ảo hóa cổ điển cung cấp. Nhưng bạn có thể sẽ bắt đầu cân nhắc Amazon khi giá của việc sở hữu máy chủ database 16GB RAM trong phòng khách được đề ra.

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

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

Tại sao không tạo ảnh Amazon ngay từ đầu hoặc dùng bản dựng có sẵn?

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

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

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

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

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

Câu hỏi tốt nữa. Có nhiều định dạng ảo hóa desktop. Tuy nhiên, nếu bạn chạy ảo hóa tại nhà, có khả năng lớn bạn dùng một trong các sản phẩm VMware. VMware dùng định dạng .vmdk cho đĩa cứng ảo. Đó là định dạng nguồn chúng ta muốn chuyển 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. Để chỉ cho bạn thấy cần làm gì, tôi viết hướng dẫn này. Hãy bắt đầu.

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

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

Hơn nữa, trước khi đọc tiếp, tôi cần bạn nhận ra rằng dự án Amazon EC2 vẫn còn non trẻ, nên khuyến nghị ở đây có thể chỉ áp dụng một phần cho các thiết lập tương lai – hoặc hoàn toàn không. Mặc dù tôi không thường khiêm nhường kết quả của mình, nhưng trong trường hợp này, do số lượng biến số lớn và nhạy cảm, tôi không thể đảm bảo thành công. Tuy nhiên, đừng để lời nhận định nhỏ này làm bạn nản chí! Hãy theo chân tôi.

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

Yêu cầu Xen

Bạn cũng phải "xenify" phân phối của mình trước khi chuyển đổi và dùng trên Amazon. Điều đó nghĩa là gì? Cơ sở hạ tầng ảo của Amazon dựa trên Xen, một hypervisor mã nguồn mở tương tự VMware, KVM hay các sản phẩm ảo hóa khác. Máy ảo Amazon yêu cầu kernel và module kernel đặc biệt để chạy trên nền tảng này. Bạn phải tải kernel Xen phù hợp, giải nén, cài đặt module Xen, và cập nhật menu GRUB.

Chi tiết hơn: truy cập trang web/kho phần mềm của phân phối yêu thích và tải kernel liên quan, khớp với phiên bản của bạn. Giải nén và đặt các file vào /boot và /lib. Bước tiếp theo là tạo file module liên quan:

depmod -F /boot/System.map-<kernel>-xenU -a <kernel>-xenU

Trong đó kernel khớp với phiên bản bạn có (uname -r).

Sau khi xong, kiểm tra xem module có tồn tại dưới /lib/modules/<kernel>-xenU không. Cuối cùng, cập nhật file cấu hình GRUB menu.lst để chứa entry kernel Xen. Entry này (stanza) phải được boot mặc định. Xem hướng dẫn GRUB chi tiết của tôi để biết thêm.

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

Một điểm khó 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 nên trông như sau:

/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

Nếu bạn dùng swap và mountpoint /mnt riêng, hãy xóa chúng khỏi /etc/fstab, vì Amazon sẽ dùng của nó khi chạy instance máy ảo.

Nói chung, hãy đọc tài liệu "Creating an AMI" để biết nhiều chi tiết geek về máy ảo của bạn nên trông như thế nào. Đừng hoảng loạn trước lượng dữ liệu khổng lồ, vì hầu hết không liên quan đến trường hợp test của chúng ta. Những gì bạn cần chú ý là: module kernel, bố cục phân vùng và cấu hình mạng.

Runlevel mặc định & dịch vụ

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

Nói về runlevel, máy Xen thường boot vào runlevel 4 không dùng, nên bạn phải chỉnh file /etc/inittab, bỏ comment runlevel 4 không dùng và đặt làm mặc định. Thứ hai, bạn phải bật các dịch vụ liên quan. Tôi không có bộ magic nào để khuyên.

Tương tự, bạn không thể chạy X trên Amazon (chưa), nên runlevel 5 không thể. Nếu cần giúp cấu hình dịch vụ chạy ở các runlevel khác, xem hướng dẫn dịch vụ Linux của tôi.

Giao diện mạng

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

Các lưu ý quan trọng thêm:

Sản phẩm VMware cho phép tạo ảnh mở rộng động, lớn dần khi lấp đầy dữ liệu. Do đó, đĩa ảo 40GB có thể chỉ nặng 700MB nếu chỉ chứa 700MB dữ liệu. Cũng có thể cấp phát trước dung lượng, khi đó đĩa sẽ phồng lên toàn bộ 40GB. Tuy nhiên, để tiết kiệm ổ cứng, nhiều người chọn tùy chọn đầu tiên – đĩa cứng động.

Khi chuyển đổi VMDK sang RAW, bất kỳ lợi ích nào từ mở rộng động đều mất đi. Ảnh đĩa sẽ được phồng lên dung lượng thực. Vì vậy hãy cẩn thận khi tạo máy ảo và chú ý dung lượng đĩa.

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

ERROR: the specified image file <something>.raw is too large

Ảnh ví dụ:

Thứ ba, bạn cần cài java và ruby trên máy Linux. Và đúng, bạn cần máy Linux cho bước 3. Đảm bảo bạn đáp ứng TẤT CẢ yêu cầu này trước khi bắt đầu cuộc phiêu lưu.

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

Bây giờ chúng ta biết cần gì, sẽ dùng QEMU để chuyển đổi. QEMU, có sẵn cho cả Windows và Linux, là một trình giả lập/tiện ích ảnh khá mạnh, "biết tuốt", cho phép chuyển đổi file VMDK sang định dạng RAW.

Tôi đã giới thiệu QEMU như công cụ tuyệt vời để tạo đĩa cứng ảo trong bài VMware Player, lâu rồi. Bạn cũng có thể dùng nó cho các tác vụ liên quan đĩa, như chuyển đổi.

Bây giờ, bạn phải chuyển đổi đĩa VMware sang định dạng raw. Về bản chất, điều này sẽ 벗 bỏ mọi thuật toán thông minh của VMware và mở rộng thành ảnh đĩa theo từng sector.

QEMU làm tốt việc này. Thực tế, bạn có thể dùng QEMU cho mọi loại chuyển đổi. Nhưng hiện tại chúng ta quan tâm vmdk > raw. Để chuyển đổi, chỉ cần tìm file .vmdk liên quan và chạy lệnh qemu-img sau:

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

Để quá trình chạy. Tùy theo cấu hình máy và dung lượng ảnh, có thể mất khá lâu.

Bước 3: Gói ảnh với công cụ AMI

Amazon cung cấp hai bộ công cụ cho EC2. Bộ API tools – giao diện client cho dịch vụ EC2. Bộ AMI tools – tập hợp tiện ích dòng lệnh để tạo, gói và tải AMI lên Amazon S3.

Chúng ta cần AMI tools. Tải về và giải nén, tốt nhất trong thư mục home. Bây giờ bạn phải chạy một lệnh chuyển đổi dài và nhàm chán, trông như sau:

./ec2-bundle-image -i <image> -r <arch> -c <cert> ->
-> -k <key> --user <user id>

Giải thích các tùy chọn:

  • -i <image> - Đây là file RAW của bạn.
  • -r <arch> - Kiến trúc máy ảo (i386, x86_64, v.v.)
  • -c <cert> - Chứng chỉ bạn nhận từ Amazon. Bạn nên giữ chúng trong thư mục home hoặc cùng thư mục chạy lệnh, vì ec2-bundle-image không cho phép dấu gạch chéo ngang trong đường dẫn đến chứng chỉ. Tôi không biết tại sao, nó chỉ là như vậy. Nếu dùng, bạn sẽ gặp lỗi: --prefix has invalid value 'cert.pem':'/' character not allowed.

Ảnh chụp màn hình lỗi thực tế (đầu ra được chỉnh sửa cho rõ ràng):

  • -k <key> - Khóa riêng của bạn. Quy tắc giống như chứng chỉ.
  • --user <user id> - ID người dùng Amazon của bạn.

Yêu cầu

Nhưng chưa đủ. Dù bạn làm theo lệnh chính xác, ec2-bundle-image vẫn sẽ than vãn. Giống như:

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

Điều này nghĩa là bạn phải export một vài biến môi trường trước khi dùng tiện ích.

BASH

Trên Bash, dùng lệnh export:

export EC_HOME=<path>
export EC_AMITOOL_HOME=<path>

TCSH

TCSH không hỗ trợ export. Thay vào đó, dùng setenv:

setenv EC_HOME <path>
setenv EC_AMITOOL_HOME <path>

Các đường dẫn nên tương ứng:

  • EC_HOME - thư mục home của bạn hoặc sub-thư mục ec2 bên trong, nhiều nhất. Không dùng filesystem /tmp vì EC_HOME có thể than về thư mục không an toàn, world-readable.
  • EC_AMITOOL_HOME - thư mục bạn giải nén AMI tools.

Bạn cũng có thể muốn export/setenv các biến khác, việc gõ thủ công khá nhàm chán. Để hiệu quả hơn, bạn có thể tạo file chứa tất cả biến và giá trị, rồi source nó khi cần chạy AMI tools. Giống như:

source file-containing-all-exports

Bây giờ chúng ta sẵn sàng. Nhấn Enter cho lệnh chuyển đổi dài. Và chờ. Sau một lúc, quá trình nên hoàn thành thành công. Nhấn mạnh vào "nên", vì bạn phải hoàn thành một chuỗi chuẩn bị nhạy cảm để nó chạy.

Nếu bạn chuyển đổi thành công VMDK > RAW > AMI, thì bạn sẵn sàng tải file lên. Dấu hiệu chuyển đổi thành công là danh sách file trong thư mục /tmp và file manifest XML. Đó là thư mục đầu ra mặc định.

Điều này kết thúc quá trình chuyển đổi thực tế. Bước tiếp theo là tải lên, nhưng vượt khỏi phạm vi bài này. Chúng ta sẽ nói về việc này dịp khác. Amazon sẽ ở lại và bạn có thể sẽ thấy thêm vài bài về chủ đề này trên Dedoimedo trong tương lai.

Kết luận

Như bạn thấy, nhiệm vụ không đơn giản, nhưng có thể quản lý được và sẽ tiết kiệm khá nhiều thời gian, băng thông và cuối cùng là tiền bạc. Khả năng chuyển đổi ảnh mang lại tự do vượt ra khỏi nhu cầu cụ thể của dịch vụ Amazon EC2. Chúng ta đã thấy cách dùng VMware Converter cho mục đích này. Giờ QEMU là công cụ mạnh khác để nâng cao nhu cầu ảo hóa.

Bạn phải tuân thủ khá nhiều quy tắc, đặc biệt về AMI tools. Phải đảm bảo ảnh không quá lớn, không dùng dấu gạch chéo trước đường dẫn chứng chỉ và khóa riêng, đảm bảo biến môi trường được export, và nói chung, không đặt công cụ Amazon trong thư mục "không an toàn". Bây giờ, hãy vui vẻ "đi trên mây" nào.

Trong các bài tiếp theo, chúng ta sẽ nói về Kiwi, một thành phần đẹp trai của SUSE Build Service mạnh mẽ, và xem nó có thể dùng để tạo ảnh Xen thậm chí AMI từ phân phối tùy chỉnh hoặc ngay cài đặt vật lý của bạn, cung cấp khả năng tương tự VMware Converter – và hơn thế nữa. Đến lúc đó, chúng ta sẽ chơi với Image Creator và Product Creator. Chúng ta cũng sẽ nói về SUSE Studio và nhiều concept, ý tưởng, dự án thú vị, cách mạng khác.

Markus, bạn hỏi về hướng dẫn AMI? Đây nó. Thưởng thức đi!

Chúc vui!