سیستم "تحمل خطا" مبتنی بر اوبونتو و btrfs. سیستم فایل Btrfs کارهایی که می توانید با حجم های Btrfs انجام دهید

اصلی: نحوه ایجاد و استفاده از عکس های فوری BTRFS - آموزش
نویسنده: ایگور لیوبونچیچ
تاریخ انتشار: 25 فوریه 2012
ترجمه: A. Krivoshey
تاریخ انتقال: آوریل 2012

BTRFS یک فایل سیستم نسبتاً جدید مبتنی بر ZFS Sun است که بیشترین نوآوری را در 25 سال گذشته برای یونیکس به ارمغان آورده است. BTRFS هنوز ناپایدار در نظر گرفته می شود و بنابراین برای کاربردهای تولید مناسب نیست. با این حال، این فایل سیستم دارای بسیاری از ویژگی های مفید است که ارزش کاوش را دارد. یکی از آنها ایجاد عکس های فوری از سیستم است.
اجازه دهید من روشن کنم. اسنپ ​​شات ها عکس های فوری از وضعیت یک سیستم هستند. به یک معنا، اگر یک فایل را کپی کنید و یک نسخه پشتیبان تهیه کنید، در زمان کپی از آن یک عکس فوری می گیرید. این را می توان در هر مکان و هر زمان انجام داد. به سیستم فایلی فکر کنید که در واقع می تواند چندین نسخه از فایل های شما را در ساختار خود مدیریت کند و به شما اجازه می دهد تا هر طور که می خواهید از آنها استفاده کنید. جالب به نظر می رسد، بیایید بررسی کنیم.

معرفی BTRFS

قبل از شروع به کاوش عمیق تر، می خواهم به طور مختصر قابلیت های این فایل سیستم را بیان کنم. BTRFS باید بتواند تمام عملیات سیستم مربوط به مدیریت دیسک و فایل را که معمولاً به آن نیاز دارند، مدیریت کند امکانات اضافی. BTRFS یکپارچه سازی، متعادل سازی بار، کوچک شدن، رشد، تعویض داغ، RAID، عکس های فوری، فشرده سازی، شبیه سازی و موارد دیگر را فراهم می کند که همه در درایور سیستم فایل تعبیه شده اند. با سایر سیستم های فایل، احتمالاً به انواع درایورها و ابزارهای کاربری دیگر برای مدیریت همه این نوع عملیات، مانند یکپارچه سازی سیستم فایل، درایورهای RAID و LVM و غیره نیاز خواهید داشت.
عملکرد داخلی به معنای عملکرد و سهولت استفاده است. با این حال، در این لحظه BTRFS به دلیل ناپایداری و همچنین کاهش عملکرد در مقایسه با فایل سیستم های دیگر مانند Ext4 هنوز به طور کامل قابل استفاده نیست. اما پتانسیل بسیار بالایی دارد، بنابراین نمی توان آن را نادیده گرفت، بلکه باید مطالعه شود.
در این راهنما، نحوه مدیریت عکس های فوری را به شما نشان خواهم داد. این یک ویژگی فوق العاده مرتبط است که به شما امکان می دهد ایجاد کنید پشتیبان گیری فایل های مهمقبل از ایجاد هر گونه تغییر در آنها و سپس بازیابی آنها در صورت لزوم. به نوعی، شبیه به Windows System Restore به اضافه یک درایور بازگشتی در سطح سیستم فایل است. به هر حال، علاوه بر عکس های فوری، در این مقاله می توانید چند عکس نیز پیدا کنید اطلاعات مفیددر مورد کار روزمره با سیستم فایل BTRFS. آزمایش بر روی یک سیستم فدورا 16 ورن با دسکتاپ KDE انجام شد.

نحوه مدیریت BTRFS

شما می توانید از BTRFS برای سیستم فایل ریشه استفاده کنید، به استثنای /boot که باید با سیستم فایل ژورنالینگ سنتی فرمت شود. برای سادگی، در این آموزش با آن کار خواهیم کرد دستگاه جداگانه/dev/sdb1 در BTRFS فرمت شده و در صورت نیاز استفاده می شود. در عمل، این می تواند /home یا /data یا هر چیز دیگری باشد.

خوب؟ ما می خواهیم چه کار کنیم؟

ما /dev/sdb1 را می گیریم و آن را سوار می کنیم. سپس چند زیربخش ایجاد می کنیم. زیربخش‌ها را به‌عنوان درخت‌های ریشه‌دار مجازی در نظر بگیرید، زیرا هر یک از آنها یک ساختار داده درختی جداگانه و مستقل هستند، حتی اگر داده‌ها یکسان باشند.
در زیر دنباله ای از دستورات مورد نیاز برای این کار آمده است. نترسید، نحوه کار آنها را توضیح خواهیم داد.

$ btrfs subvolume create /mnt/data $ btrfs subvolume create /mnt/data/orig $ echo "Dedoimedo is l33t" > /mnt/data/orig/file $ btrfs زیرجلد عکس فوری /mnt/data/orig /mnt/data

/dev/sdb1 بر روی /mnt نصب شده است. ما یک کلید فرعی به نام داده ایجاد می کنیم. در داخل آن زیربخش دیگری به نام orig ایجاد می کنیم. و در حال حاضر در داخل آن فایل های ما ایجاد خواهد شد. از دیدگاه کاربر، زیربخش ها شبیه دایرکتوری های معمولی هستند. به عبارت دیگر، داده و داده/منبع دایرکتوری هستند.
بعد، ما ایجاد می کنیم فایل متنیبه مبدا به نام فایل حاوی مقداری متن. در نهایت، یک عکس فوری از کلید فرعی orig ایجاد می کنیم و آن را پشتیبان می نامیم. اکنون یک کپی مشابه از زیربخش اصلی داریم. در اینجا اثبات است:

علاوه بر این، برای بررسی، از دستور استفاده می کنیم فهرست زیرجلد btrfsبرای دیدن همه بخش های فرعی:

فهرست زیرجلد $ btrfs

توجه داشته باشید که هر بخش دارای شماره شناسه مخصوص به خود است. همانطور که به زودی خواهیم دید، این مهم است.

نمای پیش فرض

در حال حاضر، /mnt به صورت پیش‌فرض هم منبع و هم پشتیبان‌گیری را نشان می‌دهد (همه در داده‌ها). ما می توانیم آن را تغییر دهیم. به یاد دارید قبلاً به ساختارهای درخت ریشه مجازی اشاره کردم؟ BTRFS به شما امکان می دهد دایرکتوری ریشه مجازی را به هر یک از کلیدهای فرعی تغییر دهید.
بنابراین، استفاده از زیربخش ها و عکس های فوری به سادگی به معنای جابجایی بین سلسله مراتب داده های مختلف است. نیازی به حذف، بازنویسی فایل ها یا انجام هر کار دیگری نیست. شما فقط به بخش فرعی دیگری بروید. اکنون خواهیم دید که چگونه این کار انجام می شود.
تیم btrfs subvolume set-default IDتمام چیزی است که ما نیاز داریم نمای پیش‌فرض را روی یک پارتیشن دیگر تنظیم می‌کنیم، سپس دستگاه را جدا کرده و دوباره آن را سوار می‌کنیم. مهم است!
حال، اگر روی یک فایل سیستم کار می‌کنید که به دلیل استفاده از آن نمی‌توان آن را جدا کرد، مانند /usr یا /etc، باید کامپیوتر را مجددا راه‌اندازی کنید تا تغییرات اعمال شوند. اکنون زیربخش دیگری در درخت دایرکتوری داده شده نمایش داده می شود. کاربر متوجه تفاوت نخواهد شد، اما داده های موجود در دایرکتوری ها تغییر خواهند کرد.
برای اینکه واقعاً ببینیم این کار چگونه کار می کند، فایل فایل را در نسخه پشتیبان ویرایش می کنیم. متن Dedoimedo is l33t را با Dedoimedo is NOT l33t جایگزین کنید.

$ echo "Dedoimedo l33t نیست" > /mnt/data/backup/file

خوب، ما شناسه همه زیربخش ها را می دانیم. بنابراین، شناسه را به عنوان نمای پیش فرض سوار می کنیم. به این معنی که به محض نصب مجدد /mnt، فایلی با این محتوا را در اینجا خواهیم دید.

