MULTIPATHD(8) System Manager's Manual MULTIPATHD(8)

multipathd - دیمن مدیریت چندمسیره دیسک‌ها

multipathd [-d] [-s] [-v verbosity] [-B] [-w]

multipathd [-v verbosity] -kcommand

multipathd [-v verbosity] -k

دیمن multipathd وظیفه بررسی و نظارت بر مسیرهای معیوب را بر عهده دارد. هنگامی که مسیری از کار می‌افتد، نگاشت چندمسیره‌ای (multipath map) را که آن مسیر به آن تعلق دارد بازپیکربندی می‌کند تا این نگاشت حداکثر کارایی و افزونگی (redundancy) خود را بازیابد.

با گزینه -k، برنامه multipathd به عنوان ابزار کلاینت عمل کرده و دستوراتی را به نمونه در حال اجرای دیمن multipathd ارسال می‌کند (به بخش دستورات (COMMANDS) در ادامه مراجعه کنید).

حالت پیش‌زمینه (Foreground). برنامه دیمن نمی‌شود و تمامی پیام‌ها را در خروجی استاندارد و خطای استاندارد چاپ می‌کند.
حذف برچسب‌های زمانی. از درج برچسب زمانی در ابتدای پیام‌های وقایع‌نگاری جلوگیری می‌کند.
سطح پرحرفی (verbosity). اطلاعات اضافی را در حین اجرای multipathd چاپ می‌کند. سطح ۰ به معنای چاپ تنها خطاها است. سطح ۳ یا بالاتر اطلاعات اشکال‌زدایی را نیز چاپ می‌کند.
فایل اتصالات فقط‌خواندنی. دیمن multipathd در فایل اتصالات user_friendly_names نخواهد نوشت. اگر نام کاربرپسندی (user_friendly_name) برای دستگاهی وجود نداشته باشد، از WWID آن به عنوان نام مستعار استفاده می‌شود.
-kcommand
دیمن multipathd دستور ارائه‌شده را اجرا می‌کند (به بخش دستورات (COMMANDS) مراجعه کنید). اگر دستور حاوی فاصله یا نویسه‌های ویژه شل باشد، باید مانند multipathd -k'show topology' درون نقل‌قول قرار گیرد. فاصله‌ای بین -k و رشته دستور مجاز نیست.

دستورات را می‌توان بدون استفاده از -k نیز صادر کرد. در این حالت رشته دستور نباید درون نقل‌قول قرار گیرد. آرگومان‌های دستور که شامل فاصله یا نویسه‌های خاص هستند همچنان باید درون نقل‌قول باشند، مانند multipathd show paths format "%n %w".

اجرای پوسته تعاملی multipathc برای ورود دستورات (به بخش دستورات (COMMANDS) در ادامه مراجعه کنید).
نادیده‌گرفته‌شده (IGNORED). از گزینه find_multipaths برای کنترل نحوه برخورد با دستگاه‌های تازه شناسایی‌شده توسط multipathd استفاده کنید. به multipath.conf(5) مراجعه کنید.
از زمان کرنل 4.14 از یک رابط جدید نظرسنجی رویداد device-mapper برای به‌روزرسانی دستگاه‌های چندمسیره بر اساس dmevents استفاده می‌شود. با این فلگ می‌توانید سیستم را وادار به استفاده از روش قدیمی انتظار رویداد، مبتنی بر ایجاد یک ریسه جداگانه برای هر دستگاه کنید.

علاوه بر واسط خط فرمان multipathd، می‌توان از کتابخانه libmpathcmd برای ارسال دستورات (به بخش دستورات (COMMANDS) در ادامه مراجعه کنید) از سایر برنامه‌ها به دیمن multipathd استفاده کرد. به طور پیش‌فرض، multipathd هم روی سوکت فضانام انتزاعی @/org/kernel/linux/storage/multipathd و هم روی فایل سوکت /run/multipathd.socket گوش می‌دهد. کتابخانه libmpathcmd از هر یک از این سوکت‌ها برای اتصال به multipathd استفاده خواهد کرد. فایل سوکت می‌تواند برای برقراری ارتباط با multipathd از فضانام‌های مختلف مفید باشد زیرا برخلاف سوکت فضانام انتزاعی، می‌توان آن را در آن‌ها به صورت bind سوار کرد. دیمن multipathd دستورات list|show را از هر کاربری می‌پذیرد. سایر دستورات باید توسط کاربر ارشد (root) صادر شوند.

