STORAGECTL(1) storagectl STORAGECTL(1)

storagectl - بررسی و کنترل سرویسهای ذخیرهسازی سیستمدی (systemd-storaged)

storagectl [OPTIONS...] {COMMAND} [NAME...]

mount -t storage PROVIDER:VOLUME DIRECTORY

mount -t storage.FSTYPE PROVIDER:VOLUME DIRECTORY

دستور storagectl ممکن است برای بررسی ارائه‌دهندگان ذخیره‌سازی و حجم‌های ذخیره‌سازی که ارائه می‌دهند استفاده شود. یک ارائه‌دهنده ذخیره‌سازی، سرویسی است که رابط Varlink[1] io.systemd.StorageProvider را پیاده‌سازی می‌کند، و به عنوان یک سوکت AF_UNIX در زیر دایرکتوری شناخته‌شده سوکت /run/systemd/io.systemd.StorageProvider/ (در حالت سیستمی) یا $XDG_RUNTIME_DIR/systemd/io.systemd.StorageProvider/ (در حالت کاربری) ثبت شده است. دو ارائه‌دهنده ذخیره‌سازی که همراه با systemd ارائه می‌شوند عبارتند از systemd-storage-block@.service(8)، که دستگاه‌های بلوکی سیستم را در دسترس قرار می‌دهد، و systemd-storage-fs@.service(8)، که فایل‌ها و دایرکتوری‌های معمولی را از یک سیستم‌فایل پشتیبان در دسترس قرار می‌دهد.

این ابزار همچنین یک کمکی mount(8) را برای نوع سیستم‌فایل "storage" فراهم می‌کند، که امکان سوار کردن حجم‌های ذخیره‌سازی را در مکان‌های دلخواه ممکن می‌سازد. برای جزئیات به بخش «استفاده به عنوان کمکی سوار کردن» در زیر مراجعه کنید.

دستورات زیر پشتیبانی می‌شوند:

volumes [GLOB]

فهرست کردن حجم‌های ذخیره‌سازی ارائه‌شده توسط تمام ارائه‌دهندگان ذخیره‌سازی در حال اجرا در سیستم (یا با --user، در محیط زمان اجرای کاربر). آرگومان اختیاری GLOB یک الگوی سبک پوسته است (به fnmatch(3) مراجعه کنید) که نتایج را بر اساس نام حجم فیلتر می‌کند. خروجی جدولی شامل سرویس ارائه‌دهنده، نام حجم، نوع آن ("blk"، "reg" یا "dir")، وضعیت فقط‌خواندنی بودن، و — در صورت مشخص بودن — اندازه آن و تعداد بایت‌های استفاده‌شده است.

در صورتی که دستوری مشخص نشود، این دستور پیش‌فرض است.

اضافه‌شده در نگارش 261.

templates [GLOB]

فهرست کردن الگوهای حجم پشتیبانی‌شده توسط ارائه‌دهندگان ذخیره‌سازی در حال اجرا. الگوها پیکربندی مورد استفاده هنگام ایجاد بی‌درنگ حجم‌ها در زمان به‌دست آوردن آن‌ها را در بر می‌گیرند. پشتیبانی از الگو یک ویژگی اختیاری برای ارائه‌دهندگان است و تنها برای ارائه‌دهندگانی اعمال می‌شود که امکان ایجاد بی‌درنگ حجم‌ها را فراهم می‌کنند. برای جزئیات به مستندات ارائه‌دهنده مربوطه مراجعه کنید، به عنوان مثال systemd-storage-fs@.service(8). آرگومان اختیاری GLOB نتایج را بر اساس نام الگو فیلتر می‌کند. ارائه‌دهندگان ذخیره‌سازی که ایجاد حجم مبتنی بر الگو را پیاده‌سازی نکرده‌اند (مانند ارائه‌دهنده دستگاه بلوکی) در این خروجی نقشی ندارند.

اضافه‌شده در نگارش 261.

providers

فهرست کردن ارائه‌دهندگان ذخیره‌سازی شناخته‌شده برای سیستم. این کار با پویش دایرکتوری شناخته‌شده سوکت برای یافتن سوکت‌های AF_UNIX که شبیه به نقاط پایانی io.systemd.StorageProvider هستند تعیین می‌شود. برای هر ارائه‌دهنده همچنین گزارش داده می‌شود که آیا در حال حاضر می‌توان به سوکت متصل شد یا خیر.

