سیستم فایل ZFS پایه و اساس یک ذخیره سازی داده های قابل اعتماد و ارزان است. فایل سیستم های آینده نزدیک ZFS zfs چیست

سیستم فایل ZFS بسیار محبوب است. در نتیجه، بسیاری از شرکت‌ها به آن سوگند یاد می‌کنند و از آن برای ذخیره تریلیون‌ها بایت داده استفاده می‌کنند. با وجود محبوبیتش، کاربران لینوکسنمی توانید از آن خارج از جعبه لذت ببرید. در عوض، کسانی که می خواهند آن را آزمایش کنند و از آن به عنوان سیستم فایل ذخیره سازی اصلی خود استفاده کنند، باید آن را نصب کنند.

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

برای نصب فایل سیستم ZFS، دستورالعمل ها را دنبال کنید و قبل از ادامه این آموزش، نحوه کارکرد آن ها را بیاموزید.

توجه داشته باشید. در حالی که امکان استفاده از ZFS برای یک وجود دارد هارد دیسک، این ایده خوبی نیست و احتمالاً تمام ویژگی هایی را که این سیستم فایل را عالی می کند از دست خواهید داد. هدف یک سیستم فایل ایجاد افزونگی با کشش داده ها در چندگانه است دیسکهای سخت. قبل از ادامه، مطمئن شوید که بیش از ۱ عدد دارید HDDبرای ZFS

پیکربندی ZFS

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

ایجاد یک فایل سیستم جدید ZFS کمی پیچیده تر از باز کردن ویرایشگر پارتیشن Gparted است. در عوض، باید با او در یک سطح تعامل داشته باشید خط فرمان. در یک پنجره ترمینال، اجرا کنید lsblkتیم با اجرای دستور "list block" همه درایوهای رایانه لینوکس شما فهرست می شوند.

برو تصمیم بگیر کدوم دیسک های سختبرای Z-pool خود استفاده کنید و نام ها را به خاطر بسپارید. در این آموزش، سه دیسک ما در یک استخر ZFS /dev/sdb, /dev/sdcو /DEV/SDD.

سپس باید هارد دیسک های انتخاب شده برای Z-pool را به طور کامل صفر کنید تا اطلاعات بیشتری نداشته باشند. استفاده كردن DDدستور، هر یک از دیسک ها را بازنویسی کنید. مدتی طول خواهد کشید.

توجه: تغییر /DEV/SDxبا شناسه دیسک پیدا شده با lsblkتیم ( SDBو غیره.).

sudo dd if=/dev/zero of=/dev/sdX bs=8M

چه زمانی DDپایان می یابد، شروع می شود FDISKتیم اجرای fdisk اطلاعات زیادی را در مورد هارد دیسک نشان می دهد، از جمله اطلاعات سیستم فایل برای هر کدام. خوانش ها را مرور کنید و مطمئن شوید که هیچ یک از درایوهایی که حذف کرده اید سیستم فایل ندارند. این مرحله بسیار مهم است زیرا ZFS از فرمت پارتیشن بندی سنتی استفاده نمی کند.

FDISK-l را ارسال کنید

اگر خط نشانگر FDISKخواندن خوب به نظر می رسد، ایجاد یک ZFS Z-Pool جدید بی خطر است. برای راه اندازی پایه Z-pool، این مراحل را دنبال کنید:

sudo zpool create -f newzpool /dev/sdb dev/sdc /dev/sdd

نصب اولیه به اکثر کاربران اجازه می دهد تا نیازهای ذخیره سازی خود را برآورده کنند. با این حال، کسانی که برای داده های خود ارزش قائل هستند و نیاز به محافظت دارند، نباید با چنین تنظیمات اولیه ای همراه شوند. در عوض، ایجاد یک استخر ZFS با RaidZ را در نظر بگیرید.

استفاده از RaidZ در ارتباط با استخر ZFS تضمین می کند که داده های شما اضافی هستند، با بسیاری از پشتیبان گیری. برای ایجاد یک استخر ZFS با RaidZ، اجرا کنید:

