E2IMAGE(8) دستورهای مدیریتی و نگهداری E2IMAGE(8)

e2image - ذخیره متادیتای سیستمفایلهای ext2/ext3/ext4 در یک فایل تصویر

e2image [ -r|Q ] [ -frbn ] [ -s | -c ] دستگاه فایل_تصویر

برنامه e2image برای ذخیره ساختار بحرانی متادیتای سیستمفایلهای ext2/ext3/ext4 در یک فایل تصویر استفاده میشود. فایل تصویر ممکن است با استفاده از گزینه -i در برنامه‌های dumpe2fs و debugfs مورد بررسی قرار گیرد. این کار می‌تواند به کارشناسان در بازیابی سیستم‌فایل‌هایی که دچار آسیب‌دیدگی‌های فاجعه‌بار شده‌اند، کمک کند.

ایجاد فایل تصویر برای تمام سیستم‌فایل‌های موجود روی سیستم و ذخیره طرح‌بندی پارتیشن‌ها (که می‌توان آن را با دستور fdisk -l تولید کرد) در فواصل زمانی منظم — هنگام بوت، یا هفتگی و مشابه آن — ایده بسیار خوبی است. فایل تصویر باید روی سیستم‌فایلی غیر از همان سیستم‌فایلی که داده‌هایش ذخیره می‌شود نگهداری گردد تا در صورت آسیب شدید سیستم‌فایل، دسترسی به این داده‌ها تضمین شود.

جهت صرفه‌جویی در فضای دیسک، e2image فایل تصویر را به صورت یک فایل پراکنده (sparse file) یا در قالب QCOW2 ایجاد می‌کند. بنابراین، اگر نیاز باشد فایل تصویر پراکنده به مکان دیگری کپی شود، باید ابتدا فشرده‌سازی شود یا با استفاده از گزینه --sparse=always در نسخه گنو (GNU) برنامه cp(1) کپی گردد. این موضوع شامل تصویر QCOW2 نمی‌شود، زیرا پراکنده نیست.

اندازه یک فایل تصویر ext2 در درجه اول به اندازه سیستم‌فایل و تعداد آی‌نودهای (inodes) در حال استفاده بستگی دارد. برای نمونه در یک سیستم‌فایل ۱۰ گیگابایتی معمولی با ۲۰۰٬۰۰۰ آی‌نود فعال از مجموع ۱٫۲ میلیون آی‌نود، اندازه فایل تصویر تقریباً ۳۵ مگابایت خواهد بود؛ یک سیستم‌فایل ۴ گیگابایتی با ۱۵٬۰۰۰ آی‌نود فعال از مجموع ۵۵۰٬۰۰۰ آی‌نود، منجر به ایجاد یک فایل تصویر ۳ مگابایتی می‌شود. فایل‌های تصویر معمولاً فشرده‌پذیری بسیار بالایی دارند؛ فایلی که ۳۲ مگابایت فضا روی دیسک اشغال می‌کند عموماً پس از فشرده‌سازی به ۳ یا ۴ مگابایت کاهش می‌یابد.

اگر فایل_تصویر برابر با - تعیین شود، خروجی e2image به خروجی استاندارد هدایت می‌شود تا بتوان خروجی را از طریق لوله (pipe) به برنامه‌ای دیگر مانند gzip(1) ارسال کرد. (توجه داشته باشید که این قابلیت در حال حاضر تنها هنگام ایجاد فایل تصویر خام با استفاده از گزینه -r پشتیبانی می‌شود، زیرا فرایند ایجاد فایل تصویر معمولی یا تصویر QCOW2 نیازمند دسترسی تصادفی به فایل است که از طریق لوله امکان‌پذیر نیست).