$ btrfs زیرجلد مجموعه پیش فرض 257 /mnt $ umount /mnt $ mount /dev/sdb1 /mnt

حالا بیایید همه چیز را به عقب برگردانیم:

این کار را می توان به تعداد دفعات مورد نیاز انجام داد:

در بالا نما را بین 257 و 260 یعنی بین orig و backup تغییر دادیم در نتیجه میتوانیم محتویات فایل اصلاح شده را مشاهده کنیم. ما به سادگی زیربخش های مختلف را به کاربر نشان دادیم.
در نتیجه، اگر بخواهیم هم منبع و هم نسخه پشتیبان را در فهرست داده ها ببینیم، باید نمای پیش فرض زیربخش را بازیابی کنیم. سطح بالا، یعنی داده ها توجه داشته باشید که همه داده ها در پوشه /mnt نمایش داده می شوند، زیرا ما آن را به عنوان نقطه اتصال انتخاب کردیم. با این حال، به جای آن می توانید از هر دایرکتوری دیگری استفاده کنید.

نتیجه

عملکرد عکس فوری در BTRFS کاملاً منظم پیاده سازی شده است و استفاده از آن دشوار نیست. البته، باید مراقب باشید که از درخت داده درست استفاده کنید و مسائل را با هم مخلوط نکنید. اما اکنون شما دستورات اولیه BTRFS را می دانید و می توانید با اطمینان بیشتری عمل کنید. در آینده، ما Snapper را آزمایش خواهیم کرد، یک فرانت‌اند BTRFS که از openSUSE در دسترس است و اجازه می‌دهد همان عملکرد را از طریق یک رابط کاربری گرافیکی برای کسانی که خط فرمان را دوست ندارند پیاده‌سازی کند.

انتقال به یک فایل سیستم جدید همیشه یک کار دشوار است. ما قبلاً به سیستم فایل قدیمی و اثبات شده اعتماد داریم. حتی ممکن است محدودیت هایی در عملکرد و عملکرد داشته باشد، اما هرگز ما را ناامید نکرده است. فایل سیستم های جدید امکانات زیادی را ارائه می دهند، اما سوال اینجاست که آیا می توان به آنها اعتماد کرد؟

یکی از این فایل سیستم Btrfs است. این یک فایل سیستم نسبتاً جدید است که در سال 2007 ظاهر شد و توسط اوراکل توسعه یافت. طیف بسیار گسترده ای از ویژگی های جدید را ارائه می دهد و بنابراین بسیار مورد توجه کاربران است، اما هنوز شایعاتی در شبکه وجود دارد که این سیستم فایل هنوز برای استفاده دائمی مناسب نیست. در این مقاله سعی می کنیم بفهمیم که Btrfs چه فرصت هایی را در اختیار ما قرار می دهد و همچنین می توان از آن استفاده کرد یا خیر.

همانطور که گفتم، Btrfs توسط Oracle در سال 2007 توسعه یافت. هیچ رمزگشایی واحدی از نام وجود ندارد، برخی می گویند که به معنای B-tree FS است، برخی دیگر Better Fs. درست مانند سایر سیستم های فایل، تمام داده ها در آدرس های خاصی روی دیسک ذخیره می شوند. این آدرس ها در ابرداده ها ذخیره می شوند. و اینجاست که تفاوت ها شروع می شود. تمام ابرداده ها به صورت b-trees سازماندهی شده اند. این کار در هنگام کار با فایل سیستم عملکرد بیشتری را به همراه دارد و همچنین به شما امکان می دهد تعداد نامحدودی فایل اضافه کنید.

اما حتی این همه ماجرا نیست. هنگامی که یک فایل را بازنویسی می کنید، داده ها رونویسی نمی شوند، بلکه فقط قسمت اصلاح شده در مکان جدید کپی می شود و سپس ابرداده به سادگی به روز می شود. این به شما این امکان را می دهد که عکس های فوری از سیستم فایل ایجاد کنید که تا زمانی که تغییرات زیادی ایجاد نشده باشد فضای دیسک را اشغال نمی کند. اگر بلوک قدیمی دیگر مورد نیاز نباشد زیرا بخشی از هیچ عکس فوری نیست، به طور خودکار حذف می شود.

Btrfs به دلیل ساختاری که دارد امکانات زیادی دارد، به عنوان مثال می تواند رسانه های ذخیره سازی بسیار بزرگ امروزی را اداره کند. حداکثر اندازهفایل سیستم 16 اگزابایتی است. این همه به لطف امکان پذیر است استفاده صحیحفضای دیسک سایر فایل سیستم ها استفاده می کنند HDDبه طور کامل، از ابتدا تا انتها برای ثبت ساختار آن.

Btrfs کارها را متفاوت انجام می دهد. هر دیسک، صرف نظر از اندازه آن، به بلوک های 1 گیگابایتی برای داده و 256 مگابایتی برای متادیتا تقسیم می شود. سپس این بلوک‌ها به گروه‌هایی مونتاژ می‌شوند، که هر کدام می‌توانند در دستگاه‌های مختلف ذخیره شوند، تعداد این بلوک‌ها در یک گروه ممکن است به سطح RAID برای گروه بستگی داشته باشد. مدیر حجم از قبل در سیستم فایل ادغام شده است، بنابراین نیازی به استفاده از نرم افزار اضافی نیست.

حفاظت و فشرده سازی داده ها در سطح سیستم فایل نیز پشتیبانی می شود، بنابراین در اینجا نیز به برنامه های اضافی نیاز ندارید. سیستم فایل btrfs همچنین از انعکاس داده ها در چندین رسانه پشتیبانی می کند. در اینجا ویژگی های دیگری از btrfs وجود دارد که می توان به آنها اشاره کرد:

  • پشتیبانی از عکس های فوری سیستم فایل، فقط خواندنی یا فقط نوشتنی.
  • جمع‌های بررسی برای داده‌ها و ابرداده‌ها با استفاده از الگوریتم crc32. به این ترتیب، هر گونه آسیب به بلوک را می توان خیلی سریع تعیین کرد.
  • فشرده سازی با Zlib و Lzo؛
  • بهینه سازی شده برای کار با SSD، سیستم فایل به طور خودکار ssd را شناسایی می کند و شروع به رفتار متفاوت می کند.
  • فرآیند پس‌زمینه برای تشخیص و تصحیح خطا، و همچنین یکپارچه‌سازی و حذف تکراری بلادرنگ.
  • پشتیبانی از تبدیل از ext4 و ext3 و بالعکس.

همه اینها بسیار خوب است، اما آیا امکان استفاده از این فایل سیستم در حال حاضر وجود دارد؟ بیایید سعی کنیم با این موضوع مقابله کنیم.

آیا btrfs آماده استفاده است؟

هنوز تصورات غلط زیادی در مورد Btrfs وجود دارد. بسیاری از آنها از مشکلات واقعی ناشی می شوند که در ابتدای توسعه سیستم فایل بودند. اما افرادی که به این اطلاعات نگاه می کنند به تاریخ آن نگاه نمی کنند. بله Btrfs واقعا ناپایدار و ناپایدار بود. مشکلات زیادی از دست دادن داده ها وجود داشت و کاربران زیادی در مورد آن نوشتند، اما این به سال 2010 برمی گردد.

مهمترین بخش یک فایل سیستم فرمت ذخیره سازی آن بر روی دیسک است. اما فرمت فایل سیستم Btrfs قبلاً ثابت شده است، در سال 2012 اتفاق افتاد و دیگر تغییر نمی کند مگر اینکه کاملاً ضروری باشد. این به تنهایی برای تشخیص پایداری btrfs کافی است.

اما چرا بسیاری از Btrfs را ناپایدار می دانند؟ دلایل متعددی برای این امر وجود دارد. اول، ترس کاربران از فناوری های جدید است. این نه تنها در لینوکس، بلکه در مایکروسافت، با انتقال آنها به NTFS، و در اپل نیز وجود داشت. اما در اینجا پارادوکس وجود دارد، سیستم فایل XFS 20 سال توسعه پایدار را پشت سر گذاشته است، اما پایدارترین سیستم فایل ext4 است که از یک فورک ext3 در سال 2006 توسعه یافته است. در واقع یک سال از Btrfs بزرگتر است.

