پرش به محتوا

کی دامپ (لینوکس)

از ویکی‌پدیا، دانشنامهٔ آزاد

کی دامپ (به انگلیسی: kdump) یکی از ویژگی‌های هسته لینوکس است که در صورت توقف عملکرد کرنل، فایلی شامل توضیح خرابی‌ها ایجاد می‌کند. هنگامی که kdump فعال می‌شود، یک ایمیج از حافظه (همچنین به عنوان vmcore شناخته می‌شود) می‌سازد که می‌تواند برای اهداف اشکال زدایی و تعیین علت خرابی تجزیه و تحلیل شود. ایمیج ساخته شده از حافظه اصلی به عنوان یک فایل با فرمت اجرایی و مرتبط (ELF) ساخته می‌شود و می‌توان مستقیماً از طریق/proc/vmcore در هنگام مدیریت خرابی هسته به آن دسترسی داشت، یا می‌توان آن را به‌طور خودکار در یک فایل، در یک دستگاه خام یا یک سیستم دیگر با قابلیت دسترسی از طریق شبکه ذخیره کرد.[۱][۲]

عملکرد داخلی

[ویرایش]
در طرح‌بندی «هسته دوگانه»، kdump از kexec برای راه‌اندازی یک هسته دیگر و به دست آوردن یک حافظه خالی استفاده می‌کند.[۳] : ۱۰ 

در صورت خرابی هسته، kdump با راه‌اندازی یک هسته لینوکس دیگر، که به عنوان هسته dump-capture شناخته می‌شود، سازگاری سیستم را حفظ می‌کند و از آن برای ساختن فایل خروجی و ذخیره حافظه dump استفاده می‌کند. در نتیجه، سیستم به‌جای تکیه بر هسته‌ای که قبلاً دچار مشکل شده است، در یک محیط جدید و قابل اعتماد راه‌اندازی می‌شود که ممکن است باعث مشکلات مختلفی شود، مانند ایجاد خرابی فایل سیستم در حین نوشتن فایل ایمیج حافظه. برای پیاده‌سازی این سیستم «هسته دوگانه»، kdump از kexec برای راه‌اندازی «گرم» در هسته dump-capture بلافاصله پس از خرابی هسته استفاده می‌کند، با استفاده از توانایی kexec برای راه‌اندازی «از روی» هستهٔ در حال اجرا در می‌توان از اجرای بوت‌لودر و سخت‌افزار برای استفاده از کرنل جدید جلوگیری کرد. یک هسته dump-capture می‌تواند یا یک ایمیج هسته لینوکس جداگانه باشد که به‌طور خاص برای این منظور ساخته شده است، یا می‌توان از ایمیج هسته اولیه در معماری‌هایی استفاده کرد که از هسته‌های قابل جابجایی پشتیبانی می‌کنند.[۱][۳][۴][۵]

محتویات حافظه اصلی (RAM) هنگام بوت شدن و اجرای هسته dump-capture با رزرو مقدار کمی از RAM از قبل، که هسته dump-capture در آن از قبل بارگذاری شده است، حفظ می‌شود، بنابراین هیچ میزان از RAM مورد استفاده توسط هسته اولیه در هنگام ساخت ایمیج بازنویسی نمی‌شود. این مقدار ذخیره شده RAM صرفاً توسط هسته dump-capture استفاده می‌شود و در طول عملکرد عادی سیستم استفاده نمی‌شود. برخی از معماری‌ها، از جمله x86 و ppc64، صرف نظر از اینکه سیستم در بوت اولیه به چه صورت بارگذاری شده است نیاز به بخش کوچکی از RAM با موقعیت ثابت برای بوت کردن هسته دارند، در این مورد، kexec یک کپی از آن بخش از RAM ایجاد می‌کند که باعث می‌شود این قسمت نیز برای هسته dump-capture قابل دسترسی باشد. اندازه و موقعیت بخش رزرو شده RAM از طریق پارامتر بوت هسته مشخص می‌شود.[۱][۳][۴]