sudo zpool create -f newzpool raidz /dev/sdb dev/sdc /dev/sdd

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

دیسک ها را به ZFS Zpool اضافه کنید

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

در این مثال، دو درایو دیگر به Zpool اضافه می کنیم (/dev/sde و /dev/sdf).

توجه: اگر نصب ZFS شما از RaidZ استفاده نمی کند، آن را از دستور حذف کنید.

sudo zpool add -f newzpool raidz /dev/sde /dev/sdf

یک استخر ZFS را حذف کنید

اغلب، حجم های ZFS شکسته می شوند و غیر قابل استفاده می شوند. هنگامی که این اتفاق می افتد، ممکن است لازم باشد استخر ذخیره سازی را بردارید. برای حذف یک استخر ذخیره سازی، یک پایانه را باز کنید و استفاده کنید zfs نابود می کندتیم

sudo zpool newzpool را نابود می کند

اجرا کن zpool از بین رفتنزمان زیادی طول می کشد، بسته به اینکه چقدر داده در استخر ذخیره سازی شما وجود دارد. با استفاده مجدد از ترمینال متوجه خواهید شد که Zpool به طور کامل از بین می رود.

وضعیت ZFS را بررسی کنید

راهی سریع برای بررسی وضعیت Zpool خود با وضعیت zpoolتیم با استفاده از آن، کاربران می توانند خواندن اولیه یک حجم ZFS، نحوه انجام آن، و وجود هر گونه خطایی را مشاهده کنند. برای بررسی وضعیت، دستور زیر را اجرا کنید.

یادداشت‌های پیشنهادی برای برجسته کردن جنبه‌های کلیدی و پایه‌گذاری برای درک ویژگی‌ها و راحتی که ZFS در اختیار کاربر قرار می‌دهد، طراحی شده است.

zpool

اگر به طور سنتی فایل سیستم ها بر روی ایجاد می شوند بخش هارسانه‌های ذخیره‌سازی، سپس ZFS مجموعه‌ای دلخواه از درایوهای فیزیکی و بخش‌های منطقی آن‌ها را در فضایی بدون مرز، به عبارت دیگر، ترکیب می‌کند. رشته(انگلیسی) استخر). در عین حال، ZFS از مشکلات سطح پایین مراقبت می کند و به شما امکان می دهد با یک دستور یک آرایه آینه ای از دو درایو ایجاد کنید:

# zpool ایجاد Pool mirror sdb sdc

هنگامی که نیاز به تکرار اطلاعات کاربر نیست، رسانه های ذخیره سازی را می توان با افزودن ظرفیت های آنها و افزایش سرعت دسترسی ترکیب کرد:

# zpool ایجاد استخر sdb sdc

در مثال های بالا، pool یک نام دلخواه برای فیلد اطلاعاتی است که باید ایجاد شود. sdb و sdc مخفف /dev/sdb و /dev/sdc هستند. توجه داشته باشید که در این حالت، نشانه گذاری و پارتیشن های GPT در هر دستگاه ایجاد می شود:

نوع شروع پایان دستگاه /dev/sdc1 2048 31487999 15G Solaris /usr & Apple ZFS /dev/sdc9 31488000 31504383 8M Solaris رزرو شده 1

می‌توانید دستور zpool create را نام بخش‌های موجود (طبق معمول) و همچنین فایل‌ها (گزینه برای آزمایش‌ها ارائه شده است) ارسال کنید.

اگر رشتهایجاد شده بر روی یک درایو قابل حمل، از دستور زیر برای غیرفعال کردن ایمن آن استفاده می شود:

# استخر صادرات zpool

و برای اتصال:

# استخر واردات zpool

هنگامی که نام مشخص نیست، دستور import بدون نام اجرا می شود و نام های ممکن را لیست می کند.

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

وظیفه پاکسازی از آسیب ها با دستور زیر شروع می شود:

# استخر اسکراب zpool

و بررسی وضعیت:

# وضعیت zpool

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

# zpoolhistory

zfs

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

# لیست zfs

