שאלה ההבדל בין KVM ו QEMU


קראתי על זה KVM ו Qemu לכמה זמן. נכון לעכשיו יש לי הבנה ברורה של מה שהם עושים.

KVM תומכת בווירטואליזציה של חומרה כדי לספק ביצועים ליד הביצועים המקוריים של מערכות ההפעלה. מצד שני QEmu מחקה את מערכת ההפעלה היעד.

מה שאני מבולבל הוא באיזו רמה שני אלה מתואמים. כמו

  1. מי מנהל את שיתוף RAM ו / או זיכרון?
  2. מי מתזמן פעולות קלט / פלט?

112
2017-12-03 08:42






תשובות:


קמוYou

QEmu היא תוכנה שלמה ועצמאית משלה. אתה משתמש בו כדי לחקות מכונות, הוא מאוד גמיש ונייד. בעיקר זה עובד על ידי "recompiler" מיוחד שהופך קוד בינארי נכתב עבור מעבד נתון לתוך אחד אחר (למשל, כדי להפעיל קוד MIPS על MAC PPC, או ARM במחשב x86).

כדי לחקות יותר מאשר רק את המעבד, Qemu כולל רשימה ארוכה של emulators הפריפריה: דיסק, רשת, VGA, PCI, USB, יציאות טוריות / מקביל, וכו '

KQemuYou

במקרה הספציפי שבו המקור והיעד הם מאותה ארכיטקטורה (כמו המקרה הנפוץ של x86 ב- x86), עדיין יש לנתח את הקוד כדי להסיר כל 'הוראות חסויות' ולהחליף אותן במתגי הקשר. כדי לעשות את זה יעיל ככל האפשר על x86 לינוקס, יש מודול הקרנל שנקרא KQemu המטפל זה.

להיות מודול הקרנל, KQemu הוא מסוגל לבצע את רוב הקוד ללא שינוי, החלפת רק ברמה הנמוך ביותר -0 רק הוראות. במקרה זה, משתמשים Qemu עדיין מקצה את כל זיכרון RAM עבור מכונת חיקוי, ו טוען את הקוד. ההבדל הוא כי במקום recompiling את הקוד, זה קורא KQemu לסרוק / תיקון / לבצע את זה. כל אמולציית החומרה ההיקפית נעשית בקמו.

זה הרבה יותר מהר מאשר Qemu רגיל כי רוב הקוד הוא ללא שינוי, אבל עדיין יש לשנות את קוד ring0 (רוב הקוד בקוד של VM), ולכן הביצועים עדיין סובל.

KVMYou

KVM הוא שני דברים: הראשון הוא מודול ליבה של לינוקס - הכלול כעת ב- mainline - המעביר את המעבד למצב 'אורח' חדש. המדינה האורחת יש קבוצה משלה של מדינות הטבעת, אבל הוראות ring0 חסוי לחזור קוד hypervisor. מאחר שהוא מצב מעבד חדש של ביצוע, הקוד אינו חייב להיות שונה בכל דרך שהיא.

מלבד החלפת מצב המעבד, מודול הקרנל מטפל גם בכמה חלקים ברמה נמוכה של הדמיון, כמו רישומי MMU (המשמשים לטיפול ב- VM) וחלקים מסוימים בחומרת ה- PCI.

שנית, KVM הוא מזלג של ההפעלה Qemu. שתי הקבוצות פועלות באופן פעיל כדי לשמור על ההבדלים לכל הפחות, ויש התקדמות בהפחתתו. בסופו של דבר, המטרה היא Qemu צריך לעבוד בכל מקום, ואם מודול הקרנל KVM זמין, זה יכול להיות בשימוש אוטומטי. אבל בעתיד הנראה לעין, צוות Qemu מתמקד בחיקוי חומרה ובטלטלות, בעוד שחברי KVM מתמקדים במודול הקרנל (לפעמים מעבירים חלקים קטנים מהאמבולציה שם, אם זה משפר את הביצועים) ומממשקים את שאר קוד המשתמש.

הפעלה kwm-qemu עובד כמו Qemu רגיל: מקצה RAM, טוען את הקוד, ובמקום recompiling זה, או קורא KQemu, זה spawns חוט (זה חשוב). החוט קורא את מודול הקרנל של KVM כדי לעבור למצב אורח וממשיך לבצע את קוד ה- VM. בהוראה מועדפת, היא חוזרת למודול הקרנל של KVM, אשר, אם יש צורך, מסמן את החוט של Qemu כדי לטפל ברוב אמולציית החומרה.

אחד הדברים היפים של הארכיטקטורה הזו הוא שקוד האורח הוא חיקוי בחוט ה- posix שבו אתה יכול לנהל עם כלי לינוקס רגילים. אם אתה רוצה VM עם ליבות 2 או 4, kvm-qemu יוצר 2 או 4 פתילים, כל אחד מהם קורא את הליבה KVM מודול כדי להתחיל בביצוע. המקביליות - אם יש לך מספיק ליבות אמיתיות - או תזמון - אם לא - מנוהל על ידי מתזמן לינוקס רגיל, שמירה על קוד קטן הפתעות מוגבל.


155
2017-12-03 14:40



ובשביל מי כמוני אין מעבד עם תמיכה VT, חדשות רעות (טוב, אם זה יכול להיקרא «חדשות») - ה- KQEMU לא נתמך עוד באובונטו. KVM אינו פועל עם מעבד ללא תמיכה זו. - Hi-Angel


כאשר עובדים יחד, KVM בוררות גישה למעבד ולזיכרון, ו- QEMU מחקה את משאבי החומרה (דיסק קשיח, וידאו, USB וכו '). כאשר עובדים לבד, QEMU מחקה הן את המעבד והן את החומרה.


76
2017-12-03 08:46



תשובתו של חבייר מפורטת וצריכה להיות מקובלת כמובן, אבל תשובתך הצליחה לתת לי בכמה משפטים בדיוק את מה שהייתי צריכה לדעת, אז 1+ ותודה. - Bill The Ape


QEMU הוא איטי יותר KVM הוא שם כדי לעזור QEMU להשיג מהירות חומרה מהירה מאוד כדי לספק את הביצועים הטובים ביותר עבור המערכת. QEMU הוא hypervisor / אמולטור.


-1
2017-11-14 10:58