أعلنت AWS عن انتقال من Xen نحو KVM. إذن ما هو KVM؟

يعد مقيدًا في إعلان AWS حول نوع مثيل EC2 متطور جديد (C5) اقتراحًا قويًا بأن شركة Amazon العملاقة للحوسبة السحابية قد بدأت في تحويل مئات الآلاف من الخوادم المادية بعيدًا عن برنامج Xen Hypervisor المفتوح المصدر الذي يقوم بتشغيلها حتى الآن ، إلى البديل المفتوح المصدر ، KVM.

سواء كنت قد استثمرت في حياتك المهنية و / أو رهنًا عقاريًا منزليًا بعمق في مستقبل Xen أو إذا لم تكن تعلم بوجوده ، فقد تكون مهتمًا بمعرفة المزيد عن KVM إذن ، هذه مقدمة عامة مقتبسة من كتابي ، Teach Yourself Linux Virtualization and High Availability: استعد لامتحان شهادة LPIC-3 304.

هل تحتاج إلى مزيد من الخلفية الأساسية على خوادم Linux أو AWS؟ لينكس الخاص بي في العمل وتعلم خدمات أمازون ويب في شهر غداء قد تساعد الكتب من مانينغ ، جنبًا إلى جنب مع دورات إدارة خادم لينوكس في Pluralsight هناك أيضًا دورة تدريبية مختلطة تسمى Linux in Motion تتكون من أكثر من ساعتين من الفيديو وحوالي 40٪ من نص Linux قيد التشغيل.

KVM

مثل Xen ، KVM (الآلة الافتراضية المستندة إلى Kernel) هي تقنية افتراضية مفتوحة المصدر لإضفاء الطابع الافتراضي على البنية التحتية للحوسبة التي تعمل على أجهزة متوافقة مع x86. كما هو الحال مع Xen ، فإن KVM لديها مجتمع مستخدم نشط وعمليات نشر مؤسسية كبيرة.

يعمل مضيف KVM بالفعل على نواة Linux مع وحدتي KVM kernel (الوحدة النمطية kvm.ko وإما kvm-intel.ko أو kvm-amd.ko). من خلال تكامل النواة المحكم - بما في ذلك اتصال الإدخال / الإخراج مع كتلة kernel وبرامج تشغيل الشبكة التي توفرها Virtio - يمكن لـ KVM أن تقدم لضيوفها وصولاً أكثر سلاسة إلى جميع الأجهزة المعقدة وملفات تعريف الشبكات التي قد يواجهونها.

تعني امتدادات المحاكاة الافتراضية للأجهزة المضمنة في تصميمات وحدة المعالجة المركزية الحديثة والمطلوبة لعمليات نشر KVM أنه ، بمجرد إخراجها من الصندوق ، يمكن لضيوف KVM الوصول بأمان فقط إلى موارد الأجهزة التي يحتاجونها دون الحاجة إلى القلق بشأن التسرب إلى النظام الأكبر.

أين بالضبط موقع QEMU مع كل هذا؟ إلى جانب قدرتها على العمل كمراقب ، فإن قوة QEMU هي كمحاكي. يمكن لـ KVM ، في دور المحاكاة الافتراضية لبرنامج Hypervisor الخاص بها ، الاستفادة من صلاحيات محاكاة QEMU لتكملة ميزات تسريع الأجهزة الخاصة بها ، حيث تقدم لضيوفها مجموعة شرائح مقلدة وناقل PCI. الكل ، كما يقولون ، يمكن أن يكون أكبر من مجموع أجزائه.

غالبًا ما يتم توفير قدر كبير من وظائف الإدارة لـ KVM بواسطة Libvirt. لذلك ، قد ترغب في بعض الأحيان في الرجوع إلى المعلومات التفصيلية حول الميزات المتعلقة بـ KVM مثل الشبكات والتخزين وتخطيطات نظام الملفات الموجودة في الفصل الخامس من كتاب Teach Yourself Linux Virtualization and High Availability (“Libvirt and Related Tools”) .

التركيب

قبل أي شيء آخر ، ستحتاج إلى التأكد من أن الجهاز الفعلي الذي تخطط لاستخدامه كمضيف KVM يدعم ظاهرية الأجهزة. إلى جانب إعداد BIOS ومحتويات / proc / cpuinfo (التي ناقشناها في الفصل الأول) ، يمكنك أيضًا التحقق من ذلك بسرعة من نظام Linux قيد التشغيل باستخدام kvm-ok: $ kvm-ok

من الجيد أيضًا التأكد من بنية الأجهزة - 64 أو 32 بت - التي تعمل بها: $ uname -m

