nbdinfo(1) LIBNBD nbdinfo(1) نام (NAME) nbdinfo - نمایش اطلاعات و متاداده درباره کارسازها و اکسپورت‌های NBD خلاصه دستور (SYNOPSIS) nbdinfo [--json] NBD "NBD" یک URI پروتکل NBD یا یک زیرپردازش (subprocess) است: NBD := nbd://... | nbd+unix:// (or other URI formats) | [ CMD ARGS ... ] nbdinfo --size [--json] NBD nbdinfo --uri [--json] NBD nbdinfo --is read-only|rotational NBD nbdinfo --isnt read-only|rotational NBD nbdinfo --can cache|connect|... NBD nbdinfo --cannot cache|connect|... NBD nbdinfo --map [--totals] [--json] NBD nbdinfo -L|--list [--json] NBD nbdinfo --help nbdinfo --version توضیحات (DESCRIPTION) دستور nbdinfo اطلاعات و متاداده‌های مربوط به یک کارساز NBD را نمایش می‌دهد. تنها پارامتر الزامی می‌تواند URI پروتکل NBD کارساز باشد (ببینید: https://github.com/NetworkBlockDevice/nbd/blob/master/doc/uri.md): $ nbdinfo nbd://localhost protocol: newstyle-fixed without TLS, using structured packets export="": export-size: 1048576 (1M) content: data uri: nbd://localhost:10809/ is_rotational: false is_read_only: false can_cache: true can_df: true can_fast_zero: true can_flush: true can_fua: true can_multi_conn: true can_trim: true can_zero: true block_size_minimum: 1 block_size_preferred: 4096 (4K) block_size_maximum: 33554432 (32M) برای یک کارساز NBD بر روی یک سوکت محلی دامین یونیکس (Unix domain socket)، می‌توانید از دستوری مانند زیر استفاده کنید (با خروجی مشابه موارد بالا): $ nbdinfo "nbd+unix:///?socket=/tmp/unixsock" یا می‌توانید کارساز NBD را به صورت یک زیرپردازش اجرا کنید (بخش "زیرپردازش" در ادامه را ببینید): $ nbdinfo -- [ qemu-nbd -r -f qcow2 file.qcow2 ] خروجی JSON (JSON output) برای نمایش خروجی در قالب JSON (مثلاً جهت اسکریپت‌نویسی با jq(1)) پارامتر --json را اضافه کنید: $ nbdinfo --json nbd://localhost | jq . { "protocol": "newstyle-fixed", "TLS": false, "structured": true, "extended": false, "exports": [ { "export-name": "", "content": "DOS/MBR boot sector; partition 1 : ID=0xc, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 2048, 4148704 sectors", "uri": "nbd://localhost:10809/", "is_rotational": false, "is_read_only": true, "can_cache": true, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": true, "can_trim": false, "can_zero": false, "block_size_minimum": 1, "block_size_preferred": 4096, "block_size_maximum": 33554432, "export-size": 2125119488, "export-size-str": "2075312K" } ] } اندازه (Size) برای نمایش تنها اندازه اکسپورت NBD به بایت (مفید برای اسکریپت‌نویسی)، از پارامتر --size استفاده کنید: $ nbdinfo --size nbd://localhost 1048576 $ nbdinfo --size [ nbdkit null 1M ] 1048576 نشانی URI (URI) برای نمایش نشانی استاندارد (canonical URI): $ nbdinfo --uri nbd://localhost nbd://localhost:10809/ آزمون فلگ‌ها (Test for flags) از یکی از گزینه‌های --can، --is یا --has در زیر برای بررسی فلگ‌های NBD استفاده کنید. این دستور چیزی چاپ نمی‌کند، بلکه در صورت درست بودن با موفقیت (کد خروج 0) و در صورت نادرست بودن با شکست (کد خروج 2) خارج می‌شود. (سایر کدهای خروج نشان‌دهنده بروز خطا در استعلام فلگ هستند). گزینه‌های --cannot، --isnt و --hasnt شرط آزمون را معکوس (نقیض) می‌کنند. می‌توانید از آن در اسکریپت‌های شل به این صورت استفاده کنید: if nbdinfo --is read-only nbd://localhost || nbdinfo --cannot trim nbd://localhost then error "the device must support writing and trimming" fi nbdinfo --is read-only URI بررسی اینکه آیا اکسپورت کارساز فقط‌خواندنی (read-only) است یا خیر. nbdinfo --can write URI برای راحتی، این گزینه معکوس --is read-only است. nbdinfo --can read URI تمامی کارسازهای NBD باید از خواندن پشتیبانی کنند، بنابراین این دستور همیشه با موفقیت خارج می‌شود (مگر اینکه در اتصال به URI خطایی رخ دهد). nbdinfo --can connect URI بررسی امکان برقراری اتصال به URI مربوط به NBD. این گزینه دست‌تکانی (handshake) پروتکل NBD را تا مرحله پردازش گزینه‌های NBD بررسی می‌کند، اما باز شدن حتمی اکسپورت را تضمین نمی‌نماید. nbdinfo --is tls URI بررسی اینکه آیا اتصال URI مربوط به NBD از TLS استفاده می‌کند یا خیر. nbdinfo --has structured-reply URI بررسی پشتیبانی کارساز از پاسخ‌های ساختاریافته (structured replies؛ که پیش‌نیاز پشتیبانی از دستورات وضعیت بلوک است). nbdinfo --has extended-headers URI بررسی پشتیبانی کارساز از هدرهای گسترش‌یافته (extended headers؛ که پیش‌نیاز پشتیبانی از دستورات ۶۴ بیتی است و شامل پاسخ‌های ساختاریافته نیز می‌شود). nbdinfo --is rotational URI بررسی اینکه آیا اکسپورت کارساز توسط رسانه‌ای شبیه به دیسک چرخان (rotational) پشتیبانی می‌شود: دسترسی به بلوک‌های مجاور ممکن است سریع‌تر از دسترسی تصادفی باشد و برای بهبود کارایی باید درخواست‌ها مرتب شوند. بسیاری از کارسازها این مورد را به درستی گزارش نمی‌دهند یا قادر به گزارش آن نیستند. nbdinfo --can block-status-payload URI بررسی اینکه آیا اکسپورت کارساز از ارسال پی‌لود کلاینت برای محدود کردن پاسخ به دستور وضعیت بلوک پشتیبانی می‌کند یا خیر. nbdinfo --can cache URI nbdinfo --can df URI nbdinfo --can fast-zero URI nbdinfo --can flush URI nbdinfo --can fua URI nbdinfo --can multi-conn URI nbdinfo --can trim URI nbdinfo --can zero URI آزمون سایر مشخصات اکسپورت کارساز NBD. در واقع گزینه‌های --can، --is و --has، و همچنین --cannot، --isnt و --hasnt مترادف یکدیگرند و می‌توانید آن‌ها را به جای هم به کار ببرید. نقشه (Map) برای نمایش نقشه‌ای از بخش‌های تخصیص‌یافته (allocated) و تُنُک (sparse) دیسک، از گزینه --map استفاده کنید: $ nbdinfo --map nbd://localhost/ 0 1048576 0 data 1048576 1048576 3 hole,zero فیلدها عبارتند از: نقطه آغاز (start)، اندازه (size)، نوع (type)، و توضیحات (description اختیاری). فیلد نوع یک عدد صحیح است که مقدار خام پروتکل NBD را نشان می‌دهد. برای برخی نقشه‌ها، nbdinfo نحوه ترجمه نوع به یک توضیح قابل چاپ را می‌داند. برای دریافت خروجی قابل تجزیه در قالب JSON، گزینه --json را اضافه کنید: $ nbdinfo --map --json nbd://localhost/ [{ "offset": 0, "length": 1048576, "type": 0, "description": "data" }, { "offset": 1048576, "length": 1048576, "type": 3, "description": "hole,zero" }] به طور پیش‌فرض این دستور نقشه "base:allocation" را نشان می‌دهد، اما می‌توانید نقشه‌های دیگر را نیز نمایش دهید: $ nbdinfo --map=qemu:dirty-bitmap:bitmap nbd://localhost/ 0 1048576 1 dirty برای اطلاعات بیشتر در مورد نقشه‌های NBD، به بخش Metadata querying در پروتکل NBD مراجعه کنید. مجموع مقادیر نقشه (Map totals) استفاده از --map --totals همان عملیات --map را انجام می‌دهد، اما خلاصه‌ای از اندازه کل هر نوع تخصیص را به بایت و به صورت درصد (از اندازه مجازی اکسپورت) نمایش می‌دهد. این امر برای تخمین میزان فضای واقعی استفاده‌شده در کارساز، یا فضای مورد نیاز هنگام کپی یک تصویر تُنُک با nbdcopy(1) مفید است. در مثال زیر، نیمی (50.0%) از دیسک داده‌های تخصیص‌یافته و نیمی دیگر تخصیص‌نیافته است: $ nbdinfo --map --totals nbd://localhost/ 1048576 50.0% 0 data 1048576 50.0% 3 hole,zero فیلدها عبارتند از: اندازه کل به بایت، درصد از اندازه مجازی، نوع، و توضیحات (اختیاری). همچنین می‌توانید همین اطلاعات را به صورت ساختاریافته با استفاده از --json دریافت کنید: $ nbdinfo --map --totals --json nbd://localhost/ [{ "size": 1048576, "percent": 50, "type": 0, "description": "data" }, { "size": 1048576, "percent": 50, "type": 3, "description": "hole,zero" }] همانند گزینه --map، این گزینه نیز به طور پیش‌فرض نقشه "base:allocation" را نشان می‌دهد، اما می‌توانید خلاصه سایر نقشه‌ها را نیز مشاهده کنید. فهرست کردن تمام اکسپورت‌ها (List all exports) برای فهرست کردن تمامی اکسپورت‌های موجود در یک کارساز NBD، از گزینه --list (-L) استفاده کنید. برای دریافت خروجی JSON قابل تجزیه، گزینه --json را اضافه نمایید. برای نمونه: $ nbdkit file dir=. --run 'nbdinfo --list "$uri"' protocol: newstyle-fixed without TLS export="Fedora-Workstation-Live-x86_64-29-1.2.iso": export-size: 1931476992 (1842M) uri: nbd://localhost:10809/Fedora-Workstation-Live-x86_64-29-1.2.iso [...] export="debian-10.4.0-amd64-DVD-1.iso": export-size: 3955556352 (3862848K) uri: nbd://localhost:10809/debian-10.4.0-amd64-DVD-1.iso [...] زیرپردازش (Subprocess) دستور nbdinfo همچنین می‌تواند یک کارساز NBD را به صورت یک زیرپردازش اجرا کند. این کار به یک کارساز NBD نیاز دارد که از فعال‌سازی سوکت systemd پشتیبانی کند، مانند qemu-nbd(8) یا nbdkit(1). تمام حالت‌های معمول nbdinfo قابل استفاده هستند. برای نمونه، جهت ارائه اطلاعات عمومی یا نمایش نقشه یک فایل qcow2: nbdinfo -- [ qemu-nbd -r -f qcow2 file.qcow2 ] nbdinfo --map -- [ qemu-nbd -r -f qcow2 file.qcow2 ] توجه داشته باشید که "[ ... ]" پارامترهای مجزایی هستند و باید با فاصله احاطه شوند. "--" پارامترهای nbdinfo را از پارامترهای زیرپردازش تفکیک می‌کند. ابزارهای جایگزین (Alternative tools) می‌توانید از "qemu-img info" (ببینید: qemu-img(1)) برای پرس‌وجوی یک اکسپورت خاص از یک کارساز NBD استفاده کنید. دستور "qemu-nbd -L" (ببینید: qemu-nbd(8)) می‌تواند اکسپورت‌های NBD را فهرست کند. ابزار nbdsh(1) یا رابط برنامه‌نویسی libnbd(3) نیز می‌توانند برای پرس‌وجوهای پیچیده‌تر به کار روند. گزینه‌ها (OPTIONS) --help نمایش راهنمای مختصر خط فرمان و خروج. --can block-status-payload --can cache --can connect --can df --can fast-zero --can flush --can fua --can multi-conn --can read --can trim --can write --can zero بررسی مشخصات اکسپورت کارساز NBD. این دستور چیزی چاپ نمی‌کند، بلکه در صورت درست بودن با موفقیت (کد خروج 0) و در صورت نادرست بودن با شکست (کد خروج 2) خارج می‌شود. (سایر کدهای خروج نشان‌دهنده بروز خطا در استعلام فلگ هستند). برای کسب اطلاعات بیشتر به پروتکل NBD و توابع libnbd زیر مراجعه کنید: nbd_can_block_status_payload(3), nbd_can_cache(3), nbd_can_df(3), nbd_can_fast_zero(3), nbd_can_flush(3), nbd_can_fua(3), nbd_can_multi_conn(3), nbd_can_trim(3), nbd_can_zero(3), nbd_is_read_only(3). --cannot flag بررسی نقیض فلگ مورد نظر. --color --colour --no-color --no-colour فعال یا غیرفعال کردن رنگ‌های ANSI در خروجی. به طور پیش‌فرض اگر خروجی یک ترمینال باشد از رنگ‌ها استفاده می‌شود و در غیر این صورت غیرفعال می‌گردد. --content --no-content بیشتر اطلاعات نمایش‌داده‌شده از متاداده‌های ارسالی توسط کارساز NBD هنگام دست‌تکانی (handshake) به دست می‌آید. با این حال nbdinfo مقدار کمی داده از ابتدای اکسپورت را نیز دانلود می‌کند تا محتوا را با استفاده از file(1) شناسایی کند. هنگامی که از --list استفاده نمی‌شود، حالت پیش‌فرض --content است، یعنی کاوش محتوا انجام می‌پذیرد. برای جلوگیری از کاوش محتوا، از --no-content استفاده کنید. هنگام استفاده از --list، حالت پیش‌فرض --no-content است (زیرا دانلود از هر اکسپورت پرهزینه است). برای فعال کردن کاوش محتوا از --list --content استفاده کنید. --has extended-headers --has structured-reply بررسی ویژگی‌های اتصال کارساز NBD. این دستور چیزی چاپ نمی‌کند، بلکه در صورت درست بودن با موفقیت (کد خروج 0) و در صورت نادرست بودن با شکست (کد خروج 2) خارج می‌شود. (سایر کدهای خروج نشان‌دهنده خطا در استعلام فلگ هستند). برای اطلاعات بیشتر به پروتکل NBD و توابع libnbd زیر مراجعه کنید: nbd_get_extended_headers_negotiated(3), nbd_get_structured_replies_negotiated(3). --hasnt flag بررسی نقیض فلگ مورد نظر. --is read-only --is rotational --is tls بررسی اینکه آیا اکسپورت کارساز NBD فقط‌خواندنی یا چرخان است، یا اینکه اتصال از TLS استفاده می‌کند یا خیر. این دستور چیزی چاپ نمی‌کند، بلکه در صورت درست بودن با موفقیت (کد خروج 0) و در صورت نادرست بودن با شکست (کد خروج 2) خارج می‌شود. (سایر کدهای خروج نشان‌دهنده خطا در استعلام فلگ هستند). برای کسب اطلاعات بیشتر به پروتکل NBD و توابع libnbd زیر مراجعه کنید: nbd_is_read_only(3), nbd_is_rotational(3), nbd_get_tls_negotiated(3). --isnt flag بررسی نقیض فلگ مورد نظر. --json خروجی در قالب JSON نمایش داده می‌شود. -L --list فهرست کردن تمامی اکسپورت‌های موجود در یک کارساز NBD. نام اکسپورت در URI نادیده گرفته می‌شود. --map --map=MAP نمایش نقشه (معمولاً اینکه چه بخش‌هایی از دیسک تخصیص‌یافته یا تُنُک هستند) برای اکسپورت داده‌شده. این گزینه به طور پیش‌فرض نقشه "base:allocation" را نشان می‌دهد، اما می‌توانید با پارامتر اختیاری نقشه دیگری را انتخاب کنید. بخش "نقشه" در بالا را ببینید. --map --totals --map=MAP --totals مشابه --map، اما خلاصه‌ای از اندازه کل هر نوع تخصیص را نمایش می‌دهد. بخش "مجموع مقادیر نقشه" در بالا را ببینید. --size فقط اندازه اکسپورت به بایت را نمایش می‌دهد. --uri فقط URI استاندارد (canonical) را نمایش می‌دهد. در صورت ترکیب با --json، خروجی به صورت یک رشته درون گیومه در قالب JSON خواهد بود. -V --version نمایش نام بسته و نسخه و خروج. همچنین ببینید (SEE ALSO) libnbd(3), nbdcopy(1), nbddiscard(1), nbddump(1), nbdfuse(1), nbdsh(1), nbdublk(1), nbdzero(1), file(1), jq(1), qemu-img(1), qemu-nbd(8). نویسندگان (AUTHORS) Richard W.M. Jones Eric Blake حق نشر (COPYRIGHT) Copyright Red Hat مجوز (LICENSE) این کتابخانه نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی کمتر گنو (LGPL) منتشرشده توسط بنیاد نرم‌افزارهای آزاد بازتوزیع کرده یا تغییر دهید؛ چه نسخه ۲ مجوز، و یا (به انتخاب خودتان) هر نسخه بعدی. این کتابخانه با این امید توزیع شده است که سودمند باشد، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی تجاری بودن یا تناسب برای هدفی معین. برای جزئیات بیشتر به مجوز عمومی همگانی کمتر گنو مراجعه کنید. شما باید همراه با این کتابخانه یک نسخه از مجوز عمومی همگانی کمتر گنو را دریافت کرده باشید؛ در غیر این صورت، به آدرس زیر در بنیاد نرم‌افزارهای آزاد مکاتبه کنید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA libnbd-1.24.3 2026-07-16 nbdinfo(1)