اضافه‌شده در نگارش 261.

گزینه‌های زیر پشتیبانی می‌شوند:

--system

عملیات روی ارائه‌دهندگان ذخیره‌سازی سراسری سیستم. سوکت‌ها در /run/systemd/io.systemd.StorageProvider/ جستجو می‌شوند. این حالت پیش‌فرض است.

اضافه‌شده در نگارش 261.

--user

عملیات روی ارائه‌دهندگان ذخیره‌سازی مختص هر کاربر. سوکت‌ها در $XDG_RUNTIME_DIR/systemd/io.systemd.StorageProvider/ جستجو می‌شوند.

اضافه‌شده در نگارش 261.

--json=MODE

نمایش خروجی با فرمت JSON. یکی از مقادیر زیر را می‌پذیرد: "short" (برای کوتاه‌ترین خروجی ممکن بدون هیچ فاصله خالی اضافی یا شکست خط)، "pretty" (برای نسخه زیباسازی‌شده همان خروجی، همراه با فاصله‌گذاری و شکست خط) یا "off" (برای خاموش کردن خروجی JSON، که حالت پیش‌فرض است).

--no-pager

خروجی را به یک صفحه‌بند هدایت نمی‌کند.

--no-legend

راهنما (عنوان ستون‌ها و پانوشت شامل نکات راهنما) را چاپ نمی‌کند.

--no-ask-password

برای عملیات دارای دسترسی بالا، برای احراز هویت از کاربر سؤالی نمی‌پرسد.

-h, --help

یک متن راهنمای کوتاه را چاپ کرده و خارج می‌شود.

--version

یک رشته نسخه کوتاه را چاپ کرده و خارج می‌شود.

این ابزار نام مستعار /sbin/mount.storage را فراهم می‌کند که رابط "کمکی خارجی" mount(8) را پیاده‌سازی می‌نماید و اجازه می‌دهد حجم‌های ذخیره‌سازی با دستور معمول mount سوار شوند. حجم مورد نظر برای سوار شدن به عنوان منبع mount به فرم "PROVIDER:VOLUME" کدگذاری می‌شود، که در آن PROVIDER نام یک ارائه‌دهنده ذخیره‌سازی (همان‌طور که توسط storagectl providers فهرست شده است) و VOLUME نام حجم است. دو شیوه نگارش نوع سیستم‌فایل شناخته می‌شود:

"storage"

یک حجم دایرکتوری را به‌دست آورده و درخت دایرکتوری آن را به صورت bind-mount بر روی مقصد سوار می‌کند.

اضافه‌شده در نگارش 261.

"storage.FSTYPE"

یک فایل معمولی یا حجم دستگاه بلوکی را به‌دست آورده و آن را به عنوان یک سیستم‌فایل از نوع FSTYPE سوار می‌کند (برای مثال "storage.ext4"، "storage.btrfs"، ...).

اضافه‌شده در نگارش 261.

گزینه‌های استاندارد -o برای mount به mount هدایت می‌شوند. علاوه بر این، گزینه‌های زیر با پیشوند "storage." توسط خود mount.storage تفسیر شده و از فهرست هدایت‌شده حذف می‌شوند:

storage.create=MODE

یکی از مقادیر زیر را می‌پذیرد: "any" (در صورت وجود باز شود، در غیر این صورت ایجاد شود — حالت پیش‌فرض)، "open" (در صورتی که حجم هنوز وجود نداشته باشد ناموفق شود) یا "new" (در صورتی که حجم از قبل وجود داشته باشد ناموفق شود).

اضافه‌شده در نگارش 261.

storage.template=NAME

الگویی که باید هنگام ایجاد یک حجم جدید استفاده شود، در صورتی که وجود نداشته باشد و ارائه‌دهنده از ایجاد بی‌درنگ حجم‌ها پشتیبانی کند.

اضافه‌شده در نگارش 261.

storage.create-size=BYTES

هنگام ایجاد یک حجم جدید به صورت بی‌درنگ، اندازه به بایت برای تخصیص دادن. پسوندهای معمول "K"/"M"/"G"/"T" (بر مبنای ۱۰۲۴) را می‌پذیرد. هنگام ایجاد یک حجم فایل معمولی الزامی است.

اضافه‌شده در نگارش 261.