در این فرم، از قبل امکان استفاده از ZFS - مانند یک سیستم فایل معمولی وجود دارد. اگر بخواهید به طور سنتی با دستور mount و /etc/fstab mount شود، آنگاه ویژگیبدین ترتیب:

# zfs mountpoint = استخر میراث

برای مشاهده خواص، گزینه get در نظر گرفته شده است، به عنوان مثال، لیست آنها را می توان به صورت زیر بدست آورد:

# zfs همه را دریافت می کند

تعدادی از ویژگی ها باید برای کسانی که فایل /etc/fstab را ویرایش کرده اند آشنا باشند. ZFS آنها را نزدیکتر به ساختارهای مشخص شده ذخیره می کند تا "دستورالعمل استفاده" در دسترس باشد. اما این ما را از استفاده از روش معمول باز نمی دارد.

چرا وقتی zpool دارید به zfs نیاز دارید؟

به عنوان یک قاعده کلی، ترجیح داده می شود که داده های کاربر در /home از داده های سیستم جدا شود. در برخی موارد، الزامات انعطاف‌پذیری سلسله مراتب فایل افزایش می‌یابد و نمی‌توان تعداد پارتیشن‌ها را از قبل پیش‌بینی کرد. ZFS کاربر را از سؤالات "بهترین اندازه برای پارتیشن ها چیست؟" نجات می دهد. و به شما امکان می دهد مجموعه ای دلخواه از سیستم های فایل را در یک فیلد سازماندهی کنید، مقدار کل حافظه را در صورت نیاز توزیع کنید، و در صورت لزوم، افزودن رسانه فیزیکی جدید را ممکن می کند.

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

# zfs set compression=lz4 pool # zfs set acltype=posixacl pool # zfs set xattr=xa pool

توجه داشته باشید که اگر مقدار خاصیت نادرست را مشخص کنید، لیستی از موارد ممکن به عنوان یک اشاره نمایش داده می شود.

# zfs create pool/ROOT # zfs create pool/ROOT/rosa-1 # zfs create -o mountpoint=/home pool/home

همانطور که می بینید، ویژگی ها را می توان به طور مستقیم هنگام ایجاد یک سیستم فایل تنظیم کرد، و نه تنها بعدا تغییر کرد. یک نقطه نصب غیر قدیمی /home باعث می شود که pool/home در مسیر مناسب در هنگام وارد کردن یا با دستور zfs mount -a در دسترس باشد. با این حال، شما باید ظرافت را در نظر بگیرید: خاصیت همپوشانی به طور پیش فرض خاموش است - اگر چیزی در مسیر مشخص شده قبلاً نصب شده باشد، پوشش ایجاد نخواهد شد.

علاوه بر pool/ROOT/rosa-1، می توانید pool/ROOT/rosa-2 را ایجاد کرده و دو گزینه سیستم عامل را نصب کنید. یک کپی نه تنها با روش معمول، بلکه با استفاده از مکانیسم فوری ایجاد می شود عکس های فوریعکس فوری zfs و کلون zfs. با توجه به چنین سناریوهایی، و همچنین امکان chroot، به جای نقطه کوه =/انتخاب میراث راحت تر است (و اگر خواننده از مثال بخش قبل پیروی کرده باشد، از pool به ارث برده می شود)

اجرای OS Rosa با ZFS

اگر یک پارتیشن /boot جداگانه روی دیسک برای ایجاد شده باشد، انجام این کار آسان است grub2و هسته های سیستم عامل در این مورد، grub.cfg باید مسیر پارتیشن ریشه را به عنوان پارامتر هسته ریشه مشخص کند، گزینه های مختلفی ممکن است:

Linux /vmlinuz-4.4.7-nrj-laptop-1rosa-x86_64 root=ZFS=pool/ROOT/rosa-1 ro linux /vmlinuz-4.4.7-nrj-laptop-1rosa-x86_64 root=zfs: ro zfs=pool /ROOT/rosa-1

این کار توسط update-grub2 از مخازن رسمی انجام می شود، اما در برخی موارد نسخه بتا اخیر مورد نیاز است. همچنین مطلوب است که ویژگی مربوطه را تنظیم کنید:

