NBD-SERVER(5) NBD-SERVER(5)

nbd-server - فایل پیکربندی برای nbd-server

/etc/nbd-server/config

این فایل امکان پیکربندی nbd-server را فراهم می‌کند.

در حالی که /etc/nbd-server/config فایل پیکربندی پیش‌فرض است، می‌توان آن را با گزینه -C در nbd-server(1) تغییر داد.

فایل پیکربندی از خطوط سربرگ بخش‌ها، خطوط یادداشت (کامنت) و خطوط گزینه‌ها تشکیل شده است.

سربرگ هر بخش یک نام یکتا است که درون براکت‌های کروشه‌ای ("[" و "]") قرار می‌گیرد. سربرگ بخش نشان‌دهنده آغاز یک بخش است؛ یک بخش تا شروع بخش بعدی یا پایان فایل (هرکدام زودتر رخ دهد) ادامه می‌یابد. نخستین بخش در فایل پیکربندی باید generic نامیده شود و برای گزینه‌های عمومی که بر بیش از یک export اعمال می‌شوند به‌کار می‌رود. این بخش همیشه باید وجود داشته باشد، حتی اگر هیچ گزینه‌ای درون آن تعریف نشده باشد. هر بخش دیگر، یک export را تعریف می‌کند؛ نام این بخش‌ها مهم نیست، به جز این‌که باید مطمئن شوید هر نام بخش یکتا باشد. در حالتی که کلاینت برای مشخص کردن یک export به جای درگاه (port) از یک نام استفاده می‌کند، نام بخش به عنوان نام آن export به‌کار می‌رود و بنابراین باید یکتا باشد.

خط یادداشت خطی است که با فاصله‌های خالی اختیاری شروع شده و به دنبال آن علامت هش ("#") می‌آید و تا پایان همان خط ادامه دارد. در خطوط گزینه‌ها یا خطوط سربرگ بخش‌ها نمی‌توان از یادداشت‌ها استفاده کرد.

خط گزینه خطی است که با نام گزینه آغاز می‌شود، به دنبال آن علامت مساوی ("=") قرار دارد و سپس مقدار گزینه می‌آید. یک گزینه می‌تواند از نوع رشته (string)، عدد صحیح (integer) یا بولی (boolean) باشد. مقدار یک گزینه بولی می‌تواند با true یا false مشخص شود (نه yes، no، on، off، 1 یا 0). مقدار پیش‌فرض تمامی گزینه‌های بولی false است، مگر این‌که به گونه دیگری تعیین شده باشد. هیچ مقداری نباید درون نقل‌قول قرار گیرد؛ همیشه آن را مستقیماً وارد کنید. برای گزینه‌های رشته‌ای، فاصله‌های خالی ابتدای مقدار حذف می‌شوند (اما فاصله‌های انتهایی حذف نمی‌شوند).

اختیاری؛ بولی (boolean)

تعیین می‌کند که آیا کلاینت مجاز است فهرستی از exportهای این سرور را دریافت کند یا خیر. در صورت فعال بودن، کلاینت می‌تواند دستور nbd-client -l را برای دریافت فهرست exportهای موجود روی این سرور اجرا کند.

اختیاری؛ رشته (string)

اگر این گزینه تنظیم شود، باید شامل مسیر یک گواهی‌نامه CA با فرمت PEM X.509 باشد که برای اعتبارسنجی گواهی‌نامه‌های ارائه‌شده توسط کلاینت استفاده می‌شود. اگر این گزینه تنظیم نشود، گواهی‌نامه‌های کلاینت بررسی نخواهند شد.

اختیاری؛ رشته (string)

اگر این گزینه تنظیم شود، باید شامل مسیر یک گواهی‌نامه عمومی با فرمت PEM X.509 باشد که برای مذاکره TLS با کلاینت به‌کار می‌رود. اگر keyfile تنظیم شده باشد اما certfile تنظیم نشده باشد، سرور تلاش می‌کند گواهی‌نامه را از مسیر مشخص‌شده توسط keyfile بخواند.

اختیاری؛ بولی (boolean).

سرور را به حالت FORCEDTLS تغییر می‌دهد.

نکته: این تنظیم با فعال کردن گزینه force_tls برای تک‌تک exportها به صورت جداگانه یکسان نیست. حالت دوم اجازه می‌دهد برخی گزینه‌ها در طول مذاکره صادر شوند (مانند گزینه "list exports"، حتی اگر نتیجه‌ای خالی برگرداند)، در حالی که فعال‌سازی این گزینه اجازه استفاده از هیچ گزینه‌ای را در طول مذاکره نمی‌دهد، به جز خود گزینه STARTTLS (برای تغییر انتقال داده به TLS).