دلیل دوم در توسعه فعال است، اگرچه فرمت ذخیره سازی داده منجمد شده است، پایگاه کد اصلی هنوز به طور فعال توسعه یافته است و هنوز فضای زیادی برای بهبود عملکرد و ویژگی های جدید وجود دارد.

اما در حال حاضر تأییدیه های زیادی مبنی بر آماده بودن فایل سیستم وجود دارد. این فایل سیستم در سرورهای فیس بوک استفاده می شود، جایی که این شرکت اطلاعات حساس خود را ذخیره می کند. و این خود عامل مهمی است. شرکت هایی مانند فیس بوک، SuSE، RedHat، Oracle، Intel و دیگران در حال کار بر روی بهبود سیستم فایل هستند. این فایل سیستم از زمان انتشار 12 به طور پیش فرض در SUSE Linux Enterprise استفاده شده است. همه این عوامل در کنار هم ثابت می کنند که سیستم فایل کاملاً آماده استفاده است. و با توجه به عملکرد و ویژگی های btrfs، می توان از آن استفاده کرد.

استفاده از Btrfs

اینکه چرا ارزش استفاده از Btrfs را دارد و آیا اصلاً ارزش آن را دارد، متوجه شدیم. اکنون می خواهم تمرینی را نشان دهم تا بتوانید این فایل سیستم را در عمل ارزیابی کنید. من بر اساس اوبونتو مثال می زنم. ابتدا ابزارهای مدیریت فایل سیستم را نصب کنید:

sudo apt نصب btrfs-tools

ایجاد یک فایل سیستم btrfs

ابتدا باید یک فایل سیستم ایجاد کنید. فرض کنید دوتا داریم دیسکهای سخت/dev/sdb و /dev/sdc، می‌خواهیم یک فایل سیستم واحد روی آنها با انعکاس داده ایجاد کنیم. برای انجام این کار، فقط انجام دهید:

sudo mkfs.btrfs /dev/sdb /dev/sdc