# zpool set bootfs=pool/ROOT/rosa-1

ZFS به ترتیب فشرده سازی و حذف مجدد لینوکس

ترتیب نوشتن اطلاعات در فایل سیستم zfs در لینوکس چگونه است؟

تنها سند خاصی که در http://docs.oracle.com/cd/E36784_01/html/E36835/gkknx.html یافتم، می گوید: وقتی یک فایل نوشته می شود، داده ها فشرده، رمزگذاری شده، و چک جمع تایید می شود. سپس، در صورت امکان، داده ها کپی می شوند.

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

من با mysqlf تست کردم و معتقدم ترتیب این است: dedup, compres, encrypt .

تنظیمات تست من:

zpool create tank /dev/sdb.

خروجی لیست zfs

نام مورد استفاده AVAIL REFER MOUNTPOINT مخزن 106K 19.3G 19K /tank tank/gzip9 19K 19.3G 19K /tank/gzip9 tank/lz4 19K 19.3G 19K /tank/lz4

ایجاد یک فایل تصادفی با dd if=/dev/urandom of=random.txt count=128K bs=1024

131072+0 Datensätze ein 131072+0 Datensätze aus 134217728 Bytes (134 MB) kopiert, 12.8786 s, 10.4 MB/s

فهرست کردن zpool به یک استخر خالی:

NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT مخزن 19.9G 134K 19.9G - 0% 0% 1.00x ONLINE -

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

cp random.txt /tank/lz4 cp random.txt /tank/gzip9

خروجی لیست zfs پس از کپی:

نام مورد استفاده AVAIL REFER MOUNTPOINT مخزن 257M 19.1G 19K /tank tank/gzip9 128M 19.1G 128M /tank/gzip9 tank/lz4 128M 19.1G 128M /tank/lz4

خروجی لیست zpool پس از کپی:

NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT مخزن 19.9G 129M 19.7G - 0% 0% 2.00x ONLINE -

فاکتور کپی برداری 2.0 پس از کپی کردن یک فایل در مجموعه داده های مختلف. به نظر من این به این معنی است که deduplication در انجام می شود داده هابلوک قبل از فشرده سازی و رمزگذاری.

لطفاً کسی می تواند بررسی کند که آیا این درست است؟

1 پاسخ

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

حدس من در مورد فایل تصادفی اشتباه بود. به نظر می رسد که اگر ZFS نتواند به حداقل نسبت فشرده سازی معینی برسد، فشرده سازی را می شکند.