گنجاندن داده‌های فایل در فایل تصویر. در حالت عادی e2image تنها متادیتای سیستم‌فایل را شامل می‌شود و داده‌های معمولی فایل‌ها را در بر نمی‌گیرد. این گزینه تصویری تولید می‌کند که برای شبیه‌سازی کامل سیستم‌فایل یا برای مقاصد پشتیبان‌گیری مناسب است. توجه داشته باشید که این گزینه فقط با قالب‌های خام (-r) یا QCOW2 (-Q) کار می‌کند. با ترکیب این گزینه و گزینه -r می‌توان تمامی بلوک‌های استفاده‌شده (و فقط بلوک‌های استفاده‌شده) یک سیستم‌فایل را در دستگاه یا فایل تصویر دیگر شبیه‌سازی کرد.
دریافت تصویر از پارتیشنی با سوپربلاک اصلی آسیب‌دیده با استفاده از سوپربلاکی که در شماره بلوک سوپربلاک سیستم‌فایل واقع شده است. پارتیشن همان‌گونه که هست، شامل سوپربلاک اصلی آسیب‌دیده، کپی می‌شود.
تعیین اندازه بلوک سیستم‌فایل بر حسب بایت. در حالت عادی، e2image برای یافتن اندازه بلوک مناسب، سوپربلاک را در اندازه‌های مختلف بلوک جستجو می‌کند. این جستجو ممکن است در برخی موارد گمراه‌کننده باشد. این گزینه برنامه را وادار می‌کند تا تنها برای یافتن سوپربلاک با یک اندازه بلوک خاص تلاش کند. اگر سوپربلاک پیدا نشود، e2image با خطای مهلک متوقف می‌شود.
مقایسه هر بلوک که باید از دستگاه مبدأ کپی شود با بلوک متناظر در فایل_تصویر مقصد. اگر هر دو از قبل یکسان باشند، عملیات نوشتن نادیده گرفته می‌شود. این ویژگی زمانی مفید است که سیستم‌فایل روی یک دستگاه ذخیره‌سازی مبتنی بر فلش شبیه‌سازی می‌شود (جایی که سرعت خواندن بسیار بالا بوده و برای کاهش استهلاک نوشتن روی دستگاه، اجتناب از نوشتن‌های غیرضروری مطلوب است).
نادیده گرفتن شرط فقط‌خواندنی بودن سیستم‌فایل مبدأ هنگام ذخیره فایل تصویر با استفاده از گزینه‌های -r و -Q. در حالت عادی، اگر سیستم‌فایل مبدأ در حال استفاده باشد، فایل تصویر حاصل به احتمال فراوان مفید نخواهد بود. در برخی موارد که سیستم‌فایل مبدأ دائماً در حال استفاده است، ممکن است داشتن چنین تصویری بهتر از نداشتن هیچ تصویری باشد.
نصب و بازگرداندن متادیتای ذخیره‌شده در فایل تصویر به دستگاه. از این گزینه می‌توان برای بازیابی متادیتای سیستم‌فایل روی دستگاه در وضعیت‌های اضطراری استفاده کرد.

هشدار!!!! گزینه -I تنها باید به عنوان یک اقدام از سر استیصال، هنگامی که سایر راه‌حل‌ها با شکست مواجه شده‌اند استفاده شود. اگر سیستم‌فایل پس از ایجاد فایل تصویر تغییر کرده باشد، داده‌ها قطعاً از دست خواهند رفت. به طور کلی، بهتر است ابتدا یک نسخه پشتیبان کامل از تصویر سیستم‌فایل تهیه کنید تا در صورت نیاز بتوانید پس از آن سایر راهکارهای بازیابی را امتحان کنید.