مثال 1. شمارش ارائه‌دهندگان ذخیره‌سازی، حجم‌ها و الگوهای موجود

$ storagectl providers
$ storagectl volumes
$ storagectl volumes '*foo*'
$ storagectl templates

مثال 2. سوار کردن یک حجم دایرکتوری از ارائه‌دهنده سیستم‌فایل

# mount -t storage fs:myvol /mnt/myvol

اگر حجم "myvol" هنوز وجود نداشته باشد، با استفاده از الگوی پیش‌فرض "subvolume" ایجاد خواهد شد.

مثال 3. ایجاد و سوار کردن یک سیستم‌فایل ext4 از یک فایل معمولی

# mount -t storage.ext4 fs:scratch /mnt/scratch -o loop

مثال 4. سوار کردن یک حجم دستگاه بلوکی به صورت فقط‌خواندنی

# mount -t storage.ext4 -o ro block:/dev/disk/by-id/usb-foo /mnt/foo

در صورت موفقیت 0 بازگردانده می‌شود، و در غیر این صورت یک کد شکست غیرصفر بازگردانده خواهد شد.

$SYSTEMD_LOG_LEVEL

حداکثر سطح ثبت وقایع (لاگ) برای پیام‌های ارسالی (پیام‌هایی با سطح لاگ بالاتر، یعنی کم‌اهمیت‌تر، فرونشانده خواهند شد). فهرستی از مقادیر جداشده با کاما را می‌پذیرد. یک مقدار می‌تواند یکی از موارد زیر (به ترتیب کاهش اهمیت) باشد: emerg، alert، crit، err، warning، notice، info، debug، یا یک عدد صحیح در محدوده 0...7. برای اطلاعات بیشتر به syslog(3) مراجعه کنید. هر مقدار می‌تواند به صورت اختیاری با یکی از پیشوندهای console، syslog، kmsg یا journal به همراه یک علامت دونقطه برای تنظیم حداکثر سطح ثبت وقایع برای آن مقصد لاگ خاص همراه شود (به عنوان مثال SYSTEMD_LOG_LEVEL=debug,console:info مشخص می‌کند که ثبت وقایع در سطح debug انجام شود، به جز هنگام ثبت در کنسول که باید در سطح info باشد). توجه داشته باشید که حداکثر سطح لاگ سراسری نسبت به سطوح لاگ تعیین‌شده برای هر مقصد اولویت دارد.

$SYSTEMD_LOG_COLOR

یک مقدار بولی. اگر درست (true) باشد، پیام‌های نوشته‌شده در tty متناسب با اولویت رنگ‌آمیزی خواهند شد.

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند پیام‌ها را خودشان بر اساس سطح لاگ رنگ‌آمیزی می‌کنند.

$SYSTEMD_LOG_TIME

یک مقدار بولی. اگر درست باشد، پیام‌های لاگ کنسول با یک برچسب زمانی پیشوندگذاری می‌شوند.

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند برچسب‌های زمانی را خودشان بر اساس فراداده‌های مدخل پیوست می‌کنند.

$SYSTEMD_LOG_LOCATION

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

توجه داشته باشید که مکان لاگ اغلب به هر حال به عنوان فراداده به مدخل‌های ژورنال پیوست می‌شود. با این حال گنجاندن مستقیم آن در متن پیام می‌تواند هنگام اشکال‌زدایی برنامه‌ها سودمند باشد.

$SYSTEMD_LOG_TID

یک مقدار بولی. اگر درست باشد، پیام‌ها با شناسه عددی نخ (TID) فعلی پیشوندگذاری می‌شوند.

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

$SYSTEMD_LOG_TARGET

مقصد پیام‌های لاگ. یکی از موارد: console (ثبت در tty متصل)، console-prefixed (ثبت در tty متصل اما با پیشوندهای کدگذاری‌کننده سطح لاگ و "facility"، به syslog(3) مراجعه کنید)، kmsg (ثبت در بافر لاگ حلقوی هسته)، journal (ثبت در ژورنال)، journal-or-kmsg (ثبت در ژورنال در صورت در دسترس بودن، و در غیر این صورت در kmsg)، auto (تعیین خودکار مقصد مناسب برای لاگ، که حالت پیش‌فرض است)، null (غیرفعال کردن خروجی لاگ).

$SYSTEMD_LOG_RATELIMIT_KMSG