امکان تغییر سوکت‌هایی که multipathd به آن‌ها گوش می‌دهد وجود دارد. اگر multipathd.socket در حال اجرا باشد، multipathd از سوکت‌هایی که آن گوش می‌دهد استفاده خواهد کرد. حداکثر دو سوکت را می‌توان توسط multipathd.socket تعریف کرد و به طور پیش‌فرض روی @/org/kernel/linux/storage/multipathd و /run/multipathd.socket گوش می‌دهد. اگر multipathd.socket در حال اجرا نباشد، می‌توان با تنظیم متغیر محیطی MULTIPATH_SOCKET_NAME در هنگام راه‌اندازی multipathd، یک سوکت واحد را برای گوش دادن پیکربندی کرد. این متغیر محیطی همچنین باید تنظیم شود تا دستورات CLI multipathd (یا هر برنامه دیگری که از libmpathcmd استفاده می‌کند) با استفاده از یک سوکت غیرپیش‌فرض به دیمن متصل شوند.

دستورات زیر را می‌توان در حالت تعاملی استفاده کرد:

نمایش مسیرهایی که multipathd در حال پایش آن‌هاست و وضعیت آنها.
نمایش مسیرهایی که multipathd در حال پایش آنهاست، با استفاده از یک رشته قالب حاوی نویسه‌های جانشین قالب مسیر. افزودن raw سرصفحه‌ها و فاصله‌گذاری‌های تراز را از خروجی حذف می‌کند.
نمایش آنلاین یا آفلاین بودن مسیر $path.
نمایش دستگاه‌های چندمسیره‌ای که multipathd در حال پایش آن‌هاست.
نمایش وضعیت تمام دستگاه‌های چندمسیره تحت پایش با استفاده از رشته قالب. افزودن raw سرصفحه‌ها و فاصله‌گذاری‌ها را حذف می‌کند.
نمایش وضعیت تمام دستگاه‌های چندمسیره‌ای که multipathd در حال پایش آن‌هاست.
نمایش آمارهای مربوط به تمام دستگاه‌های چندمسیره تحت نظارت.
نمایش توپولوژی جاری دستگاه‌های چندمسیره. معادل 'multipath -ll'.
نمایش اطلاعات تمامی دستگاه‌های چندمسیره در قالب JSON.
نمایش توپولوژی جاری چندمسیره. معادل 'multipath -ll'.
نمایش توپولوژی یک دستگاه چندمسیره خاص مشخص‌شده با $map (برای نمونه 36005076303ffc56200000000000010aa). این شناسه را می‌توان از 'list maps' به دست آورد.
نمایش وضعیت دستگاه چندمسیره $map با استفاده از رشته قالب.
نمایش اطلاعات دستگاه چندمسیره $map در قالب JSON.
نمایش نویسه‌های جانشین قالب مورد استفاده در دستورات تعاملی که $format دریافت می‌کنند.
نمایش پیکربندی جاری مورد استفاده، برگرفته از مقادیر پیش‌فرض و مقادیر مشخص‌شده در فایل پیکربندی /etc/multipath.conf.
نمایش پیکربندی جاری مشابه show config، اما با محدود کردن بخش دستگاه‌ها به دستگاه‌هایی که واقعاً در سیستم وجود دارند.
نمایش قوانین فهرست سیاه (blacklist) جاری، برگرفته از مقادیر پیش‌فرض و مقادیر مشخص‌شده در /etc/multipath.conf.
نمایش تمام دستگاه‌های بلاک موجود بر اساس نام به همراه اطلاعات مربوط به حضور یا عدم حضور آن‌ها در فهرست سیاه.
نمایش تعداد بررسی‌کننده‌های مسیر در هر وضعیت ممکن، تعداد مسیرهای تحت نظارت، و اینکه آیا multipathd در حال حاضر مشغول پردازش رویداد uevent است یا خیر.
نمایش وضعیت جاری دیمن multipathd.
بازنشانی آمارهای تمامی دستگاه‌های چندمسیره.
بازنشانی آمارهای دستگاه چندمسیره $map.
افزودن یک مسیر به فهرست مسیرهای تحت نظارت. مقدار $path همان نام فهرست‌شده در /sys/block است (مانند sda).
توقف نظارت بر یک مسیر. مقدار $path همان نام فهرست‌شده در /sys/block است (مانند sda).
افزودن یک دستگاه چندمسیره به فهرست دستگاه‌های تحت نظارت. مقدار $map می‌تواند یک دستگاه device-mapper فهرست‌شده در /sys/block باشد (مانند dm-0) یا نام مستعار دستگاه (مانند mpath1) یا uid دستگاه چندمسیره.
حذف تمام دستگاه‌های چندمسیره.
حذف دستگاه چندمسیره $map.
تغییر اندازه نگاشت $map به اندازه داده‌شده.
وادار کردن دستگاه چندمسیره به تغییر به یک گروه مسیر خاص. مقدار $group اندیس گروه مسیر است که از ۱ شروع می‌شود.
بازخوانی پیکربندی و بارگذاری مجدد تمامی دستگاه‌های چندمسیره تغییریافته. این کار هنگام شروع به کار، هنگام بازخوانی سرویس یا دریافت سیگنال SIGHUP نیز رخ می‌دهد.
reconfigure all
بازخوانی پیکربندی و بارگذاری مجدد تمامی دستگاه‌های چندمسیره صرف‌نظر از تغییر یافتن یا نیافتن آن‌ها. این کار هنگام اجرای multipath -r نیز رخ می‌دهد.
قرار دادن نگاشت $map در حالت تعلیق (suspend).
از سرگیری فعالیت نگاشت $map از حالت تعلیق.
تخصیص مجدد جدول(های) موجود device-mapper برای استفاده از دستگاه چندمسیره به جای دستگاه‌های مسیر آن.
بارگذاری مجدد یک دستگاه چندمسیره.
قرار دادن مسیر $path در وضعیت شکست‌خورده (failed).
بازگرداندن مسیر $path از وضعیت شکست‌خورده.
غیرفعال کردن صف‌بندی روی تمامی دستگاه‌های چندمسیره.
بازیابی صف‌بندی به تنظیم پیکربندی‌شده no_path_retry روی تمامی دستگاه‌های چندمسیره‌ای که صف‌بندی آنها قبلاً توسط دستور disablequeueing غیرفعال شده بود.
غیرفعال کردن صف‌بندی روی نگاشت چندمسیره $map.
بازیابی صف‌بندی به تنظیم پیکربندی‌شده no_path_retry روی نگاشت چندمسیره $map.
وادار کردن multipathd به حالت queue_without_daemon، به طوری که صف‌بندی no_path_retry هنگام توقف دیمن غیرفعال نشود.
بازیابی حالت پیکربندی‌شده queue_without_daemon.
فعال‌سازی مدیریت رزرو پایدار (persistent reservation) روی $map.
فعال‌سازی مدیریت رزرو پایدار روی $map و اطلاع به multipathd درباره مسیرهای ثبت‌شده، تا تلاشی برای ثبت مجدد آن‌ها انجام ندهد.
غیرفعال کردن مدیریت رزرو پایدار روی $map.
دریافت وضعیت جاری مدیریت رزرو پایدار در $map.
دریافت کلید رزرو پایدار جاری مرتبط با $map.
تنظیم کلید رزرو پایدار مرتبط با $map روی $key در prkeys_file.
حذف کلید رزرو پایدار مرتبط با $map از prkeys_file.
انتقال $path به یک گروه مسیر حاشیه‌ای (marginal). مسیر در گروه مسیر حاشیه‌ای باقی می‌ماند تا زمانی که unsetmarginal فراخوانی شود.
بازگرداندن مسیر حاشیه‌ای $path به گروه مسیر عادی خود.
بازگرداندن تمامی مسیرهای حاشیه‌ای در $map به گروه‌های مسیر عادی آنها.
پایان دادن به نشست تعاملی.
متوقف کردن multipathd.