ولكن حتى إذا كان ملف تعريف الجهاز الخاص بك على مستوى المهمة ، فسيتعين عليك السماح لـ Linux kernel في خططك. إذا لم تكن موجودة بالفعل ، فيجب عليك إضافة وحدات kvm وإما وحدات kvm-intel أو kvm-amd kernel. # modprobe kvm-intel

إذا فشلت هذه الوحدات في التحميل (ولا يوجد جهاز / dev / kvm في نظام الملفات) ، فهناك فرصة جيدة لو أن وحدة المعالجة المركزية الخاصة بك لا تفي بالمهمة التي تريدها. ومع ذلك ، إذا نجح كل ذلك ، فأنت جاهز لتثبيت حزمة qemu-kvm (وإذا لزم الأمر ، libvirt و Virt-install و bridge-utils أيضًا).

العمل مع أدوات إدارة KVM

ليس سراً أن منصات المحاكاة الافتراضية تتمتع بسمعة مستحقة لكونها معقدة. ولكن هناك شيئان يمكن أن يجعلا البدء في استخدام KVM أكثر تحديًا من بعض الأشياء الأخرى:

  • هناك عدد غير قليل من مجموعات أدوات الإدارة المتاحة ، كل منها يقدم وظائف متشابهة - لكن ليست متطابقة.
  • لديهم عادة سيئة تتمثل في تغيير الأسماء المستخدمة للثنائيات الرئيسية اعتمادًا على التوزيع والإصدار الذي تستخدمه.

سأقدم لك Libvirt Tools و vmbuilder في الفصل الخامس ، ولكن هنا ، سنناقش مجموعة أدوات KVM.

بناء ضيوف جدد باستخدام ما نطلق عليه طريقة "KVM" هي عملية من خطوتين. أولاً ، ستستخدم qemu-img لإنشاء صورة جديدة - أو تعديل أو تحويل صورة قديمة. بعد ذلك ستستخدم qemu-kvm لإعداد جهاز افتراضي يبدأ التثبيت.

هل قلت للتو "ستستخدم qemu-kvm ..."؟ ما أغباني. تم دمج qemu-kvm في qemu منذ وقت طويل وتم استبداله بـ qemu-system-x86_64. في غضون ذلك ، تقدم لك بعض الأنظمة kvm كغلاف يقوم بتنفيذ qemu-system-x86_64 -enable-kvm - على الرغم من أنه لا يجب الخلط بين غلاف kvm وثنائي kvm القديم الذي استخدم صيغة مختلفة نوعًا ما.

لنرى كيف تعمل هاتان الخطوتان. يمكنك إنشاء صورة قرص باستخدام qemu-img (والتي ، بالمناسبة ، يمكن استخدامها بشكل فعال للغاية مع برامج Hypervisor الأخرى أيضًا) ، حيث يكون "my-disk" هو اسم الصورة التي ترغب في إنشائها ، والحد الأقصى للحجم سيكون حجم الصورة 6 غيغابايت ، و qcow2 هو تنسيق الملف. بالمناسبة ، qcow تعني "QEMU Copy On Write".

qemu-img create -f qcow2 /home/username/myimages/my-disk.img 6G \ Formatting ‘/home/username/myimages/my-disk.img’, \ fmt=qcow2 size=6442450944 \ encryption=off \ cluster_size=65536 \ lazy_refcounts=off \ refcount_bits=16

يعتمد اختيار تنسيق الملف على احتياجاتك الخاصة. إذا كنت بحاجة إلى قدر أكبر من التوافق والمرونة - بما في ذلك القدرة على إنشاء لقطات متطورة - فمن المحتمل أن يكون qcow2 هو خيارك الأفضل.

يسمح تنسيق صورة القرص qcow بتخصيص مساحة القرص بالنمو فقط حسب الحاجة ، مما يعني أن استخدام المساحة دائمًا ما يكون فعالًا قدر الإمكان. يمكن حفظ التغييرات على صورة qcow للقراءة فقط في ملف منفصل ، والذي يشير داخليًا إلى الصورة الأصلية. أضاف qcow2 القدرة على إنشاء لقطات متعددة للصور.

نحن الآن جاهزون للخطوة الثانية. إليك كيف سنبني جهاز VM الخاص بنا:

kvm -name my-VM \ -hda /home/username/myimages/my-disk.img \ -cdrom /home/username/Downloads/ubuntu-16.04-server-amd64.iso \ -boot d -m 1024

غالبًا ما تظهر نافذة SDL جديدة (على الرغم من أنها ليست بالضرورة لجميع التوزيعات) حيث يمكنك إكمال عملية تثبيت نظام التشغيل. تتطلب استعادة التحكم في الماوس من محطة Qemu الضغط على CTRL + ALT.

