| FAILOVER(8) | NUT Manual | FAILOVER(8) |
نام (NAME)
failover - درایور تغییر وضعیت خودکار و افزونگی برای یوپیاس (UPS Failover Driver)
خلاصه دستور (SYNOPSIS)
failover -h
failover -a UPS_NAME [OPTIONS]
یادداشت
این صفحه راهنما فقط ویژگیهای خاص درایور failover را مستند میکند. برای کسب اطلاعات درباره درایور هسته، به nutupsdrv(8) مراجعه کنید.
توضیحات (DESCRIPTION)
درایور failover مانند یک پراکسی هوشمند برای چندین درایور «واقعی» UPS عمل میکند. این درایور به درایورهای زیرین UPS از طریق سوکتهای محلی UNIX (یا لولههای نامگذاریشده در Windows) متصل شده و آنها را نظارت میکند، و سلامت و شایستگی آنها را برای وظیفه «اصلی» (primary) طبق مجموعهای از قواعد و اولویتهای قابلپیکربندی توسط کاربر بهطور مداوم ارزیابی مینماید.
در هر لحظه مشخص، failover یک درایور UPS را به عنوان primary برمیگزیند، و دستورات، متغیرها و وضعیت آن را به دنیای بیرون ارائه میدهد، درست مانند اینکه مستقیماً با آن UPS در حال ارتباط است. از دید کلاینتها (مانند upsmon(8) یا upsc(8))، درایور failover رفتاری دقیقاً شبیه یک UPS منفرد دارد، افزونگی زیرین را پنهان میسازد، و امکان انتقال بدون وقفه و یکپارچه میان تمام درایورهای UPS تحتنظارت و دادههای آنها را فراهم میکند.
درایور بر اساس موارد زیر بهصورت پویا درایور اصلی UPS را ارتقا داده یا تنزل رتبه میدهد:
اگر درایور اصلی فعلی از دسترس خارج شود یا دیگر معیارهای لازم را برآورده نکند، درایور بهطور خودکار به یک درایور مناسبتر تغییر وضعیت میدهد (failover). در طول انتقال، تضمین میکند که دادهها بلافاصله جایگزین شوند، بدون اینکه upsd(8) آنها را منقضی (stale) قلمداد کند یا کلاینتها بر اساس هرگونه وضعیت افتکرده قبلی عمل نمایند.
هنگامی که هیچ درایور اصلی مناسبی در دسترس نباشد، سیستم وارد یک وضعیت جایگزین (fallback) قابلپیکربندی میشود:
رسانههای ارتباطی مختلفی را میتوان برای اتصال به هر درایور منفرد UPS استفاده کرد (مانند USB، Serial، Ethernet). درایور failover مستقیماً در سطح سوکت ارتباط برقرار میکند و بنابراین متکی بر فعال بودن upsd(8) نیست.
آرگومانهای اضافی (EXTRA ARGUMENTS)
این درایور از تنظیمات زیر پشتیبانی میکند:
port=drivername-devicename,drivername2-devicename2,...
inittime=seconds
deadtime=seconds
relogtime=seconds
noprimarytime=seconds
maxconnfails=count
coolofftime=seconds
fsdmode=0|1|2
checkruntime=0|1|2|3
strictfiltering=0|1
status_have_any=OL,CHRG,...
status_have_all=OL,CHRG,...
status_nothave_any=OB,OFF,...
status_nothave_all=OB,LB,...
یادداشت
آرگومانهای status_* عمدتاً برای تنظیم وزندهی درایورهای UPS در نظر گرفته شدهاند، تا اجازه دهند برخی از آنها بر اساس وضعیت خود بر دیگران اولویت یابند. به عنوان مثال، درایوری که وضعیت OL را گزارش میکند ممکن است بر درایوری با گزارش ALARM OL ترجیح داده شود. با اینکه strictfiltering میتواند فعال شود، اما فیلترهای وضعیت بیشترین اثربخشی را هنگام استفاده در ترکیب با مجموعه پیشفرض PRIORITIES مبتنی بر اتصال دارند. برای جزئیات بیشتر، بخش مربوطه را در ادامه ببینید.
پیادهسازی (IMPLEMENTATION)
آرگومان port در ups.conf(5) باید به سوکتهای محلی درایور (یا لولههای نامگذاریشده در Windows) که درایورهای «واقعی» UPS استفاده میکنند اشاره کند. یک پیکربندی پایه پیشفرض با چند درایور میتواند به این شکل باشد:
[realups] driver = usbhid-ups port = auto [realups2] driver = usbhid-ups port = auto [failover] driver = failover port = usbhid-ups-realups,usbhid-ups-realups2
تمام کلاینتهای upsmon(8) باید طوری تنظیم شوند که UPS مربوط به failover را تحت نظر بگیرند.
درایور بهطور کامل از تنظیم متغیرها و اجرای دستورات آنی روی درایور UPS اصلی انتخابشده فعلی پشتیبانی میکند؛ این دستورات پراکسی میشوند و ردیابی سرتاسری نیز برای آنها میسر است (upscmd(8) و upsrw(8) -w). ممکن است متوجه شوید برخی متغیرها و دستورات دارای پیشوند upstream. هستند؛ این امر برای تفکیک شفاف دستورات بالادستی از دستورات خود failover است.
جهت راحتی کار، دستورات مدیریتی بیشتری در دسترس قرار گرفته است تا مستقیماً بر فرآیند انتخاب درایور اصلی اثر بگذارند یا آن را لغو کنند، مثلاً برای عملیات نگهداری:
فراخوانی هر یک از این دو دستور بدون آرگومان، اثری مشابه با ارسال مقدار 0 دارد، اما صرفاً برای همان دستور خاص اعمال میشود و بر دیگری تأثیری ندارد.
اولویتها (PRIORITIES)
همانطور که در بالا اشاره شد، درایورهای اصلی بهصورت پویا بر اساس وضعیت فعلی خود و طبق مجموعهای دقیق از اولویتهای تحتتأثیر کاربر انتخاب میشوند، که عبارتند از:
درایور UPS با بالاترین اولویت محاسبهشده به عنوان اصلی برگزیده میشود؛ موارد تساوی بر اساس ترتیب نام سوکتهای ارائهشده در آرگومان port حلوفصل میگردند.
برای فیلترهای وضعیت تعریفشده توسط کاربر، ترتیب داخلی زیر رعایت میشود:
اگر strictfiltering فعال باشد، اولویتهای ۲ تا ۴ اعمال نمیشوند.
اگر هیچ فیلتر وضعیتی توسط کاربر تنظیم نشده باشد، اولویت ۱ قابلاعمال نخواهد بود.
یادداشت
شرط اولیه و اساسی برای هرگونه انتخاب این است که سوکت UPS قابلاتصال باشد و درایور UPS حداقل یک دسته کامل از دادهها را در طول حیات خود منتشر کرده باشد. درایورهای UPS که این شرط را برآورده نسازند همواره رد صلاحیت میشوند.
مبانی طراحی (RATIONALE)
در محیطهای پیچیده تأمین برق، ارائه یک منبع واحد و سازگار از اطلاعات UPS به upsmon(8) گاهی نسبت به پایش مستقیم چندین درایور مستقل ترجیح دارد. درایور failover نقش یک پل را ایفا میکند و به upsmon(8) اجازه میدهد تصمیمات خود را بر اساس مناسبترین دادههای در دسترس اتخاذ کند، بدون آنکه ناچار به تفسیر ورودیهای متناقض یا منابع افتکیفیتیافته باشد.
درایور failover که در اصل برای سناریوهایی نظیر سیستمهای دارای دو منبع تغذیه (dual-PSU) یا مسیرهای ارتباطی افزونه به یک UPS واحد طراحی شده بود، از پیکربندیهای پیشرفتهتر نیز پشتیبانی میکند - برای نمونه هنگامی که چندین دستگاه UPS بار پایینی مشترکی را تغذیه میکنند (از طریق سوییچهای خودکار STS/ATS)، یا هنگامی که قابلیت اطمینان درایورها با یکدیگر تفاوت دارد. در این موارد، درایور میتواند با منطق خارجی یا اسکریپتنویسی ترکیب شود تا انتخاب اصلی را بهصورت پویا تنظیم کند و تنزل تدریجی عملکرد (graceful degradation) را تسهیل نماید. این ساختارها همچنین میتوانند از یکپارچگی بیشتر با خانواده درایورهای clone، نظیر clone(8) یا clone-outlet(8)، برای کنترل دقیقتر و پایش تا سطح پریزهای خروجی (outlet) بهرهمند شوند.
علاوه بر این، در سناریوهای خاصتر، برخی ابزارهای جانبی متصل به NUT یا رابطهای کاربری گرافیکی ممکن است محدود به پایش تنها یک دستگاه UPS باشند. در چنین مواردی، failover میتواند با نمایش فقط مرتبطترین یا پراولویتترین منبع داده کمک کند تا این ابزارها در چارچوب محدودیتهای خود بدون از دست دادن اطلاعات حیاتی کار کنند.
در نهایت، این درایور نظارت و کنترل توان دقیقتری نسبت به منطق دودویی برخط/آفلاین صرف فراهم میآورد و به مدیران اجازه میدهد پیش از تبدیل شرایط نامساعد به رویدادهای بحرانی یا الزام upsmon(8) به واکنش، اقدامات لازم را در مراحل ابتدایی انجام دهند.
محدودیتها (LIMITATIONS)
هنگام استفاده از failover برای افزونگی میان چند درایور UPS متصل به یک دستگاه واحد UPS، دادهها بین درایورها ترکیب یا مالتیپلاکس نمیشوند. در نتیجه، ممکن است برخی از نقاط داده در بعضی درایورها موجود باشند اما در دیگران یافت نشوند.
برای محاسبات checkruntime، واحد هر دو متغیر battery.runtime و battery.runtime.low برابر با ثانیه فرض میشود. درایورهای UPS که این مقادیر را با واحدهای متفاوتی گزارش دهند، ناسازگار با استانداردهای متغیرهای NUT در نظر گرفته شده و باید به عنوان نقص به توسعهدهندگان NUT گزارش داده شوند.
نویسنده (AUTHOR)
Sebastian Kuttnig <sebastian.kuttnig@gmail.com>
همچنین ببینید (SEE ALSO)
upscmd(8)، upsrw(8)، ups.conf(5)، upsc(8)، upsmon(8)، nutupsdrv(8)، clone(8)، clone-outlet(8)
منابع اینترنتی:
صفحه اصلی NUT (Network UPS Tools): https://www.networkupstools.org/historic/v2.8.5
| 06/21/2026 | Network UPS Tools 2.8.5 |