ZRAM-GENERATOR(8) System Manager's Manual ZRAM-GENERATOR(8)

zram-generator - مولد واحدهای systemd برای دستگاه‌های سواپ zram

/usr/lib/systemd/system-generators/zram-generator TARGET_DIR [2RGET_DIR 3RGET_DIR]
/usr/lib/systemd/system-generators/zram-generator --setup-device DEVICE
/usr/lib/systemd/system-generators/zram-generator --reset-device DEVICE

دستور zram-generator یک مولد است که واحدهای systemd را برای قالب‌بندی و استفاده از دستگاه‌های رم فشرده‌شده (compressed RAM)، چه به عنوان فضای مبادله (swap) یا سیستم فایل ایجاد می‌کند.

این مولد در مراحل اولیه راه‌اندازی سیستم (boot) توسط systemd فراخوانی می‌شود و سپس کارهای زیر را انجام می‌دهد:

1.
خواندن فایل‌های پیکربندی از {/etc,/lib}/systemd/zram-generator.conf[.d] (برای جزئیات به zram-generator.conf(5) مراجعه کنید)؛
2.
تولید واحدهای systemd.swap(5) و/یا systemd.mount(5) در TARGET_DIR و اتصال آن‌ها به swap.target یا local-fs.target بر حسب نیاز؛
3.
اطمینان از بارگذاری ماژول zram و ایجاد دستگاه‌های درخواستی.

اگر این مولد درون یک کانتینر اجرا شود (که توسط systemd-detect-virt(8) --container مشخص می‌شود)، هیچ کاری انجام نمی‌دهد.

این مولد همچنین گزینه خط فرمان هسته systemd.zram را درک می‌کند. برای جزئیات به zram-generator.conf(5) مراجعه کنید.

تنظیم متغیر محیطی ZRAM_GENERATOR_ROOT باعث می‌شود مولد در حالت آزمایشی اجرا شود که در این صورت کانتینری‌سازی نادیده گرفته شده و گام 3 رد می‌شود.
برای پیامدهای ZRAM_GENERATOR_ROOT بر مدیریت پیکربندی، به zram-generator.conf(5) مراجعه کنید.

واحدهای تولیدشده dev-zramN.swap به سرویس systemd-zram-setup@zramN.service وابسته هستند که اقدامات زیر را انجام می‌دهد:

1.
خواندن فایل‌های پیکربندی از {/etc,/lib}/systemd/zram-generator.conf[.d] (برای جزئیات به zram-generator.conf(5) مراجعه کنید)؛
2.
تنظیم الگوریتم فشرده‌سازی مورد نظر (در صورت تعیین)؛ اگر هسته فعلی الگوریتم مشخص‌شده را نشناسد، یک هشدار صادر می‌شود اما اجرا ادامه می‌یابد؛
3.
تنظیم اندازه مورد نظر دستگاه بلوکی (blockdev) و قالب‌بندی آن به عنوان سواپ با استفاده از systemd-makefs(8).

واحدهای تولیدشده path-to-mount-point.mount به سرویس systemd-zram-setup@zramN.service وابسته هستند. تأثیر آن مشابه واحدهای سواپ است، با این تفاوت که با یک سیستم فایل قالب‌بندی می‌شوند.

هنگامی که واحد متوقف می‌شود، دستگاه zram بازنشانی شده، حافظه آزاد می‌شود و امکان استفاده مجدد از دستگاه فراهم می‌گردد.

ابزار zram-generator رابط systemd.generator(7) را پیاده‌سازی می‌کند.

این مولد در مراحل اولیه بوت فراخوانی می‌شود و دستگاه‌هایی که پیکربندی می‌کند نیز خیلی زود ایجاد می‌شوند؛ بنابراین ساده‌ترین راه برای اعمال تغییرات پیکربندی، راه‌اندازی مجدد (reboot) سیستم است.

با این وجود، گاهی ممکن است افزودن دستگاه‌های جدید یا اعمال تغییرات پیکربندی در زمان اجرا مفید باشد. اعمال پیکربندی جدید به معنای راه‌اندازی مجدد واحدها است و این به نوبه خود به معنای بازتولید دستگاه‌های zram خواهد بود. این بدان معناست که سیستم‌های فایل موقتاً از حالت اتصال خارج شده و محتوای آن‌ها از دست می‌رود و صفحات حافظه از دستگاه سواپ فشرده خارج شده و به بخش‌های دیگر حافظه منتقل می‌شوند. اگر این پیامد قابل قبول باشد، می‌توان از دستور systemctl restart systemd-zram-setup@zramN یا systemctl restart systemd-zram-setup@* برای بازتولید یک دستگاه خاص یا تمام دستگاه‌های پیکربندی‌شده استفاده کرد. (اگر دستگاه از قبل وجود نداشته باشد، دستور restart آن را ایجاد خواهد کرد.) اگر نحوه استفاده از دستگاه (مانند نقطه اتصال یا نوع سیستم فایل) تغییر کند، ابتدا باید systemctl daemon-reload فراخوانی شود تا واحدهای systemd بازتولید شوند. اگر یک دستگاه یا نقطه اتصال از پیکربندی حذف شود، واحد باید قبل از اجرای daemon-reload متوقف گردد؛ در غیر این صورت systemd روش متوقف کردن صحیح واحد را نخواهد دانست.

https://github.com/systemd/zram-generator/issues

zram-generator.conf(5), systemd.generator(7), systemd.swap(5)

https://github.com/systemd/zram-generator

مستندات لینوکس درباره zram: https://kernel.org/doc/html/latest/admin-guide/blockdev/zram.html
و رابط کاربری sysfs ABI مربوط به zram: https://kernel.org/doc/Documentation/ABI/testing/sysfs-block-zram

December 2024 zram-generator developers