Setup Basic ZFS Filesystem in linux ubuntu

  • تنظیمات بر روی سیستم عامل اوبونتو ۲۰.۰۴ دنبال خواهد شد.
  • برای نصب :
# apt install zfsutils-linux

مفاهیم

  • پنج مدل رید برای پیاده سازی ZFS داریم.
    • رید صفر : با استفاده از این رید حجم تمام دیسک‌ها با هم تجمیع می‌شود مثلا در صورت داشتن ۳ دیسک ۲۰ گیگابایتی ، یک پارتیشن ۶۰ گیگابایتی حاصل می‌شود.
      • اصلاعات درون این رید با از بین رفتن یکی از دیسک‌ها از بین می‌رود.
      • سرعت نوشتن و خواندن درون این رید زیاد است.
raid0 or striping array has no redundancy, but provides
the best performance and additional storage. Any drive
failure destroys the entire array so raid 0 is not safe at all.
if you need really fast scratch space for video editing then raid0 does well.
  •  رید یک یا mirror : این رید برای امنیت اطلاعات مورد استفاده قرار میگیرد. فرض کنید ۱۰ دیسک ۵۰۰ گیگابایتی در اختیار دارید. با استفاده از این رید ۱ دیسک ۵۰۰ گیگابایتی خواهید داشت که اندازه ۹ دیسک تحمل خطا دارد یعنی با از بین رفتن ۹ دیسک هنوز اطلاعات در دسترس است.
raid1 or mirroring simply mirrors the same data over
every drive in the array. This is excellent redundancy
as you can lose every drive except one and still have
access to the data. A positive is the raid read speed
is increased by every drive added to the array.
The big negative is low capacity and slow write speed speeds.
No matter how many drives are in the raid you have the total
capacity of a single drive to use. Speed is reduced because
every drive gets a complete copy of the same files.
Mirroring is normally used for two(2) drives,
not for 12 and 24 like in our tests due to the
incredible amount of wasted space.
  •  رید raidz یا بهبود یافته‌ی رید ۵ : حداقل مقدار دیسک‌های مورد نیاز ۳ عدد است.
    • ۳ دیسک ۱ ترابایتی با رید raidz :
      • تحمل خطای ۱ دیسک (ثابت)
      • ظرفیت کل ۲ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
    • ۴ دیسک ۱ ترابایتی با رید raidzتحمل خطای ۳ دیسک (ثابت) :
      • تحمل خطای ۱ دیسک (ثابت)
      • ظرفیت کل ۳ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
    • ۵ دیسک ۱ ترابایتی با رید raidz :
      • تحمل خطای ۱ دیسک (ثابت)
      • ظرفیت کلی ۴ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
raid5 or raidz distributes parity along with the
data and can lose one physical drive before
a raid failure. Because parity needs to be calculated
raid 5 is slower then raid0, but raid 5 is much safer.
RAID 5 requires at least three hard disks in which
one(1) full disk of space is used for parity.
  •  رید raidz2 یا بهبود یافته‌ی رید ۶ : حداقل مقدار دیسک‌های مورد نیاز ۴ عدد است.
    • ۴ دیسک ۱ ترابایتی با رید raidz2 :
      • تحمل خطای ۲ دیسک (ثابت)
      • ظرفیت کل ۲ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
    • ۵ دیسک ۱ ترابایتی با رید raidz2 :
      • تحمل خطای ۲ دیسک (ثابت)
      • ظرفیت کل ۳ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
    • ۶ دیسک ۱ ترابایتی با رید raidz2 :
      • تحمل خطای ۲ دیسک (ثابت)
      • ظرفیت کلی ۴ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
raid6 or raidz2 distributes parity along with the data and
can lose two physical drives instead of just one like raid 5
Because more parity needs to be calculated raid 6 is slower
then raid5, but raid6 is safer. raidz2 requires at least
four disks and will use two(2) disks of space for parity.
    • رید raidz3 یا بهبود یافته‌ی رید ۷ : حداقل مقدار دیسک‌های مورد نیاز ۵ عدد است.
      • ۵ دیسک ۱ ترابایتی با رید raidz3 :
        • تحمل خطای ۳ دیسک (ثابت)
        • ظرفیت کلی ۲ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
      • ۶ دیسک ۱ ترابایتی با رید raidz3 :
        • تحمل خطای ۳ دیسک (ثابت)
        • ظرفیت کلی ۳ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
      • ۷ دیسک ۱ ترابایتی با رید raidz3 :
        • تحمل خطای ۳ دیسک (ثابت)
        • ظرفیت کلی ۴ ترابایت (ظرفیت کل مهنای مجموع ظرفیت تحمل خطا)
raid7 or raidz3 distributes parity just like raid 5 and 6
but raid7 can lose three physical drives. Since triple parity
needs to be calculated raid 7 is slower then raid5 and raid 6
but raid 7 is the safest of the three. raidz3 requires at least four
but should be used with no less then five(5) disks
of which three(3) disks of space are used for parity.