للتوضيح: باستخدام "kvm" (على الرغم من أن الأمر الدقيق الذي ستحتاجه للإصدار الخاص بك قد يختلف) ، سوف نسمي ضيفنا الجديد "my-VM" ، وقم بتعيين ملف my-disk.img على أنه hda ("محرك الأقراص الثابتة a ") ، وأشر إلى موقع نظام التشغيل ISO (خادم Ubuntu 16.04 ، في هذه الحالة) ، وقم بتعيين 1024 ميغابايت كحد أقصى للذاكرة المخصصة لجهاز VM.

بشكل افتراضي ، سيقوم KVM بتكوين الضيف الخاص بك للشبكات على مستوى المستخدم (كما لو تم تحديد المعلمات-netdev user، id = user.0 -device e1000، netdev = user.0). سيوفر هذا للضيف عنوان IP من خلال خدمة DHCP الخاصة بـ KVM والوصول إلى مضيفك والإنترنت والموارد المستندة إلى LAN. على الرغم من أن التكوين الافتراضي بسيط ، إلا أنه قد يكون مقيدًا بشكل مفرط لبعض السيناريوهات ، حيث توجد غالبًا بعض قيود الأداء والميزات.

بالإضافة إلى ذلك ، يمكنك استخدام علامات سطر الأوامر للتحكم في معلمات تكوين الجهاز الظاهري المختلفة ، بما في ذلك:

  • يوفر -smp 2 معالجين ("smp" = معالجة متعددة متماثلة).
  • الوسيطة -net (على سبيل المثال: -net nic ، model = Virtio ، macaddr = 52: 54: 00: 05: 11: 11) تنشئ اتصالاً بالشبكة لضيفك.
  • يمكنك توفير جسر شبكة باستخدام شيء مثل جسر الشبكة ، vlan = 0 ، br = br0 - على الرغم من أن هذا سيتطلب تعريف شبكة مطابقة على المضيف. يتم توصيل الاثنين من خلال معلمة خاصة "vlan".
  • -سوف يسمح لي Virtio -balloon بتوسيع أو تقليل حجم ذاكرة الضيف دون الحاجة إلى إعادة تشغيله.
  • يمكنك أيضًا استخدام -drive file = flag لتعريف أجهزة تخزين الكتل الإضافية. إضافة قيمة للتنسيق = (qcow2 ، على سبيل المثال).

ستقوم العلامة -M بتعيين محاكاة أجهزة معينة لنوع الجهاز. جهاز كمبيوتر. على سبيل المثال ، سيوفر ملف تعريف قياسي لجهاز الكمبيوتر. للحصول على قائمة كاملة بأنواع الماكينات المتاحة ، يمكنك تشغيل kvm -M؟:

kvm -M ? Supported machines are: ubuntu Ubuntu 15.04 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-wily) pc-i440fx-wily Ubuntu 15.04 PC (i440FX + PIIX, 1996) (default) ubuntu Ubuntu 15.04 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-vivid) pc-i440fx-vivid Ubuntu 15.04 PC (i440FX + PIIX, 1996) (default) pc-i440fx-utopic Ubuntu 14.10 PC (i440FX + PIIX, 1996) pc-i440fx-trusty Ubuntu 14.04 PC (i440FX + PIIX, 1996) pc Standard PC (i440FX + PIIX, 1996) (alias of pc-i440fx-2.5) pc-i440fx-2.5 Standard PC (i440FX + PIIX, 1996) pc-i440fx-2.4 Standard PC (i440FX + PIIX, 1996) pc-i440fx-2.3 Standard PC (i440FX + PIIX, 1996) pc-i440fx-2.2 Standard PC (i440FX + PIIX, 1996) pc-i440fx-2.1 Standard PC (i440FX + PIIX, 1996) pc-i440fx-2.0 Standard PC (i440FX + PIIX, 1996) pc-i440fx-1.7 Standard PC (i440FX + PIIX, 1996) pc-i440fx-1.6 Standard PC (i440FX + PIIX, 1996) pc-i440fx-1.5 Standard PC (i440FX + PIIX, 1996) pc-i440fx-1.4 Standard PC (i440FX + PIIX, 1996) pc-1.3 Standard PC (i440FX + PIIX, 1996) pc-1.2 Standard PC (i440FX + PIIX, 1996) pc-1.1 Standard PC (i440FX + PIIX, 1996) pc-1.0 Standard PC (i440FX + PIIX, 1996) pc-0.15 Standard PC (i440FX + PIIX, 1996) pc-0.14 Standard PC (i440FX + PIIX, 1996) pc-0.13 Standard PC (i440FX + PIIX, 1996) pc-0.12 Standard PC (i440FX + PIIX, 1996) pc-0.11 Standard PC (i440FX + PIIX, 1996) pc-0.10 Standard PC (i440FX + PIIX, 1996) q35 Standard PC (Q35 + ICH9, 2009) (alias of pc-q35–2.5) pc-q35–2.5 Standard PC (Q35 + ICH9, 2009) pc-q35–2.4 Standard PC (Q35 + ICH9, 2009) pc-q35–2.3 Standard PC (Q35 + ICH9, 2009) pc-q35–2.2 Standard PC (Q35 + ICH9, 2009) pc-q35–2.1 Standard PC (Q35 + ICH9, 2009) pc-q35–2.0 Standard PC (Q35 + ICH9, 2009) pc-q35–1.7 Standard PC (Q35 + ICH9, 2009) pc-q35–1.6 Standard PC (Q35 + ICH9, 2009) pc-q35–1.5 Standard PC (Q35 + ICH9, 2009) pc-q35–1.4 Standard PC (Q35 + ICH9, 2009) isapc ISA-only PC none empty machine xenfv Xen Fully-virtualized PC xenpv Xen Para-virtualized PC