نکته خاص دیگری که باید به آن توجه کرد این است که عملکرد LZ4 روی داده های تراکم ناپذیر بسیار بالا است. این امر با فعال کردن مکانیسم "شکست زودهنگام" حاصل می شود که اگر LZ4 نتواند حداقل نسبت فشرده سازی مورد انتظار (12.5٪ در ZFS) را برآورده کند، راه اندازی می شود.

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

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

  • سیستم فایل 128 بیتی که امکان ذخیره تقریباً نامحدود اطلاعات را فراهم می کند. در عمل، این بدان معناست که ZFS از نظر تئوری می تواند مقادیری از اطلاعات را ذخیره کند که فراتر از قابلیت های تکنولوژیک امروزی است، مشروط بر اینکه از رویکرد فعلی سازماندهی ذخیره سازی داده ها استفاده شود.
  • توجه زیادی به یکپارچگی و قابلیت اطمینان ذخیره سازی داده می شود، هم داده های کاربر و هم ابرداده های FS، برای این الگوریتم های هش پیشرفته استفاده می شود.
  • پشتیبانی از عکس های فوری و استخرهای ذخیره سازی، که به لطف آن ZFS قابلیت های یک سیستم فایل و یک سیستم مدیریت حجم را ترکیب می کند (مفهوم جدیدی از استخرهای ذخیره سازی).
  • به لطف این فایل سیستم نیازی به fsck نیست.
  • به طور سنتی، ZFS یک سیستم فایل نسبتاً سازنده در نظر گرفته می شود. با این حال، گاهی اوقات این ادعا مورد تردید قرار می گیرد. حداقل، اعداد خاص بسیار به نوع وظیفه ای که چنین تست عملکرد مقایسه ای انجام می شود بستگی دارد.
  • قابلیت فشرده سازی انتخابی و/یا رمزگذاری فایل های فردی یا سیستم های فایل؛
  • پشتیبانی از شناسایی خودکار و ادغام (حذف) فایل های تکراری.
  • ZFS از سهمیه ها پشتیبانی نمی کند. در عوض، پشتیبانی آن از سهمیه ها تا حدودی عجیب است: مفهوم "تخصیص سهمیه" در اصطلاح ZFS به این معنی است که شما اندازه سیستم فایل ایجاد شده را محدود می کنید. طراحی سیستم به گونه‌ای است که هر کاربر ZFS باید سیستم فایل خود را با تمام محدودیت‌های مرتبط اختصاص دهد.
  • مشکلات خاصی ایجاد نمی شود ویژگی فنی FS - مجوز کد سازگار با GPL (CDDL)؛
  • برای نشان دادن نوآوری ZFS نه تنها در زمینه راه حل های فنی، به عنوان مثال، توانایی مدیریت ویژگی های اصلی سیستم فایل را از طریق یک رابط وب ارائه می دهم.
  • و از آنجایی که، تکرار می کنم، ZFS از نظر قابلیت ها و ویژگی های بسیار بزرگ است و به سادگی نمی توان همه آنها را در اینجا فهرست کرد.

البته، اگر به این ویژگی ها به طور جداگانه نگاه کنید، از بسیاری جهات جدید نیستند و به یک شکل در سیستم های فایل دیگر یافت می شوند، اما چنین مجموعه ای از ویژگی ها تنها برای اولین بار در ZFS ارائه می شود که باعث می شود آن را بسیار منحصر به فرد و جالب است این لحظه.

اگر سن نسبتاً بالغ و وضعیت بسیار خوب او از نظر ثبات کد، طوفان احساساتی که باعث انتشار اخبار مربوط به انتشار کد او تحت مجوز باز و همچنین انتقال این FS نوآورانه به چنین سیستم عامل های محبوبی شد را در اینجا اضافه کنیم. همانطور که FreeBSD، Linux، MacOS مشخص شد.

در مورد پاسخ های شدید منفی به این، بدون شک، سیستم فایل از قبل معروف، آنها عمدتاً به پایان نامه های زیر خلاصه می شوند. به هر حال، یکی از توسعه دهندگان پیشرو لینوکس، که مسئول پشتیبانی از زیرسیستم دیسک آن است، (اندرو مورتون)، در محکومیت های خشمگین ZFS در "نقض فاحش سطوح پیاده سازی" فوران کرد.

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

چندین توسعه‌دهنده دیگر به اتهامات او مبنی بر «طراحی وحشتناک» ZFS پیوسته‌اند و در حال حاضر می‌توان گفت که آندری مورتانبه ZFS - " نقض وحشتناک سطوح طراحی"و" به هم ریختگی نامعقول کد"- قبلاً به نوعی میم اینترنتی تبدیل شده اند که توسعه دهندگان اوراکل، لینوکس، RedHat، FreeBSD و سایر پروژه های معروف قبلاً سعی کرده اند به صورت غیابی به آنها پاسخ دهند.

در پاسخ به این حملات، توسعه دهنده اصلی ZFS (جف بونویک):

«همه این اتهامات مربوط به نقض طراحی سطوح اجرای سیستم فایل است، زیرا ZFS عملکرد یک سیستم فایل، یک مدیر حجم و یک کنترلر RAID نرم افزار را به طور همزمان ترکیب می کند. من معتقدم که پاسخ به این ادعا بستگی به این دارد که منظور از اتهام "نقض طراحی سطح" چیست.

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

هر موضعی که شخصاً در مورد ZFS بگیرید، حداقل یک چیز را باید تشخیص داد: ZFS اساسی است تکنولوژی جدیددر صنعت فایل سیستم