| 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
| 2026-07-16 | libnbd-1.24.3 |