انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: سودو. در 19 خرداد 1401، 07:46 بظ
-
درود بزرگواران !
یه ایده ای زد به سرم که شاید ( صد در صد ) پیش از این به سر کس دیگه ای زده باشه : افراز ( پارتیشن ) زنده !
یعنی چی ؟ یعنی دیسک رو تیکه تیکه نکنیم ، تنها بگیم یه بخشی رو به بده به ریشه و یه بخشی رو بده به خونه ، اما اندازه براش نذاریم ! یعنی بتونن هر کدوم هر اندازه که میخوان از فضا بهره ببرن و به یه مرز خاص محدود نشده باشن در حالی که از هم جدا هستن هر کدوم !
برای نمونه دیسک رو یه افراز در نظر بگیرید و افزار های زنده رو شاخه ( دایرکتوری ) ! هر شاخه از اون یکی جداس ولی تو هر کدوم هر اندازه که بخوای میتونی پرونده بنویسی !
این ایده اجرا شده ؟ اگه پاسخ مثبته ؛ وقتی مشکلی پیش بیاد توی حالت معمولی ، افراز ها از هم جدان و اگه یکی خراب شه روی دیگر افراز ها تاثیری نمیذاره ، در این حالت چجوریه پس ؟
-
اگه بخوای این طور باشه. باید آخر هر تیکه از یک فایل، آدرس اولین بیت از تیکه بعدی فایل که کجاست نوشته بشه. و کلا خیلی زیادی پخش و پلا میشه و کار با فایل ها سخت میشه
-
این چیزی که شما میخوان شبیه کاریه که btrfs میکنه. البته مطمئن نیستم :P
-
خوب جدا نکن فقط روت بزار ! بهترین پاسخ !
-
خیلی محبت کردی مهرداد !
-
خواهش میکنم سودو جان قابل شما رو نداشت 💐
-
به هر روی ، اگر این ایده اجرا شده ، ممنون میشم دوستان بگن چجوری کار میکنه و چجوری میتونم ازش بهره ببرم ؟
-
به هر روی ، اگر این ایده اجرا شده ، ممنون میشم دوستان بگن چجوری کار میکنه و چجوری میتونم ازش بهره ببرم ؟
بهرش را نمیدونم.
هارد مجموعه ای از بیت ها است که از صفر تا X شماره گزاری شدند.
پس اگه فایل ها را تیکه تیکه کنیم ، باید آخر هر تیکه، آدرس اولین بیت از تیکه بعدی فایل را بنویسم. روش کارش باید همین باشه، وگرنه چیز دیگه ای نمیتونه باشه
.
-
منظورم از چطوری کار میکنه این بود که چجوری ازش استفاده کنم اگه وجود داره : )
-
btrfs این روبه صورت توکار داره.
-
چه باحال ! برم ببینم چجوری باهاش کار کنم ، امیدوارم سر در بیارم : )
این ایده اجرا شده ؟ اگه پاسخ مثبته ؛ وقتی مشکلی پیش بیاد توی حالت معمولی ، افراز ها از هم جدان و اگه یکی خراب شه روی دیگر افراز ها تاثیری نمیذاره ، در این حالت چجوریه پس ؟
؟
-
یعنی چی ؟ یعنی دیسک رو تیکه تیکه نکنیم ، تنها بگیم یه بخشی رو به بده به ریشه و یه بخشی رو بده به خونه ، اما اندازه براش نذاریم ! یعنی بتونن هر کدوم هر اندازه که میخوان از فضا بهره ببرن و به یه مرز خاص محدود نشده باشن در حالی که از هم جدا هستن هر کدوم !
البته بهتره روی دیسک پارتیشن بسازید و روی اون پارتیشن این سازوکار رو پیاده کنید. اگه من باشم یه مقدار فضای خالی باقی میذارم تا بعدا بشه از اون فضای خالی برای کارهای دیگه استفاده کرد.
این ایده اجرا شده؟
بله btrfs و zfs برای اینکار موجود هستند. یه bcachefs هم هست ولی هنوز ناپایداره.
stratis هست ولی فکر کنم توی مخازن دبیان موجود نیست. برخلاف سه تای قبلی که توی kernel space کار میکردند، این یکی توی userspace کار میکنه، از lvm و xfs برای ایجاد این قابلیتها استفاده میکنه، ولی لازم نیست که شما به lvm و xfs کار داشته باشید، خود stratis کارها رو انجام میده.
lvm هم میتونه چیزی شبیه اون که میخواهید باشه ولی دقیقا اون نیست. هر logical volume که توی lvm میسازید مثل یه block device عمل میکنه، اندازه مشخصی داره و باید با یه فایلسیستم معمولی مثل ext4 یا xfs فرمت بشه و دقیقا اون چیزی نیست که میخواهید. میشه اندازه اون رو بزرگتر و کوچکتر کرد ولی برای اینکار لازمه که اندازه فایلسیستم روی اون هم تغییر کنه.
اگه پاسخ مثبته ؛ وقتی مشکلی پیش بیاد توی حالت معمولی ، افراز ها از هم جدان و اگه یکی خراب شه روی دیگر افراز ها تاثیری نمیذاره ، در این حالت چجوریه پس ؟
بستگی داره چی خراب بشه. اگه پارتیشن یا دیسکی که اطلاعات روی اون قرار داره خراب بشه، و raid هم نداشته باشید، کل اطلاعات میره هوا.
-
بستگی داره چی خراب بشه. اگه پارتیشن یا دیسکی که اطلاعات روی اون قرار داره خراب بشه، و raid هم نداشته باشید، کل اطلاعات میره هوا.
خب پس چه فایده ؟ مهم اینه که در حالی که از هم جدان بشه توی هر کدوم بدون مرز چیز نوشت ! الان ویژگی ویژه این فایل سیستم ها چیه پس ؟
منظورم اینه مثلا در حالت معمولی هوم جداس و میتونی هر موقع خواستی یه توزیع جدید نصب کنی و هوم بمونه سر جاش ، از این لحاظ مشکلی نیست در این مدل فایل سیستما ؟
raid چیه : )
بله btrfs و zfs برای اینکار موجود هستند.
از اسم zfs بیشتر خوشم اومد 😅️ اینکه خودتون هم از همین استفاده میکنین هم تاثیر داره البته : )
بسی ممنون دارتون میشم اگر راهنمایی کنید چجوری ازش استفاده کنم .. جی پارتد زنده رو دارم ، با همین میشه ؟
-
zfs روی لینوکس خیلی دردسر داره.
-
از اسم zfs بیشتر خوشم اومد 😅️ اینکه خودتون هم از همین استفاده میکنین هم تاثیر داره البته : )
از btrfs استفاده کنید بهتره، zfs کمی قابلیت بیشتری داره، اما توی کرنل قرار نداره و باید بصورت جدا کامپایلش کنید برای خودتون و دردسر داره، همچین استفادش روی لینوکس زیاد جالب نیست.
btrfs توی کرنل لینوکس به صورت داخلی قرار داره، و الان دیگه پایدار شده
-
بستگی داره چی خراب بشه. اگه پارتیشن یا دیسکی که اطلاعات روی اون قرار داره خراب بشه، و raid هم نداشته باشید، کل اطلاعات میره هوا.
خب پس چه فایده ؟ مهم اینه که در حالی که از هم جدان بشه توی هر کدوم بدون مرز چیز نوشت ! الان ویژگی ویژه این فایل سیستم ها چیه پس ؟
منظورم اینه مثلا در حالت معمولی هوم جداس و میتونی هر موقع خواستی یه توزیع جدید نصب کنی و هوم بمونه سر جاش ، از این لحاظ مشکلی نیست در این مدل فایل سیستما ؟
raid چیه : )
بله btrfs و zfs برای اینکار موجود هستند.
از اسم zfs بیشتر خوشم اومد 😅️ اینکه خودتون هم از همین استفاده میکنین هم تاثیر داره البته : )
بسی ممنون دارتون میشم اگر راهنمایی کنید چجوری ازش استفاده کنم .. جی پارتد زنده رو دارم ، با همین میشه ؟
ZFS توی freebsd هست. برو نصبش کن. 😈
-
عوه ! باشه ! خب همون btrfs ، همون چیزیه که میخوام ؟
-
یه پارتیشن رو با btrfs فرمت میکنید.
بعد میتونید توش برای هر دایرکتوری که میخواید subvolume بسازید.
تو هر subvolume میتونید هر چه قدر بخواید فایل قرار بدید. و برای این subvolume ها حجمی تعیین نمیشه که مثلا وقتی حجم پر شد دیگه نتونید تو اون subvolume فایل بریزید. تا وقتی که اون پارتیشن پر بشه میتونید تو هر subvolume فایل بریزید.
و بله btrfs احتمالا همون چیزیه که میخوان تازه فشزده سازی داخلی داره، copy on write و همچین قابلیت عکس فوری هم داره.
-
خب این دو کاملا از هم جدان ؟
-
خب این دو کاملا از هم جدان ؟
کدوم دو؟
اگه subvolume ها رو میگید نه هر چند تا subvolume که روی پارتیشن بسازید جزء یه پارتیشن هستن.
-
این که نشد اون ایده ای که من به ذهنم رسیده ! خب پس چه فایده داره این جدا سازی ؟ من میخوام از هم جدا باشن کاملا : )
-
این که نشد اون ایده ای که من به ذهنم رسیده ! خب پس چه فایده داره این جدا سازی ؟ من میخوام از هم جدا باشن کاملا : )
حالا من شاید اشتباه کرده باشم.
ببینید دوستان با تجربه چی میگن
-
خب این دو کاملا از هم جدان ؟
منظورت از جدان چیه؟
-
یعنی مثل حالت عادی که میتونی افرازی که دادی به ریشه رو فرمت کنی در حالی که خونت سر جاشه و یه توزیع دیگه نصب کنی ..
هم اینجوری از هم جدا باشن و مستقل ، هم محدودیتی برای فضا نداشته باشن ! تو هر کدوم بشه هر چقدر دلت میخواد چیزی بنویسی مثل دو تا شاخه ، میشه همچین چیزی ؟
یه دیسک که فقط بهش گفتیم دو بخش باش ، یکی مال ریشه و یکی مال خونه مثلا ، از هم جدا هستید ولی مرز ندارید و میتونید هر چقدر که میخواید از بخشی که بهتون داده شده استفاده کنید : )
-
تو btrfs اگه بخواید میتونید روی یه subvolume جدا یه سیستم عامل دیگه نصب کنید، ولی نمیتونید پارتیشن رو مجدد فرمت کنید
-
میشه یه توزیع دیگه نصب کنی. ولی خب چرا فرمت کنی؟ کافیه محتواش رو پاک کنی.
-
از اسم zfs بیشتر خوشم اومد 😅️ اینکه خودتون هم از همین استفاده میکنین هم تاثیر داره البته : )
بسی ممنون دارتون میشم اگر راهنمایی کنید چجوری ازش استفاده کنم
البته zfs همراه کرنل اصلی نیست و باید جدا کامپایل بشه. توی دبیان میتونید بسته zfs-dkms رو نصب کنید تا همراهش کد منبع ماژولهای zfs و همینطور یه سری بستههای دیگه مثل کامپایلر c و dkms هم نصب بشن. بعد از این، کار کامپایل و نصب به طور خودکار توسط dkms شروع میشه و لازم نیست شما کار خاصی انجام بدید.
آخرین باری که امتحان کردم، کامپایل اون روی یه کامپیوتر با پردازندهای مال سال ۲۰۱۰، حدود ۵ دقیقه طول کشید.
بسته zfsutils-linux رو هم نصب کنید تا ابزارهای مدیریت فایلسیستم zfs مثل دوتا دستور zfs و zpool رو داشته.
اگه هم میخواهید روت رو بذارید روی zfs و initramfs توسط initramfs-tools ساخته میشه، باید بسته zfs-initramfs رو نصب کنید. بسته zfs-dracut هم هست تا در صورتی که از dracut به جای initramfa-tools استفاده میکنید، مشکلی از نظر پشتیبانی نداشته باشید.
البته اینکه همینجوری بسته zfs-initramfs یا zfs-dracut رو نصب کنید، باعث نمیشه روت شما روی zfs قرار بگیره.
جی پارتد زنده رو دارم ، با همین میشه ؟
نه نمیشه. gparted پشتیبانی زیادی از zfs نداره. فکر نکنم رابط گرافیکی برای zfs موجود باشه.
کار با zfs یکم متفاوته. مثلا برای اینکه یه فایلسیستم اون رو سوار کنید، دستوری شبیه این کار نمیده:
sudo mount /dev/sda1
یا مثلا zfs قابلیت سوار کردن خودکار داره و میتونه بدون اینکه چیزی توی فایل fstab تعریف شده باشه، چیزها رو سوار کنه.
از btrfs استفاده کنید بهتره، zfs کمی قابلیت بیشتری داره، اما توی کرنل قرار نداره و باید بصورت جدا کامپایلش کنید برای خودتون و دردسر داره
دردسر خاصی نداره، با نصب دوتا بسته zfs-dkms و zfsutils-linux ماژولها و ابزارهای اون نصب میشن.
البته به دلیل اینکه یکمی با بقیه فایلسیستمها متفاوته، اولش طول میکشه تا به نحوه کار باهاش عادت کنید.
البته btrfs یه سری مشکلاتی داره مثلا اینکه نمیتونید برای دوتا subvolume روی یه فایلسیستم btrfs از دوتا الگوریتم فشردهسازی متفاوت استفاده کنید.
مثلا اگه دوتا subvolume به اسمهای A و B داشته باشید، اول A رو با فشردهسازی zstd و بعد B رو با فشردهسازی lzo سوار کنید، فشردهسازی B به zstd تغییر میکنه.
در اصل نمیتونید داخل یه فایلسیستم btrfs چنتا subvolume داشته باشید که آپشنهای سوار شدن اونها زیاد با هم متفاوت باشند. بیشتر آپشنها به اون چیزی تغییر میکنند که مربوط به اولین subvolume سوار شده هست.
دلیلش اینه که پیادهسازی این قابلیتها توی vfs کرنل یکم سخته و به همین دلیل هنوز اینجوری هست.
در مورد سرعت، btrfs نسبت به zfs کندتره.
البته اگه حافظه شما پرسرعت باشه، نباید خیلی زیاد این اثر رو متوجه بشید.
البته btrfs قابلیتی داره تا به صورت خودکار فشردهسازی اطلاعات فعلی رو از یه چیزی به یه چیز دی.ه عوض کنه. ولی توی zfs باید حداقل یه zfs send و یه zfs recive داشته باشید.
توی btrfs میشه تنظیم کرد که قابلیت cow برای یه فایل یا یه subvolume غیرفعال بشه، درحالی که zfs فعلا این قابلیت رو نداره و بعیده به این زودیها پیاده بشه. (هرچند اگه توی btrfs قابلیت cow رو روی یه subvolume خاموش کنید، برای همه subvolume های روی اون فایلسیستم خاموش میشه. به همون دلیلی که بالاتر گفتم)
این که نشد اون ایده ای که من به ذهنم رسیده ! خب پس چه فایده داره این جدا سازی ؟
انعطاف پذیری بالایی داره.
یعنی مثل حالت عادی که میتونی افرازی که دادی به ریشه رو فرمت کنی در حالی که خونت سر جاشه و یه توزیع دیگه نصب کنی ..
...
توی btrfs میتونید توی هر subvolume هر چی خواستید بریزید و هر وقت بخواهید، کل اون subvolume رو پاک کنید بدون اینکه بقیه subvolume ها یا اطلاعات داخلشون خراب بشن.
در مورد zfs هم میتونید dataset بسازید و داخل هر dataset هرچی لازم داشتید بریزید و هر وقت خواستید، اون dataset رو پاک کنید. بدون اینکه بقیه dataset ها یا اطلاعاتشون پاک بشن. (مگه اینکه بقیه dataset ها وابسته به اون dataset باشند که قراره پاک بشه.)
-
این عالی میشه 🤩 واقعا عالی میشه ! خیلی خوبه که بخش ها از هم جدان ولی فضای در دسترسشون مشترکه ! چرا زود تر کشفش نکردم !
برای نمونه من یه دیسک خالی gpt دارم بدون افراز ، میخوام از zfs استفاده کنم : )
من همیشه یه افراز میدم به ریشه و یکی هم که پرونده هامه رو سوار میکنم روی یه شاخه توی خونه ، یعنی افزار خونه رو جدا نمیکنم : )
پس یه دبیان زنده ( گنومشو دارم ) بالا بیارم و بسته های zfs-dkms و zfsutils-linux رو نصب کنم ، بعد چیکار کنم ؟ درست نفهمیدم بقیشو 😅
۱ . اینجوری هر موقع خواستم میتونم یه بخش جدید تعریف کنم برای بررسی یه توزیع مثلا و پس از پایان کارم ، پاکش کنم و اون بخش رو حذف ؟ منظورم اینه فقط همون اول میشه بخش تعریف کرد یا هر زمانی ممکنه زنده زنده ؟
۲ . میتونم یکی از بخش ها رو با luks2 رمز کنم ؟
۳ . میگین این فایل سیستم ها پیشرفتن و کلی امکانات دارن ، به جز همین قابلیت خاص جداسازی با حافظه مشترک ، چه اپشن های منحصر به فردی دارن ؟ مثلا یه فایل سیستم چه امکانات ویژه ای میتونه داشته باشه ؟
-
۱. آره رو btrfs میتونی هر وقت بخوای subvolume درست کنی و فکر کنم zfs هم همینجوری باشه.
۲.فکر نکنم، کل پارتیشن باید رمزنگاری بشه.
۳.قابلیت عکس فوری، فشرده سازی داخلی، رمزنگاری داخلی copy on write
-
۱ . خب این خیلی خوبه ، هر موقع ادم دلش بخواد میتونه راحت یه توزیع رو برای نصب امتحان کنه !
۲ . آره دیگه حواسم کجاست ، منطقا نباید بشه !
۳ . عکس فوری چیه ؟ جناب دراگون گفتن با فشرده سازی فشار بیشتره به پردازنده میاد ، پردازنده منم که نفتیه ، پس این موردو نمیخوام ، روی همون دیسک باشه فشارش باز بهتره : )
مورد آخر رو هم نفهمیدم !
-
copy on write یه قابلیتیه که وقتی فعال باشه، مثلا یه فایل ۵۰ گیگی رو کپی میکنی منطقا باید حالا دو تا فایل ۵۰ گیگ داشته باشی و ۱۰۰ گیگ از هاردت پر شه اما با فعال بودن COW فقط همون ۵۰ گیگ پر میشه و تنها تغییرات جدید روی دیسک نوشته میشه، فکر کنم COW توی zfs نباشه.
عکس فوری هم قابلیتیه که برای پشتیبان گیری استفاده میشه و میتونی از یک دایرکتوری پشتیبان بگیری در دو نوع قابل تغییر و ثابت.
تو نوع ثابت دیگه نمیتونی اون پشتیبان رو تغییر بدی، ولی توی قابل تغییر میتونی چیز های جدید توی فایل عکس فوری بنویسی.
راستی چجوری باید توی btrfs از یه subvolume عکس فوری بگیریم بدون اینکه از subvolume های دیگه عکس فوری گرفته شه؟
-
COW چجوری کار میکنه ؟ درست نفهمیدم ، یعنی بخش های یکسان فایلو یه دونه داره ازش و هر قسمتی رو تغییر بدی همون بخش حجم جدید میگیره ؟
مثلا یه عکسو برداریم کپی کنیم کنار خودش ، به اندازه یه عکس فضا میگیره بازم ولی اگه با یه ویرایشگر بازش کنیم و یه خط بکشیم روش ، به اندازه همون پیکسل هایی که روشون چیزی کشیده شده ، فضای دیسک اشغال میشه ؟ مثال زدم واسه اینکه درک کنم ، ولی مثال درستی نیست ، توضیح میدی بیشتر ؟
-
طبق چیزی من از COW فهمیدم، حرف شما درسته.
-
واقعا جای دکمه ای برای نشان گذاری کردن موضوعات مورد علاقه خالیه !
این یکی از موضوعاتیه که پیشبینی می کنم به کارم بیاد
-
واقعا جای دکمه ای برای نشان گذاری کردن موضوعات مورد علاقه خالیه !
این یکی از موضوعاتیه که پیشبینی می کنم به کارم بیاد
در مرورگر ستاره دارش کن. Bookmark
-
واقعا جای دکمه ای برای نشان گذاری کردن موضوعات مورد علاقه خالیه !
این یکی از موضوعاتیه که پیشبینی می کنم به کارم بیاد
جناب دراگون تو هر موضوعی فرسته ای داشته باشه بایدم بوکمارکش کرد ! 😅️
-
جناب دراگون تو هر موضوعی فرسته ای داشته باشه بایدم بوکمارکش کرد ! 😅️
به نظرم شما یه ویکی بساز به آدرس dragonwiki.ir بعد گفته های جناب دراگون رو توش قرار بده.🙃
-
هر چند اسپمه ولی ( یه توزیع میسازم به افتخار ایشون ! Dragon GNU/Linux ! به آدرس dragon.org ، ویکیشم میشه wiki.dragon.org کامل ترین ویکی ! مدیر بستش هم drag که با فایل های drg کار میکنه ! بزرگترین مخازن دنیا با ۱۲۰ هزار بسته ! اینیتش dragit ! ولی دسکتاپش گنوم ، گنوم را عشق است و بس 😅️ )
با اینکه خیلی کمه در برابر زحمات ایشون : )
-
برای نمونه من یه دیسک خالی gpt دارم بدون افراز ، میخوام از zfs استفاده کنم : )
شاید بهتر باشه قبل از اینکه از zfs استفاده کنید، یکم با btrfs کار کنید تا با zfs زیاد به مشکل نخورید. (چون نحوه کار با اون با چیزی مثل ext4 یا xfs متفاوته)
پس یه دبیان زنده ( گنومشو دارم ) بالا بیارم و بسته های zfs-dkms و zfsutils-linux رو نصب کنم ، بعد چیکار کنم ؟ درست نفهمیدم بقیشو 😅
بعد باید یه استخر (pool) zfs بسازید. بعد میتونید داخل اون pool یه سری dataset بسازید. میتونید داخل هر dataset هم یه سری dataset دیگه بسازید. محدودیت پیشفرض ۵۰ تا dataset زیر هم هست.
میتونید مستقیم توی pool هم چیز بنویسید چون خود pool هم یه dataset به حساب میاد. ولی معمولا برای انعطاف پذیری بیشتر بهتره که dataset بسازید.
میتونید برای هر dataset محل سوار شدن اون، اینکه خودکار سوار بشه یا نه، فشردهسازی، رمزنگاری و ... رو مشخص کنید.
میتونید dataset رو از نوع volume با یه حجم مشخص بسازید. در این حالت به اون dataset گفته میشه zvol.
در این حالت اون dataset در قالب یه block device توی /dev/zvol/ ظاهر میشه و میتونید اون رو با یه فایلسیستم مثل ext4 یا هر چیز دیگهای فرمت کنید.
همچنان میتونید رمزنگاری، فشردهسازی و خیلی چیزهای دیگه رو روی اون zvol تنظیم کنید.
برای zvolها نمیشه چیزهایی مثل محل سوار شدن یا اینجور چیزها تنظیم کرد چون اینکار اصلا معنی خاصی نداره.
۱ . اینجوری هر موقع خواستم میتونم یه بخش جدید تعریف کنم برای بررسی یه توزیع مثلا و پس از پایان کارم ، پاکش کنم و اون بخش رو حذف ؟ منظورم اینه فقط همون اول میشه بخش تعریف کرد یا هر زمانی ممکنه زنده زنده ؟
توی btrfs هر وقت بخواهید میتونید یه subvolume بسازید و هر وقت خواستید، پاکش کنید. از یه نسخه کرنل و coreutils به بعد اینکار با دستور rm هم ممکن شده.
توی zfs هم همینطوره. البته نمیتونید dataset ها رو با دستور rm پاک کنید. به zfs destroy نیاز هست.
۲ . میتونم یکی از بخش ها رو با luks2 رمز کنم ؟
zfs خودش قابلیت رمزنگاری داره و میتونید هر dataset رو جدا رمزنگاری کنید. میتونید تعدادی از اونها رو همراه هم رمزنگاری کنید.
میتونید pool رو هم رمزنگاری کنید تا همه dataset ها رمزنگاری بشن.
حتی وقتی که کل pool رمزنگاری شده، میتونید dataset بدون رمزنگاری بسازید. میتونید dataset با کلید رمزنگاری متفاوت از کلید رمزنگاری pool بسازید.
میتونید zvol بسازید و اون zvol رو با luks رمزنگاری کنید.
میتونید هم zfs رو کلا روی luks قرار بدید.
فعلا رمزنگاری خود zfs فقط میتونه یه کلید داشته باشه.
zfs فعلا نمیتونه یه dataset یا pool که رمزنگاری نشده است رو رمزنگاری کنه. رمزنگاری رو باید موقع ساختن pool یا dataset مشخص کنید.
zfs نمیتونه کلید اصلی رمزنگاری یه dataset رو تعویض و اطلاعات رو مجدد رمزنگاری کنه. کاربر باید اطلاعات رو بفرسته روی یه dataset دیگه که رمزنگاری شده. luks چنین قابلیتی داره.
سرعت رمزنگاری luks از zfs خیلی بیشتره.
توی btrfs فقط میتونید کل فایلسیستم رو روی luks قرار بدید. البته یه وصله (https://lwn.net/Articles/700487/)هست که رمزنگاری رو به خود btrfs اضافه کنه ولی هنوز به btrfs اضافه نشده.
۳ . میگین این فایل سیستم ها پیشرفتن و کلی امکانات دارن ، به جز همین قابلیت خاص جداسازی با حافظه مشترک ، چه اپشن های منحصر به فردی دارن ؟ مثلا یه فایل سیستم چه امکانات ویژه ای میتونه داشته باشه ؟
snapahot (بالاتر بهش گفتند "عکس فوری" ولی فکر کنم ترجمه بهتری برای اون باشه)هم دارند که بالا معرفی کردند. یعنی میتونید یه نقطه بازگشت از وضعیت فعلی ایجاد کنید و هر موقع نیاز شد، به اون وضعیت برگردید.
قابلیت deduplicat هم میتونند داشته باشند. اینجوری که اگه اطلاعات یکسان چند جا نوشته شده باشه، فقط یه بار نوشته بشه و برای بقیه جاها به اون لینک بشه. ولی قابلیت خیلی سنگین بود، رم زیادی میخواست و پردازنده رو درگیر میکرد که در نهایت توی zfs منسوخ شد.
نسخههای جدید zfs نمیذارند یه pool با deduplication بسازید. بدی deduplication این بود که وقتی روی یه pool فعال میشد، دیگه نمیشد غیرفعالش کرد.
دلیل سنگین بودنش این بود که در سطح block کار میکرد، یعنی بلوک به بلوک اطلاعات رو دنبال اطلاعات یکسان میگشت و یه جدول بزرگ هم داخل رم میساخت تا حساب این لینکها رو نگهداری کنه.
اگه در سطح فایل کار میکرد، سبکتر میبود. به خاطر همین یه deduplication جدید در سطح فایل برای zfs در حال توسعه است.
فشردهسازی هم هست ولی فقط مربوط به فایلسیستمهای cow نیست. بقیه فایلسیستمها هم ممکنه فشردهسازی داشته باشند. برای مثال squashfs فشردهسازی داره در حالی که cow نیست.
یه قابلیتی که zfs داره arc هست. arc دادههایی که خونده میشن رو توی رم cache میکنه تا دفعه بعدی که اونها رو میخونید، خوندن خیلی سریع انجام بشه.
معمولا برای اینکه قسمت قابل توجهی از رم پر بشه، لازمه خوندن زیادی صورت بگیره.
اگه نگران هستید که مقدار زیادی از رم توسط zfs استفاده بشه، میتونید پارامتر zfs_arc_max از ماژول zfs رو تنظیم کنید که حداکثر چقدر از رم برای arc استفاده بشه. واحد اون بر اساس بایت هست.
مثلا zfs_arc_max=268435456 باعث میشه که arc به ۲۵۶MiB محدود بشه.
فکر کنم خود کرنل قابلیتی شبیه همین به اسم bcache داره.
zfs چندین قابلیت دیگه مثل l2arc یا zil و slog هم داره ولی به کار شما نمیاد چون به چندین حافظه ذخیرهسازی نیاز داره.
یه نکتهای که موقع استفاده از zfs باید در نظر داشته باشید این هست که گراب از بعضی از قابلیتهای zfs پشتیبانی نمیکنه.
به همین دلیل اگه میخواهید روت روی zfs باشه، یا باید موقع ساختن pool، قابلیتهایی که گراب پشتیبانی نمیکنه رو غیرفعال کنید. یا اینکه کرنل و initramfs رو جایی قرار بدید که گراب میتونه بخونه. (برای مثال یه pool دیگه یا یه پارتیشن دیگه)
گزینه بعدی این هست که از ZFSBootMenu (https://github.com/zbm-dev/zfsbootmenu) استفاده کنید.
اگه قراره به هر دلیلی حالت lockdown توی کرنل فعال بشه (مثلا به خاطر secure boot)، باید ماژولهای کامپایل شده رو امضا کنید و کلید عمومی اون رو هم به کرنل بدید تا کرنل ماژولهای zfs رو بارگذاری کنه.
این بحثش طولانیه و بهتره تا وقتی لازم نیست یا نمیخواهید، سمتش نرید.
بارگذاری ماژولهایی که همراه کرنل نیست، باعث میشه که کرنل taint بشه (تباه معنیش کنیم؟) و توی dmesg با سطح اخطار (warning) چیزی شبیه این بنویسه:
loading out tree module taints kernel
با فشرده سازی فشار بیشتره به پردازنده میاد ، پردازنده منم که نفتیه ، پس این موردو نمیخوام ، روی همون دیسک باشه فشارش باز بهتره : )
شاید اگه zstd با فشردهسازی کم استفاده کنید به نتیجه خوبی برسید، مطمئن نیستم. میتونید امتحان کنید.
copy on write یه قابلیتیه که وقتی فعال باشه
...
درست میگید ولی قضیه پیچیدهتره.
فکر کنم COW توی zfs نباشه.
cow نیست، بلکه copy on reflink هست. copy on reflink و cow خیلی شبیه هم هستند ولی تفاوت دارند. به خاطر همین خیلی جاها zfs رو cow حساب میکنند.
عکس فوری هم قابلیتیه که برای پشتیبان گیری استفاده میشه و میتونی از یک دایرکتوری پشتیبان بگیری در دو نوع قابل تغییر و ثابت.
تو نوع ثابت دیگه نمیتونی اون پشتیبان رو تغییر بدی، ولی توی قابل تغییر میتونی چیز های جدید توی فایل عکس فوری بنویسی.
این که میگید مربوط بهsnapshot توی btrfs هست.
میشه از یه block device هم snapshot تهیه کرد.
snapshot ها توی zfs فقط خواندنی هستند. اگه میخواهید روی اونها بنویسید، باید با zfs clone یه نسخه خواندنی نوشتنی از snapshot مورد نظر ایجاد کنید. clone ایجاد شده به خودی خود جایی نمیگیره. فقط چیزهایی که عوض بشن جا میگیرن.
راستی چجوری باید توی btrfs از یه subvolume عکس فوری بگیریم بدون اینکه از subvolume های دیگه عکس فوری گرفته شه؟
تا جایی که میدونم، btrfs snapshot فقط از subvolume که مشخص کردید snapshot میگیره.
مثلا یه عکسو برداریم کپی کنیم کنار خودش ، به اندازه یه عکس فضا میگیره بازم ولی اگه با یه ویرایشگر بازش کنیم و یه خط بکشیم روش ، به اندازه همون پیکسل هایی که روشون چیزی کشیده شده ، فضای دیسک اشغال میشه ؟ مثال زدم واسه اینکه درک کنم ، ولی مثال درستی نیست ، توضیح میدی بیشتر ؟
این که میگید ممکن هست ولی در واقعیت شبیه همون deduplication در سطح block هست که توی zfs منسوخ شد.
-
تا جایی که میدونم، btrfs snapshot فقط از subvolume که مشخص کردید snapshot میگیره.
میشه دستورشو قرار بدید.
-
سپاس جناب دراگون ، مثل همیشه عالی و بی نقص : )
شاید بهتر باشه قبل از اینکه از zfs استفاده کنید، یکم با btrfs کار کنید تا با zfs زیاد به مشکل نخورید. (چون نحوه کار با اون با چیزی مثل ext4 یا xfs متفاوته)
خب اگه شما اینجوری صلاح میدونید چشم ، پس اول اگه حوصله کردید محبت کنید بگید چیکار کنم و طبق چه مراحلی پیش برم با همون فرض که یه دیسک gpt خالی از پارتیشن دارم : )
وقتی میخوام چیزی از منابع انگلیسی یاد بگیرم ، فرای اینکه زبانم اونقد قوی نیست و مشکله برام ، انگار اونا همه چیزو نمیگن ! آدم وقتی مقایسه میکنه مطالب شما رو با ویدیو و مقالات انگلیسی ، اگر درست هم بتونه متوجه بشه زبانشونو ضمن لهجه و سبک توضیحاتشون ، انگار شما فرای اینکه توضیح میدید هر دستور چیکار میکنه و هر قابلیت و همه امکانات و ریز جزئیات رو ، چیزایی رو میگید که مهمن و بقیه نمیگن ، براشون مهم نیست طرف ممکنه به چه مشکلاتی بر بخوره !
همه حالات رو قشنگ در نظر میگیرد ، احتمال میدید که ممکنه این موارد پیش بیاد و پیشگیری و راهکارش چیه ، واقعا دست مریزاد آقای اژدها ، به هر چی میخواید برسید ، دیگه اینقد تشکر کردم که شما بهتره بگذرید از این پاراگراف و بیخیالش بشید : )
بعد باید یه استخر (pool) zfs بسازید. بعد میتونید داخل اون pool یه سری dataset بسازید. میتونید داخل هر dataset هم یه سری dataset دیگه بسازید ...
پس نمیپرسم چجوری و با چه دستوری چون اونجور که شما گفتید بهتره اول بریم سراغ btrfs ! هرچند خودم دلم میخواد یه راست برم سراغ zfs ، زحمتش هم برای شما کمتره ( شاید )
محدودیت پیشفرض ۵۰ تا dataset زیر هم هست.
واقعا اینقد لازم / استفاده میشه آخه ؟ 😐️
میتونید dataset رو از نوع volume با یه حجم مشخص بسازید. در این حالت به اون dataset گفته میشه zvol
جالبه که از این مود هم پشتیبانی میکنه ولی خب من دقیقا چون اینو نمیخوام اومدم این فایل سیستم ها !
میتونید هم zfs رو کلا روی luks قرار بدید.
سرعت رمزنگاری luks از zfs خیلی بیشتره.
خب اینجوری بهتره ..
یعنی میتونید یه نقطه بازگشت از وضعیت فعلی ایجاد کنید و هر موقع نیاز شد، به اون وضعیت برگردید
چه خوب ! دقیقا یکی از آپشن های خوب nix و guix ، اینو حتما میخوام ! بعد یه سوال ؟ اون فایل snapshot چقد جا میگیره ؟ قشنگ به اندازه خود dataset مدنظر ؟
به خاطر همین یه deduplication جدید در سطح فایل برای zfs در حال توسعه است.
این که میگید ممکن هست ولی در واقعیت شبیه همون deduplication در سطح block هست که توی zfs منسوخ شد.
چه قابلیت خدایی ! من همینجوری یه چی پروندم ولی واقعا فک نمیکردم ممکن باشه همچین چیزی !
یه قابلیتی که zfs داره arc هست. arc دادههایی که خونده میشن رو توی رم cache میکنه تا دفعه بعدی که اونها رو میخونید، خوندن خیلی سریع انجام بشه.
خب این خوبه ولی آیا وقتی بخواد میتونه به یه چیز دیگه اختصاص داده بشه اون رم اشغال شده ؟ اگه میشه که خب اصلا محدودیت نمیخواد بزارم براش !
فکر کنم خود کرنل قابلیتی شبیه همین به اسم bcache داره.
کدوم بهتر و سریع تره ؟ مال کرنل یا zfs ؟
یا اینکه کرنل و initramfs رو جایی قرار بدید که گراب میتونه بخونه. (برای مثال یه pool دیگه یا یه پارتیشن دیگه)
خب ۳ تا dataset میسازم ، یکی بوت بدون اون قابلیت هایی که گراب پشتیبانی نمیکنه ، و یکی روت و دیگری هم همونی که به فایل هام میدم : )
اگه قراره به هر دلیلی حالت lockdown توی کرنل فعال بشه (مثلا به خاطر secure boot)، باید ماژولهای کامپایل شده رو امضا کنید و کلید عمومی اون رو هم به کرنل بدید تا کرنل ماژولهای zfs رو بارگذاری کنه.
این بحثش طولانیه و بهتره تا وقتی لازم نیست یا نمیخواهید، سمتش نرید.
اصلا نمیدونم چی هست و به چه دلایلی فعال میشه !
شاید اگه zstd با فشردهسازی کم استفاده کنید به نتیجه خوبی برسید، مطمئن نیستم. میتونید امتحان کنید.
چشم ، امتحانش ضرری نداره ، هر موقع بخوای میشه غیر فعال کنی فشرده سازی رو دیگه ؟
cow نیست، بلکه copy on reflink هست. copy on reflink و cow خیلی شبیه هم هستند ولی تفاوت دارند. به خاطر همین خیلی جاها zfs رو cow حساب میکنند.
راستش من هنوز درست نفهمیدم چی هست این قابلیت و چجوری کار میکنه ، اصلا چیکار میکنه : (
( پس اگه صلاح میدونید btrfs و یا zfs ( 😍️ ) رو توضیح بدید چیکار و کنم چه گام هایی رو پیش برم ، چون من آمادم : )
-
خب ۳ تا dataset میسازم ، یکی بوت بدون اون قابلیت هایی که گراب پشتیبانی نمیکنه ، و یکی روت و دیگری هم همونی که به فایل هام میدم : )
اگه بوت رو جدا کنید باید یه پارتیشن با فرمت fat32 بسازید براش.
-
خود ایشون گفتن اینجوری میشه :
به همین دلیل اگه میخواهید روت روی zfs باشه، یا باید موقع ساختن pool، قابلیتهایی که گراب پشتیبانی نمیکنه رو غیرفعال کنید
-
دقت کنید
گفتن روت یعنی ریشه، نه بوت
-
من اینجوری برداشت کردم که اون دیتاستی که قراره گراب از توش بخونه لینوکس و initramfs رو باید دیتاستی باشه که اون قابلیت های zfs خاموش باشه براش ..
به همین دلیل اگه میخواهید روت روی zfs باشه، یا باید موقع ساختن pool، قابلیتهایی که گراب پشتیبانی نمیکنه رو غیرفعال کنید ، یا اینکه کرنل و initramfs رو جایی قرار بدید که گراب میتونه بخونه. (برای مثال یه pool دیگه یا یه پارتیشن دیگه)
-
باید قابلیت هایی که گراب پشتیبانی نمیکنه رو در pool یا هر چیزی که بهش میگن، همون افراز ریشه، غیرفعال کنید.
و یه افراز دیگه با حجم ۵۰۰ مگابایت و فرمت fat32 بسازید و گراب رو روی اون نصب کنید.
-
دوست من ، بخون دوباره :
دارن میگن اگه میخواهید روت روی zfs باشه، یا باید موقع ساختن pool، قابلیتهایی که گراب پشتیبانی نمیکنه رو غیرفعال کنید ، یا اینکه کرنل و initramfs رو جایی قرار بدید که گراب میتونه بخون
( یا ) به این معناس که یکی از این دو حالت 🙃
دست کم من اینو فهمیدم ! شایدم اشتباه باشه برداشتم : )
-
فقط اینکه جناب دراگون یه نکته ای رو اصلاح میکنم ، دبیان زنده استاندارد (https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/current-live/amd64/iso-hybrid/debian-live-11.3.0-amd64-standard+nonfree.iso) رو دارم نه گنوم ، اشتباه کرده بودم ، که این به این معنیه که در محیط tui خواهم بود وقتی خواستیم بریم سراغ شروع کار : )
-
دیگه نا امید شده بودم 🤩
-
دیگه نا امید شده بودم 🤩
این چه صفحه ای هست؟
-
پایین پایین صفحه اصلی فروم ، افراد انلاین !
https://forum.ubuntu-ir.org/index.php?action=who
-
تا جایی که میدونم، btrfs snapshot فقط از subvolume که مشخص کردید snapshot میگیره.
میشه دستورشو قرار بدید.
با خود دستور btrfs اینکار ممکنه. نحوه استفاده به این شکله:
btrfs subvolume snapshot /path/to/subvolume /path/to/snapshot
/path/to/subvolume/ میشه جایی که subvolume مورد نظر سوار شده.
/path/to/snapshot/ میشه جایی که میخواهید snapshot ذخیره بشه.
هر دو باید روی یه فایلسیستم btrfs یکسان قرار داشته باشند.
مثلا اگه میخواهید از subvolume که روی / سوار شده یه snapahot داخل /snapshots./ با اسم snap1 ایجاد کنید، دستور این شکلی میشه:
btrfs subvolume snapshot / /.snapshots/snap1
مشخصه که لازمه که دستور بالا با دسترسی روت اجرا بشه.
دستور بالا یه snapshot که خواندنی و نوشتنی هست ایجاد میکنه. اگه میخواهید فقط خواندنی باشه، آپشن r- رو به زیردستور snapshot بدید. مثلا اینجوری:
btrfs subvolume snapshot -r / /.snapshots/snap1
پس نمیپرسم چجوری و با چه دستوری چون اونجور که شما گفتید بهتره اول بریم سراغ btrfs ! هرچند خودم دلم میخواد یه راست برم سراغ zfs ، زحمتش هم برای شما کمتره ( شاید )
با دستور zpool باید اینکار رو انجام بدید. مثلا این رو ببینید:
zpool create -o ashift=12 -O compression=lz4\
-O dnodesize=auto -O normalization=formD -R /mnt\
poolname /dev/sda5
zfs جنبههای متفاوت زیادی داره و میشه اونها رو تنظیم کرد. بعضی از اونها رو فقط میشه موقع ساختن pool تنظیم کرد و بعد از اون نمیشه تغییرشون داد.
چه خوب ! دقیقا یکی از آپشن های خوب nix و guix ، اینو حتما میخوام !
البته با اون چیزی که توی nix و guix هست فرق داره. توی nix و guix در سطح فایل و با لینک کردن انجام میشه. توی zfs اینها در سطح خود فایلسیستم انجام میشه.
بعد یه سوال ؟ اون فایل snapshot چقد جا میگیره ؟ قشنگ به اندازه خود dataset مدنظر ؟
اول که snapshot ایجاد میکنید، فضای خاصی نمیگیره، فقط اونقدری که روی دیسک نوشته بشه یه snapshot از چه چیزی گرفته شده. به همراه یه سری metadata مربوط به اون snapshot که فکر نکنم روی هم به 500KiB برسه.
وقتی شروع به تغییر اطلاعات میکنید، حجم اون snapshot بیشتر میشه.
فقط اطلاعاتی که تغییر میدید یا جدید مینویسید جای بیشتر اشغال میکنند. اطلاعات یکسان بین dataset و snapshot و clone جای مشترکی میگیرن. برای هر کدوم فضای اضافه مصرف نمیشه.
خب این خوبه ولی آیا وقتی بخواد میتونه به یه چیز دیگه اختصاص داده بشه اون رم اشغال شده ؟ اگه میشه که خب اصلا محدودیت نمیخواد بزارم براش !
zfs به راحتی اون فضای گرفته رو پس نمیده. فقط برای cache های خودش ازش استفاده میکنه. البته یه دستور همراه zfsutils-linux هست تا وضعیت arc رو مشاهده و کنترل کنید. با این دستور میشه arc رو خالی کرد. ولی قسمتی از arc رو خالی نمیکنه. اون رو میشه با نوشتن یه چیزی روی یکی از فایلهای داخل /proc/ یا /sys/ خالی کرد. درست یادم نیست مسیر فایل چی بود و باید چی مینوشتید.
برای کامپیوترهای معمولی، محدودیت 512MiB برای arc باید کافی باشه. مگه اینکه وضعیت خاصی داشته باشید.
فکر کنم خود کرنل قابلیتی شبیه همین به اسم bcache داره.
کدوم بهتر و سریع تره ؟ مال کرنل یا zfs ؟
نمیدونم. فکر نکنم اصلا بتونید از bcache به جای arc استفاده کنید. ولی مطمئن نیستم.
خب ۳ تا dataset میسازم ، یکی بوت بدون اون قابلیت هایی که گراب پشتیبانی نمیکنه ، و یکی روت و دیگری هم همونی که به فایل هام میدم : )
اینجوری نمیشه. این قابلیتها فقط میتونند روی کل pool فعال و غیرفعال بشن. نمیشه برای هر dataset جداگانه تنظیم کرد.
وقتی قابلیتها برای یه pool فعال و مورد استفاده قرار میگیرن، دیگه نمیشه اونها رو غیرفعال کرد.
بعضی قابلیتها وقتی فعال میشن، میشه اونها رو غیرفعال کرد، تا وقتی که مورد استفاده قرار نگرفتن. اگه مورد استفاده قرار بگیرن، دیگه نمیشه غیرفعالشون کرد.
بعضی قابلیتها رو همون وقتی فعال میکنید دیگه ممکن نیست غیرفعالشون کرد.
به نظرم بهترین گزینه برای روت روی zfs، استفاده از ZFSBootMenu هست.
چشم ، امتحانش ضرری نداره ، هر موقع بخوای میشه غیر فعال کنی فشرده سازی رو دیگه ؟
میتونید هر وقت بخواهید اون رو خاموش کنید یا تغییر بدید. البته اطلاعات قبلی فشرده باقی میمونند. میتونید با یه zfs send و zfs receive فشردهسازی اونها رو درست کنید.
( پس اگه صلاح میدونید btrfs و یا zfs ( 😍️ ) رو توضیح بدید چیکار و کنم چه گام هایی رو پیش برم ، چون من آمادم : )
اول بسته btrfs-progs رو نصب کنید. معمولا این بسته به طور پیشفرض توی دبیان نصب نیست.
بعد یه جایی رو با btrfs فرمت کنید.
یا اینکه کرنل و initramfs رو جایی قرار بدید که گراب میتونه بخون
منظورم این بوده که روی یه فایلسیستم دیگه که گراب میتونه اون رو بخونه قرار بدید.
-
اول که snapshot ایجاد میکنید، فضای خاصی نمیگیره، فقط اونقدری که روی دیسک نوشته بشه یه snapshot از چه چیزی گرفته شده. به همراه یه سری metadata مربوط به اون snapshot که فکر نکنم روی هم به 500KiB برسه.
وقتی شروع به تغییر اطلاعات میکنید، حجم اون snapshot بیشتر میشه.
فقط اطلاعاتی که تغییر میدید یا جدید مینویسید جای بیشتر اشغال میکنند. اطلاعات یکسان بین dataset و snapshot و clone جای مشترکی میگیرن. برای هر کدوم فضای اضافه مصرف نمیشه.
من کلا میخوام یدونه snapshot بگیرم از وقتی که همه پیکربندی های سیستمم تموم شده و دیگه آماده استفادس ، که اگه یروزی مبادا رسید ، فقط برگردم به اون snapshot و دوباره نصب نکنم توزیعمو ، پس یعنی دقیقا برمیگردونتت به دقیقا همون وضعیت دیگه ؟
اینجوری نمیشه. این قابلیتها فقط میتونند روی کل pool فعال و غیرفعال بشن. نمیشه برای هر dataset جداگانه تنظیم کرد.
وقتی قابلیتها برای یه pool فعال و مورد استفاده قرار میگیرن، دیگه نمیشه اونها رو غیرفعال کرد.
بعضی قابلیتها وقتی فعال میشن، میشه اونها رو غیرفعال کرد، تا وقتی که مورد استفاده قرار نگرفتن. اگه مورد استفاده قرار بگیرن، دیگه نمیشه غیرفعالشون کرد.
بعضی قابلیتها رو همون وقتی فعال میکنید دیگه ممکن نیست غیرفعالشون کرد.
به نظرم بهترین گزینه برای روت روی zfs، استفاده از ZFSBootMenu هست.
حالا الان که قراره بریم btrfs ولی یعنی نمیشه دو تا pool ایجاد کرد یکی فقط boot و بدون اون آپشن ها ، و یکی شامل دیتاست root و همون افراز فایلام ؟
اول بسته btrfs-progs رو نصب کنید. معمولا این بسته به طور پیشفرض توی دبیان نصب نیست.
بعد یه جایی رو با btrfs فرمت کنید.
کل اون هارد gpt بدون افراز رو فرمت کنم با btrfs ؟ دستورش چیه ؟
-
با جی پارتد زنده رو کل دیسک gpt که دارم فقط یدونه افراز ساختم ( افراز اضافه برای روز مبادا نمیخوام ) و با btrfs فرمتش کردم ، بصورت پیش گزیده بسته btrfs-progs اینجا نصبه ! با همین توزیع پیش میرم با اجازتون : )
-
جناب دراگون ، سعی کردم تا شما بیاین و توضیح بدید چیکار کنم خودم یه حرکت هایی بزنم ولی سر درنیاوردم از ویدیو ها و مقالات آموزشی راستش ..
چیکار کنم واسه باقی مراحل ؟
-
بی سیستم موندم 😂 کاش وقتی همه چیزو توضیح دادین اقدام میکردم !
-
چه دایرکتوری هایی رو میخواین جدا کنین؟
-
من همیشه دو تا افراز xfs میساختم ، یکی ریشه ، یکی افرازی که پرونده های شخصیم روشه ، یعنی خونه رو جدا نمیکنم ، بعد این افراز دوم رو روی نشونی زیر سوار میکردم :
/media/<username>/File
و بعد از این شاخه یه پیوند ( sym link ) میساختم توی خونه کاربرم !
همینو اینجا میخوام ، چیکار کنم ؟
-
جناب دراگون راهی هست که همه مراحل و همه کار ها رو با خود نصاب قدیمی دبیان انجام بدیم ؟ اگه هست عالی میشه ، هم افراز بندی و هم همه چیز ، ازونجایی که تو نصاب دبیان میشه به یه شل هم دسترسی داشت حدس زدم بشه : )
-
در واقع منظورم اینه که نیاز نباشه اول پارتیشن ها رو بسازیم و بعد بریم سراغ نصب ، با همون پارتیشن منیجر نصاب کاراشو انجام بدیم ! ولی خب چه کاریه ؟ بگذرین از اینی که گفتم !
-
جناب دراگون ، اینکه بی رایانه موندم موجب محکومیتم شد به درک مقالات و ویدیو ها ! به هر زحتمی بود یه چیزایی دستگیرم شد : )
ترس همیشگیم اینه که نکنه نکته ای باشه که اینا نمیگن و جناب دراگون لحاظ میکنه !
میدونین که امکان نصب کارشناس ( expert install ) دبیان فرای اینکه نصب بشدت سفارشی ای رو در اختیارت قرار میده ، میذاره هر گام رو جدا از باقی اونها پیش ببری ، برای همین میشه وقتی افراز بندی کردی ، قبل از اینکه نصب دبیان رو شروع کنی ، با اجرای یک ash اون پیکربندی ای که میخوای رو پیاده کنی برای btrfs !
فقط خواستم یه بررسی کنید این مراحل درسته و همینو پیش برم یا نه ؟
و اینکه آیا نکته ای هست که باید مدنظر قرار بدم ؟
با این فرض :
من همیشه دو تا افراز xfs میساختم ، یکی ریشه ، یکی افرازی که پرونده های شخصیم روشه ، یعنی خونه رو جدا نمیکنم ، بعد این افراز دوم رو روی نشونی زیر سوار میکردم :
/media/<username>/File
و بعد از این شاخه یه پیوند ( sym link ) میساختم توی خونه کاربرم !
همینو اینجا میخوام ، چیکار کنم ؟
باید در مرحله پارتیشن بندی نصاب کارشناس دبیان ، روی کل هاردم یه افراز btrfs بسازم و قبل از مرحله بعدی ( یعنی نصب ) وارد شل بشم و ..
umount /target
mount /dev/sda1 /mnt
btrfs subvolume create /mnt/@File
mount -o rw,noatime,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@rootfs /dev/sda1 /target
mkdir /target/File
mount -o rw,noatime,mode=700,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@File /dev/sda1 /target/File
nano /target/etc/fstab
exit
و ادامه ..
وقتی fstab رو هم باز کردم اینا رو مینویسم توش :
UUID=<uuid> / btrfs rw,noatime,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@rootfs
UUID=<uuid> /File btrfs rw,noatime,mode=700,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@File
tmpfs /tmp tmpfs rw,mode=1777,nosuid,nodev,size=50m,defaults
tmpfs /var/tmp tmpfs rw,mode=1777,nosuid,nodev,size=50m,defaults
درسته ؟
( راستی این آپشن dynamic inode ش خیلی باحاله بنظرم !
نیازی به CoW هم نمیبینم برای خودم ، مشکلاتی که خودش و Defreg کردن بوجود میارن هم البته دخیلن در این تصمیم !
کلا یدونه snapshot هم بیشتر نمیخوام بگیرم ، پس subvolume جدا نمیخوام براش : )
و چند تا سوال :
اونجور که فهمیدم balance و scrub برای کسایی که چنتا دیسک دارن درسته ؟ خب من یدونه دارم ! پس این هیچی : )
و اینکه میخواستم بدونم Deduplication داخلی سطح فایل پایدار نداره btrfs ؟
نظرتون در مورد این (https://linuxhint.com/save-disk-space-btrfs-deduplication/) ابزار چیه ؟ )
-
اینکه بی رایانه موندم موجب محکومیتم شد به درک مقالات و ویدیو ها ! به هر زحتمی بود یه چیزایی دستگیرم شد : )
به نفعتون شد ;D
مراحلی که گفتید مشکلی ندارند، همه درستند
فقط یه نکته هست که فکر کنم space_cache نسخه دومش زیاد پایدار نیست.
اگه snapshot میگیرید یا یه subvolume بسازید یا توی File ذخیرهاش کنید.
و اینکه میخواستم بدونم Deduplication داخلی سطح فایل پایدار نداره btrfs ؟
نظرتون در مورد این ابزار چیه ؟ )
نفهمیدم چیه. ولی cow هم خوبه امتحانش کنید.
-
پس چرا خط چهارم اولین باکس کدی که گذاشتم ارور میده که invalid argument ؟
ویرایش : فهمیدم چون @rootfs هست نه @ خالی ! 🤧😅
-
قبل از دستور btrfs subvolume create /mnt/@File دستور زیر رو وارد کنید.
btrfs subvolume create /mnt/@
-
نه برای این نیست ، این خودش وجود داره ، فقط اسمش @rootfs هست نه @ خالی !
-
خب گویا مشکلی وجود داره ، خود سیستم درست نصب شد بدون ارور ، ولی گراب نصب نشد !
جناب دراگون کجایید ؟ دوستان کسی راه حلی نداره ؟ بدون نصب گراب تموم کردمش : )
-
گراب رو با دستور زیر نصب کنید.
apt-get install grub
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
-
عجیبه ! من که سیستمم amd64 عه !
Installing for i386-pc platform.
grub-install: error: failed to get canonical path of `overlay'.
این نتیجه دستور دومت روی debian live standard عه !
-
سیستمت بایوسه؟
-
سیستمت بایوسه؟
اره ، ولی هیچ وقت تو نصب هیچ توزیعی نساختم پارتیشن bios grub رو ، اینجا لازم بود بسازم ؟
-
gpt یا mbr؟
-
gpt یا mbr؟
Gpt
-
بجای grub-install /dev/sda دستور زیر رو وارد کن
grub-install --target=x86_64-efi /dev/sda
-
من کلا میخوام یدونه snapshot بگیرم از وقتی که همه پیکربندی های سیستمم تموم شده و دیگه آماده استفادس ، که اگه یروزی مبادا رسید ، فقط برگردم به اون snapshot و دوباره نصب نکنم توزیعمو
البته میتونید خیلی بیشتر از یه snapshot ایجاد کنید. مثلا بعد از هر بروزرسانی یه snapshot ایجاد کنید تا اگه بروزرسانی مشکل داشت، به حالت قبل برگردید.
یا وقتی که میخواهید یه چیزی رو نصب کنید یا تغییر بدید ولی مطمئن نیستید که مشکل ایجاد میکنه یا نه.
پس یعنی دقیقا برمیگردونتت به دقیقا همون وضعیت دیگه ؟
از نظر اطلاعات بله دقیقا بر میگرده به حالت قبل. ولی property هایی که روی dataset تغییر کرده نه.
پیکربندی pool هم به حالت قبل بر نمیگرده. مثلا اگه یه دستگاه ذخیرهسازی جدید به pool اضافه کنید، برگردوندن snapshot باعث نمیشه اون دستگاه از pool حذف بشه.
اگه اون dataset رو پاک کنید، snapahot های اون هم همراهش پاک میشه.
اگه میخواهید یه جور snapshot از کل pool داشته باشید، میتونید یه checkpoint از pool ایجاد کنید.
checkpoint تا حدودی شبیه snapshot هست ولی با اون فرق داره.
از یه pool فقط میشه یه checkpoint ایجاد کرد و تا وقتی که موجوده، نمیشه checkpoint جدیدی ساخت. هر زمانی که اون checkpoint رو پاک کنید، میتونید یه جدید بسازید.
وقتی به یه checkpoint بر میگردید، همه چیز توی pool به حالتی بر میگرده که checkpoint رو ایجاد کردید.
با بازگشت به یه checkpoint، اون checkpoint پاک میشه.
وقتی یه checkpoint ایجاد شده، نمیتونید پیکربندی pool رو تغییر بدید. مثلا به pool دستگاه اضافه کنید یا بردارید.
حالا الان که قراره بریم btrfs ولی یعنی نمیشه دو تا pool ایجاد کرد یکی فقط boot و بدون اون آپشن ها ، و یکی شامل دیتاست root و همون افراز فایلام ؟
چرا میشه. ولی مدیریتش ممکنه سخت باشه. مخصوصا اگه بخواهید از snapshot ها استفاده کنید. در اینصورت باید مطمئن بشید که /boot/ با بقیه سیستم هماهنگ هست.
کل اون هارد gpt بدون افراز رو فرمت کنم با btrfs ؟ دستورش چیه ؟
با mkfs.btrfs میشه. با mkfs -t btrfs هم ممکن هست.
چیکار کنم واسه باقی مراحل ؟
اصلا تا الان چیکار کردید؟ حداقل خروجی lsblk و blkid رو قرار بدید که بشه فهمید وضعیت سیستم چجوریه.
جناب دراگون راهی هست که همه مراحل و همه کار ها رو با خود نصاب قدیمی دبیان انجام بدیم ؟
با حالت expert اون میشه.
تا جایی که میدونم، نصاب قدیمی قابلیتی نداره تا موقع پارتیشنبندی، subvolume بسازید. خودش یه subvolume میسازه. باید از طریق پوسته اقدام کنید.
umount /target
mount /dev/sda1 /mnt
btrfs subvolume create /mnt/@File
mount -o rw,noatime,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@rootfs /dev/sda1 /target
mkdir /target/File
mount -o rw,noatime,mode=700,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@File /dev/sda1 /target/File
nano /target/etc/fstab
exit
و ادامه ..
وقتی fstab رو هم باز کردم اینا رو مینویسم توش :
UUID=<uuid> / btrfs rw,noatime,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@rootfs
UUID=<uuid> /File btrfs rw,noatime,mode=700,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@File
tmpfs /tmp tmpfs rw,mode=1777,nosuid,nodev,size=50m,defaults
tmpfs /var/tmp tmpfs rw,mode=1777,nosuid,nodev,size=50m,defaults
آپشن nodatacow برای btrfs باعث میشه cow خاموش بشه. وقتی cow توی btrfs غیرفعال هست، فشردهسازی هم انجام نمیشه.
اونجور که فهمیدم balance و scrub برای کسایی که چنتا دیسک دارن درسته ؟
نه.
scrub یه جورایی نسخه پیشرفتهتر fsck هست.
balance هم ممکنه در بقیه شرایط استفاده بشه.
توی btrfs وقتی یه سری اطلاعات با فشردهسازی نوشته میشن و یعد فشردهسازی رو عوض میکنید، فشردهسازی اطلاعات قبلی به طور خودکار عوض نمیشه. یه balance لازم داره تا درست بشه.
مثلا وقتی که اطلاعات قبلی با lzo فشرده شدند و الان فشردهسازی رو به zlib تغییر دادید، اگه balance رو اجرا کنید، اطلاعات قبلی با zlib فشرده میشن.
فکر کنم برای وقتی که وضعیت cow رو هم تغییر میدید به کار بیاد.
و اینکه میخواستم بدونم Deduplication داخلی سطح فایل پایدار نداره btrfs ؟
نظرتون در مورد این (https://linuxhint.com/save-disk-space-btrfs-deduplication/) ابزار چیه ؟ )
در مورد هر دو چیزی نمیدونم.
عجیبه ! من که سیستمم amd64 عه !
Installing for i386-pc platform.
grub-install: error: failed to get canonical path of `overlay'.
این نتیجه دستور دومت روی debian live standard عه !
درسته. برای سیستمهای legacy اینجوری هست.
ویرایش:
دفعه اول دقیق ندیدم چی نوشته. الان که دیدم مشخصه یه جاییش مشکل داره.
بجای grub-install /dev/sda دستور زیر رو وارد کن
grub-install --target=x86_64-efi /dev/sda
این برای سیستمهایی جواب میده که توی حالت uefi بوت میشن. اصلا وقتی گراب رو برای حالت uefi نصب میکنید، مسیر دیسکی که میدید نادیده گرفته میشه. به جاش باید مسیر به جایی که ESP سوار شده هست رو بدید.
-
اشتباهم کجا بود که گرابو نمیذاشت نصب کنم خود نصاب دبیان و به ارور میخورد ؟
از نظر اطلاعات بله دقیقا بر میگرده به حالت قبل. ولی property هایی که روی dataset تغییر کرده نه.
پیکربندی pool هم به حالت قبل بر نمیگرده. مثلا اگه یه دستگاه ذخیرهسازی جدید به pool اضافه کنید، برگردوندن snapshot باعث نمیشه اون دستگاه از pool حذف بشه.
اگه اون dataset رو پاک کنید، snapahot های اون هم همراهش پاک میشه.
اگه میخواهید یه جور snapshot از کل pool داشته باشید، میتونید یه checkpoint از pool ایجاد کنید.
checkpoint تا حدودی شبیه snapshot هست ولی با اون فرق داره.
از یه pool فقط میشه یه checkpoint ایجاد کرد و تا وقتی که موجوده، نمیشه checkpoint جدیدی ساخت. هر زمانی که اون checkpoint رو پاک کنید، میتونید یه جدید بسازید.
وقتی به یه checkpoint بر میگردید، همه چیز توی pool به حالتی بر میگرده که checkpoint رو ایجاد کردید.
با بازگشت به یه checkpoint، اون checkpoint پاک میشه.
وقتی یه checkpoint ایجاد شده، نمیتونید پیکربندی pool رو تغییر بدید. مثلا به pool دستگاه اضافه کنید یا بردارید.
اینجا منظورم برای btrfs بود راستش ، چون رفتیم سراغ این بجای zfs 😅 شرمنده
اصلا تا الان چیکار کردید؟ حداقل خروجی lsblk و blkid رو قرار بدید که بشه فهمید وضعیت سیستم چجوریه.
این کارارو :
با این فرض :
من همیشه دو تا افراز xfs میساختم ، یکی ریشه ، یکی افرازی که پرونده های شخصیم روشه ، یعنی خونه رو جدا نمیکنم ، بعد این افراز دوم رو روی نشونی زیر سوار میکردم :
/media/<username>/File
و بعد از این شاخه یه پیوند ( sym link ) میساختم توی خونه کاربرم !
همینو اینجا میخوام ، چیکار کنم ؟
باید در مرحله پارتیشن بندی نصاب کارشناس دبیان ، روی کل هاردم یه افراز btrfs بسازم و قبل از مرحله بعدی ( یعنی نصب ) وارد شل بشم و ..
umount /target
mount /dev/sda1 /mnt
btrfs subvolume create /mnt/@File
mount -o rw,noatime,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@rootfs /dev/sda1 /target
mkdir /target/File
mount -o rw,noatime,mode=700,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@File /dev/sda1 /target/File
nano /target/etc/fstab
exit
و ادامه ..
وقتی fstab رو هم باز کردم اینا رو مینویسم توش :
UUID=<uuid> / btrfs rw,noatime,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@rootfs
UUID=<uuid> /File btrfs rw,noatime,mode=700,nossd,compress=zstd:7,nodatacow,space_cache=v2,subvol=@File
tmpfs /tmp tmpfs rw,mode=1777,nosuid,nodev,size=50m,defaults
tmpfs /var/tmp tmpfs rw,mode=1777,nosuid,nodev,size=50m,defaults
درسته ؟
همین الانم جی پارتد زنده بالا اوردم و گزینه ( خودتو بریز تو رم که بتونم جدا کنم فلشو ) انتخاب کردم و کل هاردو فرمت کردم با gpt و بدون اینکه افرازی بسازم دستوراتی که گفتید رو اجرا کردم تو ترمینالی که جی پارتد زنده در اختیارت میزاره و نتیجش :
root@debian:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 385M 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
/run/live/rootfs/filesystem.squashfs
sda 8:0 0 74.5G 0 disk
sr0 11:0 1 1024M 0 rom
root@debian:~# blkid
/dev/loop0: TYPE="squashfs"
/dev/sda: PTUUID=<ptuuid> PTTYPE="gpt"
با نگاه کردن به صفحه نوشتمش ، امیدوارم اشتباهی نداشته باشم ! ptuuid رو هم تنبلیم شد دونه دونه بنویسمش ، لازمه ؟
و امادم که بریم واسه نصب expert دبیان و پیکربندی btrfs تو پوسته ای که میده به کاربر ، اگه میشه با همین روش راهنمایی کنید که فقط با یه ایزوی دبیان راحت بتونم همه جا دبیان با btrfs نصب کنم 😁
-
این برای سیستمهایی جواب میده که توی حالت uefi بوت میشن. اصلا وقتی گراب رو برای حالت uefi نصب میکنید، مسیر دیسکی که میدید نادیده گرفته میشه. به جاش باید مسیر به جایی که ESP سوار شده هست رو بدید.
پس چرا برای ایشون دستور قبلی خطا داد؟
-
شاید چون من از خودم یه ۲ گذاشتم اخر دستور نصب 😄
-
شاید چون من از خودم یه ۲ گذاشتم اخر دستور نصب 😄
خب برای سیستم های بایوس گراب روی دیسک باید نصب شه نه افراز (پارتیشن)، پس دستوری که من دادم درست بود ;D
-
نه نه ! منظورم اینه apt install grub2 زدم !
چون همیشه نصاب های توزیع ها برای من گراب دو رو نصب کردن فک کردم ۲ بزارم منم اخر دستور 🤷🏻♂️
( جناب دراگون من الان دیدم تو یه ویدیو ، zfs انحصاریه ؟ شما که حتی کلید های uefi ( یا یه همچنین چیزی ) رو خودتون دوباره امضا میگنید چون اعتماد ندارید به اصلیاش ، چرا از zfs استفاده میکنید که آزاد نیس ؟
اگه انحصاریه من رو همین btrfs میمونم 😅 )
-
راستی یه نکته : اگه BIOS با GPT هستی باید یه پارتیشن از نوع BIOS Boot و بدون فرمت با حجم ۱۰۰~۲۰۰ مگ بسازی.
بعد بقیه فضا رو یه پارتیشن btrfs بسازی و بقیه کارها.
-
سیستمت بایوسه؟
اره ، ولی هیچ وقت تو نصب هیچ توزیعی نساختم پارتیشن bios grub رو ، اینجا لازم بود بسازم ؟
خب من هر توزیعی نصب کردم نصابش نساخته اینو که !
حالا یه سر تا جناب دراگون بیان برم اینی که میگی رو امتحان کنم ببینم چی میشه !
-
بزرگواران نصب شد و اجازه داد گرابو هم نصب کنم ، ولی وقتی داشت بوت میشد کلی failed قرمز رنگ توی خروجی سیستم دی بود ! ولی اجازه داد لاگین کنم ، رمزو که زدم یکم طول کشید تا خط فرمان رو بده بهم ، ولی فعلا با خود سیستم مشکلی ندارم ، ایراد کار کجاست ؟ مشکلی وجود داره ؟ جایی رو اشتباه رفتم یا کاری که باید رو نکردم ؟
-
خب مشکل یافتم ! با اینکه تو fstab زدم rw ولی @rootfs بصورت ro سوار شده اما /File که @File روش سواره ، ro نیست !
-
اپشن ro داده به کرنل چرا تو گراب ؟ دستی rw کردمش و درست شد ، تو همون /etc/defaults/grub این اپشن رو همیشگی کنم ؟
البته جناب دراگون که اومدن توضیح دادن مشکل کجاست دوباره نصب میکنم ، الان صرفا برای تفریح دارم بازی میکنم با سیستم !
-
rw رو همیشگی کردم و گنومو هم نصب کردم و مشکلی نیست ! سیستم داره مثل ساعت کار میکنه ! فقط نمیدونم چرا احساس میکنم سرعتش بیشتره نسبت به xfs ! هست ؟
( جناب دراگون اگر اصولی نرفتم حتما بگید بهم که دوباره درست پیش برم ، این فقط برای تفریحم بود و پر کردن بیکاریم ، احساس میکنم نکات زیادی هست که درنظر نگرفتم ، چیزای جالبی که میتونستم لحاظ کنم و جبران اشتباهام ، ممنون میشم ازتون : )
-
الان من snapshot بگیرم از ریشه یعنی ( / ) اون ساب ولوم /File که زیرشه هم ازش ( به قول ابوالفضل ) عکس فوری گرفنه میشه ؟
-
الان من snapshot بگیرم از ریشه یعنی ( / ) اون ساب ولوم /File که زیرشه هم ازش ( به قول ابوالفضل ) عکس فوری گرفنه میشه ؟
طبق چیزی که جناب دراگون گفتن نه از /File و زیردایرکتوری هاش عکس فوری نمیگیره
-
حتی اگه subvolume دوم زیر اولی باشه مثلا ؟
-
حتی اگه subvolume دوم زیر اولی باشه مثلا ؟
تاپیک سوالاتی درباره btrfs رو بخون، طبق چیزی که از گفته های جناب دراگون دستگیرم شد بله
-
خوندم قبلا ولی گفتم شاید اشتباه فهمیده باشم : )
-
گراب رو با دستور زیر نصب کنید.
apt-get install grub
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
برای سیستمهای legacy، باید بسته grub-pc نصب بشه. تا جایی که میدونم اصلا بستهای به اسم grub توی مخازن دبیان موجود نیست. شاید یه بسته مجازی باشه، مطمئن نیستم.
توی دبیان میشه به جای grub-mkconfig از دستور update-grub یا update-grub2 استفاده کرد. اولی یه لینک به دومی هست.
update-grub2 یه اسکریپت خیلی ساده هست که تنها کاری که میکنه، اجرا و جایگزین کردن grub-mkconfig با خودش هست.
فقط همین یه خط رو داره که کاری انجام میده:
exec grub-mkconfig -o /boot/grub/grub.cfg
اشتباهم کجا بود که گرابو نمیذاشت نصب کنم خود نصاب دبیان و به ارور میخورد ؟
فکر کنم چون bios boot partition رو نداشتید.
توی سیستمهایی که توی حالت legacy بوت میشن و پارتیشنتیبل دیسک بوت اونها gpt هست، به این پارتیشن نیاز دارید.
هدرهای پارتیشنتیبل gpt فضای زیادی باقی نمیذارند تا گراب core.img خودش رو اونجا بذاره. به خاطر همین به bios boot partition نیاز هست.
اینجا منظورم برای btrfs بود راستش ، چون رفتیم سراغ این بجای zfs 😅 شرمنده
توی btrfs قضیه یکم فرق داره.
به طور پیشفرض snapahot ها توی btrfs قابل نوشتن و خوندن هستند. به خاطر همین ممکنه چیزی اونها رو تغییر بده. البته میتونید snapshot فقط خواندنی هم ایجاد کنید ولی اونها رو هم میشه به snapshot خوندنی و نوشتنی تبدیل کرد.
root@debian:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 385M 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
/run/live/rootfs/filesystem.squashfs
sda 8:0 0 74.5G 0 disk
sr0 11:0 1 1024M 0 rom
root@debian:~# blkid
/dev/loop0: TYPE="squashfs"
/dev/sda: PTUUID=<ptuuid> PTTYPE="gpt"
با نگاه کردن به صفحه نوشتمش ، امیدوارم اشتباهی نداشته باشم ! ptuuid رو هم تنبلیم شد دونه دونه بنویسمش ، لازمه ؟
و امادم که بریم واسه نصب expert دبیان و پیکربندی btrfs تو پوسته ای که میده به کاربر ، اگه میشه با همین روش راهنمایی کنید که فقط با یه ایزوی دبیان راحت بتونم همه جا دبیان با btrfs نصب کنم 😁
وقتی خروجی این دستورات رو فرستادید، هنوز جایی رو با btrfs فرمت نکرده بودید. درسته؟
اینجا لازم نیست partuuid رو مشخص کنید.
این برای سیستمهایی جواب میده که توی حالت uefi بوت میشن. اصلا وقتی گراب رو برای حالت uefi نصب میکنید، مسیر دیسکی که میدید نادیده گرفته میشه. به جاش باید مسیر به جایی که ESP سوار شده هست رو بدید.
پس چرا برای ایشون دستور قبلی خطا داد؟
خروجی که فرستاده بودند رو درست ندیدم. دلیل خطا هم این بوده که به یه bios boot partition نیاز بوده.
نه نه ! منظورم اینه apt install grub2 زدم !
چون همیشه نصاب های توزیع ها برای من گراب دو رو نصب کردن فک کردم ۲ بزارم منم اخر دستور 🤷🏻♂️
بسته grub2 توی دبیان یه بسته dummy هست. هیچ چیز خاصی همراهش نیست.
معمولا وقتی یه بسته جایگزین یه بسته دیگه میشه، بسته قبلی رو به یه بسته dummy تبدیل میکنند.
اینجور بستهها به بستههای جدید وابسته هستند، خودشون فایل خاصی ندارند و فقط به این خاطر موجودند تا بستههای جایگزین شده نصب بشن.
این بستهها رو میشه بدون مشکل پاک کرد.
تنها فایلهایی که ممکنه یه بسته dummy داشته باشه، معمولا داخل مسیر زیر قرار میگیرن:
/usr/share/doc/PACKAGENAME
/usr/share/bug/PACKAGENAME
به جای PACKAGENAME اسم اون بسته قرار میگیره.
( جناب دراگون من الان دیدم تو یه ویدیو ، zfs انحصاریه ؟ شما که حتی کلید های uefi ( یا یه همچنین چیزی ) رو خودتون دوباره امضا میگنید چون اعتماد ندارید به اصلیاش ، چرا از zfs استفاده میکنید که آزاد نیس ؟
اگه انحصاریه من رو همین btrfs میمونم 😅 )
توسعه zfs از سال ۲۰۰۱ میلادی توسط دو مهندس توی شرکت sun microsystems شروع شد.
توی سال ۲۰۰۴ شرکت sun این فایلسیستم رو با مجوز cddl منتشر کرد.
سال ۲۰۰۰۸ توسعه نسخه بومی برای لینوکس شروع شد.
توی سال ۲۰۱۰، اوراکل شرکت sun رو خرید و سیستمعامل opensolaris به همراه متعلقاتش از جمله zfs رو انحصاری کرد. به همین دلیل قسمتی از کارمدهای sun به عنوان اعتراض، استعفا داند. از جمله یکی از دوتا سازنده اصلی zfs.
توی همون سال، پروژه illumos از فورک کردن opensolaris بوجود اومد.
بین ۲۰۱۰ تا ۲۰۱۳ یه سری توسعهها به صورت جدا انجام شد تا اینکه توی ۲۰۱۳، پروژه openzfs بوجود اومد.
از ۲۰۱۳ تا حالا بیشتر توسعه نسخه آزاد zfs به مرکزیت پروژه openzfs رفته. نسخههای بومی لینوکس و freebsd مستقیم توی همین پروژه انجام میشه. اون مهندسی هم که استعفا داده بود، توی توسعه همین پروژه مشارکت داره.
به این دلیل که zfs با مجوز cddl منتشر شده و این مجوز با مجوزهای خانواده gpl ناسازگاره و بیشتر کد کرنل لینوکس با مجوز gpl2 منتشر میشه، zfs وارد شاخه اصلی کرنل لینوکس نشده.
تغییر مجوز از cddl به gpl2 به همین راحتی نیست. مجوز cddl یه سری شرایط خاص داره که برای تغییر مجوز، باید همه کسایی که توی توسعه نقش داشتند، رضایت خودشون رو اعلام کنند. به عبارتی اوراکل هم باید رضایت خودش رو برای اینکار اعلام کنه.
اون نسخه zfs که توسط اوراکل منتشر میشه و باید بابتش پول بدید انحصاری هست. اون نسخهای که توی توزیعها پیدا میشه، در واقع openzfs هست و هیچ قسمت انحصاری نداره. همه کدهای اون، اینجا دردسترس هست. https://github.com/openzfs/zfs
چیزی مثل firmware انحصاری و اینجور چیزها هم نداره.
openzfs آزاده ولی مجوزش بده. مجوز cddl اجازه میده که برنامه رو کلا انحصاری کنید. ولی اجازه نمیده به راحتی مجوز اون رو به چیز دیگهای تغییر بدید.
الان من snapshot بگیرم از ریشه یعنی ( / ) اون ساب ولوم /File که زیرشه هم ازش ( به قول ابوالفضل ) عکس فوری گرفنه میشه ؟
وقتی توی btrfs از یه subvolume یه snapshot ایجاد میکنید، فقط از همون subvolume یه snapshot ایجاد میشه. از بقیه subvolume ها نه. حتی اگه اون subvolume ها زیر subvolume مورد نظر باشن.
-
سپاس بزرگوار ، پس همین مسیری که رفتم درسته ؟ چون یه سری اخطار ها موقع بوت میبینم قرمز رنگ 🤷🏻♂️
-
راستی یه نکته : اگه BIOS با GPT هستی باید یه پارتیشن از نوع BIOS Boot و بدون فرمت با حجم ۱۰۰~۲۰۰ مگ بسازی.
بعد بقیه فضا رو یه پارتیشن btrfs بسازی و بقیه کارها.
۱۰۰ تا ۲۰۰MiB ؟! ۱MiB تا ۲MiB کافیه. معمولا هم کمتر از ۱MiB مصرف میشه.
سپاس بزرگوار ، پس همین مسیری که رفتم درسته ؟ چون یه سری اخطار ها موقع بوت میبینم قرمز رنگ 🤷🏻♂️
ما علم غیب نداریم که بدونیم چه خطایی داده. :) خطاها رو قرار بدید.
خروجی این دستورات رو هم همینطور.
systemctl list-units --failed
sudo dmesg --level err
cat /proc/cmdline
-
دیدم تو ویکی آرچ نوشته بود ۱ مگابایتا ;D
-
چشم در اولین فرصت دسترسی به سیستم : )
در واقع منظورم این بود که مسیرو درست و کامل رفتم ؟
بوت کردن دبیان از فلش ونتوی و انتخاب گزینه expert
طی کردن مراحل تا رسیدن به گزینه پارتیشن
یه پارتیشن btrfs در اخر هارد با ماونت پوینت روت بعنوان sda1 ( میخواستم این اولین پارتیشن باشه ! )
و یه پارتیشن در اول هارد در فضای کوچکی که باقی مانده با فرمت bios grub بعنوان sda2
نوشتن تغییرات روی دیسک
گزینه execute a shell بجای مرحله اغاز نصب
umount /target
mount /dev/sda1 /mnt
btrfs subvolume create /mnt/@File
mkdir /target/File
mount -o rw,noatime,nossd,compress=zstd:15,datacow,autodefrag,space_cache=v2,subvol=@rootfs /dev/sda1 /target
mount -o rw,noatime,nossd,compress=zstd:15,datacow,autodefrag,space_cache=v2,subvol=@File /dev/sda1 /target/File
nano /target/etc/fstab
{
/dev/sda1 / btrfs rw,noatime,nossd,compress=zstd:15,datacow,autodefrag,space_cache=v2,subvol=@rootfs
/dev/sda1 /File btrfs rw,noatime,nossd,compress=zstd:15,datacow,autodefrag,space_cache=v2,subvol=@File
tmpfs /tmp tmpfs rw,mode=1777,nosuid,nodev,size=200m,defaults
tmpfs /var/tmp tmpfs rw,mode=1777,nosuid,nodev,size=200m,defaults
}
exit
و نصب دبیان !
بعد وقتی ریستارت کردم موقع بوت کلی اخطار قرمز error دیدم ولی از وقتی گنومو نصب کردم فقط دارم دو تا اخطار میبینم ، یکی یادمه نوشته بود failed to mount root & kernel file system اگه اشتباه نکنم ، اون یکی روهم یادم نیست !
بصورت ro ماونت شده بود @rootfs نمیدونم چرا ، خلاصه یه rw اضافه کردم به خط فرمان کرنل تو گراب !
-
شاید باید با دستور زیر subvolume ریشه رو میساختید
btrfs subvolume create /mnt/@rootfs
-
بزرگوار گفتم دفعه پیشم ، اون خودش هست ، توی مرحله پارتیشن بندی خودش بوجود میاد : )
-
openzfs آزاده ولی مجوزش بده. مجوز cddl اجازه میده که برنامه رو کلا انحصاری کنید. ولی اجازه نمیده به راحتی مجوز اون رو به چیز دیگهای تغییر بدید.
وقتی مجوز میگه من ازادم و نمیتونین عوضم کنید به این راحتی ها ، چجوری میشه انحصاریش کرد ؟
اون سختی ها چیه ؟ همین که همه توسعه دهندگان رای بدن ؟
-
در صورت تغیر کد میشود مجوزش را تغیر داد
-
در واقع منظورم این بود که مسیرو درست و کامل رفتم ؟
...
فکر نکنم کار دیگهای لازم بوده انجام بدید.
وقتی مجوز میگه من ازادم و نمیتونین عوضم کنید به این راحتی ها ، چجوری میشه انحصاریش کرد ؟
شرایط مجوز هست.
میتونید اینجا (https://opensource.org/licenses/CDDL-1.0) کل تعریف مجوز رو ببینید.
اون سختی ها چیه ؟ همین که همه توسعه دهندگان رای بدن ؟
اینکه لازمه همه کسایی که توی توسعه مشارکت داشتند، رضایت خودشون رو برای تغییر مجوز اعلام کنند. شرکت اوراکل هم باید اینکار رو انجام بده.
اگه اوراکل میخواست zfs با gpl منتشر بشه، از همون اول opensolaris و متعلقاتش رو انخصاری نمیکرد.
در صورت تغیر کد میشود مجوزش را تغیر داد
بله میشه. ولی نوشتن دوباره کدهایی که در طول ۲۰ سال نوشته شدند، کار سادهای نیست.
-
systemctl list-units --failed
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=155085.0;attach=53938;image)
sudo dmesg --level err
[ 8.957083] BTRFS error (device sda1: state M): unrecognized mount option 'autodefreg'
cat /proc/cmdline
BOOT_IMAGE=/@rootfs/boot/vmlinuz-5.18.0-2-amd64 root=UUID=5c7f9f97-1a63-45d8-b3e3-c93603c2d35f ro rootflags=subvol=@rootfs video=LVDS-1:d quiet rw
-
systemctl list-units --failed
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=155085.0;attach=53938;image)
نمیدونم چرا سرویس networking دچار مشکل شده. احتمالا مشکل از پیکربندیهای اون هست.
خطای سرویس systemd-remount-fs احتمالا به همون دلیلی ایجاد شده که خطایی پایین توی dmesg وجود داره.
خروجی این دوتا دستور رو قرار بدید:
systemctl status networking.service
systemctl status systemd-remount-fs.service
sudo dmesg --level err
[ 8.957083] BTRFS error (device sda1: state M): unrecognized mount option 'autodefreg'
یکی از آپشنهایی که برای سوار کردن اون فایلسیستم btrfs مشخص کردید غلط املایی داره.
به جای autodefrag نوشتید autodefreg. به جای a یه e گذاشتید.
فایل fstab رو ویرایش کنید و اون آپشن که اشتباه املایی داشته رو به defrag تغییر بدید.
بعد از اینکه غلط املایی رو درست کردید؛ این دستورات رو بزنید و ببینید وضعیت سرویس systemd-remount-fs.service چه فرقی میکنه.
sudo systemctl daemon-reload
sudo systemctl restart systemd-remount-fs.service
cat /proc/cmdline
BOOT_IMAGE=/@rootfs/boot/vmlinuz-5.18.0-2-amd64 root=UUID=5c7f9f97-1a63-45d8-b3e3-c93603c2d35f ro rootflags=subvol=@rootfs video=LVDS-1:d quiet rw
اینجا چیز خاصی وجود نداره.
-
خدمت شما : )
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=155085.0;attach=53940;image)
-
انگار مشکل مربوط به سرویس systemd-remount-fs.service حل شده.
مشکل سرویس networking هنوز مونده.
چون systemctl status networking.service رو با دسترسی روت اجرا نکردید و داخل یکی از گروههای adm یا systemd-journal هم نیستید، گزارشهای مربوط به سرویس networking به شما نمایش داده نشده.
دوباره اون دستور رو با دسترسی روت اجرا کنید:
sudo systemctl status networking.service
-
بفرمایین : )
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=155085.0;attach=53950;image)
-
یه اشتباه نگارشی داخل پیکربندیهای ifupdown وجود داره. (سرویس networking، مربوط به همین ifupdown هست)
محتویات فایلی که گفته مشکل داره رو قرار بدید.
cat /etc/network/interfaces
-
. /etc/network/interfaces.d/*
کجاش اشتباهه ؟ درسته دیگه ! گفته هرچی تو شاخش هست رو هم اجرا کن ، این پرونده رو خودتون قبلا گفتین بهم auto lo و اون یکی خط رو حذف کنم ، منم اون دو تا و کامنت ها رو حذف کردم : )
-
کامنتها رو لازم نبوده حذف کنید.
چرا برای اینکه بگید چیزهای داخل اون دایرکتوری رو هم استفاده کنه از نقطه استفاده کردید؟ باید source باشه.
درسته میشه بعضی جاها توی این فایل از wildcard ها استفاده کرد ولی این یه اسکریپت sh یا bash نیست که بتونید اون رو به شکل اسکریپت sh یا bash بنویسید.
اون خط باید این شکلی باشه:
source /etc/network/interfaces.d/*
به این شکل هم میتونید بنویسیدش
source-directory /etc/network/interfaces.d/
البته در این حالت، فقط فایلهایی استفاده میشن که اسم اونها فقط شامل حروف بزرگ و کوچک انگلیسی، اعداد و علامتهای - و _ باشه.
بعد از اینکه اون فایل رو درست کردید، سرویس networking رو راهاندازی مجدد کنید:
sudo systemctl restart networking.service
در نهایت ببینید مشکل حل شده یا نه
systemctl status networking.service
-
سپاس جناب دراگون ، حل شد : )
-
😐😐😐 btrfs و zfs ژورنالینگ ندارن ؟
ویرایش : اوکی ! این قسمتشو نخونده بودم هنوز 😅
File systems based on copy-on-write (also known as write-anywhere), such as Reiser4, Btrfs and ZFS, have no need to use traditional journal to protect metadata, because they are never updated in-place. Although Btrfs still has a journal-like log tree, it is only used to speed-up fdatasync/fsync.
-
https://gitlab.com/btrfs-assistant/btrfs-assistant
رابطی گرافیکی برای مدیریت فایلسیستم btrfs!
-
جناب اژدها، یه سوال؟
به تازگی از طریق اسکریپت archinstall یه ارچ نصب کردم رو btrfs. ولی خب نه میشد مثل دبیان از بخشی شبیه Execute a shell اقدامی کرد برای شخصی سازی اپشنهاش، و نه میشد با Ctrl Alt N به تیتیوای دیگهای جابهجا شد، پس همونجوری نصبش کردم رفت. جالبیش اینجاس که برخلاف نصاب دبیان امکان ساختن سابولومو داشت!
واسم سواله الان اگه بخوام نوع و سطح فشردهسازیو عوض کنم و اپشن autodefrag رو اضافه، نکتهای چیزی نیست که باید رعایت کنم؟ بعدش نباید کاری بکنم؟
وضعیت الانم: یه پارتیشن یک گیگی برای شاخه بوت جدا کردم که بتونم از رمزنگاری استفاده کنم. سهتا سابولوم برای روت و هوم و اسنپشاتها. فشردهسازی الانش zlib سطح ۳ هست.
یه حسی بهم میگه یهجایی تو پاسخی که محبت میکنید پای btrfs balance در میونه!
پیشاپیش سپاس.
-
بهتره موضوع جدید بزنی
-
واسم سواله الان اگه بخوام نوع و سطح فشردهسازیو عوض کنم و اپشن autodefrag رو اضافه، نکتهای چیزی نیست که باید رعایت کنم؟ بعدش نباید کاری بکنم؟
وضعیت الانم: یه پارتیشن یک گیگی برای شاخه بوت جدا کردم که بتونم از رمزنگاری استفاده کنم. سهتا سابولوم برای روت و هوم و اسنپشاتها. فشردهسازی الانش zlib سطح ۳ هست.
یه حسی بهم میگه یهجایی تو پاسخی که محبت میکنید پای btrfs balance در میونه!
پیشاپیش سپاس.
باید از btrfs filesystem defrag استفاده کنید. btrfs balance فشردهسازی رو تغییر نمیده.