علاوه بر هسته لینوکس، ابزارهای فضای کاربری اضافی از مکانیسم kdump پشتیبانی می‌کنند، از جمله ابزار kexec.[۱][۴] علاوه بر ابزارهای رسمی، که صورت پچ برای kexec ارائه می‌شوند، برخی از توزیع‌های لینوکس ابزارهای دیگری را ارائه می‌کنند که پیکربندی عملیات kdump را ساده می‌کند، از جمله تنظیم ذخیره خودکار فایل‌های ایمیج حافظه.[۶][۷][۸] فایل‌های ایمیج حافظه ایجاد شده را می‌توان با استفاده از گنو دیباگر(gdb) یا با استفاده از ابزار crash ارائه شده توسط Red Hat تجزیه و تحلیل کرد،[۹][۱۰]

تاریخچه

[ویرایش]

Kdump جایگزین ابزار قدیمی Linux Kernel Crash Dumps (LKCD) شد. این ابزار نسبت به LKCD بسیار کارآمدتر و مقیاس پذیرتر است.[۱۱][۱۲]

عملکرد kdump به همراه kexec در هسته اصلی لینوکس در نسخه ۲٫۶٫۱۳ ادغام شد که در ۲۹ اوت ۲۰۰۵ منتشر شد.[۱۳]

منابع

[ویرایش]
  1. ۱٫۰ ۱٫۱ ۱٫۲ ۱٫۳ Jonathan Corbet (October 27, 2004). "Crash dumps with kexec". LWN.net. Retrieved August 9, 2014. خطای یادکرد: برچسب <ref> نامعتبر؛ نام «lwn-108595» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.).
  2. "13.2 About Kdump (Chapter 13: Support Diagnostic Tools)". Oracle Corporation. 2012. Retrieved August 9, 2014.
  3. ۳٫۰ ۳٫۱ ۳٫۲ Vivek Goyal; Eric W. Biederman; Hariprasad Nellitheertha (June 14, 2006). "Kdump: A Kexec-based Kernel Crash Dumping Mechanism" (PDF). lse.sourceforge.net. Retrieved August 9, 2014. خطای یادکرد: برچسب <ref> نامعتبر؛ نام «ols2005-kdump» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.).
  4. ۴٫۰ ۴٫۱ ۴٫۲ "Linux kernel documentation: Documentation/kdump/kdump.txt". kernel.org. August 12, 2013. Retrieved August 9, 2014. خطای یادکرد: برچسب <ref> نامعتبر؛ نام «kernel-docs» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.).
  5. Takashi Iwai (July 26, 2006). "Debugging using Kdump" (PDF). SUSE. Retrieved August 9, 2014.
  6. "29.2.2. Using the Kernel Dump Configuration Utility (Red Hat Enterprise Linux 6 Deployment Guide)". Red Hat. Retrieved August 9, 2014.
  7. "kexec and kdump: Basic kdump Configuration (System Analysis and Tuning Guide)". SUSE. April 25, 2014. Retrieved August 9, 2014.
  8. "How to use kdump to debug kernel crashes". Fedora. April 9, 2014. Retrieved August 9, 2014.
  9. David Anderson (August 27, 2010). "White Paper: Red Hat Crash Utility". Red Hat. Retrieved August 9, 2014.
  10. "kexec and kdump: Analyzing the Crash Dump (System Analysis and Tuning Guide)". SUSE. April 25, 2014. Retrieved August 9, 2014.
  11. Ljubuncic, Igor (July 18, 2009). "Collecting and analyzing Linux kernel crashes - Kdump".
  12. Ljubuncic, Igor (April 15, 2009). "Collecting and analyzing Linux kernel crashes - LKCD".
  13. "Linux kernel 2.6.13". kernelnewbies.org. August 29, 2005. Retrieved August 9, 2014.

پیوند به بیرون

[ویرایش]

الگو:Linux kernel

[[رده:ابزارهای برنامه‌نویسی یونیکس]] [[رده:نرم‌افزارهای آزاد نوشته‌شده با سی]] [[رده:ویژگی‌های کرنل لینوکس]]