استفاده از حالت FORCEDTLS محیط امن‌تری را فراهم می‌سازد، زیرا سرور اجازه برقراری هیچ ارتباطی را تا زمانی که TLS با موفقیت مذاکره نشده باشد نخواهد داد. با این حال، این کار امکان راه‌اندازی یک export بدون رمزنگاری را برای کلاینت‌های قدیمی‌تر، یا برای کلاینت‌هایی که می‌خواهند از حافظه swap استفاده کرده و دچار بن‌بست (deadlock) نشوند، ناممکن می‌سازد.

استفاده از این پارامتر بدون تعیین مقدار برای سایر پارامترهای مرتبط با TLS امکان‌پذیر است، اما بی‌فایده خواهد بود.

اختیاری؛ رشته (string).

نام گروهی که سرور باید تحت آن اجرا شود. اگر این پارامتر مشخص نشود، nbd-server تلاشی برای تغییر GID خود نخواهد کرد (بنابراین GID اجرا همان گروه اصلی کاربری خواهد بود که nbd-server را اجرا کرده است). در صورت تعیین، nbd-server پس از باز کردن پورت‌ها اما پیش از پذیرش اتصالات یا باز کردن فایل‌ها، GID خود را تغییر می‌دهد.

اختیاری؛ رشته (string)

آرگومان باید دایرکتوری‌ای شامل فایل‌هایی با پسوند «.conf» باشد؛ این فایل‌ها به گونه‌ای پردازش می‌شوند که گویی بخشی از فایل پیکربندی اصلی هستند. توجه داشته باشید که این فایل‌های پیکربندی اضافی نمی‌توانند دارای بخش [generic] باشند؛ هر پیکربندی مربوط به بخش generic باید در فایل پیکربندی اصلی قرار گیرد.

اگر این آرگومان مشخص نشود، هیچ دایرکتوری‌ای جستجو نخواهد شد. اگر مشخص شود اما دایرکتوری وجود نداشته باشد، nbd-server با پیام خطای مناسب خارج می‌شود؛ اگر مشخص شود اما دایرکتوری داده‌شده خالی باشد، nbd-server به کار خود ادامه می‌دهد (مگر اینکه هیچ export دیگری پیکربندی نشده باشد، که در این صورت با یک پیام خطای مناسب خارج می‌شود).

اختیاری؛ رشته (string)

اگر این گزینه تنظیم شود، باید شامل مسیر کلید خصوصی با فرمت PEM X.509 باشد که برای مذاکره TLS با کلاینت استفاده می‌شود. برای فعال‌سازی TLS، تنظیم این گزینه الزامی است.

اختیاری؛ رشته (string)

اگر این گزینه تنظیم شود، باید شامل فهرستی از آدرس‌های IP محلی باشد که با کاما از هم جدا شده‌اند و سرور باید برای اتصالات nbd-client(8) روی آن‌ها گوش فرا دهد. اگر تنظیم نشود، nbd-server روی "::, 0.0.0.0" گوش می‌دهد که باعث می‌شود nbd-server روی تمام آدرس‌های محلی IPv4 و IPv6 گوش دهد. برای محدود کردن به IPv6، آدرس را به عنوان "::" مشخص کنید. برای محدود کردن به IPv4، آن را به عنوان "0.0.0.0" مشخص نمایید.

اختیاری؛ عدد صحیح (integer)؛ پیش‌فرض 4

از نسخه NBD 3.12، nbd-server درخواست‌ها را در یک ریسه (thread) اصلی می‌خواند، اما پردازش این درخواست‌ها و ارسال پاسخ را در تعدادی ریسه کارگر (worker threads) جداگانه انجام می‌دهد که بین همه exportها به اشتراک گذاشته شده‌اند. با این پارامتر می‌توانید تعداد این ریسه‌های کارگر را پیکربندی کنید.

مقدار پیش‌فرض باید برای یک سرور دوهسته‌ای با یک دیسک مناسب باشد. اگر سروری قدرتمند دارید که کاری جز سرویس‌دهی NBD انجام نمی‌دهد، ممکن است بخواهید این مقدار را افزایش دهید.

اختیاری؛ بولی (boolean)

در نسخه‌های بین 2.9.17 و 3.9.1 از nbd-server، هنگامی که این گزینه روی true تنظیم می‌شد، nbd-server تمام exportها را روی پورت‌های جداگانه با پروتکل دست‌تکانی قدیمی (پیش از 2.9.17) ارائه می‌کرد. در آن حالت، گزینه 'port' برای تک‌تک exportها الزامی بود.

با این حال، از نسخه 3.10 برنامه nbd-server، این گزینه دیگر پشتیبانی نمی‌شود و هر تلاشی برای استفاده از آن منجر به خروج nbd-server با پیام خطای مناسب خواهد شد.