نادیده گرفتن تمامی عملیات‌های نوشتن تصویر و تنها چاپ شماره بلوک‌هایی که قرار بود نوشته شوند.
تعیین آفست تصویر جهت خواندن از ابتدای دستگاه مبدأ بر حسب بایت. برای جزئیات بیشتر به بخش آفست‌ها (OFFSETS) مراجعه کنید.
تعیین آفست تصویر جهت نوشتن از ابتدای فایل_تصویر مقصد بر حسب بایت. برای جزئیات بیشتر به بخش آفست‌ها (OFFSETS) مراجعه کنید.
نمایش درصد پیشرفت فرایند ایجاد فایل تصویر.
ایجاد فایل تصویر در قالب QCOW2 به جای فایل تصویر معمولی؛ مناسب برای استفاده در تصاویر ماشین مجازی و سایر ابزارهایی که می‌توانند از قالب تصویری .qcow استفاده کنند. برای جزئیات بیشتر به بخش فایل‌های تصویر QCOW2 (QCOW2 IMAGE FILES) در زیر مراجعه کنید.
ایجاد فایل تصویر خام (raw) به جای فایل تصویر معمولی. برای جزئیات بیشتر به بخش فایل‌های تصویر خام (RAW IMAGE FILES) در زیر مراجعه کنید.
درهم‌ریزی ورودی‌های دایرکتوری و صفر کردن بخش‌های بلااستفاده از بلوک‌های دایرکتوری در فایل تصویر نوشته‌شده، به منظور جلوگیری از افشای اطلاعات مربوط به محتوای سیستم‌فایل. با این حال، این کار مانع از تحلیل مشکلات مربوط به دایرکتوری‌های نمایه‌شده با درخت درهم‌سازی (hash-tree) خواهد شد.

گزینه -r یک فایل تصویر خام (raw) ایجاد می‌کند که به دو شیوه با فایل تصویر معمولی تفاوت دارد. نخست، متادیتای سیستم‌فایل در همان آفست نسبی در داخل فایل_تصویر قرار می‌گیرد که در دستگاه قرار دارد؛ به طوری که ابزارهایی مانند debugfs(8), dumpe2fs(8), e2fsck(8), losetup(8) و غیره می‌توانند مستقیماً روی فایل تصویر خام اجرا شوند. برای به حداقل رساندن میزان فضای دیسک مصرفی توسط فایل تصویر خام، این فایل به عنوان یک فایل پراکنده (sparse file) ایجاد می‌شود. (مراقب کپی کردن یا فشرده‌سازی/استخراج این فایل با ابزارهایی که نحوه ایجاد فایل‌های پراکنده را تشخیص نمی‌دهند باشید؛ در این صورت اندازه فایل به اندازه خود سیستم‌فایل بزرگ خواهد شد!) دوم این که فایل تصویر خام بلوک‌های غیرمستقیم و بلوک‌های دایرکتوری را نیز شامل می‌شود، در حالی که فایل تصویر استاندارد فاقد آن‌ها است.

فایل‌های تصویر خام گاهی هنگام ارسال سیستم‌فایل به توسعه‌دهنده به عنوان بخشی از گزارش باگ در e2fsprogs به کار می‌روند. هنگام استفاده در این زمینه، دستور توصیه‌شده به شرح زیر است (مقدار hda1 را با دستگاه مناسب در سیستم خود جایگزین کنید):

e2image -r /dev/hda1 - | bzip2 > hda1.e2i.bz2

این کار فقط اطلاعات متادیتا را بدون هیچ بلوک داده‌ای ارسال می‌کند. با این حال، نام فایل‌ها در بلوک‌های دایرکتوری همچنان می‌توانند اطلاعاتی درباره محتوای سیستم‌فایل افشا کنند که گزارش‌دهنده باگ ممکن است تمایل به محرمانه ماندن آن‌ها داشته باشد. برای رفع این نگرانی، می‌توان گزینه -s را برای درهم‌ریزی نام فایل‌ها در تصویر مشخص کرد.

توجه داشته باشید که این دستور حتی اگر به جای /dev/hda1 از یک تصویر دیسک خام دیگر یا یک تصویر QCOW2 که قبلاً توسط e2image ایجاد شده استفاده کنید نیز کار خواهد کرد.