دستورات multipathd که گزینه $format را دریافت می‌کنند نیازمند یک رشته قالب هستند. این رشته نحوه چاپ دستگاه را کنترل می‌کند و باید شامل نویسه‌های جانشین قالب باشد. هنگام چاپ دستگاه‌ها، این نویسه‌های جانشین با اطلاعات مناسب دستگاه جایگزین می‌شوند. موارد زیر پشتیبانی می‌شوند:

نویسه‌های جانشین قالب چندمسیره (Multipath format wildcards)
%n
نام دستگاه.
%w
شناسه جهانی دستگاه WWID (یا uuid).
%d
نام sysfs دستگاه (dm-<minor_nr>).
%F
تنظیم failback دستگاه.
%Q
تنظیم no_path_retry دستگاه.
%N
تعداد مسیرهای فعال دستگاه.
%r
تنظیم حفاظت در برابر نوشتن دستگاه (ro یا rw).
%t
وضعیت دستگاه در device-mapper (suspend یا active).
%S
اندازه دستگاه، با پسوندهای K، M، G، T و P.
%f
رشته ویژگی‌های ("features") جدول device-mapper در هسته.
%x
تعداد دفعاتی که دستگاه وارد وضعیتی شده که در آن ورودی/خروجی با شکست مواجه می‌شود (نام مستعار برای %4).
%h
رشته مدیریت‌کننده سخت‌افزار در جدول دستگاه.
%A
آخرین اقدامی که multipathd روی دستگاه انجام داده است (برای اشکال‌زدایی).
%0
تعداد دفعاتی که یک مسیر در دستگاه دچار شکست شده است.
%1
تعداد دفعاتی که multipathd تغییر گروه مسیر را برای دستگاه آغاز کرده است.
%2
تعداد دفعاتی که multipathd یک جدول جدید برای دستگاه بارگذاری کرده است.
%3
تعداد تقریبی ثانیه‌هایی که multipathd بدون مسیر قابل استفاده به صف‌بندی پرداخته است.
%4
تعداد دفعاتی که دستگاه وارد وضعیت شکست ورودی/خروجی شده است (نام مستعار برای %x).
%s
رشته سازنده/محصول برای دستگاه.
%v
رشته سازنده آرایه ذخیره‌سازی برای دستگاه.
%p
رشته محصول آرایه ذخیره‌سازی برای دستگاه.
%e
رشته ویرایش سفت‌افزار آرایه برای دستگاه.
%G
کتابخانه خارجی استفاده‌شده برای دستگاه، یا -- برای دستگاه‌های بومی device-mapper.
%g
داده‌های صفحات vpd اختصاصی سازنده برای دستگاه (مانند صفحه 0xc0 برای آرایه‌های HPE 3PAR / Primera / Alletra).
%k
مقدار واقعی max_sectors_kb برای دستگاه.
نویسه‌های جانشین قالب مسیر (Path format wildcards)
%w
شناسه جهانی مسیر WWID (یا uuid).
%i
مشخصات Host:Channel:Id:Lun برای دستگاه‌های SCSI یا مشخصات کنترلر/فضانام برای دستگاه‌های NVMe.
%d
نام sysfs مسیر.
%D
شماره major:minor دستگاه.
%t
وضعیت دستگاه در device-mapper (active یا failed).
%o
وضعیت آفلاین دستگاه ("offline" یا "running").
%T
وضعیت بررسی‌کننده مسیر multipathd برای دستگاه. حالات ممکن عبارتند از:
دستگاه آماده انجام ورودی/خروجی است.
دستگاه غیرقابل استفاده است.
دستگاه قادر به انجام ورودی/خروجی نیست اما برای بررسی اولویت همچنان در دسترس است.
دستگاه در حالت آماده‌باش (stand-by) قرار دارد.
بررسی‌کننده در حال تعیین وضعیت دستگاه است.
مهلت زمانی بررسی‌کننده مسیر به پایان رسیده و دستگاه ناموفق اعلام شده است.
دستگاه قابل استفاده به نظر می‌رسد، اما برای بررسی مسیر حاشیه‌ای به تأخیر افتاده است.
دستگاه عضو هیچ دستگاه چندمسیره‌ای نیست یا بررسی‌کننده آن هنوز اجرا نشده است.
%s
رشته سازنده/محصول/ویرایش برای دستگاه.
%c
نام الگوریتم بررسی مسیر دستگاه.
%C
میزان پیشرفت تا اجرای بعدی بررسی‌کننده مسیر به ثانیه.
%p
اولویت دستگاه.
%S
اندازه دستگاه، با پسوندهای K، M، G، T و P.
%z
شماره سریال دستگاه.
%M
وضعیت حاشیه‌ای دستگاه (marginal یا normal).
%m
دستگاه چندمسیره‌ای که این دستگاه مسیری از آن است، یا [offline] یا [orphan].
%N
نام جهانی گره میزبان (WWNN) دستگاه در صورت وجود.
%n
نام جهانی گره هدف (WWNN) دستگاه در صورت وجود.
%R
نام جهانی پورت میزبان (WWPN) دستگاه در صورت وجود.
%r
نام جهانی پورت هدف (WWPN) دستگاه در صورت وجود.
%a
نام آداپتور میزبان برای دستگاه (فقط دستگاه‌های SCSI).
%G
کتابخانه خارجی استفاده‌شده برای دستگاه، یا -- برای دستگاه‌های بومی.
%g
داده‌های صفحات vpd اختصاصی سازنده برای دستگاه.
%0
تعداد دفعاتی که این دستگاه دچار شکست شده است.
%P
پروتکل دستگاه. به /etc/multipath.conf(5) مراجعه کنید.
%I
وضعیت مقداردهی اولیه دستگاه (دستگاه‌های کاملاً مقداردهی‌شده به صورت ok نشان داده می‌شوند).
%L
شناسه SCSI LUN دستگاه در قالب هگزادسیمال.
%A
شناسه گروه پورت هدف ALUA برای دستگاه.
%k
تنظیم واقعی max_sectors_kb برای دستگاه.

هنگامی که با پشتیبانی از systemd کامپایل شود، دو فایل سرویس systemd نصب می‌شوند: multipathd.service و multipathd.socket. در صورت فعال بودن، سرویس multipathd.socket به systemd دستور می‌دهد که سوکت دستور CLI را رهگیری کند تا در صورت لزوم هرگونه فراخوانی رابط CLI باعث شروع به کار دیمن شود. فایل multipathd.service تعاریف کنترل دیمن چندمسیره را در بر دارد. خود دیمن از رابط sd_notify(3) برای ارتباط با systemd استفاده می‌کند. کلیدواژه‌های واحد زیر شناسایی می‌شوند:

واچ‌داگ داخلی systemd را فعال می‌کند. دیمن multipath از طریق sd_notify(3) اعلانی برای بازنشانی واچ‌داگ به systemd ارسال می‌کند.
سازوکار داخلی تنظیم OOM را بازنویسی می‌کند.
تنظیم پیکربندی max_fds را بازنویسی می‌کند.

multipathc(8), multipath(8), kpartx(8), sd_notify(3), systemd.service(5).

مجموعه multipath-tools توسط Christophe Varoqui <christophe.varoqui@opensvc.com> و دیگران توسعه یافته است.

2024-05-29 Linux