اختیاری؛ رشته (string)

پورتی که باید روی آن برای اتصالات سبک جدید (new-style) nbd-client گوش فرا دهد. در صورت عدم تعیین، از پورت تخصیص‌یافته توسط IANA یعنی 10809 استفاده می‌شود.

اختیاری؛ بولی (boolean)

اجازه می‌دهد تا سرور در صورت امکان از فراخوانی سیستمی splice() برای رسیدگی به فراخوانی‌های خواندن یا نوشتن استفاده کند. استفاده از splice می‌تواند سرعت رسیدگی به این فراخوانی‌ها را به میزان چشمگیری افزایش دهد. متأسفانه، splice نمی‌تواند در ترکیب با TLS یا حالت copyonwrite استفاده شود و تنها برای درخواست‌های کوچکتری از 1MiB کار خواهد کرد.

برای مدیریت این شرایط، اگر splice و copyonwrite هر دو برای یک export فعال باشند، سرور با یک پیام خطای مناسب خارج می‌شود؛ اگر TLS فعال باشد، گزینه splice را نادیده گرفته و به خواندن و نوشتن عادی بازمی‌گردد؛ و به طور مشابه هنگامی که اندازه درخواست از 1MiB فراتر رود، به خواندن عادی بازمی‌گردد.

اختیاری؛ رشته (string).

نام کاربری که این سرور باید تحت آن اجرا شود. اگر این پارامتر مشخص نشود، nbd-server تلاشی برای تغییر UID خود نخواهد کرد (بنابراین UID اجرا همان کاربری خواهد بود که nbd-server را اجرا کرده است). در صورت تعیین، nbd-server پس از باز کردن پورت‌ها اما پیش از پذیرش اتصالات یا باز کردن فایل‌ها، UID خود را تغییر می‌دهد.

اختیاری؛ رشته (string)

مسیر سوکت دامنه یونیکس (UNIX domain socket).

در صورت تعیین، سرور روی یک سوکت دامنه یونیکس با نام مشخص‌شده گوش می‌دهد. روی سوکت‌های دامنه یونیکس تنها مذاکره سبک جدید (newstyle) پشتیبانی می‌شود. اگر سوکت دامنه یونیکس تنظیم شود، سرور دیگر برای اتصالات TCP گوش فرا نخواهد داد.

اختیاری؛ بولی (boolean)

اگر true باشد و unixsock مشخص شده باشد، سرور هم روی سوکت دامنه یونیکس پیکربندی‌شده و هم روی هر سوکت TCP یا SDP پیکربندی‌شده گوش فرا خواهد داد. مقدار پیش‌فرض false است.

اختیاری؛ رشته (string)؛ پیش‌فرض NORMAL:+VERS-TLS-ALL:-VERS-TLS1.0:-VERS-TLS1.1:%SERVER_PRECEDENCE

این گزینه امکان پیکربندی رشته اولویت GnuTLS را فراهم می‌کند که برای انتخاب الگوریتم‌هایی به‌کار می‌رود که GnuTLS اجازه مذاکره آن‌ها با کلاینت را می‌دهد. مشخصات NBD STARTTLS ایجاب می‌کند که کلاینت‌ها و سرورها به صورت پیش‌فرض به TLS1.2 یا بالاتر نیاز داشته باشند، بنابراین رشته پیش‌فرض تمام نسخه‌های قدیمی‌تر پروتکل TLS را غیرفعال می‌کند.

تمام نسخه‌های GnuTLS از پرچم %SERVER_PRECEDENCE پشتیبانی نمی‌کنند؛ پرچمی که برای اعلام این نکته به کار می‌رود که سرور نباید به اولویت‌های الگوریتمی انتخاب‌شده توسط کلاینت توجه کند. اگر از نسخه قدیمی‌تری از GnuTLS (مانند 2.12) استفاده می‌کنید، ممکن است لازم باشد رشته اولویتی را تعیین کنید که شامل پرچم %SERVER_PRECEDENCE نباشد.

برای توضیحات درباره مقادیر ممکن این گزینه، به فصل "Priority strings" در مستندات GnuTLS مراجعه فرمایید.

اختیاری؛ رشته (string)؛ پیش‌فرض خالی

نام فایل احراز هویت برای این export. این فایل باید برای هر آدرس IP یا هر شبکه (که باید به سبک CIDR به صورت network/masklen مشخص شود) یک خط داشته باشد. خطوط خالی و هر محتوایی که پس از علامت هش ('#') در هر خط قرار گیرد نادیده گرفته می‌شوند.

اگر فایل وجود نداشته باشد، همه مجاز به اتصال هستند. اگر فایل وجود داشته باشد اما خالی باشد، هیچ‌کس مجاز به اتصال نخواهد بود. در غیر این صورت، nbd-server تنها به کلاینت‌هایی اجازه اتصال می‌دهد که آدرس IP آن‌ها در این فایل فهرست شده باشد.

متناظر با گزینه -l در خط فرمان است. با این حال، توجه داشته باشید که برای خط فرمان، مسیر پیش‌فرض /etc/nbd-server/allow است.

اختیاری؛ بولی (boolean).

مشخص می‌کند که آیا این یک export از نوع کپی‌هنگام‌نوشتن (copy-on-write) است یا خیر. اگر چنین باشد، هرگونه نوشتن روی این export در فایل اصلی نوشته نخواهد شد، بلکه در یک فایل جداگانه نوشته می‌شود که به محض قطع اتصال حذف خواهد شد. نتیجه استفاده از این گزینه این است که nbd-server تا حدودی کندتر خواهد شد و هرگونه داده نوشته‌شده پس از قطع اتصال از دست خواهد رفت.

متناظر با گزینه -c در خط فرمان است.

اختیاری؛ رشته (string).

محل نوشتن فایل‌های تفاضلی (diff files) مربوط به copy-on-write را مشخص می‌کند. در صورت عدم وجود این گزینه، فایل‌های copy-on-write در همان دایرکتوری فایل export اصلی نوشته خواهند شد. برای export کردن فایل‌ها در حالت copy-on-write از دایرکتوری‌ای که کاربر اجراکننده nbd-server دسترسی نوشتن به آن را ندارد، سودمند است.

اگر حالت copy-on-write فعال نباشد، این گزینه هیچ تأثیری ندارد.

الزامی؛ رشته (string).

نام فایل (یا دستگاه بلوکی) که به اشتراک گذاشته (export) خواهد شد. این باید یک مسیر و نام فایل کامل و مطلق باشد؛ مسیرهای نسبی مجاز نیستند. در صورت استفاده هم‌زمان با گزینه temporary، این گزینه یک الگو را برای فایل موقت مربوطه تعیین می‌کند و بنابراین می‌تواند برای کنترل دایرکتوری‌ای که فایل در آن ایجاد می‌شود استفاده شود. اگر فایل وجود نداشته باشد، اما filesize تنظیم شده باشد، فایل ایجاد خواهد شد.

توجه داشته باشید که nbd-server تنها زمانی تلاش می‌کند فایل export را پیدا کرده و باز کند که یک کلاینت واقعاً متصل شود؛ در نتیجه، nbd-server باید بتواند پس از تغییر به کاربر و گروهی که با استفاده از گزینه‌های user و group مشخص شده‌اند، این فایل را باز کرده و بخواند؛ همچنین، nbd-server خطاهای مربوط به این گزینه را تنها هنگام اتصال کلاینت شناسایی خواهد کرد.

در صورت تعیین در خط فرمان، این باید آرگومان دوم باشد.

نکته: این پارامتر با "exportname" به آن معنایی که در سند پروتکل تعریف شده (و نامی است که nbd-client باید برای انتخاب export صحیح ارسال کند) یکسان نیست؛ برای آن منظور از نام بخش استفاده می‌شود. نام فایلی که قرار است export شود بنا به دلایل تاریخی در فایل پیکربندی exportname نامیده شده است و به سادگی قابل تغییر نیست.

اختیاری؛ عدد صحیح (integer)؛ پیش‌فرض تشخیص خودکار.

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

در صورت تعیین در خط فرمان، این باید آرگومان سوم باشد.

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server به کلاینت اطلاع می‌دهد که پشتیبانی می‌کند و تمایل دارد در صورت دریافت درخواست‌های flush توسط لایه آسانسور (elevator layer)، آن‌ها برایش ارسال شوند. دریافت درخواست flush باعث اجرای fdatasync() (یا در صورت تنظیم گزینه sync، اجرای fsync()) روی فضای ذخیره‌سازی پس‌زمینه خواهد شد. این کار پایداری را در صورت خاموش شدن غیرمنتظره به قیمت کاهش کارایی افزایش می‌دهد. این گزینه تأثیری نخواهد داشت مگر اینکه توسط کلاینت پشتیبانی شود.

اختیاری؛ بولی (boolean).

استفاده از TLS را برای در دسترس بودن این export الزامی می‌کند.

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

فعال‌سازی این گزینه در حالی که مشخصات اعتبارسنجی TLS در بخش [generic] پیکربندی نشده باشند امکان‌پذیر است، اما بی‌فایده خواهد بود.

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server به کلاینت اعلام می‌کند که از دستورات fua (دسترسی اجباری به واحد - force unit access) هنگامی که لایه آسانسور آن‌ها را دریافت می‌کند، پشتیبانی کرده و مایل به دریافت آن‌هاست. دریافت یک دستور force unit access باعث همگام‌سازی دستور مشخص‌شده روی حافظه پس‌زمینه با استفاده از sync_file_range() (در صورت پشتیبانی) یا در غیر این صورت fdatasync() می‌شود. این کار پایداری را در زمان خاموش شدن غیرعادی به قیمت افت کارایی بالا می‌برد. این گزینه تأثیری ندارد مگر اینکه کلاینت از آن پشتیبانی کند.

اختیاری؛ رشته (string)

نادیده گرفته می‌شود، صرفاً برای سازگاری با پارامتر سراسری منسوخ‌شده 'oldstyle' حفظ شده است.

اختیاری؛ عدد صحیح (integer)

در صورت تعیین، تعداد اتصالات باز را برای این export محدود می‌کند.

اختیاری؛ بولی (boolean).

اگر این گزینه روی true تنظیم شود، nbd-server به دنبال فایل‌هایی به شکل exportname.integer خواهد گشت، که در آن exportname نام فایلی است که در غیر این صورت استفاده می‌شد (پس از انجام هرگونه تبدیل نام برای مجازی‌سازی) و integer یک عدد صحیح است که از 0 شروع شده و زمانی که فایل دیگری پیدا نشود پایان می‌یابد.

اندازه هر فایل به طور خودکار تشخیص داده می‌شود، حتی اگر گزینه filesize تعیین شده باشد.

متناظر با گزینه -m در خط فرمان است.

اختیاری؛ بولی (boolean).

اگر این گزینه روی true تنظیم شود، nbd-server به دنبال فایل‌هایی به شکل exportname/TREEXXXX/.../FILEXXXX خواهد گشت، که در آن exportname نام فایلی است که در غیر این صورت استفاده می‌شد (پس از انجام هرگونه تبدیل نام برای مجازی‌سازی) و TREEXXXX و FILEXXXX نام دایرکتوری‌ها و مسیرهای تولیدشده خودکار برای فایل‌های بلوکی مجزا هستند.

فایل‌ها و دایرکتوری‌ها به صورت خودکار ایجاد می‌شوند. در صورتی که بلوک مربوطه به عنوان استفاده‌نشده علامت‌گذاری شود، فایل‌ها حذف خواهند شد. اندازه فایل‌های بلوکی مجزا روی ۴۰۹۶ بایت ثابت است. حداکثر ۱۰۲۴ فایل/زیرپوشه در هر پوشه وجود خواهد داشت. سطح تودرتویی مناسبی از زیرپوشه‌ها ایجاد خواهد شد تا یک سیستم‌فایل به اندازه مجموع filesize بایت برای تشکیل یک دستگاه بلوکی مجازی ایجاد گردد.

این قابلیت برای ارائه یک دستگاه بلوکی مجازی روی یک سیستم‌فایل زیربنایی که فایل‌های بزرگ را به خوبی مدیریت نمی‌کند (به عنوان مثال fuse/ftpfs، davfs یا سایر سیستم‌فایل‌های شبکه‌ای) مفید است.

این ویژگی با -m مانعةالجمع است و در صورت ارائه هر دو، اولویت با این ویژگی خواهد بود. گزینه معادل در خط فرمان وجود ندارد، زیرا کنترل از طریق خط فرمان منسوخ تلقی می‌شود. با این حال می‌توانید یک فایل پیکربندی سفارشی را با گزینه -C مشخص کنید. هنگام استفاده از این ویژگی، تعیین گزینه filesize الزامی است!

اختیاری؛ رشته (string)

در صورت تعیین، دستوری در نظر گرفته می‌شود که پس از قطع اتصال یک کلاینت اجرا خواهد شد. این می‌تواند برای پاکسازی آنچه prerun آماده کرده بود، ثبت در گزارش‌ها، یا کارهای مشابه مفید باشد.

اگر رشته متنی '%s' در دستور وجود داشته باشد، با نام فایلی که به تازگی بسته شده است جایگزین خواهد شد.

برخلاف گزینه prerun، وضعیت خروج postrun نادیده گرفته می‌شود.

اختیاری؛ رشته (string)

در صورت تعیین، این دستور پس از اتصال یک کلاینت به سرور (و پذیرفته شدن آن)، اما پیش از شروع سرویس‌دهی توسط سرور اجرا خواهد شد. اگر دستور شامل رشته متنی '%s' باشد، این رشته با نام فایلی که nbd-server می‌خواهد آن را export کند جایگزین می‌شود.

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

اگر دستور با وضعیت خروج غیرصفر اجرا شود، nbd-server فرض می‌کند که export با شکست مواجه شده است و از سرویس‌دهی به آن خودداری می‌کند.

اختیاری؛ بولی (boolean).

نوشتن روی دستگاه را ممنوع می‌کند. در صورت تعیین این گزینه، nbd-server به هر کلاینتی که بخواهد روی دستگاه بنویسد یک خطا برمی‌گرداند.

استفاده از این گزینه هم‌زمان با copyonwrite امکان‌پذیر است، اما بی‌فایده خواهد بود.

متناظر با گزینه -r در خط فرمان است.

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server به کلاینت اطلاع می‌دهد که ترجیح می‌دهد درخواست‌ها را به ترتیب آسانسور (بهینه‌سازی‌شده) ارسال کند، احتمالاً به این دلیل که فضای ذخیره‌سازی پشتیبان دارد و فاقد آسانسور محلی است. به طور پیش‌فرض، کلاینت از QUEUE_FLAG_NONROT استفاده می‌کند که عملکرد آسانسور را عملاً به ادغام بلوک‌ها محدود می‌سازد. با مشخص کردن این فلگ روی سرور، کلاینت از QUEUE_FLAG_NONROT استفاده نخواهد کرد، به این معنی که آسانسور کلاینت، ترتیب‌دهی عادی آسانسور را برای درخواست‌های I/O انجام خواهد داد. توجه داشته باشید که حتی زمانی که رسانه ذخیره‌سازی پشتیبان از نوع چرخشی (مانند دیسک سخت) است، معمولاً نیازی به تعیین این فلگ نیست، زیرا الگوریتم آسانسور خود سرور استفاده خواهد شد. این فلگ فقط زمانی لازم است که سرور از الگوریتم آسانسور استفاده نمی‌کند یا الگوریتم آسانسور عملاً بی‌اثر شده است (مانند زمانی که گزینه sync تنظیم شده باشد). این گزینه تأثیری نخواهد داشت مگر اینکه توسط کلاینت پشتیبانی شود.

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server به جای استفاده صرف از IP، از پروتکل Socket Direct Protocol (SDP) برای سرویس‌دهی export استفاده خواهد کرد. این روش سریع‌تر است، اما نیازمند سخت‌افزار ویژه (معمولاً چیزی مانند InfiniBand) و پشتیبانی در هسته سیستم‌عامل است.

علاوه بر این، پشتیبانی از این گزینه باید در زمان کامپایل، با استفاده از گزینه --enable-sdp برای اسکریپت configure فعال شده باشد. اگر این گزینه در فایل پیکربندی یافت شود و nbd-server از SDP پشتیبانی نکند، آنگاه nbd-server با یک پیام خطا خارج خواهد شد.

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server از فایل‌های تنک (sparse files) برای پیاده‌سازی گزینه copy-on-write استفاده خواهد کرد؛ چنین فایل‌هایی فضای کمتری نسبت به آنچه به نظر می‌رسند اشغال می‌کنند، که به nbd-server اجازه می‌دهد با فایل به گونه‌ای رفتار کند که گویی دقیقاً به بزرگی همان دستگاه بلوکی مقصد است.

در صورت غیرفعال بودن این گزینه، nbd-server هر بلوک جدید نوشته‌شده را به انتهای فایل copy-on-write نگاشت می‌کند، به این معنی که nbd-server باید پس از هر بلوک ۴۰۹۶ بایتی، با استفاده از lseek(2) به موقعیت مناسب پیمایش کند.

استفاده از این گزینه ممکن است زمانی که در طول یک اتصال داده‌های زیادی نوشته می‌شود، سریع‌تر باشد.

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server پس از هر بار نوشتن روی حافظه ذخیره‌سازی پس‌زمینه، fsync() را فراخوانی می‌کند. فراخوانی fsync() قابلیت اطمینان را در صورت خاموش شدن غیرعادی nbd-server افزایش می‌دهد؛ اما بسته به سیستم‌فایل مورد استفاده در سمت nbd-server، ممکن است عملکرد را کاهش دهد. استفاده از این گزینه همیشه ضروری نیست؛ برای مثال در سیستم‌فایل‌های ext3، توصیه می‌شود که فعال نشود، زیرا بدون تأثیرگذاری چشمگیر بر پایداری، عملکرد را در سیستم‌فایل‌های ext3 به شدت کاهش می‌دهد.

اختیاری؛ بولی (boolean).

یک export موقت با نامی بر پایه exportname ایجاد می‌کند (این می‌تواند برای تنظیم دایرکتوری استفاده شود). یک نام فایل یکتا ایجاد می‌شود که به محض ایجاد، حذف (unlink) می‌گردد و بنابراین export میان دفعات اجرای nbd-server باقی نخواهد ماند. اندازه فایل را با استفاده از گزینه filesize تنظیم کنید. این گزینه با گزینه multifile ناسازگار است.

در صورت تعیین در خط فرمان، این باید آرگومان سوم باشد.

اختیاری؛ عدد صحیح (integer)؛ پیش‌فرض 0

مدت زمانی (به ثانیه) که یک اتصال می‌تواند برای این export غیرفعال (idle) بماند. هنگامی که یک اتصال برای مدتی طولانی‌تر غیرفعال بماند، nbd-server اجباراً اتصال را قطع خواهد کرد. اگر 0 (پیش‌فرض) را مشخص کنید، اتصال می‌تواند برای همیشه بیکار بماند.

متناظر با گزینه -a در خط فرمان است.

اختیاری؛ رشته (string)

در صورت تعیین، این مسیر برای تولید گزارش تراکنش‌ها (transaction log) استفاده می‌شود. گزارش تراکنش یک فایل باینری شامل درخواست‌های ارسالی به سرور و پاسخ‌های دریافت‌شده توسط آن است، اما شامل داده‌ها نمی‌شود (بنابراین برای یک دستور نوشتن، آفست و طول داده نوشته‌شده را ثبت می‌کند اما خود داده‌های نوشته‌شده را ثبت نمی‌کند). به همین دلیل، توزیع آن در اختیار اشخاص ثالث نسبتاً امن است. توجه داشته باشید که گزارش تراکنش شامل توالی مذاکره اولیه نیست. این گزارش‌ها عمدتاً برای اشکال‌زدایی سودمند هستند. برنامه nbd-tester-client که همراه با سورس‌کد این برنامه ارائه می‌شود، می‌تواند یک فایل لاگ تراکنش را در برابر سرور بازپخش کند و آزمون صحت داده‌ها را انجام دهد. توجه داشته باشید که گزارش تراکنش برای هر کلاینت بازشده ثبت می‌شود. در صورتی که لازم است لاگ‌های تراکنش جداگانه‌ای برای هر کلاینت نگهداری شود، اسکریپت prerun باید نام فایل transaction log را تغییر دهد (که تازه باز شده است تا از بازنویسی لاگ‌های تراکنش روی یکدیگر جلوگیری شود). این عملیات باید بدون شرایط رقابتی (race-free) باشد.

اختیاری؛ بولی (boolean)

هنگامی که این گزینه فعال شود، سرور اعلام می‌کند که از دستور NBD_CMD_TRIM برای این export پشتیبانی می‌کند. این دستور به سرور اجازه می‌دهد داده‌ها را از روی دیسک دور بریزد (discard)، اما آن را ملزم به این کار نمی‌کند.

اختیاری؛ رشته (string)؛ پیش‌فرض "ipliteral"

سبک مجازی‌سازی را تعیین می‌کند. مجازی‌سازی به شما امکان می‌دهد یک export ایجاد کنید که بسته به آدرس IP متصل‌شونده، فایل متفاوتی را ارائه دهد. هنگامی که مجازی‌سازی فعال است، پارامتر exportname باید شامل رشته '%s' باشد؛ سپس این رشته مطابق با گزینه انتخاب‌شده در اینجا با آدرس IP کلاینت متصل‌شونده جایگزین می‌شود. نتیجه این تبدیل سپس به عنوان نام فایلی که باید باز شود استفاده خواهد شد.

هنگامی که یک کلاینت از طریق سوکت دامنه یونیکس متصل می‌شود، رشته "unix" به جای آدرس IP کلاینت استفاده می‌شود.

چهار نوع مجازی‌سازی وجود دارد که nbd-server از آن‌ها پشتیبانی می‌کند:

بدون مجازی‌سازی. تلاش می‌کند نام فایل را دقیقاً همان‌طور که نوشته شده است باز کند، حتی اگر نام آن شامل '%s' باشد.
رشته %s با آدرس IP میزبان متصل‌شونده دقیقاً به همان صورت جایگزین می‌شود. برای IPv4، این کار با نماد دات‌دسیمل انجام می‌شود؛ برای IPv6، به شکل هگزادسیمال با حذف صفرهای ابتدایی انجام می‌پذیرد.

به عنوان مثال، اگر کلاینتی از 192.168.1.100 متصل شود و exportname به صورت /export/%s مشخص شده باشد، آنگاه nbd-server تلاش می‌کند /export/192.168.1.100 را ارائه دهد. برای IPv6، با کلاینتی که از 2001:6f8:32f::39 متصل می‌شود، نام فایل به صورت زیر خواهد بود: /export/2001:6f8:32f:0:0:0:0:39

مشابه مورد بالا، با این تفاوت که nbd-server نقطه‌ها را در آدرس IP با اسلش ('/') جایگزین می‌کند؛ در همان مثال، nbd-server به جای آن مسیر /export/192/168/1/100 را باز می‌کند.

از آنجا که در اکثر آدرس‌های IPv6 نقطه‌ای وجود ندارد، تأثیر استفاده از این گزینه هنگام استفاده از IPv6 با گزینه ipliteral تفاوتی ندارد. تصور می‌شد که ایجاد ساختار دایرکتوری با عمق هشت لایه چندان مفید نخواهد بود.

این گزینه نیازمند افزودن یک فاصله و یک عدد پس از آن است. nbd-server از آن عدد به عنوان ماسک شبکه در سبک CIDR استفاده می‌کند و آن را به عنوان نقطه برش هش به‌کار می‌گیرد. در مثال بالا، اگر virtstyle به صورت cidrhash 16 مشخص شده باشد، nbd-server تلاش می‌کند /export/192.168.0.0/192.168.1.100 را باز کند؛ اگر virtstyle به صورت cidrhash 26 مشخص شده باشد، آنگاه nbd-server تلاش خواهد کرد /export/192.168.1.64/192.168.1.100 را باز کند.

برای IPv6، در مثال بالا، با cidrhash 42، نام فایل به این صورت خواهد بود: /export/2001:32f:6c0:0:0:0:0:0/2001:32f:6f8:0:0:0:0:39

اختیاری؛ بولی (boolean).

هنگامی که این گزینه فعال باشد، nbd-server این export را تنها با استفاده از افزونه TLS ارائه خواهد داد. اگر این گزینه ارائه نشود، TLS اختیاری است، مگر اینکه tlsonly در بخش generic تنظیم شده باشد. برای اینکه TLS به طور کلی کار کند، گزینه keyfile باید در بخش generic مشخص شده باشد.

اختیاری؛ رشته (string).

هنگامی که این گزینه تنظیم شود، nbd-server تا زمانی که سیگنال SIGUSR1 به سرور ارسال نشده است، به این export اجازه نوشتن را می‌دهد اما اجازه خواندن را نمی‌دهد. هرگونه نوشتن روی export در یک فایل تفاضلی با همان الگوریتم گزینه copy-on-write ذخیره خواهد شد. به طور خاص، این بدان معنی است که گزینه cowdir برای این گزینه نیز صادق است.

فایل پشتیبان (مطابق با پارامتر exportname) نیازی نیست قبل از ارسال سیگنال SIGUSR1 به سرور وجود داشته باشد.

پس از دریافت SIGUSR1، nbd-server فایل اصلی export را باز کرده و شروع به ادغام تمام داده‌های نوشته‌شده در انتظار در آن می‌کند. پس از اتمام این عملیات، فایل diff حذف می‌شود و سرور اجازه استفاده عادی از export را خواهد داد.

این ویژگی امکان مهاجرت زنده خارج از باند (out-of-band live migration) یک export را از یک سرور به سرور دیگر فراهم می‌سازد.

توجه داشته باشید که این گزینه نمی‌تواند با خود گزینه copy-on-write ترکیب شود.

nbd-server(1)، nbd-client(8)، nbd-trdump(8)

ماژول هسته NBD و ابزارهای NBD در ابتدا توسط Pavel Machek (pavel@ucw.cz) نوشته شده‌اند.

ماژول هسته لینوکس اکنون توسط Paul Clements (Paul.Clements@steeleye.com) نگهداری می‌شود، در حالی که ابزارهای فضای کاربری توسط Wouter Verhelst (<wouter@debian.org>) نگهداری می‌شوند.

در سیستم‌عامل The Hurd یک مترجم معمولی برای انجام بخش سمت کلاینت پروتکل در دسترس است و استفاده از nbd-client لازم نیست. لطفاً برای اطلاعات بیشتر به مستندات مربوطه مراجعه کنید.

این صفحه راهنما توسط Wouter Verhelst (<wouter@debian.org>) برای سیستم Debian GNU/Linux نوشته شده است (اما ممکن است توسط دیگران نیز استفاده شود). اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نسخه ۲، همان‌طور که توسط بنیاد نرم‌افزار آزاد منتشر شده، اعطا می‌شود.

یک فایل پیکربندی ساده nbd-server به صورت زیر خواهد بود:

[generic]
[export]
    exportname = /export/blkdev

برای امنیت بیشتر، ممکن است بخواهید یک فایل احراز هویت ایجاد کنید و UID و GID را برای اجرا تنظیم نمایید:

[generic]
    user = nbd
    group = nbd
[export]
    exportname = /export/blkdev
    authfile = /etc/nbd-server/allow

با فرض اینکه /etc/nbd-server/allow حاوی موارد زیر باشد:

127.0.0.1
192.168.0.0/8
192.168.1.1
$Date: 2006-10-18 15:01:57 +0200 (wo, 18 okt 2006) $