مشخص می‌کند که آیا محدودیت نرخ برای kmsg اعمال شود یا خیر. یک مقدار بولی می‌پذیرد. مقدار پیش‌فرض "true" است. در صورت غیرفعال بودن، systemd پیام‌های نوشته‌شده در kmsg را محدود نخواهد کرد.

$SYSTEMD_PAGER, $PAGER

صفحه‌بندی که هنگام عدم ارائه --no-pager استفاده می‌شود. در صورت تنظیم بودن، $SYSTEMD_PAGER استفاده می‌شود؛ در غیر این صورت $PAGER به کار می‌رود. اگر هیچ‌یک از $SYSTEMD_PAGER یا $PAGER تنظیم نشده باشند، مجموعه‌ای از پیاده‌سازی‌های شناخته‌شده صفحه‌بند به نوبت امتحان می‌شوند، از جمله less(1) و more(1)، تا زمانی که یکی پیدا شود. اگر هیچ پیاده‌سازی صفحه‌بندی کشف نشود، صفحه‌بندی فراخوانی نخواهد شد. تنظیم این متغیرهای محیطی به یک رشته خالی یا مقدار "cat" معادل ارسال --no-pager است.

نکته: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER تنها می‌توانند برای غیرفعال کردن صفحه‌بند (با "cat" یا "") استفاده شوند و در غیر این صورت نادیده گرفته می‌شوند.

$SYSTEMD_LESS

گزینه‌های ارسالی به less را بازنویسی می‌کند (به‌طور پیش‌فرض "FRSXMK").

کاربران ممکن است به ویژه مایل به تغییر دو گزینه باشند:

K

این گزینه به صفحه‌بند دستور می‌دهد هنگام فشردن Ctrl+C بلافاصله خارج شود. برای اینکه به less اجازه دهید خودش Ctrl+C را برای بازگشت به اعلان فرمان صفحه‌بند مدیریت کند، این گزینه را لغو کنید.

اگر مقدار $SYSTEMD_LESS شامل "K" نباشد، و صفحه‌بند فراخوانی‌شده less باشد، Ctrl+C توسط برنامه اجرایی نادیده گرفته شده و باید توسط صفحه‌بند مدیریت شود.

X

این گزینه به صفحه‌بند دستور می‌دهد رشته‌های مقداردهی اولیه و بازنشانی termcap را به ترمینال ارسال نکند. این گزینه به‌طور پیش‌فرض تنظیم شده است تا خروجی دستور حتی پس از خروج از صفحه‌بند در ترمینال قابل مشاهده باقی بماند. با این وجود، این امر مانع از کارکرد برخی قابلیت‌های صفحه‌بند می‌شود؛ به‌ویژه خروجی صفحه‌بندی‌شده را نمی‌توان با ماوس پیمایش کرد.

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ اثری بر فراخوانی‌های less توسط ابزارهای systemd ندارد.

برای بررسی بیشتر به less(1) مراجعه کنید.

$SYSTEMD_LESSCHARSET

مجموعه نویسه‌های ارسالی به less را بازنویسی می‌کند (به‌طور پیش‌فرض "utf-8"، در صورتی که ترمینال فراخوان سازگار با UTF-8 تشخیص داده شود).

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ اثری بر فراخوانی‌های less توسط ابزارهای systemd ندارد.

$SYSTEMD_PAGERSECURE

دستورات رایج صفحه‌بند مانند less(1)، علاوه بر «صفحه‌بندی» یعنی پیمایش در خروجی، از باز کردن یا نوشتن در فایل‌های دیگر و اجرای دستورات دلخواه پوسته پشتیبانی می‌کنند. هنگامی که دستورات با اختیارات بالا اجرا می‌شوند، برای مثال تحت sudo(8) یا pkexec(1)، صفحه‌بند به یک مرز امنیتی تبدیل می‌شود. باید دقت شود که تنها برنامه‌هایی با عملکرد کاملاً محدود به عنوان صفحه‌بند استفاده شوند، و ویژگی‌های تعاملی ناخواسته مانند باز کردن یا ایجاد فایل‌های جدید یا آغاز زیرپردازش‌ها مجاز نباشند. «حالت امن» برای صفحه‌بند را می‌توان همان‌طور که در زیر توضیح داده شده فعال کرد، در صورتی که صفحه‌بند از آن پشتیبانی کند (بیشتر صفحه‌بندها به شیوه‌ای نوشته نشده‌اند که این موضوع را در نظر بگیرند). توصیه می‌شود هنگام اجازه دادن به کاربران غیرقابل اعتماد برای اجرای دستورات با اختیارات بالا، یا «حالت امن» را صراحتاً فعال کنید یا با استفاده از --no-pager یا PAGER=cat صفحه‌بند را به طور کامل غیرفعال نمایید.