مثال اول

  • فرض کنید ۶ عدد هارد دیسک ۱ ترابایتی داریم و میخواهیم با استفاده از رید raidz آنها را ریدبندی کنیم.
  • برای این منظور هر ۶ عدد هارد دیسک را درون یک رید قرار نمیدهیم.
  • ابتدا یک pool ایجاد میکنیم.
  • در ادامه یک udev ایجاد کرده و درون آن ۳ عدد هارد با رید raidz ایجاد میکنیم.
  • سپس یک udev دیگر ایجاد کرده درون آن ۳ عدد هارد با رید raidz ایجاد میکنیم.
  • در این حالت گروهی از اطلاعات درون udev اول و گروهی درون udev دوم نوشته می‌شود.
  • در مجموع :
    • ظرفیت کلی دیسک‌ها برابر با ۴ ترابایت می‌باشد. (۲ ترابایت برای هر udev)
    • تحمل خطا در مجموع ۲ دیسک می‌باشد. (یک عدد هارد دیسک برای هر udev)

مثال دوم

  • فرض کنید ۱۶ عدد هارد دیسک ۱ ترابایتی داریم و میخواهیم با استفاده از رید raidz2 آنها را رید بندی کنیم.
  • برای این منظور هر ۱۶ عدد هارد دیسک را درون یک رید قرار نمیدهیم.
  • ابتدا یک pool ایجاد میکنیم.
  • در ادامه udev اول را ایجاد کرده و درون آن ۴ عدد هارد با رید raidz2 ایجاد میکنیم.
  • سپس udev دوم را ایجاد کرده و درون آن ۴ عدد هارد با رید raidz2 ایجاد میکنیم.
  • سپس udev سوم را ایجاد کرده و درون آن ۴ عدد هارد با رید raidz2 ایجاد میکنیم.
  • سپس udev چهارم را ایجاد کرده و درون آن ۴ عدد هارد با رید raidz2 ایجاد میکنیم.
  • در این حالت گروهی از اطلاعات درون udev اول و گروهی درون udev دوم و گروهی درون udev سوم و گروهی درون udev چهارم نوشته می‌شود.
  • در مجموع :
    • ظرفیت کلی دیسک‌ها برابر با ۸ ترابایت خواهد بود.
    • تحمل خطا در مجموع ۸ دیسک می‌باشد. (۲ عدد هارد دیسک برای هر udev)

مثال سوم

  • فرض کنید ۱۵ عدد هارد دیسک ۱ ترابایتی داریم و خواهیم با استفاده از رید raidz3 آنها را ریدبندی کنیم.
  • برای این منظور هر ۱۵ عدد هارد دیسک را درون یک رید قرار نمیدهیم.
  • ایتدا یک pool ایجاد میکنیم.
  • در ادامه یک udev ایجاد کرده و درون آن ۵ عدد هارد با رید raidz3 ایجاد میکنیم.
  • در ادامه یک udev دیگر ایجاد کرده و درون آن ۵ عدد هارد با رید raidz3 ایجاد میکنیم.
  • در نهایت یک udev دیگر ایجاد کرده و درون آن ۵ عدد هارد با رید raidz3 ایجاد میکنیم.
  • در حالت گروهی از اطلاعات درون udev اول و گروهی درون udev دوم و گروهی درون udev سوم نوشته می‌شود.
  • در مجموع :
    • ظرفیت کلی دیسک‌ها برابر با ۶ ترابایت خواهد بود. (۲ ترابایت برای هر udev)
    • تحمل خطا در مجموع ۹ دیسک می‌باشد. (۳ عدد هارد دیسک به ازای هر udev)

دستورات

  • برای مشاهده تمام pool های موجود :
# zpool status
  • برای مشاهده‌ی جزییات بیشتر در خصوص تمام pool های موجود :
# zpool list

ساخت رید صفر

  • ساخت یک pool با نام mypool و رید صفر :
# zpool add mypool /dev/sdb
or
# zpool add mypool /dev/sdb /dev/sdc
or
# zpool add mypool /dev/sdb /dev/sdc /dev/sdd

ساخت رید یک

  • برای این منظور :
# zpool create mypool mirror /dev/sdb /dev/sdc

ساخت رید پنج یا raidz1

  • برای این منظور :
# zpool create mypool raidz /dev/sdb /dev/sdc /dev/sdd

ساخت رید شش یا raidz2

  • برای این منظور :
# zpool create mypool raidz2 /dev/sdb /dev/sdc /dev/sdd

ساخت رید هفت یا raidz3

  • برای این منظور :
# zpool create mypool raidz3 /dev/sdb /dev/sdc /dev/sdd

پاک کردن یک pool به خصوص

  • برای این منظور :
# zpool destroy mypool
  • نکته : بهتر است برای اشاره به هارد دیسک از UUID مربوط به هارد استفاده شود.

  • مطالعه‌ی بیشتر در خصوص مفاهیم به زبان فارسی . اینجا | لوکال
  • مطالعه‌ی بیشتر در خصوص مفاهیم به زبان انگلیسی . اینجا |
  • مطالعه‌ی بیشتر در خصوص دستورات. ایجا |
  • ماشین حساب محاسبه‌ی رید. اینجا
  • تست شده بر روی ubuntu 20.04

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *