RPC.STATD(8)

الاسم
rpc.statd - خفيضة خدمة NSM

موجز
rpc.statd [-dh?FLNvV] [-H prog] [-n my-name] [-o outgoing-port]
[-p listener-port] [-P path]
[--nlm-port port] [--nlm-udp-port port]

الوصف
أقفال الملفات ليست جزءًا من حالة نظام الملفات المستمرة. وبالتالي تُفقد حالة القفل عند إعادة تشغيل المضيف.

يجب على أنظمة ملفات الشبكة أيضًا اكتشاف متى تُفقد حالة القفل بسبب إعادة تشغيل مضيف بعيد. بعد إعادة تشغيل عميل NFS، يجب على خادم NFS تحرير جميع أقفال الملفات التي تحتفظ بها التطبيقات التي كانت تعمل على ذلك العميل. بعد إعادة تشغيل الخادم، يجب على العميل تذكير الخادم بأقفال الملفات التي تحتفظ بها التطبيقات التي تعمل على ذلك العميل.

بالنسبة لإصدار NFS 2 [RFC1094] وإصدار NFS 3 [RFC1813]، يُستخدم بروتوكول مراقب حالة الشبكة (أو NSM اختصارًا) لإعلام نظراء NFS بعمليات إعادة التشغيل. في لينكس، يشكل مكونان منفصلان في مساحة المستخدم خدمة NSM:

rpc.statd
    عفريت ينصت لإشعارات إعادة التشغيل من المضيفين الآخرين، ويدير قائمة المضيفين المراد إشعارهم عند إعادة تشغيل النظام المحلي

sm-notify
    برنامج مساعد يشعر نظراء NFS بعد إعادة تشغيل النظام المحلي

يقوم مدير أقفال NFS المحلي بتنبيه rpc.statd المحلي لكل نظير بعيد يجب مراقبته. عندما يعيد النظام المحلي التشغيل، يقوم أمر sm-notify بإشعار خدمة NSM على النظراء المراقبين بإعادة التشغيل. عندما يعيد نظير بعيد التشغيل، يقوم ذلك النظير بإشعار rpc.statd المحلي، والذي بدوره يمرر إشعار إعادة التشغيل إلى مدير أقفال NFS المحلي.

عملية NSM بالتفصيل
يؤدي أول تفاعل لقفل الملفات بين عميل وخادم NFS إلى قيام مديري أقفال NFS في كلا الطرفين بالاتصال بخدمة NSM المحلية الخاصة بهما لتخزين معلومات حول الطرف المقابل. في لينكس، يتصل مدير القفل المحلي بـ rpc.statd.

يسجل rpc.statd معلومات حول كل نظير NFS مٌراقب على وحدة تخزين مستمرة. تصف هذه المعلومات كيفية الاتصال بنظير بعيد في حالة إعادة تشغيل النظام المحلي، وكيفية التعرف على النظير المٌراقب الذي يبلغ عن إعادة التشغيل، وكيفية إخطار مدير القفل المحلي عندما يشير النظير المٌراقب إلى أنه أعاد التشغيل.

يرسل عميل NFS اسم مضيف، يعرف باسم المستدعِي للعميل، في كل طلب قفل ملف. يمكن لخادم NFS استخدام اسم المضيف هذا لإرسال استدعاءات GRANT غير متزامنة للعميل، أو لإشعار العميل بأنه أُعيد تشغيله.

يمكن لخادم NFS في لينكس توفير caller_name الخاص بالعميل أو عنوان شبكة العميل إلى rpc.statd. لأغراض بروتوكول NSM، يُعرف هذا الاسم أو العنوان باسم mon_name للمتراسل المراقب. بالإضافة إلى ذلك، يخبر مدير القفل المحلي rpc.statd بما يعتقد أنه اسم مضيفه الخاص. لأغراض بروتوكول NSM، يُعرف اسم المضيف هذا باسم my_name.

لا يوجد تفاعل مكافئ بين خادم NFS وعميل لإعلام العميل بـ caller_name الخاص بالخادم. لذلك، لا يعرف عملاء NFS فعليًا ما هو mon_name الذي قد يستخدمه خادم NFS في طلب SM_NOTIFY. يستخدم عميل NFS في لينكس اسم مضيف الخادم من أمر التثبيت لتحديد خوادم NFS التي يعاد تشغيلها.

  إشعار إعادة التشغيل
عند إعادة تشغيل النظام المحلي، يقرأ أمر sm-notify قائمة النظراء المراقبين من التخزين الدائم ويرسل طلب SM_NOTIFY إلى خدمة NSM على كل نظير بعيد مدرج. يستخدم سلسلة mon_name كوجهة. لتحديد المضيف الذي أعيد تشغيله، يرسل أمر sm-notify سلسلة my_name المسجلة عند مراقبة ذلك البعيد. يطابق rpc.statd البعيد طلبات SM_NOTIFY الواردة باستخدام هذه السلسلة، أو عنوان شبكة المتصل، مع نظير واحد أو أكثر في قائمة المراقبة الخاصة به.

إذا لم يجد rpc.statd نظيرا في قائمة مراقبته يطابق طلب SM_NOTIFY الوارد، فلن يُمرَّر الإشعار إلى مدير الأقفال المحلي. بالإضافة إلى ذلك، لكل نظير رقم حالة NSM خاص به، وهو عدد صحيح 32-بت يُرفَع بعد كل إعادة تشغيل بواسطة أمر sm-notify. يستخدم rpc.statd هذا الرقم للتمييز بين عمليات إعادة التشغيل الحقيقية والإشعارات المعادة.

جزء من استعادة قفل NFS هو إعادة اكتشاف المتراسلين الذين يحتاجون إلى المراقبة مرة أخرى. يمسح الأمر sm-notify قائمة المراقبة في التخزين المستمر بعد كل إعادة تشغيل.

الخيارات

-d, --no-syslog
    يتسبب في كتابة rpc.statd لرسائل السجل على stderr بدلاً من سجل النظام، إذا تم تحديد الخيار -F أيضًا.

-F, --foreground
    يبقي rpc.statd ملتصقًا بطرفيته التحكمية بحيث يمكن مراقبة عملية NSM مباشرة أو تشغيلها تحت مصحح. إذا لم يتم تحديد هذا الخيار، يقوم rpc.statd بتشغيل نفسه في الخلفية بعد بدئه بفترة وجيزة.

-h, -?, --help
    يتسبب في عرض rpc.statd لمعلومات الاستخدام على stderr ثم الخروج.

-H, --ha-callout prog
    يحدد برنامج استدعاء عالي التوفر. إذا لم يتم تحديد هذا الخيار، لا يتم تنفيذ أي استدعاءات. راجع قسم استدعاءات عالية التوفر أدناه للتفاصيل.

-L, --no-notify
    يمنع rpc.statd من تشغيل أمر sm-notify عند بدئه، مع الحفاظ على رقم حالة NSM الحالي وقائمة المراقبة.

    ملاحظة: يحتوي أمر sm-notify على فحص لضمان تشغيله مرة واحدة فقط بعد كل إعادة تشغيل للنظام. يمنع هذا إشعار إعادة تشغيل زائف إذا أعيد تشغيل rpc.statd بدون الخيار -L.

-n, --name ipaddr | hostname
    يُستخدم هذا النص فقط بواسطة أمر sm-notify كعنوان المصدر الذي تُرسل منه طلبات إعلام إعادة التشغيل.

    يمكن التعبير عن صيغة ipaddr كعنوان عرض IPv4 أو IPv6. إذا لم يُحدد هذا الخيار، يستخدم rpc.statd عنوانًا شاملاً كعنوان ربط النقل. راجع sm-notify(8) للتفاصيل.

-N  يتسبب في تشغيل rpc.statd لأمر sm-notify ثم الخروج. نظرًا لإمكانية تشغيل أمر sm-notify مباشرةً أيضًا، فإن هذا الخيار مهمل.

-o, --outgoing-port port
    يُحدد رقم منفذ المصدر الذي يجب أن يستخدمه أمر sm-notify عند إرسال إعلامات إعادة التشغيل. راجع sm-notify(8) للتفاصيل.

-p, --port port
    يُحدد رقم المنفذ المستخدم لمقابس الاستماع RPC. إذا لم يُحدد هذا الخيار، يحاول rpc.statd استشارة /etc/services، فإذا نجح في الحصول على المنفذ، يضبط نفس المنفذ لجميع مقابس الاستماع، وإلا يختار منفذًا عابرًا عشوائيًا لكل مقبس استماع.

    يمكن استخدام هذا الخيار لتثبيت قيمة منفذ مستمعيه عندما يجب أن تعبر طلبات SM_NOTIFY جدار حماية بين العملاء والخوادم.

-T, --nlm-port port
    يُحدد رقم المنفذ الذي يجب أن يستمع عليه lockd لطلبات NLM. يضبط هذا كلاً من منفذي TCP وUDP ما لم يُضبط منفذ UDP بشكل منفصل.

-U, --nlm-udp-port port
    يُحدد رقم منفذ UDP الذي يجب أن يستمع عليه lockd لطلبات NLM.

-P, --state-directory-path مسار_الاسم
    يُحدد اسم مسار الدليل الأصلي حيث توجد معلومات حالة NSM. إذا لم يُحدد هذا الخيار، يستخدم rpc.statd /var/lib/nfs مبدئيًا.

    بعد البدء، يحاول rpc.statd ضبط UID وGID الفعليين للمالك والمجموعة للدليل الفرعي sm لهذا الدليل. بعد تغيير المعرفات الفعلية، يحتاج rpc.statd فقط إلى الوصول إلى الملفات في sm وsm.bak داخل مسار دليل الحالة.

-v, -V, --version
    يتسبب في عرض rpc.statd لمعلومات الإصدار على stderr ثم الخروج.

ملف الضبط
يمكن التحكم في العديد من الخيارات التي يمكن ضبطها في سطر الأوامر أيضًا من خلال القيم المضبوطة في أقسام [statd] أو، في بعض الحالات، [lockd] من ملف التهيئة /etc/nfs.conf. تشمل القيم المعترف بها في قسم [statd] port وoutgoing-port وname وstate-directory-path وha-callout والتي لكل منها نفس تأثير الخيار الذي يحمل نفس الاسم.

تشمل القيم المعترف بها في قسم [lockd] port وudp-port والتي لها نفس تأثير الخيارين --nlm-port و--nlm-udp-port، على التوالي.

الأمن
يجب بدء تشغيل البرنامج الخفي rpc.statd كجذر لاكتساب الامتيازات اللازمة لإنشاء مقابس بمنافذ مصدر مميزة، وللوصول إلى قاعدة بيانات معلومات الحالة. نظرًا لأن rpc.statd يحافظ على خدمة شبكة طويلة التشغيل، فإنه يتخلى عن امتيازات الجذر بمجرد بدء التشغيل لتقليل خطر هجوم تصعيد الامتيازات.

خلال العملية العادية، يكون معرف المستخدم الفعال الذي يختاره هو مالك دليل الحالة. يتيح له هذا الاستمرار في الوصول إلى الملفات في ذلك الدليل بعد التخلي عن صلاحيات الجذر. للتحكم في معرف المستخدم الذي يختاره rpc.statd، استخدم ببساطة chown(1) لضبط مالك دليل الحالة.

يمكنك أيضًا حماية مستمعي rpc.statd باستخدام مكتبة tcp_wrapper أو iptables(8). لاستخدام مكتبة tcp_wrapper، أضف أسماء المضيفات للأقران التي يجب السماح لها بالوصول إلى /etc/hosts.allow. استخدم اسم البرنامج الخفي statd حتى لو كان للملف الثنائي rpc.statd اسم ملف مختلف.

لمزيد من المعلومات، راجع صفحات الدليل tcpd(8) وhosts_access(5).