گزینه -Q یک فایل تصویر QCOW2 را به جای یک فایل تصویر معمولی یا خام ایجاد می‌کند. یک تصویر QCOW2 حاوی تمامی اطلاعاتی است که تصویر خام دارد، اما بر خلاف تصویر خام پراکنده (sparse) نیست. تصویر QCOW2 با ذخیره داده‌ها در قالبی ویژه که داده‌ها را فشرده در کنار هم قرار می‌دهد، فضای مصرفی تصویر را به حداقل رسانده و در عین حال که از ایجاد حفره‌ها پرهیز می‌کند اندازه را نیز به حداقل می‌رساند.

برای ارسال سیستم‌فایل به توسعه‌دهنده به عنوان بخشی از گزارش باگ در e2fsprogs، از دستورهای زیر استفاده کنید (مقدار hda1 را با دستگاه مناسب سیستم خود جایگزین نمایید):

e2image -Q /dev/hda1 hda1.qcow2
bzip2 -z hda1.qcow2

این دستور تنها اطلاعات متادیتا را بدون هیچ بلوک داده‌ای ارسال می‌کند. همان‌گونه که برای فایل‌های تصویر خام (RAW IMAGE FILES) توضیح داده شد، می‌توان گزینه -s را برای درهم‌ریزی نام‌های فایل سیستم‌فایل در تصویر مشخص کرد.

توجه داشته باشید تصویری که توسط e2image در قالب QCOW2 ایجاد می‌شود یک تصویر عادی QCOW2 است و می‌تواند توسط ابزارهای آگاه از این قالب مانند qemu-img پردازش شود.

شما می‌توانید یک تصویر qcow2. را با دستور زیر به یک تصویر خام تبدیل کنید:

e2image -r hda1.qcow2 hda1.raw

این روش می‌تواند برای نوشتن یک تصویر QCOW2 حاوی تمام داده‌ها روی یک فایل تصویر پراکنده (sparse) جهت اتصال حلقه (loop mount)، یا روی یک پارتیشن دیسک، بسیار مفید باشد. توجه داشته باشید که این کار ممکن است با تصاویر QCOW2 که توسط e2image تولید نشده‌اند کار نکند.

در حالت عادی یک سیستم‌فایل از ابتدای یک پارتیشن آغاز می‌شود و e2image روی پارتیشن اجرا می‌گردد. هنگام کار با فایل‌های تصویر، امکان استفاده از دستگاه پارتیشن را ندارید، بنابراین می‌توانید آفست آغاز سیستم‌فایل را مستقیماً با گزینه -o مشخص کنید. به همین ترتیب، گزینه -O آفستی را مشخص می‌کند که باید قبل از نوشتن سیستم‌فایل، در مقصد به آن پرش (seek) شود.

برای نمونه، اگر یک تصویر dd از کل یک هارد دیسک دارید که شامل یک سیستم‌فایل ext2 در پارتیشنی است که از ۱ مبی‌بایت شروع می‌شود، می‌توانید آن تصویر را با دستور زیر در یک دستگاه بلاک شبیه‌سازی کنید:

e2image -aro 1048576 img /dev/sda1

یا می‌توانید یک سیستم‌فایل را از یک دستگاه بلاک در یک فایل تصویر شبیه‌سازی کنید و فضای لازم برای جدول پارتیشن را در ۱ مبی‌بایت اول خالی بگذارید:

e2image -arO 1048576 /dev/sda1 img

اگر حداقل یک آفست و تنها یک فایل را مشخص کنید، یک جابه‌جایی درجا (in-place) انجام می‌شود که به شما امکان می‌دهد با اطمینان سیستم‌فایل را از یک آفست به آفست دیگر منتقل کنید.

e2image توسط تئودور تسو (Theodore Ts'o) با نشانی رایانامه <tytso@mit.edu> نوشته شده است.

e2image بخشی از بسته e2fsprogs است و از نشانی http://e2fsprogs.sourceforge.net در دسترس است.

debugfs(8), dumpe2fs(8), e2fsck(8)

مه ۲۰۲۵ e2fsprogs