این گزینه یک آرگومان بولی می‌پذیرد. در صورت تنظیم روی true، «حالت امن» صفحه‌بند فعال می‌شود. در «حالت امن»، هنگام فراخوانی صفحه‌بند متغیر LESSSECURE=1 تنظیم خواهد شد که به صفحه‌بند دستور می‌دهد دستوراتی را که فایل‌های جدید باز می‌کنند یا می‌سازند، یا زیرپردازش‌های جدید را آغاز می‌نمایند، غیرفعال کند. در حال حاضر تنها less(1) شناخته شده است که این متغیر را درک کرده و «حالت امن» را پیاده‌سازی می‌نماید.

در صورت تنظیم روی false، هیچ محدودیتی بر صفحه‌بند اعمال نمی‌شود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از محیط به ارث رسیده ممکن است به کاربر اجازه اجرای دستورات دلخواه را بدهد.

هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd تلاش می‌کنند به‌طور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحه‌بند از آن پشتیبانی می‌کند یا خیر. اگر شناسه کاربری مؤثر (UID) با مالک نشست ورود یکسان نباشد (به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید)، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه (که $SUDO_UID تنظیم شده باشد [2])، «حالت امن» فعال می‌شود. در این حالت‌ها، SYSTEMD_PAGERSECURE=1 تنظیم خواهد شد و صفحه‌بندهایی که اجرای «حالت امن» توسط آن‌ها شناخته نشده است اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار تنها متداول‌ترین سازوکارهای ارتقای اختیارات را پوشش می‌دهد و برای راحتی کار در نظر گرفته شده است. توصیه می‌شود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کنید یا صفحه‌بند را غیرفعال نمایید.

توجه داشته باشید که اگر قرار باشد متغیرهای $SYSTEMD_PAGER یا $PAGER رعایت شوند، به جز برای غیرفعال کردن صفحه‌بند، باید $SYSTEMD_PAGERSECURE نیز تنظیم شده باشد.

$SYSTEMD_COLORS

یک آرگومان بولی یا یک مقدار ویژه می‌پذیرد. به طور پیش‌فرض (تنظیم‌نشده)، systemd و ابزارهای مرتبط در صورت امکان از رنگ‌ها در خروجی خود استفاده خواهند کرد. اگر $COLORTERM بر روی "truecolor" یا "24bit" تنظیم شده باشد، رنگ‌های ۲۴ بیتی فعال می‌شوند، در غیر این صورت رنگ‌های ۲۵۶ رنگ فعال خواهند بود، مگر اینکه $NO_COLOR یا $TERM نشان دهد که رنگ‌ها غیرفعال هستند.

true

مشابه حالت تنظیم‌نشده است، با این تفاوت که $NO_COLOR نادیده گرفته می‌شود.

false

خروجی تک‌رنگ خواهد بود.

"16", "256", "24bit"

همواره به ترتیب از ۱۶ رنگ پایه ANSI، ۲۵۶ رنگ، یا رنگ‌های ۲۴ بیتی استفاده می‌کند.

"auto-16", "auto-256", "auto-24bit"

با توجه به $TERM و آنچه کنسول به آن متصل است، از تعداد رنگ‌های مشخص‌شده استفاده می‌کند.

$SYSTEMD_URLIFY

مقدار باید یک بولی باشد. مشخص می‌کند آیا برای شبیه‌سازهای ترمینال پشتیبانی‌کننده، پیوندهای قابل کلیک در خروجی تولید شوند یا خیر. این مقدار می‌تواند برای لغو تصمیمی که systemd بر اساس $TERM و شرایط دیگر می‌گیرد، تعیین شود.

systemd(1), systemd-storage-block@.service(8), systemd-storage-fs@.service(8), varlinkctl(1), mount(8)

1.
Varlink
2.
به سایر ابزارها توصیه می‌شود متناسب با نیاز، $SUDO_UID را تنظیم و بررسی کنند و با آن به عنوان یک رابط مشترک رفتار نمایند.
systemd 261.2