ملاحظات إضافية
استرداد القفل بعد إعادة التشغيل أمر بالغ الأهمية للحفاظ على سلامة البيانات ومنع تعليق التطبيقات غير الضروري. لمساعدة rpc.statd في مطابقة طلبات SM_NOTIFY مع طلبات NLM، يجب اتباع عدد من أفضل الممارسات، بما في ذلك:

    يجب أن يتطابق اسم عقدة UTS لأنظمتك مع أسماء DNS التي يستخدمها متراسلو NFS للاتصال بها

    يجب أن تكون أسماء عقد UTS لأنظمتك دائمًا أسماء نطاقات مؤهلة بالكامل

    يجب أن تكون خرائط DNS الأمامية والعكسية لأسماء عقد UTS متسقة

    يجب أن يتطابق اسم المضيف الذي يستخدمه العميل لضم (mount) الخادم مع mon_name الخاص بالخادم في طلبات SM_NOTIFY التي يرسلها

لا يؤدي فصل نظام ملفات NFS بالضرورة إلى توقف عميل NFS أو الخادم عن مراقبة بعضهما البعض. قد يستمر كلاهما في مراقبة بعضهما البعض لفترة في حال أدت حركة مرور NFS اللاحقة بينهما إلى عمليات وصل جديدة وقفل ملفات إضافي.

في لينكس، إذا جرى إلغاء تحميل وحدة النواة lockd أثناء التشغيل العادي، فإن جميع نظراء NFS البعيدين سيصبحون غير مراقبين. يمكن أن يحدث هذا في عميل NFS، على سبيل المثال، إذا قام أداة تركيب تلقائي (automounter) بإزالة جميع نقاط تركيب NFS بسبب عدم النشاط.

  استدعاءات التوفر العالي
يمكن لـ rpc.statd تنفيذ برنامج استدعاء خاص أثناء معالجة طلبات SM_MON وSM_UNMON وSM_UNMON_ALL الناجحة، أو عند استلام SM_NOTIFY. يمكن استخدام مثل هذا البرنامج في بيئات NFS عالية التوفر (HA-NFS) لتتبع حالة القفل التي قد تحتاج إلى ترحيل بعد إعادة تشغيل النظام.

يتم تحديد اسم برنامج الاستدعاء باستخدام الخيار -H. يتم تشغيل البرنامج مع 3 وسائط: الأولى إما add-client أو del-client أو sm-notify اعتمادًا على سبب الاستدعاء. الثانية هي mon_name للنظير المراقَب. الثالثة هي caller_name لمدير القفل الطالب لـ add-client أو del-client، وإلا فهي IP_address للمتصل الذي يرسل SM_NOTIFY. الرابعة هي state_value في طلب SM_NOTIFY.

  دعم IPv6 و TI-RPC
TI-RPC هو شرط أساسي لدعم NFS على IPv6. إذا كان دعم TI-RPC مدمجًا في rpc.statd، فإنه يحاول بدء المستمعين على ناقلات الشبكة المميزة بـ 'visible' في /etc/netconfig. طالما بدأ مستمع ناقل شبكة واحد على الأقل بنجاح، سيعمل rpc.statd.

البيئة

RPC_STATD_NO_NOTIFY=
    إذا تم تعيينه إلى عدد صحيح موجب، فله نفس تأثير --no-notify.

الملفات

/var/lib/nfs/sm
    الدليل الذي يحتوي على قائمة المراقبة

/var/lib/nfs/sm.bak
    الدليل الذي يحتوي على قائمة الإشعارات

/var/lib/nfs/state
    رقم حالة NSM لهذا المضيف

/run/run.statd.pid
    ملف pid

/etc/netconfig
    قاعدة بيانات قدرة ناقل الشبكة

انظر أيضًا
sm-notify(8), nfs(5), rpc.nfsd(8), rpcbind(8), tcpd(8), hosts_access(5), iptables(8), netconfig(5)

RFC 1094 - "NFS: مواصفات بروتوكول نظام ملفات الشبكة"
RFC 1813 - "NFS الإصدار 3 مواصفات البروتوكول"
بروتوكولات OpenGroup للعمل البيني: XNFS، الإصدار 3W - الفصل 11

المؤلفون
جيف أبوف <juphoff@users.sourceforge.net>
Olaf Kirch <okir@monad.swb.de>
إتش. جيه. لو <hjl@gnu.org>
لون هوبيرجر <hohberger@missioncriticallinux.com>
بول كليمنتس <paul.clements@steeleye.com>
Chuck Lever <chuck.lever@oracle.com>

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.