| MULTIPATH.CONF(5) | File Formats Manual | MULTIPATH.CONF(5) |
نام (NAME)
multipath.conf - فایل پیکربندی دیمن چندمسیری (multipathd)
توضیحات (DESCRIPTION)
/etc/multipath.conf فایل پیکربندی دیمن چندمسیری است. این فایل برای بازنویسی جدول پیکربندی توکار multipathd به کار میرود. هر خطی که نخستین نویسه غیرفاصلهای آن '#' باشد، یک خط توضیح (کامنت) در نظر گرفته میشود. خطوط خالی نادیده گرفته میشوند.
پیکربندی فعلی مورد استفاده multipathd را میتوان با دستور multipath -t یا multipathd show config مشاهده کرد.
پیکربندیهای تکمیلی را میتوان در فایلهای قطرهای (drop-in) زیر مسیر /etc/multipath/conf.d/ انجام داد. فایلهایی که در این پوشه نام آنها به .conf ختم میشود، پس از خواندن /etc/multipath.conf به ترتیب الفبایی خوانده میشوند. آنها از همان سینتکس /etc/multipath.conf استفاده میکنند و از تمام بخشها و کلیدواژهها پشتیبانی مینمایند. اگر کلیدواژهای در یک بخش یکسان در چندین فایل تکرار شود، آخرین مورد بر تمام موارد پیشین اولویت خواهد داشت.
سینتکس (SYNTAX)
فایل پیکربندی شامل ورودیهایی به شکل زیر است:
<section> {
<attribute> <value>
...
<subsection> {
<attribute> <value> ...
}
}
هر بخش (section) شامل یک یا چند صفت (attribute) یا زیربخش (subsection) است. کلیدواژههای شناختهشده برای صفتها یا زیربخشها بستگی به بخشی دارد که در آن قرار گرفتهاند.
<attribute> و <value> باید در یک خط منفرد قرار گیرند. <attribute> یکی از کلیدواژههای فهرستشده در این صفحه راهنما است. <value> یا یک کلمه ساده است (فاقد فضای خالی و بدون هیچیک از نویسههای '"'، '#' و '!') یا یک رشته محصور در نقلقول دوتایی ("..."). در خارج از رشته نقلقولشده، متنی که با '#' یا '!' شروع شود به عنوان کامنت در نظر گرفته شده و تا انتهای خط نادیده گرفته میشود. در داخل یک رشته نقلقولشده، نویسههای '#' و '!' معمولی هستند و فاصلهها حفظ میشوند. برای نمایش نویسه نقلقول دوتایی در داخل یک رشته نقلقولشده، از دو نقلقول دوتایی متوالی ('""') استفاده کنید. بنابراین '2.5" SSD' را میتوان به صورت "2.5"" SSD" نوشت.
کروشه باز ('{') باید در همان خط پس از نام بخش یا زیربخش بیاید. کروشه بسته ('}') که انتهای بخش یا زیربخش را مشخص میکند باید تنها نویسه غیرفاصلهای در آن خط باشد. فاصلههای خالی به جز در داخل نقلقول دوتایی نادیده گرفته میشوند، بنابراین فاصلهگذاری و دندانهگذاری نشاندادهشده در مثال بالا برای خوانندگان انسانی مفید است اما الزامی نیست.
نکتهای در مورد عبارات باقاعده (Regular Expressions): سینتکس /etc/multipath.conf اجازه میدهد مقادیر بسیاری از صفتها به صورت عبارات باقاعده گسترشیافته پوزیکس (POSIX Extended Regular Expressions، به regex(7) مراجعه کنید) مشخص شوند. این عبارات باقاعده به بزرگی و کوچکی حروف حساس هستند و مهارنشده (unanchored) میباشند؛ بنابراین عبارت "bar" با "barbie"، "rhabarber" و "wunderbar" مطابقت دارد، اما با "Barbie" مطابقت ندارد. برای جلوگیری از تطبیقهای ناخواسته زیررشتهها، میتوان از سینتکس استاندارد عبارات باقاعده با استفاده از نویسههای ویژه "^" و "$" استفاده کرد.
کلیدواژههای بخش (section) زیر شناخته شدهاند:
- defaults
- این بخش مقادیر پیشفرض را برای صفتهایی تعریف میکند که هرگاه هیچ مقداری در بخشهای مناسب device یا multipath داده نشده باشد، استفاده میشوند.
- blacklist
- این بخش مشخص میکند کدام دستگاهها باید از کشف توپولوژی چندمسیری مستثنی شوند.
- blacklist_exceptions
- این بخش مشخص میکند کدام دستگاهها با وجود قرار داشتن در بخش blacklist، باید در کشف توپولوژی چندمسیری گنجانده شوند.
- multipaths
- این بخش توپولوژیهای چندمسیری را تعریف میکند. این توپولوژیها توسط یک شناسه جهانی (WWID) نمایهسازی میشوند. برای جزئیات در مورد تولید WWID به بخش تولید WWID (WWID generation) در ادامه مراجعه کنید. صفتهای تنظیمشده در این بخش بر تمام موارد دیگر اولویت دارند.
- devices
- این بخش تنظیمات خاص هر دستگاه را تعریف میکند. دستگاهها بر اساس سازنده (vendor)، محصول (product) و نسخه بازنگری (revision) شناسایی میشوند.
- overrides
- این بخش مقادیری را برای صفتهایی تعریف میکند که باید تنظیمات خاص دستگاه را برای تمام دستگاهها بازنویسی (override) کنند.
بخش defaults (defaults section)
بخش defaults کلیدواژههای زیر را میشناسد:
- verbosity
- میزان پرگویی پیشفرض. مقادیر بالاتر سطح پرگویی را افزایش میدهند. سطوح معتبر بین 0 و 6 هستند.
- مقدار پیشفرض: 2
- polling_interval
- فاصله زمانی بین دو بررسی مسیر بر حسب ثانیه. برای مسیرهایی که به درستی کار میکنند، فاصله زمانی بین بررسیها به تدریج تا max_polling_interval افزایش مییابد. در صورت استفاده از systemd، این مقدار توسط تنظیم WatchdogSec در تعریف multipathd.service بازنویسی خواهد شد.
- مقدار پیشفرض: 5
- max_polling_interval
- حداکثر فاصله زمانی بین دو بررسی مسیر بر حسب ثانیه.
- مقدار پیشفرض: 4 * polling_interval
- reassign_maps
- فعالسازی تخصیص مجدد نگاشتهای device-mapper. با این گزینه، multipathd نگاشتهای موجود device-mapper را مجدداً نگاشت میکند تا همیشه به دستگاه چندمسیری اشاره کنند، نه دستگاههای بلوکی زیرین. مقادیر ممکن عبارتند از yes و no.
- مقدار پیشفرض: no
- multipath_dir
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- path_selector
- الگوریتم پیشفرض انتخاب مسیر برای استفاده؛ این الگوریتمها توسط تارگت چندمسیری هسته ارائه میشوند:
- round-robin 0
- انتخاب مسیر برای درخواست ورودی/خروجی بعدی از طریق چرخش نوبتی در گروه مسیر.
- queue-length 0
- (از هسته 2.6.31 به بعد) انتخاب مسیر برای درخواست ورودی/خروجی بعدی بر اساس کمترین تعداد درخواستهای ورودی/خروجی معلق و در حال پردازش در مسیر.
- service-time 0
- (از هسته 2.6.31 به بعد) انتخاب مسیر برای درخواست ورودی/خروجی بعدی بر اساس کمترین اندازه کل (بر حسب بایت) درخواستهای ورودی/خروجی معلق و در حال پردازش در مسیر.
- historical-service-time 0
- (از هسته 5.8 به بعد) انتخاب مسیر برای درخواست ورودی/خروجی بعدی با استفاده از یک الگوریتم پویا بر پایه زمان سرویسدهی پیشین و تعداد درخواستهای ورودی/خروجی معلق و در حال پردازش در مسیر.
- مقدار پیشفرض: service-time 0
- path_grouping_policy
- (وابسته به سختافزار) خطمشی پیشفرض گروهبندی مسیر برای اعمال روی چندمسیریهای نامشخص. مقادیر ممکن عبارتند از:
- failover
- یک مسیر به ازای هر گروه اولویت.
- multibus
- تمام مسیرها در یک گروه اولویت منفرد.
- group_by_serial
- یک گروه اولویت به ازای هر شماره سریال.
- group_by_prio
- یک گروه اولویت به ازای هر مقدار اولویت. اولویتها توسط برنامههای فراخوانیشده (callout) مشخصشده به عنوان یک گزینه سراسری، به ازای کنترلر یا به ازای هر چندمسیری در فایل پیکربندی تعیین میشوند.
- group_by_node_name
- یک گروه اولویت به ازای هر نام گره هدف. نامهای گره هدف در /sys/class/fc_transport/target*/node_name واکشی میشوند.
- group_by_tpg
- یک گروه اولویت به ازای هر گروه پورت هدف ALUA. برای استفاده از این خطمشی، باید مقدار prio برای تمامی مسیرها در دستگاه چندمسیری روی alua تنظیم شده باشد.
- مقدار پیشفرض: failover
- detect_pgpolicy
- اگر روی yes تنظیم شود و تمام دستگاههای مسیر با یکی از اولویتبندیکنندههای alua یا sysfs پیکربندی شده باشند، دستگاه چندمسیری به طور خودکار از خطمشی گروهبندی مسیر group_by_prio استفاده خواهد کرد. اگر روی no تنظیم شود، خطمشی path_grouping_policy طبق روال عادی انتخاب میشود.
- مقدار پیشفرض: yes
- detect_pgpolicy_use_tpg
- اگر هم این گزینه و هم detect_pgpolicy روی yes تنظیم شوند و تمام دستگاههای مسیر با اولویتبندیکننده alua یا sysfs پیکربندی شده باشند، دستگاه چندمسیری به طور خودکار از خطمشی گروهبندی مسیر group_by_tpg استفاده خواهد کرد. اگر روی no تنظیم شود، خطمشی path_grouping_policy بر اساس روش شرح دادهشده برای detect_pgpolicy در بالا انتخاب خواهد شد.
- مقدار پیشفرض: no
- pg_timeout
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- uid_attrs
- تنظیم این گزینه ادغام رخدادهای uevent را بر اساس WWID فعال میکند که ممکن است کارایی پردازش uevent را بهبود بخشد. علاوه بر این، روشی جایگزین برای پیکربندی ویژگیهای udev جهت استفاده در تعیین شناسههای یکتای مسیر (WWIDها) است.
مقدار این گزینه فهرستی از رکوردها است که با فاصله از هم جدا شدهاند، مانند "type:ATTR"، که در آن type با ابتدای نام گره دستگاه تطبیق داده میشود (برای نمونه sd:ATTR با sda مطابقت دارد)، و ATTR نام ویژگی udev است که برای دستگاههای منطبق استفاده میشود.
اگر این گزینه پیکربندی شده باشد و با نام گره دستگاه یک دستگاه مطابقت داشته باشد، بر هر روش پیکربندیشده دیگری برای تعیین WWID آن دستگاه اولویت مییابد.
این گزینه را نمیتوان در زمان اجرا با دستور reconfigure دیمن multipathd تغییر داد.
مقدار پیشفرض: <unset>. برای فعالسازی ادغام uevent، آن را برای نمونه روی "sd:ID_SERIAL dasd:ID_UID nvme:ID_WWN" تنظیم کنید.
- uid_attribute
- صفت udev که شناسه یکتای مسیر (WWID) را ارائه میدهد. اگر uid_attribute روی یک رشته خالی تنظیم شود، تعیین WWID با استفاده از روش sysfs به جای استفاده از udev انجام میشود (در محیط عملیاتی توصیه نمیشود؛ بخش تولید WWID (WWID generation) در ادامه را ببینید).
- مقدار پیشفرض: ID_SERIAL، برای دستگاههای SCSI
- مقدار پیشفرض: ID_UID، برای دستگاههای DASD
- مقدار پیشفرض: ID_WWN، برای دستگاههای NVMe
- getuid_callout
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- prio
- نام روال اولویت مسیر. روال مشخصشده باید یک مقدار عددی بازگرداند که اولویت نسبی این مسیر را مشخص کند. اعداد بزرگتر اولویت بالاتری دارند. "none" یک مقدار معتبر است. در حال حاضر روالهای اولویت مسیر زیر پیادهسازی شدهاند:
- const
- یک اولویت ثابت 1 را برمیگرداند.
- sysfs
- از صفتهای sysfs به نامهای access_state و preferred_path برای تولید اولویت مسیر استفاده میکند. این اولویتبندیکننده آرگومان اختیاری prio_arg به نام exclusive_pref_bit را میپذیرد.
- emc
- (وابسته به سختافزار) تولید اولویت مسیر برای آرایههای کلاس DGC مانند خانوادههای CLARiiON CX/AX و EMC VNX با حالت Failover Mode 1 (حالت غیرفعال ناآماده یا Passive Not Ready - PNR).
- alua
- (وابسته به سختافزار) تولید اولویت مسیر بر اساس تنظیمات ALUA در SCSI-3. این اولویتبندیکننده آرگومان اختیاری prio_arg به نام exclusive_pref_bit را میپذیرد.
- ontap
- (وابسته به سختافزار) تولید اولویت مسیر برای سریهای NetApp ONTAP FAS/AFF و آرایههای تغییرنامیافته (rebranded)، با حالت بومی ONTAP (غیر از ALUA).
- rdac
- (وابسته به سختافزار) تولید اولویت مسیر برای کلاس LSI/Engenio/NetApp RDAC مانند NetApp SANtricity سری E/EF و آرایههای تغییرنامیافته، با گزینه "Linux DM-MP (Kernel 3.9 or earlier)".
- hp_sw
- (وابسته به سختافزار) تولید اولویت مسیر برای آرایههای HP/COMPAQ/DEC HSG80 و MSA/HSV منحصراً با حالت Active/Standby.
- hds
- (وابسته به سختافزار) تولید اولویت مسیر برای خانواده آرایههای Hitachi AMS به جز AMS 2000.
- random
- تولید یک اولویت تصادفی بین 1 و 10.
- weightedpath
- تولید اولویت مسیر بر اساس عبارت باقاعده و اولویت ارائهشده به عنوان آرگومان. نیازمند کلیدواژه prio_args است.
- path_latency
- تولید اولویت مسیر بر اساس یک الگوریتم تاخیر (latency). نیازمند کلیدواژه prio_args است.
- ana
- (وابسته به سختافزار) تولید اولویت مسیر بر اساس تنظیمات ANA در NVMe.
- datacore
- (وابسته به سختافزار) تولید اولویت مسیر برای برخی آرایههای ذخیرهسازی DataCore. نیازمند کلیدواژه prio_args است.
- iet
- (فقط iSCSI) تولید اولویت مسیر برای اهداف iSCSI بر پایه آدرس IP. نیازمند کلیدواژه prio_args است.
پیشفرض به تنظیم detect_prio بستگی دارد: اگر detect_prio برابر yes (پیشفرض) باشد، الگوریتم پیشفرض اولویت sysfs است (به استثنای سری NetAPP E/EF که در آن alua است). اگر detect_prio برابر no باشد، الگوریتم پیشفرض اولویت const خواهد بود.
- prio_args
- آرگومانهایی که به تابع prio ارسال میشوند. این گزینه فقط برای اولویتبندیکنندههای خاصی کاربرد دارد:
- weighted
- نیازمند مقداری به شکل زیر است: "<hbtl|devname|serial|wwn> <regex1> <prio1> <regex2> <prio2> ..."
- hbtl
- عبارت باقاعده میتواند در قالب H:B:T:L اسکازی باشد. برای نمونه: 1:0:.:. ، *:0:0:.
- devname
- عبارت باقاعده میتواند در قالب نام دستگاه باشد. برای نمونه: sda ، sd.e
- serial
- عبارت باقاعده میتواند در قالب شماره سریال باشد. برای نمونه: .*J1FR.*324 . شماره سریال را میتوان از طریق sysfs یا با اجرای دستور multipathd show paths format "%z" پیدا کرد. برای نمونه: 0395J1FR904324
- wwn
- عبارت باقاعده میتواند به شکل "host_wwnn:host_wwpn:target_wwnn:target_wwpn" باشد؛ این مقادیر را میتوان از طریق sysfs یا با اجرای دستور multipathd show paths format "%N:%R:%n:%r" مشاهده کرد. برای نمونه: 0x200100e08ba0aea0:0x210100e08ba0aea0:.*:.* ، .*:.*:iqn.2009-10.com.redhat.msp.lab.ask-06:.*
- path_latency
- نیازمند مقداری به شکل "io_num=<20> base_num=<10>" است
- io_num
- تعداد درخواستهای ورودی/خروجی خواندن که به طور مداوم به مسیر فعلی ارسال میشوند و برای محاسبه میانگین تاخیر مسیر به کار میروند. مقادیر معتبر: عدد صحیح، [20, 200].
- base_num
- مقدار پایه برای مقیاس لگاریتمی که برای تقسیمبندی رتبههای مختلف اولویت استفاده میشود. مقادیر معتبر: عدد اعشاری ممیز شناور با دقت مضاعف، [1.1, 10]. و حداکثر مقدار میانگین تاخیر 100s و حداقل آن 1us است. برای نمونه: اگر base_num=10 باشد، مسیرها در گروههای اولویتی با تاخیر مسیر <=1us، (1us, 10us]، (10us, 100us]، (100us, 1ms]، (1ms, 10ms]، (10ms, 100ms]، (100ms, 1s]، (1s, 10s]، (10s, 100s] و >100s گروهبندی میشوند.
- alua
- اگر exclusive_pref_bit تنظیم شده باشد، مسیرهایی که بیت preferred path آنها فعال است همیشه در گروه مسیر مختص به خود قرار خواهند گرفت.
- sysfs
- اگر exclusive_pref_bit تنظیم شده باشد، مسیرهایی که بیت preferred path آنها فعال است همیشه در گروه مسیر مختص به خود قرار خواهند گرفت.
- datacore
- preferredsds
- (اجباری) نام SDS ترجیحدادهشده ("SDS name").
- timeout
- (اختیاری) مهلت زمانی برای INQUIRY، بر حسب میلیثانیه.
- preferredip=...
- (اجباری) آدرس IPv4 ترجیحدادهشده با نماد دهدهی نقطهدار برای اهداف iSCSI. اولویت 20 (بالا) به آن اختصاص مییابد، در حالی که بقیه اولویت 0 (پایین) دریافت خواهند کرد. این مقدار همچنین میتواند دنبالهای از عبارتهای CIDR (آدرس/پیشوند IPv4) جداشده با کاما باشد که پس از هر کدام یک دونقطه و یک اولویت قرار میگیرد. عبارتهای CIDR میتوانند از قالب استاندارد n.n.n.n/p یا هر فرم خلاصه معتبر دیگر استفاده کنند، مثلاً 192.168/16 به عنوان فرم خلاصه 192.168.0.0/16. آدرسهای IP اهداف iSCSI با هر یک از این عبارتها تطبیق داده میشوند. خاصترین تطابق (بزرگترین پیشوند) برای تعیین اولویت استفاده خواهد شد. به آدرسهای IP که با هیچ عبارتی مطابقت ندارند، اولویت 0 اختصاص داده میشود. مثال: 10/8:20,10.0.10/24:40,192.168/16:10,0/0:5.
- مقدار پیشفرض: <تنظیمنشده>
- features
- ویژگیهای device-mapper مورد استفاده را مشخص میکند. سینتکس آن به صورت num list است که در آن num تعداد ویژگیها (بین 0 تا 8) در list میباشد. مقادیر ممکن برای فهرست ویژگیها عبارتند از:
- queue_if_no_path
- (منسوخشده، no_path_retry جایگزین آن شده است) صفبندی ورودی/خروجی در صورتی که هیچ مسیری فعال نباشد. مشابه مقدار queue در no_path_retry است. اگر هم این ویژگی و هم no_path_retry تنظیم شوند، مقدار دومی اولویت دارد. بخش مشکلات شناختهشده (KNOWN ISSUES) را ببینید.
- pg_init_retries <times>
- (از هسته 2.6.24 به بعد) تعداد دفعات تلاش مجدد برای pg_init؛ باید بین 1 تا 50 باشد.
- pg_init_delay_msecs <msecs>
- (از هسته 2.6.38 به بعد) مدت زمان بر حسب میلیثانیه قبل از تلاش مجدد pg_init؛ باید بین 0 تا 60000 باشد.
- queue_mode <mode>
- (از هسته 4.8 به بعد) انتخاب حالت صفبندی به ازای هر دستگاه چندمسیری. <mode> میتواند bio، rq یا mq باشد که به ترتیب متناظر با مبتنی بر bio، مبتنی بر درخواست و مبتنی بر درخواست چندصفی بلوکی (blk-mq) است. قبل از هسته 4.20، پیشفرض به پارامتر هسته dm_mod.use_blk_mq بستگی دارد؛ اگر این پارامتر تنظیم شده باشد mq و در غیر این صورت rq است. از هسته 4.20 به بعد، هر دو حالت rq و mq متناظر با چندصفی بلوکی (block-multiqueue) هستند. پس از ایجاد یک دستگاه چندمسیری، حالت queue_mode آن قابل تغییر نیست. مسیرهای nvme:tcp فقط در دستگاههای چندمسیری با queue_mode تنظیمشده روی bio پشتیبانی میشوند. چندمسیری هنگام ایجاد دستگاه با مسیرهای nvme:tcp این مقدار را به طور خودکار تنظیم میکند.
- مقدار پیشفرض: 0
- path_checker
- روش پیشفرض مورد استفاده برای تعیین وضعیت مسیر. از نسخه 0.15.0 ابزارهای multipath-tools، تمامی بررسیکنندههای مسیر به طور پیشفرض در حالت غیرهمگام (asynchronous) اجرا میشوند تا دستگاههای پاسخنادهنده موجب توقف multipathd نشوند. از پارامتر force_sync برای اجبار به بررسی همگام استفاده کنید. مقادیر ممکن عبارتند از:
- readsector0
- (منسوخشده) خواندن بخش اول (سکتور صفر) دستگاه. این بررسیکننده منسوخ شده است، لطفاً به جای آن از tur یا directio استفاده کنید.
- tur
- (وابسته به سختافزار) ارسال یک دستور TEST UNIT READY به دستگاه SCSI.
- emc_clariion
- (وابسته به سختافزار) پرسوجو از صفحه اختصاصی DGC/EMC به نام EVPD page 0xC0 برای تعیین وضعیت مسیر در آرایههای خانواده CLARiiON CX/AX و EMC VNX و Unity.
- hp_sw
- (وابسته به سختافزار) بررسی وضعیت مسیر برای آرایههای HP/COMPAQ/DEC HSG80 و MSA/HSV منحصراً با حالت Active/Standby.
- rdac
- (وابسته به سختافزار) بررسی وضعیت مسیر برای کلاس LSI/Engenio/NetApp RDAC مانند NetApp SANtricity سری E/EF و آرایههای تغییرنامیافته.
- directio
- خواندن سکتور اول با ورودی/خروجی مستقیم (Direct I/O). این بررسیکننده ممکن است زیر بار کاری سنگین باعث خطاهای کاذب در تشخیص خرابی مسیر شود. افزایش مقدار checker_timeout میتواند به رفع این مشکل کمک کند.
- cciss_tur
- (وابسته به سختافزار) بررسی وضعیت مسیر برای کنترلرهای HP/COMPAQ Smart Array(CCISS).
- none
- دستگاه را بررسی نکن و از مقادیر بازیابیشده از sysfs استفاده کن.
- مقدار پیشفرض: tur
- alias_prefix
- پیشوند برای user_friendly_names.
- مقدار پیشفرض: mpath
- failback
- نحوه مدیریت بازگشت به مسیر اولیه (failback) گروه مسیر را به multipathd مشخص میکند. برای انتخاب immediate یا یک مقدار عددی، الزامی است که دستگاه از یک اولویتبندیکننده فعال پشتیبانی کند.
- immediate
- بازگشت فوری به بالاترین گروه مسیر دارای اولویت که شامل مسیرهای فعال است.
- manual
- عدم انجام failback به صورت خودکار.
- followover
- برای مقابله با دسترسی همزمان چندین رایانه به دستگاههای ذخیرهسازی Active/Passive یکسان به کار میرود. تنها زمانی failback خودکار انجام میشود که اولین مسیر از یک گروه مسیر فعال گردد. این کار از failback خودکار یک گره کلاستر هنگامی که گره دیگری درخواست failover داده باشد، جلوگیری میکند.
- values > 0
- بازگشت تاخیری (مدت زمان تاخیر بر حسب ثانیه).
- مقدار پیشفرض: manual
- rr_min_io
- (منسوخشده از هسته 4.6) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- rr_min_io_rq
- (منسوخشده از هسته 4.6) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- max_fds
- حداکثر تعداد توصیفکنندههای فایل را که میتوانند توسط multipath و multipathd باز شوند مشخص میکند. این معادل با ulimit -n است. مقدار max این گزینه را روی حد مجاز سیستم از /proc/sys/fs/nr_open تنظیم میکند. در صورت عدم تنظیم، حداکثر تعداد توصیفکنندههای فایل باز از فرایند فراخواننده گرفته میشود که معمولاً 1024 است. برای ایمنی، اگر تعداد کل مسیرها به علاوه 32 بیشتر از 1024 باشد، این مقدار باید روی آن تنظیم شود.
- مقدار پیشفرض: max
- rr_weight
- (منسوخشده از هسته 4.6) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- no_path_retry
- مشخص میکند هنگامی که تمام مسیرها قطع هستند چه اقدامی انجام شود. مقادیر ممکن عبارتند از:
- queue_without_daemon
- اگر روی no تنظیم شود، هنگامی که multipathd متوقف میشود، صفبندی برای تمام دستگاهها خاموش خواهد شد. این گزینه برای دستگاههایی که no_path_retry را تنظیم کردهاند مفید است. اگر ماشینی خاموش شود در حالی که تمام مسیرهای یک دستگاه قطع هستند، این احتمال وجود دارد که سیستم پس از متوقف شدن multipathd در انتظار بازگشت I/O از دستگاه قفل کند. بدون اجرای multipathd، دسترسی به مسیرها بازیابی نمیشود و به هسته نیز نمیتوان دستور داد صفبندی I/O را متوقف کند. تنظیم queue_without_daemon روی no از این مشکل جلوگیری مینماید.
- مقدار پیشفرض: no
- checker_timeout
- مهلت زمانی مورد استفاده برای بررسیکنندههای مسیر و اولویتبندیکنندهها بر حسب ثانیه. تنها اولویتبندیکنندههایی که دستورات scsi صادر میکنند از checker_timeout استفاده مینمایند. اگر یک مسیر پس از گذشت checker_timeout ثانیه به دستور بررسی پاسخ ندهد، قطع (down) در نظر گرفته میشود.
- مقدار پیشفرض: در /sys/block/<dev>/device/timeout
- allow_usb_devices
- اگر روی no تنظیم شود، تمام دستگاههای USB در طول فرآیند کشف مسیر نادیده گرفته میشوند. اگر قصد دارید از چندمسیری روی دستگاههای متصل به USB استفاده کنید، این گزینه را روی yes تنظیم کنید.
- مقدار پیشفرض: no
- flush_on_last_del
- اگر روی always تنظیم شود، multipathd هنگام حذف آخرین مسیر به یک دستگاه، صفبندی را غیرفعال خواهد کرد. اگر روی never تنظیم شود، multipathd هنگام حذف آخرین مسیر به یک دستگاه، صفبندی را غیرفعال نمیکند. از آنجا که multipath نمیتواند با خیال راحت دستگاهی را که صفبندی آن فعال است حذف کند، تنظیم این گزینه روی never به این معنی است که اگر دستگاهی در حال حاضر روی queue_if_no_path تنظیم شده باشد، multipathd دستگاه چندمسیری استفادهنشدهای را که تمام مسیرهایش حذف شدهاند به طور خودکار حذف نخواهد کرد. اگر روی unused تنظیم شود، multipathd تنها زمانی صفبندی را در هنگام حذف آخرین مسیر غیرفعال میکند که در حال حاضر هیچ فرایندی دستگاه چندمسیری یا هیچیک از دستگاههای پارتیشن kpartx روی آن را باز نکرده باشد.
- مقدار پیشفرض: unused
- user_friendly_names
- اگر روی yes تنظیم شود، از فایل پیوندها /etc/multipath/bindings برای اختصاص یک نام مستعار پایدار و یکتا به دستگاه چندمسیری به شکل prefix<n> (که در آن prefix توسط alias_prefix تعریف میشود؛ پیشفرض mpath) استفاده خواهد شد. اگر روی no تنظیم شود، از WWID به عنوان نام مستعار استفاده میشود. در هر دو صورت، این مورد توسط هر نام مستعار مشخصی که در بخش multipaths تعریف شده باشد بازنویسی خواهد شد.
- مقدار پیشفرض: no
- fast_io_fail_tmo
- تعداد ثانیههایی را مشخص میکند که لایه SCSI پس از تشخیص بروز مشکل در یک پورت ریموت FC، قبل از اعلام شکست در درخواستهای ورودی/خروجی به دستگاههای روی آن پورت ریموت، منتظر میماند. این مقدار باید کوچکتر از dev_loss_tmo باشد. تنظیم آن روی off مهلت زمانی را غیرفعال میکند.
- مقدار پیشفرض: 5
- dev_loss_tmo
- تعداد ثانیههایی را مشخص میکند که لایه SCSI پس از تشخیص قطع ارتباط در یک پورت ریموت، قبل از حذف آن از سیستم منتظر میماند. این مقدار را میتوان روی "infinity" تنظیم کرد که عملاً به معنای 136 سال (2^32-1 ثانیه) است. این پارامتر فقط برای دستگاههای Fibre Channel و SAS اعمال میشود.
مقدار dev_loss_tmo توسط سایر تنظیمات محدود میشود. اگر fast_io_fail_tmo روی یک مقدار مثبت تنظیم شده باشد، multipathd اطمینان حاصل میکند که مقدار dev_loss_tmo بزرگتر از no_path_retry * polling_interval باشد. اگر fast_io_fail_tmo تنظیم نشده باشد، هسته مقدار dev_loss_tmo را به 600 ثانیه محدود میکند. در این حالت، کاربر باید اطمینان حاصل کند که no_path_retry کوچکتر از dev_loss_tmo / polling_interval باشد. به ویژه، no_path_retry نباید روی "queue" تنظیم شود. بخش مشکلات شناختهشده (KNOWN ISSUES) را ببینید.
هنگامی که دستگاههای مسیر پس از قطع اتصال دوباره ظاهر میشوند، برای هسته بسیار آسانتر است که به سادگی یک دستگاه غیرفعال را مجدداً فعال کند تا اینکه بخواهد دستگاهی را که قبلاً حذف شده بود دوباره اضافه کند. بنابراین توصیه میشود که dev_loss_tmo در چارچوب محدودیتهای ذکرشده در بالا، روی مقدار بزرگی تنظیم شود.
دستگاههای Fibre Channel و SAS دارای مقادیر پیشفرض وابسته به سختافزار هستند که در صورت عدم تعیین dev_loss_tmo بدون تغییر باقی میمانند. برای تعداد کمی از آرایههای ذخیرهسازی، تنظیمات توکار multipath-tools مقدار پیشفرض را بازنویسی میکنند. دستور multipath -T را اجرا کنید تا تنظیمات دستگاه خود را مشاهده نمایید.
- مقدار پیشفرض: <وابسته به سختافزار>
- eh_deadline
- حداکثر مدت زمانی (بر حسب ثانیه) را که لایه SCSI هنگام خرابی دستگاههای scsi صرف رسیدگی به خطا میکند، مشخص مینماید. پس از پایان این مهلت، لایه scsi یک بازنشانی کامل HBA انجام میدهد. تنظیم این گزینه ممکن است در مواردی ضروری باشد که پورت ریموت هرگز قطع نمیشود، بنابراین fast_io_fail_tmo و dev_loss_tmo هرگز فعال نخواهند شد، اما دستورات scsi (معمولاً به دلیل بار کاری بالا) همچنان قفل میکنند. توجه: هنگامی که گرداننده خطای scsi عمل بازنشانی HBA را انجام میدهد، تمام مسیرهای هدف روی آن HBA تحت تاثیر قرار خواهند گرفت. eh_deadline تنها باید در مواردی تنظیم شود که تمام اهداف روی HBAهای مربوطه چندمسیری شده باشند.
- مقدار پیشفرض: <تنظیمنشده>
- max_retries
- حداکثر دفعاتی را که لایه SCSI دستورات ورودی/خروجی را برای برخی از انواع خطاهای SCSI پیش از اعلام شکست مجدداً تلاش میکند، مشخص مینماید. تنظیم این گزینه برای مواردی که دستورات ورودی/خروجی قفل کرده و دچار انقضای زمان میشوند مفید است. به طور پیشفرض، لایه SCSI تلاش مجدد را 5 بار انجام میدهد. کاهش این مقدار به multipath اجازه میدهد درخواست ورودی/خروجی را سریعتر از طریق مسیر دیگری مجدداً تلاش کند. مقادیر معتبر از 0 تا 5 هستند.
- مقدار پیشفرض: <تنظیمنشده>
- bindings_file
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- wwids_file
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- prkeys_file
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- log_checker_err
- اگر روی once تنظیم شود، multipathd نخستین خطای بررسیکننده مسیر را در سطح لاگگیری 2 ثبت میکند. خطاهای بعدی تا زمان بازیابی دستگاه در سطح 3 ثبت میشوند. اگر روی always تنظیم شود، multipathd خطای بررسیکننده مسیر را همواره در سطح لاگگیری 2 ثبت خواهد کرد.
- مقدار پیشفرض: always
- reservation_key
- این کلید رزرو کنش سرویس است که توسط mpathpersist استفاده میشود. این گزینه باید برای تمام دستگاههای چندمسیری که از رزروهای پایدار استفاده میکنند تنظیم شود، و باید با فیلد RESERVATION KEY در فهرست پارامترهای PERSISTENT RESERVE OUT یکسان باشد که حاوی یک مقدار 8 بایتی ارائهشده توسط کلاینت برنامه به سرور دستگاه برای شناسایی nexus I_T است. اگر هنگام ثبت کلید با mpathpersist از گزینه --param-aptpl استفاده شده باشد، باید :aptpl به انتهای کلید رزرو پیوست شود.
به عنوان روش دیگر، میتوان این گزینه را روی file تنظیم کرد که RESERVATION KEY ثبتشده توسط mpathpersist را در فایل /etc/multipath/prkeys ذخیره میکند. آنگاه multipathd از این کلید برای ثبت مسیرهای اضافی به محض ظاهر شدن آنها استفاده خواهد کرد. هنگامی که ثبت کلید برداشته شود، RESERVATION KEY از فایل /etc/multipath/prkeys حذف خواهد شد. فایل prkeys به طور خودکار ثبت کلید با --param-aptpl را دنبال میکند.
- مقدار پیشفرض: <تنظیمنشده>
- all_tg_pt
- پرچم «تمام پورتهای هدف» (all targets ports) را هنگام ثبت کلیدها با mpathpersist تنظیم میکند. برخی از آرایهها به جای ثبت به ازای هر پورت هدف به ازای هر هاست، به طور خودکار کلیدهای ثبتنام را روی تمام پورتهای هدف از یک هاست تنظیم و پاک میکنند. پرچم ALL_TG_PT باید تنظیم شود تا بتوان با موفقیت از mpathpersist روی این آرایهها استفاده کرد. تنظیم این گزینه همانند فراخوانی mpathpersist با --param-alltgpt است.
- مقدار پیشفرض: no
- retain_attached_hw_handler
- (منسوخشده برای هستههای >= 4.3) اگر روی yes تنظیم شود و لایه SCSI از قبل یک hardware_handler را به دستگاه متصل کرده باشد، multipath دستگاه را مجبور به استفاده از hardware_handler مشخصشده در /etc/multipath.conf نخواهد کرد. اگر لایه SCSI گرداننده سختافزاری متصل نکرده باشد، multipath به استفاده از گرداننده سختافزاری پیکربندیشده خود ادامه میدهد.
مقدار پیشفرض: yes
نکته مهم: هسته لینوکس 4.3 یا جدیدتر همیشه طوری رفتار میکند که گویی "retain_attached_hw_handler yes" تنظیم شده است.
- detect_prio
- اگر روی yes تنظیم شود، multipath تلاش خواهد کرد تشخیص دهد که آیا دستگاه از SCSI-3 ALUA پشتیبانی میکند یا خیر. در این صورت، اگر صفتهای sysfs مورد نیاز یعنی access_state و preferred_path پشتیبانی شوند، دستگاه به طور خودکار از اولویتبندیکننده sysfs استفاده میکند، و در غیر این صورت از اولویتبندیکننده alua استفاده خواهد کرد. اگر روی no تنظیم شود، اولویتبندیکننده طبق معمول انتخاب خواهد شد.
- مقدار پیشفرض: yes
- detect_checker
- اگر روی yes تنظیم شود، multipath تلاش خواهد کرد تشخیص دهد که آیا دستگاه از SCSI-3 ALUA پشتیبانی میکند یا خیر. در این صورت، دستگاه به طور خودکار از بررسیکننده tur استفاده خواهد کرد. اگر روی no تنظیم شود، بررسیکننده طبق روال عادی انتخاب خواهد شد.
- مقدار پیشفرض: yes
- force_sync
- اگر روی yes تنظیم شود، multipathd بررسیکنندههای مسیر را تنها در حالت همگام فراخوانی میکند. این بدان معنی است که در هر زمان تنها یک بررسیکننده اجرا میشود و ممکن است multipathd هنگام انتظار برای پاسخ دستگاه، عملیات خود را متوقف کند. این گزینه در حالتی مفید است که اجرای موازی بررسیکنندههای زیاد multipathd فشار قابل توجهی روی CPU وارد میکند.
- مقدار پیشفرض: no
- strict_timing
- اگر روی yes تنظیم شود، multipathd یک حلقه بررسی مسیر جدید را دقیقاً پس از گذشت یک ثانیه آغاز میکند، به طوری که هر بررسی مسیر دقیقاً در فواصل polling_interval ثانیه رخ دهد. در سیستمهای شلوغ ممکن است بررسی مسیرها بیش از یک ثانیه طول بکشد؛ در اینجا تیکهای از دسترفته در دور بعدی به حساب خواهند آمد. اگر بررسیهای مسیر بیشتر از polling_interval ثانیه طول بکشد، یک هشدار چاپ خواهد شد.
- مقدار پیشفرض: no
- deferred_remove
- اگر روی yes تنظیم شود، multipathd هنگام حذف آخرین دستگاه مسیر، به جای حذف عادی یک حذف به تعویق افتاده انجام میدهد. این بدان معنی است که اگر دستگاه چندمسیری هنوز در حال استفاده باشد، زمانی که آخرین کاربر آن را ببندد آزاد خواهد شد. اگر پیش از بسته شدن آن توسط آخرین کاربر مسیری به دستگاه چندمسیری اضافه شود، حذف به تعویق افتاده لغو خواهد شد.
- مقدار پیشفرض: no
- partition_delimiter
- این پارامتر نحوه انتخاب نام دستگاههای پارتیشن نگاشتهای چندمسیری را در صورت تغییر نام نگاشت چندمسیری (مثلاً در صورت اضافه یا تغییر نام مستعار نگاشت) کنترل میکند. اگر این پارامتر روی رشتهای غیر از "/UNSET/" تنظیم شود (حتی رشته خالی)، multipath آن رشته را بین نام دستگاه و شماره پارتیشن درج میکند تا نام دستگاه پارتیشن را بسازد. در غیر این صورت (یعنی اگر این پارامتر تنظیم نشده باشد یا مقدار "/UNSET/" داشته باشد)، رفتار به نام نگاشت بستگی دارد: اگر نام به یک رقم ختم شود، یک "p" بین نام و شماره پارتیشن درج میشود؛ در غیر این صورت، شماره پارتیشن به سادگی به انتهای آن اضافه خواهد شد. توزیعها ممکن است از یک مقدار پیشفرض غیرتهی برای این گزینه استفاده کنند؛ در این صورت، کاربر باید آن را روی "/UNSET/" قرار دهد تا رفتار اصلی <تنظیمنشده> را به دست آورد. برای بررسی تنظیمات فعلی از multipath -T استفاده کنید.
- مقدار پیشفرض: <تنظیمنشده>
- config_dir
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- san_path_err_threshold
- اگر روی مقداری بزرگتر از 0 تنظیم شود، multipathd مسیرها را زیر نظر گرفته و تعداد دفعات شکست یک مسیر به دلیل خطا را بررسی میکند. اگر تعداد خرابیها در یک مسیر خاص بیشتر از san_path_err_threshold باشد، آن مسیر تا پایان زمان san_path_err_recovery_time به مدار بازگردانده نخواهد شد. این خرابیهای مسیر باید در طول بازه بررسیهای san_path_err_forget_rate رخ دهند، در غیر این صورت مسیر به اندازه کافی خوب تلقی شده و مجدداً برقرار میگردد. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- san_path_err_forget_rate
- اگر روی مقداری بزرگتر از 0 تنظیم شود، multipathd بررسی میکند که آیا خرابیهای مسیر در طول این تعداد بررسی (یعنی san_path_err_forget_rate) از حد san_path_err_threshold فراتر رفته است یا خیر. اگر چنین باشد، مسیر تا پایان زمان san_path_err_recovery_time احیا نخواهد شد. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- san_path_err_recovery_time
- اگر روی مقداری بزرگتر از 0 تنظیم شود، multipathd اطمینان حاصل میکند که هرگاه خرابیهای مسیر در طول san_path_err_forget_rate از حد san_path_err_threshold فراتر رفت، مسیر به مدت زمان san_path_err_recovery_time در وضعیت شکستخورده قرار گیرد. پس از پایان مهلت san_path_err_recovery_time، مسیر شکستخورده دوباره به کار گرفته میشود. مقدار san_path_err_recovery_time باید بر حسب ثانیه باشد. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- marginal_path_double_failed_time
- یکی از چهار پارامتر پشتیبانی از بررسی مسیر بر اساس شمارش خطای I/O مانند خطاهای متناوب. هنگامی که یک رخداد خرابی مسیر دو بار در طول marginal_path_double_failed_time ثانیه به دلیل خطای I/O رخ دهد و هر سه پارامتر دیگر تنظیم شده باشند، multipathd مسیر را شکستخورده اعلام کرده و آن را در صفی قرار میدهد که اعضای آن چندین درخواست خواندن مستقیم غیرهمگام با نرخ نمونهبرداری ثابت 10 هرتز دریافت میکنند تا فرآیند شمارش خطای I/O آغاز شود. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- marginal_path_err_sample_time
- یکی از چهار پارامتر پشتیبانی از بررسی مسیر بر پایه شمارش خطای I/O مانند خطاهای متناوب. اگر روی مقداری کمتر از 120 تنظیم نشده باشد، هنگامی که یک رخداد شکست مسیر دو بار در طول marginal_path_double_failed_time ثانیه به دلیل خطای I/O رخ دهد، multipathd مسیر را شکستخورده اعلام کرده و آن را در صفی قرار میدهد که اعضای آن چندین درخواست مستقیم ناهمگام با نرخ نمونهبرداری ثابت 10 هرتز دریافت میکنند تا فرآیند ارزیابی خطای I/O آغاز شود که به مدت marginal_path_err_sample_time ادامه خواهد داشت. اگر نرخ خطای I/O در یک مسیر خاص بیشتر از marginal_path_err_rate_threshold باشد، آنگاه مسیر به مدت marginal_path_err_recheck_gap_time ثانیه به مدار بازگردانده نخواهد شد مگر اینکه تنها یک مسیر فعال وجود داشته باشد. پس از انقضای marginal_path_err_recheck_gap_time، مسیر برای بررسی مجدد در صف قرار میگیرد. اگر نتیجه بررسی به اندازه کافی خوب باشد، مسیر احیا خواهد شد. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- marginal_path_err_rate_threshold
- آستانه نرخ خطا به صورت در هزار (پرمیل یا 1/1000). یکی از چهار پارامتر پشتیبانی از بررسی مسیر بر پایه شمارش خطای I/O مانند خطاهای متناوب. به marginal_path_err_sample_time مراجعه کنید. اگر نرخ خطاهای I/O در یک مسیر خاص بیشتر از این پارامتر باشد، مسیر به مدت marginal_path_err_recheck_gap_time ثانیه احیا نخواهد شد مگر اینکه تنها یک مسیر فعال وجود داشته باشد. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- marginal_path_err_recheck_gap_time
- یکی از چهار پارامتر پشتیبانی از بررسی مسیر بر پایه شمارش خطای I/O مانند خطاهای متناوب. به marginal_path_err_sample_time مراجعه کنید. اگر این پارامتر روی یک مقدار مثبت تنظیم شود، مسیر شکستخوردهای که نرخ خطای I/O آن بزرگتر از marginal_path_err_rate_threshold باشد، به مدت marginal_path_err_recheck_gap_time ثانیه در وضعیت شکستخورده نگه داشته میشود. هنگامی که marginal_path_err_recheck_gap_time ثانیه سپری شد، مسیر مجدداً برای بررسی در صف قرار میگیرد. اگر نتیجه بررسی به اندازه کافی خوب باشد، مسیر احیا خواهد شد وگرنه در وضعیت شکستخورده باقی میماند. بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- delay_watch_checks
- (منسوخشده) این گزینه منسوخ شده و به san_path_err_forget_rate نگاشت میشود. اگر این گزینه روی مقداری بزرگتر از 0 تنظیم شود و هیچ گزینهای از گزینههای san_path_err تنظیم نشده باشد، san_path_err_forget_rate روی مقدار delay_watch_checks تنظیم خواهد شد و san_path_err_threshold روی 1 قرار میگیرد. برای اطلاعات بیشتر، گزینههای san_path_err_forget_rate و san_path_err_threshold و بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- delay_wait_checks
- (منسوخشده) این گزینه منسوخ شده و به san_path_err_recovery_time نگاشت میشود. اگر این گزینه روی مقداری بزرگتر از 0 تنظیم شود و هیچ گزینهای از گزینههای san_path_err تنظیم نشده باشد، san_path_err_recovery_time روی حاصلضرب مقدار delay_wait_checks در max_polling_interval تنظیم خواهد شد. این کار تقریباً همان مدت زمان انتظاری را فراهم میکند که پیشتر delay_wait_checks ایجاد میکرد. همچنین، san_path_err_threshold روی 1 تنظیم میشود. برای اطلاعات بیشتر گزینههای san_path_err_recovery_time و san_path_err_threshold و بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: no
- marginal_pathgroups
- اگر روی off تنظیم شود، گزینههای delay_*_checks، marginal_path_* و san_path_err_* از بازگرداندن مسیرهای لبمرزی یا "ناپایدار (shaky)" به مدار جلوگیری میکنند تا زمانی که برای مدتی پایش شوند. این امر میتواند وضعیتی ایجاد کند که در آن تمام مسیرهای غیرلبمرزی قطع شوند و هیچ مسیری تا زمانی که multipathd متوجه نشده و یک مسیر لبمرزی را احیا نکند قابل استفاده نباشد. اگر دستگاه چندمسیری به گونهای پیکربندی نشده باشد که در این حالت I/O را صفبندی کند، با وجود در دسترس بودن مسیرهای لبمرزی میتواند باعث بروز خطاهای I/O شود. با این حال، اگر این گزینه روی on تنظیم شود، هرگاه یکی از روشهای تشخیص مسیر لبمرزی تعیین کند که یک مسیر لبمرزی است، آن مسیر احیا شده و در یک گروه مسیر مجزا قرار میگیرد که تنها پس از امتحان تمام گروههای مسیر غیرلبمرزی استفاده خواهد شد. این کار از احتمال وقوع خطاهای I/O در زمانی که مسیرهای لبمرزی همچنان قابل استفاده هستند جلوگیری میکند. پس از پایش مسیر به مدت زمان پیکربندیشده و اعلام سلامت آن، مسیر به گروه مسیر عادی خود بازگردانده میشود. اگر این گزینه روی fpin تنظیم شود، multipathd اعلانهای fpin را دریافت کرده، وضعیت مسیرها را بر همان اساس روی "marginal" تنظیم میکند و مسیرها را مطابق آنچه برای on شرح داده شد بازگروهبندی مینماید. این گزینه را نمیتوان در ترکیب با سایر گزینههای "تشخیص مسیرهای ناپایدار" (در ادامه) استفاده کرد. نکته: اگر این گزینه روی fpin تنظیم شود، گزینههای marginal_path_* و san_path_err_* به طور ضمنی روی no قرار میگیرند. همچنین، این گزینه در بازپیکربندی دیمن multipathd نمیتواند به یا از fpin تغییر یابد؛ برای اعمال این تغییر باید multipathd را مجدداً راهاندازی کرد. برای اطلاعات بیشتر بخش "تشخیص مسیرهای ناپایدار (Shaky paths detection)" در ادامه را ببینید.
- مقدار پیشفرض: off
- find_multipaths
- این گزینه کنترل میکند که آیا multipath و multipathd تلاش کنند روی دستگاههای غیر مسدود که با آنها مواجه میشوند نگاشتهای چندمسیری ایجاد کنند یا خیر. این موضوع در دو حالت اهمیت دارد: الف) هنگامی که در طول پردازش قواعد udev، یک دستگاه توسط multipath -u شناسایی میشود (تنها و تنها در صورتی از پردازش بیشتر دستگاه توسط لایههای بالاتر - مانند LVM - جلوگیری میشود که به عنوان یک مسیر معتبر دستگاه چندمسیری تلقی گردد)، و ب) هنگامی که multipathd دستگاه جدیدی را شناسایی میکند. مقادیر ممکن عبارتند از:
- strict
- هر دو ابزار multipath و multipathd تنها دستگاههایی را به عنوان دستگاه چندمسیری در نظر میگیرند که پیش از این بخشی از یک نگاشت چندمسیری بوده باشند و بنابراین در فایل /etc/multipath/wwids فهرست شده باشند. کاربران میتوانند با استفاده از دستور multipathd add map به صورت دستی نگاشتهای چندمسیری را تنظیم کنند. پس از تنظیم دستی، نگاشت در فایل WWIDs به خاطر سپرده شده و در آینده به صورت خودکار برپا خواهد شد.
- off
- ابزار Multipath مانند strict رفتار میکند. ابزار Multipathd مانند greedy رفتار میکند. no یا 0 به عنوان نام مستعار برای off پذیرفته میشود.
- on
- هر دو ابزار multipathd و multipath در صورتی یک دستگاه را به عنوان دستگاه چندمسیری در نظر میگیرند که شرایط strict برقرار باشد، یا دستکم دو مسیر غیر مسدود با WWID یکسان شناسایی شده باشند. yes یا 1 به عنوان نام مستعار برای on پذیرفته میشود.
- greedy
- هر دو ابزار multipathd و multipath هر دستگاه غیر مسدود را به عنوان مسیر دستگاه چندمسیری تلقی میکنند.
- smart
- این گزینه با find_multipaths on فقط در نحوه برخورد با دستگاههای جدیدی تفاوت دارد که تاکنون فقط یک مسیر برای آنها شناسایی شده است. هنگامی که چنین دستگاهی برای نخستین بار در قواعد udev مشاهده میشود، به عنوان یک دستگاه چندمسیری تلقی میگردد. multipathd منتظر میماند تا ببیند آیا مسیرهای اضافی با همان WWID ظاهر میشوند یا خیر. اگر چنین شود، یک نگاشت چندمسیری برپا میکند. اگر تا زمان پایان مهلت زمانی این اتفاق نیفتد یا اگر برپایی نگاشت شکست بخورد، یک uevent جدید برای دستگاه ارسال میشود؛ در مواجهه دوم در قواعد udev، با دستگاه به عنوان یک دستگاه غیرچندمسیری رفتار شده و به لایههای بالاتر تحویل داده میشود. نکته: این ممکن است باعث ایجاد تاخیر در حین شناسایی دستگاهها شود اگر دستگاههای تکمسیری وجود داشته باشند که در لیست سیاه قرار نگرفته باشند.
- مقدار پیشفرض: strict
- find_multipaths_timeout
- مهلت زمانی بر حسب ثانیه برای انتظار جهت کشف مسیرهای اضافی پس از شناسایی نخستین مسیر، در صورتی که گزینه find_multipaths "smart" (بالا را ببینید) تنظیم شده باشد. اگر مقدار مثبت باشد، این مهلت برای تمام دستگاههای ناشناخته و غیرمسدود مشاهدهشده استفاده میشود. اگر مقدار منفی باشد (توصیه میشود)، تنها برای دستگاههای "شناختهشده" که دارای یک ورودی در جدول سختافزاری multipath هستند (خواه در جدول توکار یا در یک بخش device) اعمال میشود؛ سایر دستگاهها ("ناشناخته") برای جلوگیری از تاخیر در بوت تنها از مهلت زمانی 1 ثانیه استفاده خواهند کرد. مقدار 0 به معنای "استفاده از پیشفرض توکار" است. اگر find_multipaths مقداری غیر از smart داشته باشد، این گزینه هیچ تاثیری ندارد.
- مقدار پیشفرض: -10 (10 ثانیه برای سختافزار شناختهشده و 1 ثانیه برای سختافزار ناشناخته)
- uxsock_timeout
- مهلت زمانی دریافت CLI بر حسب میلیثانیه. برای سیستمهای بزرگتر، دستورات CLI ممکن است پیش از آزاد شدن قفل multipathd و امکان پردازش دستور CLI، دچار انقضای زمان شوند. این امر منجر به بازگرداندن خطاهایی مانند "timeout receiving packet" از دستورات CLI میشود. در این موارد توصیه میشود مهلت زمانی CLI افزایش یابد تا از بروز این مشکلات جلوگیری شود.
- مقدار پیشفرض: 4000
- retrigger_tries
- تعداد دفعاتی را تعیین میکند که multipathd برای به دست آوردن WWID تلاش میکند یک uevent را مجدداً ارسال کند.
- مقدار پیشفرض: 3
- retrigger_delay
- مدت زمان انتظار بر حسب ثانیه بین تلاشهای مجدد را تعیین میکند.
- مقدار پیشفرض: 10
- missing_uev_wait_timeout
- کنترل میکند که multipathd پس از ایجاد یک دستگاه چندمسیری جدید، چند ثانیه برای دریافت رخداد تغییر از udev برای آن دستگاه منتظر بماند، پیش از آنکه بارگذاریهای مجدد دستگاه را به طور خودکار فعال کند. معمولاً multipathd بارگذاریهای مجدد روی یک دستگاه را به تعویق میاندازد تا زمانی که یک change uevent از بارگذاری جدول اولیه دریافت نماید.
- مقدار پیشفرض: 30
- skip_kpartx
- اگر روی yes تنظیم شود، kpartx به طور خودکار روی دستگاه پارتیشن ایجاد نخواهد کرد.
- مقدار پیشفرض: no
- purge_disconnected
- اگر روی yes تنظیم شود، multipathd دستگاههایی را که در وضعیت قطعشده هستند به طور خودکار حذف میکند. یک مسیر زمانی قطعشده تلقی میشود که بررسیکننده مسیر TUR (تست آمادگی واحد) کد حسگری اسکازی "LOGICAL UNIT NOT SUPPORTED" (کلید حسگر 0x5، ASC/ASCQ 0x25/0x00) را دریافت کند. این حالت معمولاً نشان میدهد که LUN از نگاشت خارج شده یا دیگر توسط آرایه ذخیرهسازی ارائه نمیشود. این گزینه به پاکسازی ورودیهای کهنه دستگاه که در غیر این صورت در سیستم باقی میمانند کمک میکند.
- مقدار پیشفرض: no
- disable_changed_wwids
- (منسوخشده) این گزینه دیگر پشتیبانی نمیشود و نادیده گرفته خواهد شد.
- remove_retries
- تعداد دفعاتی را تعیین میکند که multipath تلاش میکند دستگاهی را که در حال استفاده است حذف کند. بین هر تلاش، multipath به مدت 1 ثانیه به خواب میرود.
- مقدار پیشفرض: 0
- max_sectors_kb
- پارامتر دستگاه max_sectors_kb را روی برخی از دستگاههای مسیر و دستگاه چندمسیری به مقدار مشخصشده تنظیم میکند. max_sectors_kb بزرگترین اندازه ورودی/خروجی، بر حسب واحدهای 1024 بایتی است که هسته برای یک درخواست ورودی/خروجی مجاز میداند. برای دستگاههای سختافزاری مانند دیسکهای SCSI، این مقدار توسط قابلیتهای سختافزار محدود میشود. بسیار حیاتی است که مقدار یک نگاشت چندمسیری هرگز بیشتر از حداقل مقدار تمام دستگاههای مسیر آن نباشد. این موضوع در زمان بارگذاری نگاشت چندمسیری توسط هسته تضمین میشود، اما دستکاری مقادیر یک نگاشت یا هر یک از مسیرهای آن در حالی که نگاشت فعال است میتواند باعث بروز شرایط رقابتی و خطاهای ورودی/خروجی شود. بنابراین این مقدار تنها زمانی توسط multipathd اعمال میشود که یک نگاشت چندمسیری برای نخستین بار ایجاد شود، یا زمانی که یک دستگاه مسیر به یک نگاشت اضافه گردد. در هر دو حالت، هسته از بروز شرایط رقابتی جلوگیری میکند.
تنظیم max_sectors_kb تضمین نمیکند که تمام دستگاههای مسیر این مقدار را تنظیم کنند. اگر مقدار یک دستگاه مسیر بیشتر از نگاشت چندمسیری دربرگیرنده آن باشد، این یک خطا نیست. همچنین اگر حد واقعی یک نگاشت کمتر از مقدار موجود در /etc/multipath.conf باشد نیز خطا تلقی نمیشود. این اتفاق زمانی میتواند رخ دهد که محدودیتهای سختافزاری یک یا چند دستگاه مسیر کمتر از مقدار پیکربندیشده باشد.
به طور معمول هسته و درایورهای دستگاه آن حداکثر اندازه ورودی/خروجی را مدیریت میکنند و نیازی نیست مدیران سیستم نگران max_sectors_kb باشند. اما برخی از دستگاههای سختافزاری ممکن است محدودیتهای اندازه ورودی/خروجی نادرستی را گزارش دهند، یا سایر اجزای محیط (مانند فابریک) ممکن است محدودیتهایی تحمیل کنند که هسته نتواند آنها را تشخیص دهد. در چنین مواردی تنظیم max_sectors_kb منطقی است. این مقدار باید هنگام ایجاد اولیه نگاشتها تنظیم شود و پس از آن تغییر نیابد. اگر این تنظیم حتماً باید برای یک نگاشت فعال تغییر کند، مقدار را در /etc/multipath.conf تنظیم کنید، دستور multipathd reconfigure را اجرا نمایید، و از multipathd del path <path> و multipathd add path <path> برای حذف و اضافه مجدد همان دستگاه مسیر استفاده کنید.
مقدار پیشفرض: <تعریفنشده>
- ghost_delay
- تعداد ثانیههایی را تعیین میکند که multipath پس از ایجاد دستگاهی که تنها دارای مسیرهای شبه (ghost) است، قبل از آماده علامتگذاری آن برای استفاده در systemd منتظر میماند. این کار به مسیرهای فعال فرصت میدهد تا پیش از آنکه multipath گرداننده سختافزاری را برای تغییر مسیرهای شبه به مسیرهای فعال اجرا کند، ظاهر شوند. تنظیم این گزینه روی 0 یا no باعث میشود multipath فوراً دستگاهی را که تنها مسیرهای شبه دارد به عنوان آماده علامتگذاری کند.
- مقدار پیشفرض: no
- auto_resize
- کنترل میکند چه زمانی multipathd به طور خودکار اندازه دستگاه چندمسیری را تغییر دهد. اگر روی never تنظیم شود، دستگاههای چندمسیری همیشه باید به صورت دستی با اجرای دستور multipathd resize map <name> تغییر اندازه داده شوند. اگر روی grow_only تنظیم شود، هنگامی که multipathd تشخیص دهد تمام مسیرهای یک دستگاه چندمسیری افزایش اندازه داشتهاند، دستگاه چندمسیری را به طور خودکار به اندازه جدید گسترش میدهد. اگر روی grow_shrink تنظیم شود، multipathd همچنین پس از تشخیص کاهش اندازه تمامی مسیرهای آن، دستگاه را به طور خودکار کوچک خواهد کرد.
- مقدار پیشفرض: never
- enable_foreign
- کتابخانههای خارجی را فعال یا غیرفعال میکند (بخش پشتیبانی از چندمسیری خارجی (FOREIGN MULTIPATH SUPPORT) در ادامه را ببینید). مقدار آن یک عبارت باقاعده است؛ کتابخانههای خارجی در صورتی بارگذاری میشوند که نام آنها (مثلاً "nvme") با عبارت مطابقت داشته باشد. به طور پیشفرض، هیچ کتابخانه خارجی فعالی وجود ندارد. این گزینه را روی "nvme" تنظیم کنید تا پشتیبانی از چندمسیری بومی NVMe فعال شود، یا ".*" برای فعالسازی تمامی کتابخانههای خارجی.
- مقدار پیشفرض: "NONE"
- recheck_wwid
- اگر روی yes تنظیم شود، هنگامی که یک مسیر شکستخورده بازیابی میشود، wwid آن دوباره بررسی خواهد شد. اگر wwid تغییر کرده باشد، مسیر از دستگاه چندمسیری فعلی حذف شده و به عنوان یک مسیر جدید اضافه میگردد. همچنین اگر یک مسیر به صورت دستی مجدداً اضافه شود، Multipathd شناسه wwid آن را دوباره بررسی خواهد کرد. این گزینه تنها برای دستگاههای SCSI کار میکند که برای استفاده از صفت پیشفرض uid_attribute یعنی ID_SERIAL، یا sysfs جهت دریافت wwid خود پیکربندی شدهاند.
- مقدار پیشفرض: no
بخشهای blacklist و blacklist_exceptions (blacklist and blacklist_exceptions sections)
بخش blacklist برای مستثنی کردن دستگاههای خاص از توپولوژی چندمسیری به کار میرود. این بخش عمدتاً برای جلوگیری از مدیریت دیسکهای محلی یا دستگاههای غیردیسکی (مانند LUNهای کنترلر آرایه ذخیرهسازی) توسط ابزارهای multipath-tools استفاده میشود.
در بخشهای blacklist و blacklist_exceptions، شروع یک مقدار نقلقولشده با علامت تعجب "!" تطابق بقیه عبارت باقاعده را معکوس میکند. برای نمونه، "!^sd[a-z]" با تمام مقادیری که با "sd[a-z]" شروع نمیشوند تطبیق مییابد. علامت تعجب را میتوان اسکیپ کرد ("\!") تا با یک علامت ! واقعی در ابتدای یک عبارت باقاعده مطابقت داده شود. توجه: علامت تعجب باید حتماً در داخل نقلقولها باشد، در غیر این صورت به عنوان شروع کامنت تلقی خواهد شد.
بخش blacklist_exceptions برای برگرداندن اقدامات بخش blacklist به کار میرود. این کار امکان گنجاندن انتخابی ("لیست سفید") دستگاههایی را فراهم میسازد که به طور معمول از طریق بخش blacklist مستثنی میشدند. یک کاربرد رایج، قرار دادن "همهچیز" در لیست سیاه با استفاده از یک عبارت باقاعده فراگیر و ایجاد ورودیهای مشخص در blacklist_exceptions برای دستگاههایی است که باید توسط multipath-tools مدیریت شوند.
کلیدواژههای زیر در هر دو بخش شناخته شدهاند. پیشفرضها خالی هستند مگر اینکه صراحتاً بیان شده باشد.
- devnode
- عبارت باقاعده منطبق بر گرههای دستگاه جهت استثنا/گنجاندن.
بخش blacklist پیشفرض شامل عبارت باقاعده "!^(sd[a-z]|dasd[a-z]|nvme[0-9])" است. این امر باعث میشود تمام انواع دستگاهها به جز scsi، dasd و nvme به طور پیشفرض از مدیریت چندمسیری مستثنی شوند.
- wwid
- عبارت باقاعده برای شناسه جهانی (WWID) دستگاه جهت استثنا/گنجاندن.
- device
- زیربخش برای توضیحات دستگاه. این زیربخش کلیدواژههای vendor و product را میشناسد. هر دو عبارت باقاعده هستند. برای توضیحات کامل این کلیدواژهها لطفاً توضیحات بخش devices را ببینید.
- property
- عبارت باقاعده برای یک ویژگی udev. تمام دستگاههایی که ویژگیهای udev منطبق دارند مستثنی/گنجانده خواهند شد. نحوه مدیریت کلیدواژه property ویژه است، زیرا دستگاهها باید دستکم یک ویژگی udev در لیست سفید داشته باشند؛ در غیر این صورت با آنها به عنوان لیست سیاه رفتار شده و پیام "blacklisted, udev property missing" در گزارشها نمایش داده میشود.
نکته: رفتار این گزینه در multipath-tools نسخه 0.8.2 در مقایسه با نسخههای پیشین تغییر کرده است. قرار گرفتن در لیست سیاه به دلیل نبود ویژگیها، تنها برای دستگاههایی اعمال میشود که ویژگی مشخصشده توسط uid_attribute (مثلاً ID_SERIAL) را تنظیم کرده باشند. پیشتر، این مورد روی هر دستگاهی اعمال میشد که احتمالاً باعث میشد دستگاهها به دلیل شرایط خطای موقت I/O در لیست سیاه قرار گیرند.
استثنای پیشفرض لیست سیاه (blacklist exception) عبارت است از: (SCSI_IDENT_|ID_WWN)، که باعث میشود دستگاههای SCSI خوشرفتار و دستگاههایی که WWN (شماره جهانی) ارائه میدهند گنجانده شوند و تمام موارد دیگر مستثنی گردند.
- protocol
- عبارت باقاعده برای پروتکل یک دستگاه جهت استثنا/گنجاندن.
رشتههای پروتکلی که multipath میشناسد عبارتند از: scsi:fcp، scsi:spi، scsi:ssa، scsi:sbp، scsi:srp، scsi:iscsi، scsi:sas، scsi:adt، scsi:ata، scsi:unspec، nvme:pcie، nvme:rdma، nvme:fc، nvme:tcp، nvme:loop، nvme:apple-nvme، nvme:unspec، ccw، cciss و undef. پروتکلی که یک مسیر استفاده میکند را میتوان با اجرای دستور زیر مشاهده کرد: multipathd show paths format "%d %P"
برای هر دستگاه، این ۵ معیار لیست سیاه به ترتیب "property, devnode, device, protocol, wwid" ارزیابی میشوند. اگر دستگاهی با هر یک از معیارها در لیست سیاه قرار گیرد، از مدیریت توسط multipathd مستثنی شده و معیارهای بعدی دیگر ارزیابی نمیشوند. برای هر معیار، اگر دستگاهی با هر دو مطابقت داشته باشد، لیست سفید بر لیست سیاه اولویت دارد.
نکته: علاوه بر لیست سیاه و لیست سفید، سایر گزینههای پیکربندی مانند find_multipaths نیز بر این امر تاثیر میگذارند که آیا یک دستگاه معین توسط multipath-tools مدیریت شود یا خیر.
بخش multipaths (multipaths section)
بخش multipaths امکان تنظیم صفتهای نگاشتهای چندمسیری را فراهم میکند. صفتهایی که از طریق بخش multipaths تنظیم میشوند (فهرست زیر را ببینید) بر تمام تنظیمات پیکربندی دیگر، از جمله تنظیمات بخش overrides، اولویت دارند.
تنها صفت شناختهشده برای بخش multipaths، زیربخش multipath است. اگر چندین زیربخش multipath منطبق با یک WWID معین وجود داشته باشد، محتوای این بخشها ادغام شده و تنظیمات ورودیهای بعدی اولویت خواهند داشت.
زیربخش multipath صفتهای زیر را میشناسد:
- wwid
- (اجباری) شناسه جهانی (World Wide Identifier). نگاشتهای چندمسیری شناساییشده با این صفت تطبیق داده میشوند. توجه داشته باشید که برخلاف صفت wwid در بخش blacklist، این صفت یک عبارت باقاعده یا زیررشته نیست؛ شناسههای WWID در داخل بخش multipaths باید دقیقاً مطابقت داشته باشند.
- alias
- نام نمادین برای نگاشت چندمسیری. این گزینه بر ورودی مربوط به همان WWID در فایل /etc/multipath/bindings اولویت دارد.
صفتهای زیر اختیاری هستند؛ در صورت عدم تنظیم، مقادیر پیشفرض از بخشهای overrides، devices یا defaults گرفته میشوند:
- path_grouping_policy
- path_selector
- prio
- prio_args
- failback
- no_path_retry
- flush_on_last_del
- features
- reservation_key
- user_friendly_names
- deferred_remove
- san_path_err_threshold
- san_path_err_forget_rate
- san_path_err_recovery_time
- marginal_path_err_sample_time
- marginal_path_err_rate_threshold
- marginal_path_err_recheck_gap_time
- marginal_path_double_failed_time
- delay_watch_checks
- delay_wait_checks
- skip_kpartx
- purge_disconnected
- max_sectors_kb
- ghost_delay
بخش devices (devices section)
- مهم:
- جدول توکار دستگاههای سختافزاری multipath-tools توسط اعضای جامعه لینوکس به این امید که مفید واقع شود ایجاد شده است. وجود یک ورودی برای یک محصول ذخیرهسازی معین در جدول سختافزاری به هیچ وجه به این معنی نیست که سازنده محصول، آن را به همراه multipath-tools به هر شکلی پشتیبانی کرده یا مورد آزمایش قرار داده است. همیشه برای اطلاعات مربوط به پشتیبانی به مستندات رسمی سازنده مراجعه کنید.
ابزارهای multipath-tools دارای یک جدول دستگاههای توکار با مقادیر پیشفرض معقول برای بیش از ۱۰۰ دستگاه ذخیرهسازی شناختهشده با قابلیت چندمسیری هستند. بخش devices میتواند برای بازنویسی این تنظیمات استفاده شود. اگر چندین تطابق برای یک دستگاه معین وجود داشته باشد، صفتهای تمام ورودیهای منطبق روی آن اعمال میشوند. اگر یک صفت در چندین زیربخش دستگاه منطبق مشخص شده باشد، ورودیهای بعدی اولویت خواهند داشت. بنابراین، ورودیهای موجود در فایلهای زیر پوشه /etc/multipath/conf.d/ (به ترتیب معکوس الفبایی) بالاترین اولویت را دارند و پس از آن ورودیهای /etc/multipath.conf قرار میگیرند؛ جدول سختافزاری توکار کمترین اولویت را دارد. در داخل یک فایل پیکربندی، ورودیهای بعدی نسبت به ورودیهای قبلی اولویت بالاتری دارند.
تنها صفت شناختهشده برای بخش devices، زیربخش device است. دستگاههای شناساییشده در سیستم بر اساس فیلدهای vendor، product و revision که همگی عبارات باقاعده گسترشیافته پوزیکس هستند (به regex(7) مراجعه کنید) با ورودیهای دستگاه تطبیق داده میشوند.
فیلدهای vendor، product و revision که multipath یا multipathd برای دستگاههای موجود در سیستم تشخیص میدهند به نوع دستگاه بستگی دارد. برای دستگاههای SCSI، این مقادیر متناظر با فیلدهای مربوطه در صفحه SCSI INQUIRY هستند. به طور کلی، دستور 'multipathd show paths format "%d %s"' میتواند برای مشاهده ویژگیهای تشخیصدادهشده تمام دستگاهها در سیستم استفاده شود.
زیربخش device صفتهای زیر را میشناسد:
- vendor
- (اجباری) عبارت باقاعده برای تطبیق نام سازنده.
- برای دستگاههای DASD، برچسب ثابت: IBM
- برای دستگاههای NVMe، برچسب ثابت: NVME
- product
- (اجباری) عبارت باقاعده برای تطبیق نام محصول.
- برای دستگاههای DASD، برچسب ثابت: S/390 DASD ECKD
- revision
- عبارت باقاعده برای تطبیق نسخه بازنگری محصول. در صورت عدم تعیین، با هر نسخه بازنگری تطبیق مییابد.
- product_blacklist
- محصولات مربوط به vendor دادهشده که با این رشته مطابقت دارند در لیست سیاه قرار میگیرند. این معادل یک ورودی device در بخش blacklist است که صفت vendor آن روی vendor این ورودی، و صفت product آن روی مقدار product_blacklist تنظیم شده باشد.
- alias_prefix
- پیشوند user_friendly_names برای استفاده در این نوع دستگاه، به جای مقدار پیشفرض "mpath".
- vpd_vendor
- اطلاعات صفحه vpd اختصاصی سازنده، با استفاده از نام اختصاری صفحه vpd. نام اختصاری صفحه vpd را میتوان با اجرای sg_vpd -e پیدا کرد. دیمن multipathd از این اطلاعات برای جمعآوری اطلاعات خاص دستگاه استفاده میکند که میتوان آن را با نویسه عام %g برای دستورات multipathd show maps format و multipathd show paths format نمایش داد. در حال حاضر تنها صفحه vpd مربوط به hp3par پشتیبانی میشود.
- hardware_handler
- گرداننده سختافزاری مورد استفاده برای این نوع دستگاه. گردانندههای سختافزاری زیر پیادهسازی شدهاند:
- 1 emc
- (وابسته به سختافزار) گرداننده سختافزاری برای آرایههای کلاس DGC مانند خانوادههای CLARiiON CX/AX و EMC VNX با حالت Failover Mode 1 (Passive Not Ready - PNR).
- 1 rdac
- (وابسته به سختافزار) گرداننده سختافزاری برای کلاس LSI/Engenio/NetApp RDAC مانند NetApp SANtricity سری E/EF و آرایههای تغییرنامیافته، با گزینه "Linux DM-MP (Kernel 3.9 or earlier)".
- 1 hp_sw
- (وابسته به سختافزار) گرداننده سختافزاری برای آرایههای HP/COMPAQ/DEC HSG80 و MSA/HSV منحصراً با حالت Active/Standby.
- 1 alua
- (وابسته به سختافزار) گرداننده سختافزاری برای آرایههای سازگار با SCSI-3 ALUA.
- 1 ana
- (وابسته به سختافزار) گرداننده سختافزاری برای آرایههای سازگار با NVMe ANA.
مقدار پیشفرض: <تنظیمنشده>
نکته مهم: هستههای لینوکس 4.3 و جدیدتر به طور خودکار یک گرداننده دستگاه را به دستگاههای شناختهشده (شامل تمام دستگاههای پشتیبانیکننده از SCSI-3 ALUA) متصل میکنند و تغییر دادن گرداننده پس از آن را مجاز نمیدانند. تنظیم hardware_handler برای چنین دستگاههایی در این هستهها هیچ تاثیری ندارد.
صفتهای زیر اختیاری هستند؛ در صورت عدم تنظیم، مقادیر پیشفرض از بخش defaults گرفته میشوند:
- path_grouping_policy
- uid_attribute
- path_selector
- path_checker
- prio
- prio_args
- features
- failback
- no_path_retry
- fast_io_fail_tmo
- dev_loss_tmo
- eh_deadline
- flush_on_last_del
- user_friendly_names
- retain_attached_hw_handler
- detect_prio
- detect_checker
- deferred_remove
- san_path_err_threshold
- san_path_err_forget_rate
- san_path_err_recovery_time
- marginal_path_err_sample_time
- marginal_path_err_rate_threshold
- marginal_path_err_recheck_gap_time
- marginal_path_double_failed_time
- delay_watch_checks
- delay_wait_checks
- skip_kpartx
- purge_disconnected
- max_sectors_kb
- ghost_delay
- all_tg_pt
بخش overrides (overrides section)
بخش overrides صفتهای اختیاری زیر را میشناسد؛ در صورت عدم تنظیم، مقادیر از بخشهای devices یا defaults گرفته میشوند:
- path_grouping_policy
- uid_attribute
- path_selector
- path_checker
- alias_prefix
- features
- prio
- prio_args
- failback
- no_path_retry
- flush_on_last_del
- fast_io_fail_tmo
- dev_loss_tmo
- eh_deadline
- user_friendly_names
- retain_attached_hw_handler
- detect_prio
- detect_checker
- deferred_remove
- san_path_err_threshold
- san_path_err_forget_rate
- san_path_err_recovery_time
- marginal_path_err_sample_time
- marginal_path_err_rate_threshold
- marginal_path_err_recheck_gap_time
- marginal_path_double_failed_time
- delay_watch_checks
- delay_wait_checks
- skip_kpartx
- purge_disconnected
- max_sectors_kb
- ghost_delay
- all_tg_pt
بخش overrides همچنین زیربخش اختیاری protocol را میشناسد و میتواند شامل چندین زیربخش protocol باشد. دستگاههای مسیر با استفاده از صفت اجباری type با زیربخش protocol تطبیق داده میشوند. صفتهای موجود در یک زیربخش protocol منطبق، بر صفتهای بقیه بخش overrides اولویت دارند. اگر چندین زیربخش protocol منطبق وجود داشته باشد، ورودیهای بعدی اولویت خواهند داشت.
- protocol subsection
- زیربخش protocol صفت اجباری زیر را میشناسد:
- type
- رشته پروتکل دستگاه مسیر. مقادیر ممکن عبارتند از scsi:fcp، scsi:spi، scsi:ssa، scsi:sbp، scsi:srp، scsi:iscsi، scsi:sas، scsi:adt، scsi:ata، scsi:unspec، nvme:pcie، nvme:rdma، nvme:fc، nvme:tcp، nvme:loop، nvme:apple-nvme، nvme:unspec، ccw، cciss و undef. این یک عبارت باقاعده نیست؛ رشته پروتکل دستگاه مسیر باید دقیقاً مطابقت داشته باشد. پروتکلی را که یک مسیر استفاده میکند میتوان با اجرای دستور زیر مشاهده کرد: multipathd show paths format "%d %P"
صفتهای زیر اختیاری هستند؛ در صورت عدم تنظیم، مقادیر پیشفرض از بخشهای overrides، devices یا defaults گرفته میشوند:
تولید WWID (WWID generation)
ابزار Multipath از یک شناسه جهانی (WWID) برای تعیین اینکه کدام مسیرها به یک دستگاه یکسان تعلق دارند استفاده میکند. فرض بر این است که هر مسیری که WWID یکسانی ارائه میدهد، به دستگاه یکسانی اشاره دارد.
شناسه WWID با چهار روش تولید میشود (به ترتیب اولویت):
- uid_attrs
- شناسه WWID با تطبیق نام گره دستگاه از صفتهای udev مشتق میشود؛ به uid_attrs در بالا مراجعه کنید.
- uid_attribute
- استفاده از مقدار صفت udev مشخصشده؛ به uid_attribute در بالا مراجعه کنید.
- sysfs
- تلاش برای تعیین WWID از روی صفتهای sysfs. برای دستگاههای SCSI، این کار به معنی خواندن صفحه دادههای حیاتی محصول (VPD) به نام "Device Identification" (0x83) است.
تنظیمات پیشفرض (استفاده از udev و uid_attribute پیکربندیشده از روی جدول سختافزاری توکار) باید در بیشتر سناریوها به خوبی کار کند. کاربرانی که مایل به فعالسازی ادغام uevent هستند باید uid_attrs را تنظیم نمایند.
تشخیص مسیرهای ناپایدار (Shaky paths detection)
یک مشکل رایج در پیکربندیهای SAN، وقوع خطاهای متناوب است: یک مسیر غیرقابلدسترس میشود، سپس برای مدت کوتاهی دوباره در دسترس قرار میگیرد، دوباره ناپدید میشود و به همین ترتیب. این اتفاق معمولاً در اتصالات ناپایدار رخ میدهد. در چنین رخدادهای متوالی و غیرقابلاطمینانی، سوئیچ کردن غیرضروری بین گروههای مسیر نامطلوب است. دیمن multipathd از سه روش مختلف برای تشخیص این وضعیت و مدیریت آن پشتیبانی میکند. همه این روشها در یک شیوه عملیاتی پایه مشترک هستند: اگر مسیری "ناپایدار (shaky)" یا "در حال تغییر مداوم (flipping)" تشخیص داده شود، و به ظاهر در وضعیت سالم باشد، بلافاصله به مدار بازگردانده (احیا) نمیشود. در عوض، در وضعیت "با تاخیر (delayed)" قرار گرفته و برای مدتی تحت پایش قرار میگیرد و تنها زمانی احیا میشود که وضعیت سالم پایدار به نظر برسد. اگر گزینه marginal_pathgroups تنظیم شده باشد، مسیر بلافاصله احیا میشود اما در یک گروه مسیر ویژه برای مسیرهای لبمرزی (marginal) قرار میگیرد. گروههای مسیر لبمرزی تا زمانی که تمام گروههای مسیر دیگر امتحان نشده باشند، استفاده نخواهند شد. در زمانی که مسیر به طور عادی احیا میشد، به گروه مسیر عادی خود بازگردانده خواهد شد. منطق تعیین وضعیت "ناپایدار"، و همچنین منطق زمان احیا، در میان این سه روش متفاوت است.
- ردیابی خرابی "delay_checks"
- (منسوخشده) این روش منسوخ شده و به روش "san_path_err" نگاشت شده است. برای اطلاعات بیشتر، گزینههای delay_watch_checks و delay_wait_checks در بالا را ببینید.
- ردیابی خرابی "marginal_path"
- اگر یک رخداد خرابی دوم (گذار از خوب به بد) در طول marginal_path_double_failed_time ثانیه پس از یک خرابی رخ دهد، پایش با فرکانس بالا برای مسیر آسیبدیده آغاز میشود: ورودی/خروجی با نرخ ۱۰ درخواست در ثانیه ارسال میگردد. این کار به مدت marginal_path_err_sample_time ثانیه انجام میشود. در طول این دوره، مسیر به مدار بازگردانده نمیشود. اگر در طول دوره پایش نرخ خطاها کمتر از marginal_path_err_rate_threshold باقی بماند، مسیر احیا خواهد شد. در غیر این صورت، برای مدت marginal_path_err_recheck_gap_time در وضعیت شکستخورده نگه داشته میشود و پس از آن، دوباره پایش خواهد شد. برای این روش، بازههای زمانی بر حسب ثانیه اندازهگیری میشوند.
- ردیابی خرابی "san_path_err"
- دیمن multipathd خرابیهای مسیر را برای هر مسیر میشمارد. هنگامی که تعداد خرابیها از مقدار ارائهشده توسط san_path_err_threshold فراتر رود، مسیر به مدت san_path_err_recovery_time ثانیه احیا نخواهد شد. در حین شمارش خرابیها، multipathd به ازای هر "san_path_err_forget_rate" تیک، یک خرابی گذشته را "فراموش میکند"؛ بنابراین اگر خطاها بیشتر از یک بار در بازه نرخ فراموشی رخ ندهند، شمارش خرابیها افزایش نمییابد و آستانه هرگز برآورده نمیشود. تیکها مدت زمان بین بررسیهای مسیر توسط multipathd هستند که متغیر بوده و توسط پارامترهای polling_interval و max_polling_interval کنترل میشوند.
این الگوریتم جای خود را به ردیابی خرابی "marginal_path" داده است، اما برای سازگاری با گذشته همچنان پشتیبانی میشود.
- ردیابی خرابی "FPIN"
- فابریکهای فایبر چنل میتوانند هاستها را از مشکلات سطح فابریک مانند نقصهای یکپارچگی یا ازدحام، با اعلانهای موسوم به اعلانهای تاثیر عملکرد فابریک (Fabric Performance Impact Notifications یا FPINs) مطلع سازند. با دریافت اعلانهای fpin از طریق ELS، دیمن multipathd وضعیت مسیر و پورت مربوطه را به marginal تغییر خواهد داد.
برای جزئیات بیشتر به مستندات گزینههای مربوطه در بالا مراجعه کنید. استفاده از بیش از یکی از این روشها برای هر نگاشت چندمسیری معین اکیداً توصیه نمیشود، زیرا دو روش همزمان ممکن است به روشهای غیرقابل پیشبینی با یکدیگر تداخل داشته باشند. اگر روش "marginal_path" فعال باشد، پارامترهای "san_path_err" به طور ضمنی روی 0 تنظیم میشوند.
پشتیبانی از چندمسیری خارجی (FOREIGN MULTIPATH SUPPORT)
ابزارهای multipath و multipathd میتوانند کتابخانههای "خارجی (foreign)" را برای افزودن پشتیبانی از سایر فناوریهای چندمسیری به جز دیوایسمپر (device mapper) لینوکس بارگذاری کنند. در حال حاضر این پشتیبانی محدود به چاپ اطلاعات شناساییشده درباره پیکربندی چندمسیری است. در خروجی توپولوژی، نام نگاشتهای خارجی با نام کتابخانه خارجی در داخل براکتها پیشوند میگیرد، مانند این مثال:
# multipath -ll uuid.fedcba98-3579-4567-8765-123456789abc [nvme]:nvme4n9 NVME,Some NVMe controller,FFFFFFFF size=167772160 features='n/a' hwhandler='ANA' wp=rw |-+- policy='n/a' prio=50 status=optimized | `- 4:38:1 nvme4c38n1 0:0 n/a optimized live `-+- policy='n/a' prio=50 status=optimized `- 4:39:1 nvme4c39n1 0:0 n/a optimized live
کتابخانه خارجی "nvme" پشتیبانی از چندمسیری بومی NVMe در هسته را فراهم میکند. این کتابخانه بخشی از بسته استاندارد multipath است.
مشکلات شناختهشده (KNOWN ISSUES)
استفاده از گزینه queue_if_no_path میتواند در شرایطی که تمام مسیرهای یک LUN آفلاین میشوند، منجر به قفل شدن فرآیندها در وضعیت D state (خواب غیرقابلوقفه) و غیرقابلکشتن شدن آنها گردد. توصیه میشود به جای آن از گزینه no_path_retry استفاده شود.
استفاده از queue_if_no_path یا no_path_retry ممکن است در صورتی که تنظیم dev_loss_tmo منجر به حذف دستگاه در حین صفبندی I/O شود، به بنبست (deadlock) ختم گردد. دیمن چندمسیری تنظیم dev_loss_tmo را بر این اساس بهروزرسانی میکند تا از این بنبست جلوگیری نماید. از این رو اگر هر دو مقدار مشخص شوند، ترتیب اولویت عبارت است از: no_path_retry, queue_if_no_path, dev_loss_tmo.
فایلها (FILES)
مسیرهای پیشفرض برای فایلها و دایرکتوریهای پیکربندی:
- /etc/multipath.conf
- فایل پیکربندی اصلی.
- /etc/multipath/conf.d/
- دایرکتوری فایلهای قطرهای (drop-in) پیکربندی.
- /etc/multipath/bindings
- فایل پیوندها (bindings)؛ زمانی استفاده میشود که گزینه user_friendly_names روی yes تنظیم شده باشد تا به هر دستگاه چندمسیری یک نام مستعار پایدار و یکتا اختصاص دهد.
- /etc/multipath/prkeys
- فایل کلیدهای رزرو پایدار؛ توسط multipathd برای پیگیری کلید رزرو استفادهشده برای یک WWID خاص هنگامی که reservation_key روی file تنظیم شده است، استفاده میشود.
- /etc/multipath/wwids
- فایل شناسههای جهانی (WWIDs)؛ توسط multipath برای پیگیری شناسههای WWID مربوط به LUNهایی که در گذشته برای آنها دستگاههای چندمسیری ایجاد شده است به کار میرود.
- /run/multipathd.pid
- فایل شناسه فرآیند (PID).
همچنین ببینید (SEE ALSO)
udev(8), dmsetup(8), multipath(8), multipathc(8), multipathd(8).
نویسندگان (AUTHORS)
مجموعه multipath-tools توسط کریستوف واروکی (Christophe Varoqui) <christophe.varoqui@opensvc.com> و دیگران توسعه یافته است.
| 2026-06-13 | Linux |