پیش‌فرض برای داده‌ها RAID0 خواهد بود (بدون افزونگی و RAID1 برای متادیتا (تکراری در یک دیسک). هنگام استفاده از یک دیسک، متادیتا نیز تکراری است، اگر می‌خواهید این رفتار را غیرفعال کنید، می‌توانید از -m استفاده کنید. گزینه:

sudo mkfs.btrfs -m تک /dev/sdb

اما با این کار خطر از دست رفتن داده ها را افزایش می دهید، زیرا اگر متادیتا از بین برود، داده ها نیز از بین می روند.

با دستور زیر می توانید اطلاعات مربوط به فایل سیستم جدید ایجاد شده را مشاهده کنید:

فایل سیستم sudo btrfs /dev/sdb را نشان می دهد

یا در مورد تمام فایل سیستم های نصب شده:

نمایش فایل سیستم sudo btrfs

مانت btrfs

برای نصب، از دستور معمول استفاده کنید:

sudo mount /dev/sdb /mnt

شما می توانید هر یک از درایوها را سوار کنید، همان اثر را خواهد داشت. خط در /etc/fstab به شکل زیر خواهد بود:

/dev/sdb /mnt btrfs پیش‌فرض 0 1

اکنون به اطلاعات مربوط به فضای دیسک اشغال شده نگاه می کنیم:

فایل سیستم sudo btrfs df /mnt

فشرده سازی در btrfs

برای فعال کردن فشرده‌سازی، کافیست گزینه فشرده‌سازی را هنگام نصب اضافه کنید. می توانید الگوریتم lzo یا zlib را به آن منتقل کنید:

sudo mount -o compress=lzo /dev/sdb /mnt
$ sudo mount -o compress=zlib /dev/sdb /mnt

بازیابی btrfs

برای بازیابی یک Btrfs خراب، از گزینه بازیابی mount استفاده کنید:

sudo mount -o بازیابی /dev/sdb /mnt

تغییر سایز

با استفاده از دستور resize می توانید اندازه یک حجم را در زمان واقعی تغییر دهید:

تغییر اندازه فایل سیستم sudo btrfs -2g/mnt

حجم را 2 گیگابایت کاهش دهید. سپس 1 گیگابایت افزایش دهید:

تغییر اندازه فایل سیستم sudo btrfs +1g/mnt

ایجاد حجم های فرعی

با استفاده از Btrfs می توانید پارتیشن های منطقی، زیر جلدها را در داخل پارتیشن اصلی ایجاد کنید. آنها را می توان در داخل پارتیشن اصلی نصب کرد:

sudo btrfs subvolume ایجاد /mnt/sv1
$ sudo btrfs subvolume /mnt/sv2 را ایجاد کنید
فهرست زیرجلد $ sudo btrfs /mnt

نصب حجم های فرعی

شما می توانید سابجلد را با شناسه ای که با آخرین دستور دریافت کرده اید سوار کنید:

sudo umount /dev/sdb

sudo mount -o subvolid=258 /dev/sdb /mnt

یا می توانید از نام زیر استفاده کنید:

sudo mount -o subvol=sv1 /dev/sdb /mnt

حذف حجم های فرعی

ابتدا به جای زیر جلد، ریشه btrfs را نصب کنید:

sudo umount /mnt

sudo mount /dev/sdb /mnt/

برای حذف یک زیر جلد، می توانید از مسیر mount استفاده کنید، به عنوان مثال:

sudo btrfs subvolume delete /mnt/sv1/

گرفتن عکس فوری

سیستم فایل Btrfs به شما این امکان را می دهد که عکس های فوری از تغییرات ایجاد کنید. برای این کار از دستور snapshot استفاده می شود. به عنوان مثال، بیایید یک فایل ایجاد کنیم، سپس یک عکس فوری بگیریم:

/mnt/sv1/test1 /mnt/sv1/test2 را لمس کنید

ایجاد یک عکس فوری:

عکس فوری زیر جلد sudo btrfs /mnt/sv1 /mnt/sv1_snapshot

هیچ یک از ما از اشتباه مصون نیستیم. گاهی اوقات سندرم دست های کج منجر به عواقب بسیار ناراحت کننده ای می شود. گاهی اوقات مقاومت در برابر و انجام آزمایش‌های «ضد علمی» با سیستم یا اجرای یک اسکریپت / برنامه دانلود شده از یک منبع تأیید نشده بسیار دشوار است. و در اینجا ابزارهای مختلف برای اجرای برنامه ها در یک محیط ایزوله و قابلیت های سیستم فایل گسترده به کمک می آیند.

مقدمه

*سیستم‌های nix همیشه در برابر برنامه‌های بد نوشته شده نسبتاً مقاوم بوده‌اند (البته به شرطی که به صورت روت اجرا نشده باشند). با این حال، گاهی اوقات تمایل به آزمایش با سیستم وجود دارد - شادی کردن با تنظیمات، که برخی از آنها می توانند حیاتی باشند، یک اسکریپت مشکوک را اجرا کنید، برنامه ای را که از یک منبع نامعتبر به دست آمده را نصب کنید ... در غیر این صورت، پارانویا به سادگی غلبه می کند، و من می خواهم برای ایجاد موانع تا حد امکان برای محافظت در برابر بدافزارهای احتمالی. این مقاله روش هایی را برای جلوگیری از عواقب خطاهای غیراجباری با بازگشت به نقطه بازگشت ایجاد شده قبلی (عکس های فوری Btrfs)، اجرای یک برنامه مشکوک در یک محیط محدود و سرگرم کردن پارانویای شما (Arkose و chroot) شرح می دهد.

chroot

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

حداقل سه راه برای ایجاد یک محیط chroot وجود دارد:

  1. شما تمام برنامه ها و کتابخانه های لازم برای کار برنامه راه اندازی شده را تعریف می کنید. این منعطف ترین راه، اما همچنین گیج کننده ترین راه است.
  2. محیط chroot به صورت پویا شکل می گیرد. زمانی پروژه ایزوله وجود داشت که این کار را انجام می داد، اما اکنون به دلایل نامعلومی به فراموشی سپرده شده است.
  3. استقرار سیستم پایه در دایرکتوری مشخص شده و روت کردن در آن - من آن را توضیح خواهم داد.

گراب و btrfs

به احتمال زیاد، هنگام بوت شدن از پارتیشن Btrfs، Grub قسم می خورد که فایل های پراکنده مجاز نیستند و از شما می خواهد که هر کلیدی را فشار دهید. برای جلوگیری از ظاهر شدن این پیام، آن را در قسمت دلخواه خود باز کنید ویرایشگر متنفایل /etc/grub.d/00.header را وارد کنید و خط زیر را در آنجا کامنت کنید:

اگر [ -n "\$(have_grubenv)" ]; سپس اگر [ -z "\$(boot_once)" ]; سپس save_env recordfail; fi; فی

در واقع، متغیر recordfail برای جلوگیری از راه‌اندازی مجدد چرخه‌ای لازم است، که در هنگام راه‌اندازی برای آن کوک می‌شود، و سپس در صورت بارگذاری موفقیت‌آمیز، روی 0 تنظیم می‌شود. من فکر می کنم که در یک سیستم دسکتاپ کاملاً می توان بدون آن کار کرد.

Ognelis در sandbox - این همان چیزی است که عنوان می گوید

ابتدا بسته debootstrap را نصب می کنیم که فقط برای این منظور استفاده می شود.

$ sudo apt-get install debootstrap

سپس یک دایرکتوری ایجاد می کنیم که chroot در آن قرار می گیرد و سیستم پایه کوانتال را در آن مستقر می کنیم. به طور کلی، می توان آن را در هر جایی ایجاد کرد، اما مکان سنتی آن /var/chroot است. از آنجایی که اکثر دستورات زیر نیاز دارند مجوزهای ریشه، تغییر به حساب superuser منطقی است:

$ sudo su - # mkdir /var/chroot && cd /var/chroot # debootstrap quantal ./quantal-chr1 http://mirror.yandex.ru/ubuntu

بیایید به آخرین دستور نگاهی بیندازیم. این نسخه Quantal Ubuntu را در یک فهرست جداگانه quantal-chr1 (هرگز نمی دانید، ناگهان به chroot دیگری نیاز دارید) را از نزدیکترین آینه مستقر می کند. پس از تکمیل استقرار، باید procfs، سیستم های فایل sysfs و (در صورت وجود) دایرکتوری dev/ را به این زیردرخت نگاشت کنید. در صورتی که chroot تا زمان راه اندازی مجدد فقط برای برنامه های متنی استفاده می شود، دستورات زیر کافی است:

# mount --bind /proc /var/chroot/quantal-chr1/proc # mount --bind /sys /var/chroot/quantal-chr1/sys # mount --bind /dev /var/chroot/quantal-chr1/ توسعه دهنده

اگر می خواهید این زیردرخت پس از راه اندازی مجدد کار کند، خطوط مناسب را به /etc/fstab اضافه کنید. خوب، برای کار برخی برنامه های گرافیکیدایرکتوری های /tmp و /var/run/dbus نیز باید نمایش داده شوند. پس از آن، می توانید دستور زیر را وارد کنید، که در واقع chroot را می سازد:

# chroot /var/chroot/quantal-chr1/

و شما قبلاً در آن قفل شده اید. برای اینکه chroot را با یک سیستم واقعی اشتباه نگیرید، توصیه می کنم درخواست پوسته را تغییر دهید. به عنوان مثال، اجازه دهید Skype را در chroot نصب و اجرا کنیم. برای این کار باید بسته schroot را روی سیستم میزبان نصب کنید که اجرای برنامه ها را در محیط chroot آسان تر می کند:


استقرار در سیستم پایه chroot با استفاده از debootstrap # apt-get install schroot

سپس یک ورودی به فایل /etc/schroot/schroot.conf اضافه می کنیم. در مورد من موارد زیر را اضافه کردم:

/etc/schroot/schroot.conf description=دایرکتوری کوانتال اسکایپ=/var/chroot/quantal-chr1 priority=3 کاربر=گروه های رام=روت-گروه=روت،رم

ما /dev، /proc، /sys، /tmp و /var/run/dbus را ارسال می کنیم - برای چگونگی انجام این کار به بالا مراجعه کنید. یک کاربر و گروه اسکایپ را به chroot اضافه کنید - مطلوب است که uid و gid با uid / gid کاربر اصلی سیستم واقعی (در مورد من، رام) مطابقت داشته باشند، که برای آن دستورات زیر را تایپ می کنیم:

# schroot -c quantal-skype -u root # addgroup --gid 1000 skype # adduser --disabled-password --force --uid 1000 --gid 1000 skype

پس از آن، ما اسکایپ تازه دانلود شده را - دوباره در chroot - قرار می دهیم و وابستگی های آن را برآورده می کنیم:

# dpkg --force-all -i skype-ubuntu-precise_4.1.0.20-1_i386.deb # apt-get -f install # exit

در سیستم اصلی، اتصال به سرور X را از localhost مجاز می کنیم و chroot را به عنوان وارد می کنیم کاربر معمولی:

$ xhost +localhost $ cd / && schroot -c quantal-skype -u rom /bin/bash

متغیر DISPLAY را تنظیم کنید (که باید در سیستم اصلی به آن نگاه کنید) و Skype را راه اندازی کنید:

$ export DISPLAY=":0.0" $ skype --dbpath=/home/skype/.اسکایپ و

اسکایپ با موفقیت در محیط chroot نصب و راه اندازی شد.

نوشتن یک اسکریپت برای تسهیل راه اندازی امکان پذیر است، اما می توانید خودتان این کار را انجام دهید.


با استفاده از Arkose

Arkose به روشی مشابه جعبه‌های سندباکس ویندوز مانند Sandboxie کار می‌کند. در عمل، این یک بسته بندی مناسب برای ظروف LXC است. اما، همانطور که می دانید، راحتی و انعطاف پذیری گاهی اوقات ناسازگار هستند - تنظیم دقیقظروف ایجاد شده دشوار است. از مزایا، من به طور مستقیم توجه می کنم رابط شفاف(این در صورتی است که از رابط کاربری گرافیکی استفاده می کنید - با این حال، راه اندازی از خط فرمانهمچنین بسیار ساده است)، اما از معایب - به طور پیش فرض به فضای خالی زیادی روی هارد دیسک نیاز دارد و تعدادی نیز وجود دارد راه های ممکنمیان بر؛ اما اگر از Arkose به عنوان یک لفاف اضافی برای راه های بالقوهاجرای بدافزار (مرورگر) یا حتی برای آزمایش برخی از آنها برنامه جالب، به درد نمیخوره

seccomp و seccomp-bpf

Seccomp یک مکانیسم کمتر شناخته شده است که در هسته 2.6.12 معرفی شده است که به یک فرآیند اجازه می دهد تا یک انتقال یک طرفه را به حالت "ایمن" انجام دهد، جایی که تنها چهار فراخوانی سیستم برای آن در دسترس است - exit()، sigreturn()، read() و write()، و دو مورد آخر فقط برای قبلا در دسترس هستند باز کردن فایل ها. اگر فرآیند سعی کند هر syscall دیگری را فراخوانی کند، بلافاصله از بین می رود.

بدیهی است که این راه حل چندان انعطاف پذیر نیست. در این راستا، seccomp-bpf در هسته 3.5 ظاهر شد، که به شما امکان می دهد با استفاده از قوانین BPF تنظیم دقیق کنید، که کدام فراخوانی سیستم (و آرگومان های آنها) مجاز است و کدام غیر مجاز است. Seccomp-bpf در گوگل کروم، سیستم عامل کروم، و همچنین در اوبونتو 12.04 پشتیبان‌گیری شده است.

قبل از استفاده از Arkose، باید آن را نصب کنید. روش استاندارد است:

$ sudo apt-get install arose-gui

هم رابط کاربری گرافیکی (arkose-gui) و هم ابزار خط فرمان (arkose) نصب خواهند شد. رابط گرافیکی به قدری ساده است که من در توصیف آن نکته ای نمی بینم، بهتر است بلافاصله به تمرین بروید.


ایجاد دستی
عکس فوری فقط خواندنی-
ta در btrfs

گزینه های خط فرمان در نظر خواهند گرفت:

  • -n (هیچ، مستقیم، فیلتر شده) - شبکه را به جعبه شنی نقشه برداری کنید. گزینه های هیچ و مستقیم قابل توضیح هستند، فیلتر شده رابط خاص خود را برای هر جعبه شنی ایجاد می کند. در عمل، بهتر است از هیچ یا مستقیم استفاده کنید، زیرا راه اندازی فیلتر شده زمان زیادی می برد.
  • -d (هیچ، سیستم، جلسه، هر دو) - دسترسی به اتوبوس های D-Bus از جعبه شنی.
  • -s size - اندازه ذخیره سازی را بر حسب مگابایت تنظیم می کند. پیش فرض 2000 مگابایت برای ext4 یا نصف حافظه برای tmpfs است. پس از پایان برنامه در حال اجرا در sandbox، مخزن از بین می رود.
  • -t - نوع سیستم فایل ذخیره سازی. پیش فرض ext4 است.
  • دایرکتوری --root - دایرکتوری را مشخص می کند که به عنوان root به sandbox نگاشت می شود.
  • ---نوع ریشه (گاو، باند) - دقیقاً چگونه ریشه را نمایش دهیم. اگر از گاو استفاده می کنید، پس از بستن جعبه شنی، هر تغییری از بین می رود و در صورت اتصال، ذخیره می شود.
  • --base-path - مکانی را که sandbox در آن ذخیره می شود را مشخص می کند. پیش فرض ~/.arkose است.
  • فهرست --bind و فهرست --cow - یک دایرکتوری را در حالت گاو یا مستقیم نمایش می دهد. به طور طبیعی، استفاده از یک یا گزینه دیگر به نوع نگاشت ریشه بستگی دارد - استفاده از گزینه --cow در فهرستی که قبلاً کپی روی نوشتن است، منطقی نیست.
  • -h - از دایرکتوری اصلی اصلی استفاده کنید. مشابه --bind $HOME.
  • -p - امکان استفاده از PulseAudio را فراهم می کند.

بیایید فایرفاکس را به عنوان مثال شروع کنیم:

$ sudo arkose -n مستقیم -p فایرفاکس

این دستور فایرفاکس را با دسترسی به وب و PulseAudio راه اندازی می کند. از آنجایی که هر کانتینر تازه ایجاد شده به طور پیش‌فرض دایرکتوری اصلی خود را دارد، نمایه firelis نیز جدید خواهد بود، در صورت داشتن افزونه‌های نصب‌شده.

«اما صبر کن! چرا سودو؟ - ممکن است یک سوال منطقی پیش بیاید. واقعیت این است که برخی از عملیات های آماده سازی فقط از زیر ریشه در دسترس هستند. با این حال، من عجله می کنم تا به شما اطمینان دهم - برنامه راه اندازی شده با حقوق کاربر فعلی کار خواهد کرد.


اضافه کردن کاربر برای اجرای اسکایپ در chroot

مختصری در مورد BTRFS

این اتفاق می افتد که پس از نصب به روز رسانی، سیستم از بین می رود. ابزارهایی شبیه به مؤلفه Windows System Restore در اینجا مفید خواهند بود. من با افتخار می گویم که آنها را داریم! و یکی از آن ابزارها Btrfs است. از مزایای سیستم فایل جدید اوراکل، شایان ذکر است که:

  • کپی روی نوشتن این فناوری برای ایجاد عکس های فوری - عکس های فوری از وضعیت سیستم استفاده می شود. هنگام ایجاد یک عکس فوری، درایور FS ابرداده را در آن کپی می کند و شروع به نظارت بر ضبط واقعی می کند. اگر پیدا شد، بلوک های داده اصلی در عکس فوری قرار می گیرند و بلوک های جدید به جای آنها نوشته می شوند.
  • تخصیص دینامیک اینودها برخلاف FS نسل قدیم، Btrfs محدودیتی در تعداد فایل ها ندارد.
  • فشرده سازی فایل.
  • امکان میزبانی فایل سیستم بر روی چند رسانه فیزیکی. در واقع، این همان RAID است، فقط یک سطح بالاتر. در زمان نوشتن، RAID 0، RAID 1 و RAID 10 پشتیبانی می شوند، در حالی که پشتیبانی از RAID 5 در مراحل اولیه توسعه است.

ایجاد و حذف عکس های فوری

برای انجام عملیات روی یک فایل سیستم نسل جدید، مانند ایجاد عکس های فوری، یکپارچه سازی یک حجم و بسیاری موارد دیگر، از دستور btrfs استفاده می شود. نحو آن است مورد کلی، بعد:

btrfs<команда> <аргументы>

چه نوع عملیاتی را می توان روی Btrfs انجام داد؟ در زیر دستوراتی وجود دارد که برای من جالب بود.

  • btrfs subvol ایجاد [<путь>/]<имя>- یک زیرجلد ایجاد می کند (نوار کناری را ببینید). اگر مسیری مشخص نشده باشد، آن را در دایرکتوری فعلی ایجاد می کند.
  • btrfs subvol delete<имя>- به ترتیب زیر جلد را حذف می کند.
  • btrfs subvol find-new<путь> <поколение>- لیست آخرین فایل های اصلاح شده در مسیر مشخص شده، از نسل مشخص شده شروع می شود. متاسفانه هنوز امکان پذیر نیست به روشی سادهنسل فعلی یک فایل خاص را پیدا کنید، بنابراین استفاده از این دستور ممکن است با رقص با تنبور همراه باشد.
  • عکس فوری btrfs subvol [-r]<подтом> <путь к снапшоту>- نکته برجسته برنامه. یک عکس فوری از زیرجلد مشخص شده با مسیر مشخص شده به آن ایجاد می کند. گزینه -r نوشتن روی عکس های فوری را غیرفعال می کند.
  • لیست btrfs subvol<путь>- فهرستی از حجم های فرعی و عکس های فوری را در مسیر مشخص شده نشان می دهد.
  • btrfs filesys df - استفاده از فضا برای نقطه نصب مشخص شده.
  • تغییر اندازه فایل btrfs [+/-]<новый размер> <путь>- بله، بله، Btrfs قابلیت تغییر اندازه در سیستم "زنده" را دارد و نه تنها افزایش، بلکه کاهش نیز دارد! با آرگومان ها، فکر می کنم همه چیز کم و بیش واضح است، اما، علاوه بر تعیین اندازه، می توانید از آرگومان max استفاده کنید که سیستم فایل را تا حداکثر اندازه ممکن گسترش می دهد.

دستورات باقی مانده، اگرچه جالب است، اما فقط تا آنجا که به موضوع مقاله مربوط می شود، آنها را در نظر نخواهیم گرفت. بنابراین، برای ایجاد یک عکس فوری از یک زیرجلد با تاریخ فعلی، به عنوان مثال، دایرکتوری ریشه، دستور زیر را تایپ می کنیم:

$ sudo btrfs subvol snap -r / /snapshot-2013-01-16

$ sudo btrfs subvol del /snapshot-2013-01-16

زیرجلد Btrfs

یک زیرجلد Btrfs می تواند به دو صورت عمل کند: به عنوان یک دایرکتوری و به عنوان یک شی VFS - چیزی که می تواند نصب شود. به عنوان مثال، هنگام نصب اوبونتو، دو زیرجلد ایجاد می شود - @ و @home. اولی شامل فایل های سیستمی، دومی داده های کاربر است. این شبیه به پارتیشن بندی یک دیسک است، فقط اگر قبلاً یک پارتیشن می توانست، به عنوان یک قاعده، فقط یک شی VFS داشته باشد، اکنون می توان چندین شی در یک پارتیشن به طور همزمان وجود داشت، و می توان آنها را تو در تو قرار داد.

اتوماسیون

من اهمیت زیادی در ایجاد عکس های فوری به صورت دستی نمی بینم - شما به سادگی می توانید این کار را فراموش کنید. سه سناریوی اتوماسیون به ذهن می رسد:

  • یک اسکریپت بنویسید و آن را در rc.local قرار دهید.
  • یک اسکریپت بنویسید و آن را در cron قرار دهید.
  • از دستور btrfs autosnap استفاده کنید.

متأسفانه، در اوبونتو 12.10 آخرین روش به دلایلی در دسترس نیست، بنابراین عملاً هیچ انتخابی وجود ندارد. من شخصا ترجیح دادم یک اسکریپت cron بنویسم، اما ابتدا بیایید یک زیرجلد ایجاد کنیم که عکس های فوری ما در آن ذخیره شوند. برای چی؟ حداقل برای اینکه پوشه ریشه پر نشود.

# mkdir /mnt/sda11 # mount /dev/sda11 /mnt/sda11 # btrfs subvol create /mnt/sda11/@snapshots # umount /mnt/sda11

بیایید ببینیم این دستورات چه کار می کنند. از آنجایی که ریشه فایل سیستم واقعی در حال حاضر در دسترس نیست (اوبونتو به جای آن از زیرجلد @ به عنوان ریشه استفاده می‌کند)، ما مجبور هستیم آن را به صورت دستی نصب کنیم. در مورد من روی /dev/sda11 است. با دستور سوم، زیرجلد @snapshots را ایجاد می کنیم - بنابراین اگر آن یا root واقعی را Mount نکنیم، محتوای آن غیر قابل دسترسی خواهد بود. و حالا اسکریپت واقعی:

Autosnap.sh #!/bin/bash set -e VOLUME=/dev/sda11 TMP_PATH=/tmp/snapshots MOUNT_OPTS=" [ایمیل محافظت شده]" # تاریخ و زمان کنونی - برای نام‌گذاری پوشه‌های عکس فوری NOW="$(تاریخ +%Y%m%d%H%M)" NOW_SEC="$(تاریخ +%s)" اگر [ $# -ne 1 ] ؛ سپس # اگر اسکریپت بدون آرگومان اجرا می‌شود، پیش‌فرض را روی one day ago قرار دهید OLDER_SEC="$(date --date "1 day ago" +%s)" else # اگر آرگومان داریم، فرض می‌کنیم که این یک تاریخ در هر قالبی که دستور date بفهمد، با تمام مفاهیم OLDER_SEC="$(date --date "$1" +%s)" fi # تفریق از تاریخ فعلیمورد نیاز است و آن را به دقیقه تبدیل کنید OLDER=$(($NOW_SEC-$OLDER_SEC)) OLDER_MIN=$(($OLDER/60)) [ ! -d "$(TMP_PATH)/" ] && mkdir "$(TMP_PATH)/" [ -z "`grep "$(TMP_PATH)" /proc/mounts`" ] && mount "$(VOLUME)" "$(TMP_PATH )/" -o "$(MOUNT_OPTS)" && ( # Mount mkdir "$(TMP_PATH)/$(NOW)/" # ایجاد عکس های فوری btrfs subvol snap / "$(TMP_PATH)/$(NOW)/rootsnap" > / dev/null 2>&1 btrfs subvol snap /home "$(TMP_PATH)/$(NOW)/homesnap" > /dev/null 2>&1 ) && ( # جستجو در پوشه هایی با عکس های فوری قدیمی تر از تاریخ تعیین شده برای f در "find" $ (TMP_PATH)" -mindepth 1 -maxdepth 1 -type d -cmin +"$OLDER_MIN" -print0 |xargs -0`؛ btrfs subvol del "$(f)/rootsnap" > /dev/null 2>&1 && btrfs subvol del "$(f)/homesnap" > /dev/null 2>&1 && # و حذف عکس‌های فوری و پوشه‌های حاوی آنها rmdir "$f" انجام شده ) umount -l "$(TMP_PATH)" && rmdir "$(TMP_PATH )"

این اسکریپت را می توان در جایی که مناسب است قرار داد (من شخصاً ترجیح می دهم چنین چیزهایی را در /usr/local/bin قرار دهم، اما این یک موضوع سلیقه ای است) و آن را از cron یا از rc.local اجرا کنید. به طور پیش‌فرض، اسکریپت عکس‌های قدیمی‌تر از یک روز را می‌چرخاند، اما می‌توانید هر عدد دلخواه را در قالب فرمان تاریخ مشخص کنید - مهم‌تر از همه، فراموش نکنید که در نقل قول قرار دهید.

استفاده از تصویر ISO

برای اینکه هر بار که فایل‌های حیاتی آسیب می‌بینند، دیسک با ubunt ضبط شده کشیده نشود، می‌توان آیتم بوت را از تصویر ISO در منوی Grub اضافه کرد، که پیشنهاد می‌کنم این کار را انجام دهیم. برای انجام این کار، به یک پارتیشن غیر Btrfs نیاز دارید (زیرا به دلایل نامعلوم، initramfs استاندارد ISO اوبونتو نمی‌خواهد تصویر را در صورتی که روی پارتیشن با FS توصیف شده قرار دارد، ببیند) و عقربه‌های مستقیم. خطوط زیر را به فایل /etc/grub.d/40_custom اضافه کنید:

منوی "Ubuntu 12.10 i386 iso" ( insmod part_msdos insmod fat # ریشه را از جایی که مجموعه ISO دریافت می کنیم نصب کنید root="hd0,msdos7" # مسیر رسیدن به تصویر نسبت به مجموعه ریشه بالا isofile=/ubuntu-12.10-desktop- i386.iso # به‌عنوان یک دستگاه Loopback مستقیماً در Grub loopback loop قرار دهید $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (حلقه)/casper/initrd.lz )

و دستور به روز رسانی کانفیگ اصلی Grub را اجرا کنید:

$ sudo به‌روزرسانی گراب

اکنون، حتی در صورت آسیب جدی به سیستم - مگر اینکه بوت لودر و فایل های آن تحت تأثیر قرار گیرند - همیشه می توانید از تصویر ISO بوت شده و تغییر دهید. فایل های خرابیا به حالت قبلی سیستم برگردید.


اطلاعات

اگر در محیط chroot به عنوان root کار می کنید، فرصتی برای فرار از آنجا وجود دارد. یکی از راه ها استفاده است تماس سیستمی mknod() به دنبال آن نصب ریشه واقعی. نصب پچ ست grsecurity این مشکل را حل می کند.

دستورات Btrfs دارای فرم استاندارد و اختصاری هستند. به عنوان مثال، دستور "btrfs subvolume snapshot" را می توان به صورت "btrfs su sn" نوشت.

بنابراین، فرض کنید سیستم را رها کرده اید و باید آن را از یک عکس فوری Btrfs بازیابی کنید. برای انجام این کار، از این تصویر ISO بوت کنید، پارتیشنی را که سیستم را روی آن انداخته اید، سوار کنید - دقیقاً پارتیشن، نه حجم فرعی! - و دستورات زیر را وارد کنید (البته برای عکس های فوری و پارتیشن های شما تنظیم شده است):

# cd /mnt/sda11 # mv @ @_badroot # mv @snapshots/201302011434/rootsnap @

همین کار را در صورت لزوم با @home انجام می دهیم و راه اندازی مجدد می کنیم. اگر همه چیز خوب پیش رفت، می توانید @_badroot را حذف کنید:

$ sudo btrfs subvol del @_badroot

نتیجه

در سیستم‌های *nix، راه‌های زیادی برای محافظت یا کاهش آزمایش‌های بد وجود دارد. من برخی از آنها را بررسی کرده ام. با این حال، شایان ذکر است که همه این روش‌ها عمدتاً برای آزمایش‌کنندگانی در نظر گرفته شده‌اند که دوست دارند عمیق‌تر در سیستم کاوش کنند. آنها برای گرفتن بدافزار مناسب نیستند - شناسایی آنها به اندازه کافی آسان است، اگرچه مطمئناً سطحی از امنیت را ارائه می دهند.

به عنوان یک گیک، من هنوز عادت دارم که دائماً با سیستم آزمایش کنم: بازسازی، نصب هسته های RC غیر پایدار، از جمله شاخه های به روز رسانی آزمایشی. اغلب، حتی می گویم که سیستم را خیلی اوقات خراب می کنم (بهترین حالت شخصی من، 2 هفته بدون نصب مجدد).

شکستن یعنی چی؟ وقتی چیزی بسیار بد کار می کند، به عنوان مثال، LibreOffice و Compiz که اغلب از کار می افتند و دوست دارند ثابت شوند، من یا سعی می کنم سیستم را دوباره پیکربندی کنم، اما این بسیار طولانی و خسته کننده است.

دقیقاً همان چیزی است که من به آن می رسم.

اگر کسی مانند من دوست دارد با سیستم آزمایش کند و از بازیابی هر بار آن خسته شده است، در اینجا گزینه ای برای شما وجود دارد که چگونه این مشکل را برای خودم حل کردم. از زیر گربه می گذرم.

دوچرخه سواری یا معمولی

مورد 1: LiveCD

در پست فکتوم، از این واقعیت شروع می کنیم که دیسک به 2 پارتیشن تقسیم می شود: /boot فرمت شده در ext4 و / فرمت شده در btrfs.
Grub 2 در MBR دیسک نوشته شده است.
بر این اساس، بند اول:
از عادات و ملاحظات شخصی، بازیابی سیستم از رابط گرافیکی بسیار ساده تر از تحسین صفحه سیاه و گاهی بدون دسترسی به اینترنت، به خاطر سپردن و تجویز دستورات است. نه، من فکر نمی کنم که کنسول شیطانی است، من کنسول را دوست دارم، اما به هر حال، از رابط گرافیکی آن خوشایندتر است.
اقدام یک
این ایده جدید نیست، من اعتراف می کنم که در جایی در Habré ظاهر شد، اما من پیوند را پیدا نکردم، بنابراین از منبع انتشار عذرخواهی می کنم.
تصویر توزیع Live مورد نظر را در پوشه /boot کپی کنید
sudo cp /media/timofey/boot/grub/ISO/Linux/Ubuntu/ubuntu-12.10-desktop-amd64.iso /boot/ubuntu-12.10-desktop-amd64.iso
/boot به یک پارتیشن جداگانه منتقل می شود، نه به این دلیل که بهتر است، بلکه به این دلیل که به دلایلی برای من ناشناخته است، LiveCD های نوشته شده در btrfs از زیر grub 2 بارگذاری نمی شوند.
اکنون تنظیمات پیش‌فرض grub 2 را تصحیح می‌کنیم تا هنگام به‌روزرسانی grub "a، تصویر را از دست ندهیم.
sudo nano /etc/grub.d/40_custom

و بعد از نظرات چیزی شبیه به این را در آنجا بچسبانید:
منوی "Ubuntu 12.10 amd64" ( set isofile=/ubuntu-12.10-desktop-amd64.iso loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noeject nopromp )/casper/initrd.lz )

در واقع در تصویر و شباهت (ویکی رسمی اوبونتو) پیکربندی شده است:
/Grub2/ISOBoot
اکنون "تقریبا" مهمترین چیز این است که پیکربندی را دوباره تولید می کنیم:

sudo update-grub

همه چیز، حالا بعد از راه اندازی مجدد، با نگه داشتن کلید shift، می توانیم سیستم مینی را با اینترنت راه اندازی کنیم و رابط کاربری گرافیکی، صرف نظر از وضعیت سیستم زیربنایی.

مورد 2: تصاویر

من فکر می کنم هر فردی که مدت زیادی با لینوکس آشنایی داشته باشد حداقل در مورد btrfs شنیده است، حتی شاید قبلاً نظر خود را شکل داده باشد. در نصب اوبونتودر یک پارتیشن با btrfs به طور پیش فرض بسیار عاقلانه انجام می شود، از مکانیزم پارتیشن فرعی استفاده می شود و 2 زیربخش ایجاد می شود، اینها @ و home (که من به ترتیب جایگزین / و / home) هستند، هنگام نصب مجدد سیستم. به درستی، ما تنظیمات را از دست نخواهیم داد. اما اکنون در مورد آن نیست. چگونه از این نگرانی برای کاربران نهایی استفاده کنیم؟ بسیار ساده.

کمی پیش زمینه:
در ابتدا قرار بود اسکریپت از طریق rc.local اجرا شود، اما اجرا نشد، سپس از طریق daily cron پیاده سازی شد، بعداً rc.local را شکست دادم و Snapshots to hell in cron را خاموش کردم.

کد اسکریپت:

#!/bin/bash #این اسکریپت برای ایجاد خودکار عکس فوری در راه اندازی #نسخه 1.2.9 set -e DATA="$(date +%g%m%d%k%M%S)" VOLUME=/dev/sda1 [ ! -d "/tmp/$DATA/" ] && sudo mkdir "/tmp/$DATA/" mount $VOLUME "/tmp/$DATA/" && ( [ ! -d "/tmp/$DATA/snapshots/" ] && sudo mkdir "/tmp/$DATA/snapshots/" mkdir "/tmp/$DATA/snapshots/$DATA/" && cd "/tmp/$DATA/" عکس فوری زیرجلد btrfs ./@ ."/snapshots/$DATA /@_$(DATA)/" btrfs subvolume snapshot ./@home ."/snapshots/$DATA/@home_$(DATA)/" [ ! -f ./snapshots/snapshots.log ] && لمس کنید./snapshots/ snapshots.log chmod 777 ./snapshots/snapshots.log echo on_startup_$(تاریخ +%X_%x) >> ./snapshots/snapshots.log umount -l "/tmp/$DATA/" && sudo rmdir "/tmp/ $DATA/" )

در /etc/btrfs_snapshot_onstartup قرار دارد
آن را به /etc/rc.local اضافه کنید و از طریق sudo chmod +x "file path" به هر دو فایل مجوز اجرا بدهید.
گزارش اجرای فایل ./snapshots/snapshots.log ممکن است کار نکند، پس باید آن را به صورت دستی تحت حقوق ریشه ایجاد کنید. پس از راه اندازی مجدد، او خود حقوق لازم را دریافت خواهد کرد.

در هر زمان، می‌توانیم وضعیت عکس‌های فوری سیستم را با تایپ کردن مشاهده کنیم:
cat /var/log/snapshots.log

همه عکس‌های فوری به پارتیشن اضافه می‌شوند که سیستم در پوشه عکس فوری است، جایی که برای هر راه‌اندازی موفق سیستم، یک پوشه ایجاد می‌شود.
برخی ممکن است بگویند که گرفتن عکس های فوری هنگام راه اندازی نتیجه ای ندارد. به هیچ وجه، توجیه می کند، در یک روز می توانم یکسری تغییرات در سیستم ایجاد کنم و آن را صد بار مجدداً راه اندازی کنم و در موارد جایگزین نمی توانم به لحظه راه اندازی موفقیت آمیز (واقعی) برگردم، اما فقط یک روز پیش

گزینه شروع دستی:
#!/bin/bash #این اسکریپت برای ایجاد خودکار عکس فوری #نسخه 1.2.8 مجموعه -e DATA=$(تاریخ +%g%m%d%k%M%S) ########### ######################## [ ! -d /tmp/$DATA/ ] && sudo mkdir /tmp/$DATA/ sudo mount /dev/sda2 /tmp/$DATA/ && ( ################## ############################################### # [ ! -d /tmp/$DATA/snapshots/ ] && mkdir /tmp/$DATA/snapshots/ mkdir /tmp/$DATA/snapshots/$DATA/ cd /tmp/$DATA/ sudo btrfs subvolume snapshot ./@ . /snapshots/$DATA/@_$(DATA)/ sudo btrfs subvolume snapshot ./@home ./snapshots/$DATA/@home_$(DATA)/ ############## ############################################### ## ### sudo chmod 777 ./snapshots/snapshots.log sudo echo this.hands_$(تاریخ +%X_%x) >> ./snapshots/snapshots.log sudo cat ./snapshots/snapshots.log sleep 1 sudo umount - l /tmp/$DATA/ && sudo rmdir /tmp/$DATA/ ################################################### ################################## sudo btrfs فایل سیستم df / #اطلاعات در مورد fs ) خواندن خروجی 0

مورد 3: بازیابی

برای همین تلاش کردند، نظام را کشتند، چه باید کرد؟
ما از LiveCD بوت می‌شویم، پارتیشن سیستم را در پوشه‌ای مناسب برای ما سوار می‌کنیم.
سپس در صورت لزوم، زیرجلدهای استاندارد @ و home را مخفی یا حذف کنید.
و عکس از دست رفته را با اسنپ شات لازم جایگزین کنید.
در بیشتر موارد، جایگزین کردن @ کافی است.
nazarpc
همچنین، عکس های فوری نه تنها به یک وضعیت خاص از سیستم اجازه می دهند، بلکه از آن خارج می شوند. فایل مورد نظریا پیکربندی، که در هنگام حذف فایل‌هایی با منشأ ناشناخته نیز آزادی عمل می‌دهد.

مورد 4: تمیز کردن

اسنپ ​​شات ها فضای زیادی را اشغال نمی کنند، اما به مرور زمان می توانند به دلیل وجود آنها روی دیسک جمع شوند. حجم زیادزباله در اینجا یک اسکریپت برای پاکسازی خودکار پوشه های عکس فوری وجود دارد. این همه عکس های فوری سیستم را حذف می کند

#!/bin/bash #نسخه 0.0.9 مجموعه -e DATA=$(تاریخ +%g%m%d%k%M%S) [ ! -d "/tmp/$DATA" ] && sudo mkdir "/tmp/$DATA" sudo mount /dev/sda1 "/tmp/$DATA" && ( سی دی "/tmp/$DATA/snapshots/" برای i در * /* do sudo btrfs subvolume delete "$i" برای i در * انجام sudo rmdir -v "$i" پاکسازی اکو انجام شد_$(تاریخ +%g%m%d%k%M%S) > "./snapshots .log" sudo cp "./snapshots.log" "/var/log/snapshots.log" sudo umount -l "/tmp/$DATA" && sudo rmdir "/tmp/$DATA" ) خواندن خروج 0

نتیجه

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

همچنین بسیار جالب است که اسکریپت پاک‌سازی را به‌طوری‌که تمام عکس‌های فوری قدیمی‌تر از مثلاً هفته‌ها و نه همه موارد موجود را پاک کند، صادقانه امتحان کردم، اما برای من درست نشد. سپس می توان آن را به طور پیش فرض به cron هدایت کرد تا یک بار در روز اجرا شود، و سپس در اسکریپت نصب رسمی btrfs گنجانده شود، فکر می کنم با تغییرات جزئی، این یک راه حل نسبتاً جهانی است، بر اساس ویژگی های استاندارد btrfs.

بله، من lvm را می شناسم، اما نیازی به لایه انتزاعی اضافی از سخت افزار ندارم و قرار دادن تصاویر در یک بخش جداگانه نیز comme il faut نیست.

UPD 1:
با تشکر از کاربران

btrfs(گاهی اوقات butter fs تلفظ می شود) یک فایل سیستم رایگان جدید است که با پشتیبانی Oracle توسعه می یابد. تحت مجوز GPL توزیع شده است. اگرچه توسعه آن هنوز کامل نشده است، اما در 9 ژانویه 2009، سیستم فایل در هسته لینوکس ادغام شد و در دبیان اسکوئز در دسترس است.

اگرچه Btrfs در هسته 2.6.29 گنجانده شده است، توسعه دهندگان بیان می کنند که "از هسته 2.6.31 شروع می شود، ما فقط قصد داریم از این پس فرمت تغییر دیسک را سازگار کنیم." توسعه‌دهندگان همچنان می‌خواهند ابزارهای کاربر/مدیریت را بهبود بخشند تا کاربرپسندتر شوند. برای گرفتن اطلاعات اضافیدرباره Btrfs، در پیوند در بخش.

Ext2/3/4 را می توان به Btrfs تبدیل کرد (اما نه برعکس).

وضعیت

Debian Squeeze و نسخه های جدیدتر از Btrfs پشتیبانی می کنند.

سوالات متداول

کدام بسته شامل ابزارهای کاربردی برای btrfs است؟

btrfs-tools (در DebianSqueeze و بالاتر)

همچنین ببینید: Btrfs wiki FAQ

دستورات مثال برای کار با btrfs

ایجاد یک فایل سیستم:

mkfs.btrfs

مدیریت حجم ها، زیرجلدها، عکس های فوری؛ بررسی یکپارچگی سیستم فایل:

btrfsctl

اسکن برای فایل سیستم های btrfs:

btrfsctl -a btrfsctl -A /dev/sda2

ایجاد عکس های فوری و حجم های فرعی:

mount -t btrfs -o subvol=. /dev/sda2 /mnt btrfsctl -s new_subvol_name /mnt btrfsctl -s snapshot_of_default /mnt/default btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name /mnt/new_subvol_name /mnt/new_subvol_name /mnt/new_subvol_name /mnt/new_subvol_name /mnt/new-shot

بررسی وسعت درختان سیستم فایل:

btrfsck

فراداده خروجی به صورت متنی:

debug-tree debug-tree /dev/sda2 >& big_output_file

نمایش فایل سیستم های btrfs روی هارد دیسک:

btrfs-show /dev/sda*

Defrag (به طور پیش فرض لازم نیست):

# یکپارچه سازی سیستم فایل btrfs /mnt یا # یکپارچه سازی سیستم فایل btrfs /mnt/file.iso

تبدیل فایل سیستم ext3 به btrfs

فایل سیستم ext3 را می توان به btrfs تبدیل کرد و به عنوان یک فایل سیستم جدید با آن کار کرد. علاوه بر این، وضعیت سیستم فایل ext3 اصلی بعداً در دسترس خواهد بود.

# همیشه ابتدا fsck را اجرا کنید %# fsck.ext3 -f /dev/xxx # تبدیل از Ext3->Btrfs %# btrfs-convert /dev/xxx # سیستم فایل Btrfs حاصل را سوار کنید %# mount -t btrfs /dev/xxx /btrfs # عکس فوری ext3 %# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved # Loopback mount فایل تصویر %# mount -t ext3 -o loop,ro /ext2_saved/image /ext3

دایرکتوری ext3/ اکنون وضعیت فایل سیستم اصلی را نشان می دهد.

جداسازی به ترتیب معکوس انجام می شود:

%# umount /ext3 %# umount /ext2_saved %# umount /btrfs

می توانید به سیستم فایل ext3 برگردید و تغییرات خود را از دست بدهید:

%# btrfs-convert -r /dev/xxx

یا می توانید روی btrfs بمانید و تصویر ذخیره شده سیستم فایل ext3 را حذف کنید:

%# rm /ext2_saved/image

توجه داشته باشید:سیستم فایل جدید گاهی اوقات پس از تبدیل، اندازه ابرداده بسیار زیادی دارد.

مشاهده اندازه ابرداده:

# فایل سیستم btrfs df /mnt/data1tb/

اندازه آنها را عادی کنید:

btrfs fi balance /mnt/btrfs

بیشتر بخوانید: تبدیل ext3 (انگلیسی) و تبدیل ext3fs به btrfs (روسی)

تغییر اندازه فایل سیستم و پارتیشن ها

برای btrfs، تغییر اندازه آنلاین (در حال پرواز) سیستم فایل در دسترس است. ابتدا باید پارتیشن مورد نظر را نصب کنید:

# mount -t btrfs /dev/xxx /mnt

اضافه کردن 2 گیگابایت:

# تغییر اندازه فایل سیستم btrfs +2G /mnt یا # btrfsctl -r +2g /mnt

کاهش 4 گیگابایتی:

# تغییر اندازه فایل سیستم btrfs -4g /mnt یا # btrfsctl -r -4g /mnt

حجم فایل سیستم را روی 20 گیگابایت تنظیم کنید:

# btrfsctl -r 20g /mnt یا # btrfs تغییر اندازه فایل سیستم 20g /mnt

استفاده از تمام فضای آزاد:

# فایل سیستم btrfs تغییر اندازه حداکثر /mnt یا # btrfsctl -r max /mnt

دستورات فوق فقط برای سیستم فایل معتبر است. برای تغییر اندازه یک پارتیشن، باید از ابزارهای دیگر مانند fdisk استفاده کنید. یک مثال برای کاهش پارتیشن به میزان 4 گیگابایت در نظر بگیرید. نصب و کاهش پارتیشن:

# mount -t btrfs /dev/xxx /mnt # btrfsctl -r -4g /mnt

حالا پارتیشن را جدا کرده و از fdisk استفاده کنید:

# umount / mnt fdisk / dev / xxx # که در آن dev / xxx هارد دیسک با پارتیشن مورد نیاز ما است