شاشة KVM

أثناء العمل مع QEMU ، يمكنك فتح وحدة تحكم في الشاشة والتفاعل مع عملائك بطرق قد تكون صعبة أو حتى مستحيلة باستخدام خادم عادي بدون رأس. يمكنك تشغيل شاشة KVM بالضغط على CTRL + ALT ، ثم SHIFT + 2 ، وسيتم فتح وحدة تحكم جديدة على سطح المكتب. سيغلق SHIFT + 1 وحدة التحكم. يمكنك أيضًا الوصول إلى وحدة التحكم من سطر الأوامر باستخدام شيء مثل:

kvm -monitor stdio

You will probably NOT be able to launch the monitor as root (i.e., via sudo). Naturally, your version may require “qemu-system-x86_64” rather than kvm. This approach allows you to add command line arguments (like that -monitor which specified a console target). Consult man qemu-system-x86_64 for details on the kinds of operations the monitor allows.

This example (borrowed from en.wikibooks.org/wiki/QEMU/Monitor) will list all the block devices currently available to your system, and then point one of them to an ISO file you want to use:

(qemu) info block ide0-hd0: type=hd removable=0 file=/path/to/winxp.img ide0-hd1: type=hd removable=0 file=/path/to/pagefile.raw ide1-hd1: type=hd removable=0 file=/path/to/testing_data.img ide1-cd0: type=cdrom removable=1 locked=0 file=/dev/sr0 ro=1 drv=host_device floppy0: type=floppy removable=1 locked=0 [not inserted] sd0: type=floppy removable=1 locked=0 [not inserted] (qemu) change ide1-cd0 /home/images/my.iso

Networking

By default, a KVM guest will receive an IP address within the 10.0.2.0/24 subnet, and have outgoing access (including SSH access) both to its host, and to the wider network beyond. By that same default however, it won’t be able to host services for network clients. If you need to open up incoming network connectivity, you’ll probably want to create a network bridge on your host that’s similar to the one we used for Xen in the previous chapter. As before, you will install bridge-utils on the host and, assuming you’re running a Debian-based system and you want your host to receive its IP from a network DHCP server, edit the /etc/network/interfaces to look something like this (on CentOS machines, edit files in the /etc/sysconfig/network-scripts/ directory):

auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0

في CentOS ، ستحتاج إلى إنشاء ملف ifcfg-br0 في الدليل / etc / sysconfig / network-scripts / لتبدو كما يلي:

DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=192.168.0.1 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes SEARCH=”example.com”

... ثم أضف سطرًا يقرأ BRIDGE = br0 line إلى ملف واجهة الشبكة الأساسي (والذي سيكون غالبًا: / etc / sysconfig / network-scripts / ifcfg-eth0).

ستقوم بعد ذلك بإيقاف خدمات الشبكة وإعادة تشغيلها (أو إعادة التشغيل).

هل تبحث عن مقدمة قوية لإدارة Linux أو AWS؟ تحقق من بلدي لينكس في العمل و تعلم الأمازون خدمات الشبكة العالمية في شهر وجبات غداء الكتب و لينكس في الحركة بالطبع الهجين النص الفيديو من مانينغ. هل تفضل التعلم التكنولوجي في الفيديو؟ لقد تلقيت دورات إدارة Linux في Pluralsight فقط في انتظار المشاهدة .