QEMU-NBD(8) QEMU QEMU-NBD(8)

qemu-nbd - سرور دیسک با پروتکل Network Block Device در QEMU

qemu-nbd [OPTION]... filename

qemu-nbd -L [OPTION]...

qemu-nbd -d dev

اکسپورت و اشتراک‌گذاری یک ایمیج دیسک QEMU با استفاده از پروتکل NBD.

سایر کاربردها:

  • اتصال یک دستگاه بلوکی /dev/nbdX به یک سرور QEMU (در لینوکس).
  • به عنوان کلاینت برای پرس‌وجوی اکسپورت‌های یک سرور NBD راه دور.

filename نام فایل ایمیج دیسک است، یا در صورت مشخص شدن --image-opts مجموعه‌ای از گزینه‌های درایور بلوکی است.

dev یک دستگاه NBD است.

تعریف یک نمونه جدید از کلاس شیء type که با ID مشخص می‌شود. برای جزئیات کامل خصوصیات پشتیبانی‌شده، صفحه راهنمای qemu(1) را ببینید. انواع متداول شیء که تعریف آن‌ها منطقی است عبارتند از شیء secret، که برای تامین گذرواژه‌ها و/یا کلیدهای رمزنگاری استفاده می‌شود، و شیء tls-creds، که برای ارائه گواهی‌های TLS به سرور یا کلاینت qemu-nbd به کار می‌رود.
درگاه TCP برای گوش دادن به عنوان سرور، یا اتصال به عنوان کلاینت (پیش‌فرض 10809).
آفست (موقعیت جابه‌جایی) در ایمیج.
رابط شبکه برای مقید شدن به عنوان سرور، یا اتصال به عنوان کلاینت (پیش‌فرض 0.0.0.0).
استفاده از یک سوکت یونیکس با مسیر PATH.
در نظر گرفتن filename به عنوان مجموعه‌ای از گزینه‌های ایمیج به جای یک نام فایل ساده. اگر این فلگ مشخص شود، نباید از فلگ -f استفاده شود و در عوض باید گزینه format= تنظیم گردد.
اجبار به استفاده از درایور بلوکی برای فرمت FMT به جای تشخیص خودکار.
اکسپورت دیسک به صورت فقط‌خواندنی.
نمایش اطلاعات عمق تخصیص از طریق زمینه متادیتای qemu:allocation-depth قابل دسترس از طریق NBD_OPT_SET_META_CONTEXT.
اگر filename دارای یک بیت‌مپ ماندگار qcow2 با نام NAME باشد، آن بیت‌مپ را از طریق زمینه متادیتای qemu:dirty-bitmap:NAME قابل دسترس از طریق NBD_OPT_SET_META_CONTEXT نمایش می‌دهد.
استفاده از filename به عنوان یک اسنپ‌شات خارجی، ایجاد یک فایل موقت با backing_file=filename و هدایت عملیات نوشتن به فایل موقت.
بارگذاری یک اسنپ‌شات داخلی درون filename و اکسپورت آن به عنوان یک دستگاه فقط‌خواندنی؛ فرمت SNAPSHOT_PARAM عبارت است از snapshot.id=[ID],snapshot.name=[NAME] یا [ID_OR_NAME].
حالت کَش مورد استفاده با فایل. مقادیر معتبر عبارتند از: none، writeback (پیش‌فرض)، writethrough، directsync و unsafe. برای اطلاعات بیشتر مستندات گزینه -drive cache=... شبیه‌ساز را ببینید.
معادل با --cache=none.
تنظیم حالت ورودی/خروجی ناهمگام بین threads (پیش‌فرض)، native (فقط لینوکس)، و io_uring (لینوکس +5.1).
کنترل اینکه آیا درخواست‌های discard (همچنین شناخته‌شده به عنوان trim یا unmap) نادیده گرفته شوند یا به سیستم‌فایل منتقل شوند. DISCARD یکی از مقادیر ignore (یا off) یا unmap (یا on) است. مقدار پیش‌فرض ignore است.
کنترل تبدیل خودکار عملیات نوشتن صفر ساده توسط سیستم‌عامل به دستورات بهینه‌شده نوشتن صفر مخصوص درایور. DETECT_ZEROES یکی از مقادیر off، on، یا unmap است. مقدار unmap عملیات نوشتن صفر را به عملیات unmap تبدیل می‌کند و فقط زمانی قابل استفاده است که DISCARD روی unmap تنظیم شده باشد. مقدار پیش‌فرض off است.
اتصال filename به دستگاه NBD به نام DEV (فقط لینوکس).
قطع اتصال دستگاه DEV (فقط لینوکس).
اجازه دادن به حداکثر NUM کلاینت برای اشتراک‌گذاری دستگاه (پیش‌فرض 1)، مقدار 0 برای نامحدود.
عدم خروج پس از قطع آخرین اتصال.
تنظیم نام اکسپورت حجم NBD (پیش‌فرض یک رشته با طول صفر است).
تنظیم توضیحات اکسپورت حجم NBD به صورت یک رشته خوانا برای انسان.
تنظیم مهلت زمانی برای تکمیل موفقیت‌آمیز دست‌تکانی کلاینت به N ثانیه (پیش‌فرض 10)، یا 0 برای بدون محدودیت.
اتصال به عنوان کلاینت و فهرست کردن تمام جزئیات مربوط به اکسپورت‌های ارائه‌شده توسط یک سرور NBD راه دور. این گزینه حالت فهرست‌گیری را فعال می‌کند و با گزینه‌هایی که رفتار مربوط به یک اکسپورت خاص را تغییر می‌دهند (مانند --export-name، --offset، ...) ناسازگار است.
فعال‌سازی رمزنگاری اجباری TLS برای سرور از طریق تنظیم شناسه شیء اعتبارنامه‌های TLS که قبلاً با گزینه --object ایجاد شده است؛ یا ارائه اعتبارنامه‌های لازم برای اتصال به عنوان کلاینت در حالت فهرست‌گیری.
هنگام اعتبارسنجی گواهی x509 دریافت شده از طریق اتصال TLS، نام میزبان که کلاینت NBD برای اتصال استفاده کرده است با اطلاعات موجود در گواهی ارائه‌شده توسط سرور مطابقت داده می‌شود. گاهی اوقات ممکن است بازنویسی نام میزبان استفاده‌شده برای انجام این بررسی لازم باشد. برای مثال، اگر کلاینت NBD از یک تونل از localhost برای اتصال به سرور راه دور استفاده می‌کند، باید از گزینه --tls-hostname برای تنظیم نام میزبان رسمی و مورد انتظار سرور NBD راه دور استفاده شود. همچنین در صورت دسترسی به NBD از طریق یک سوکت UNIX که نام میزبان ذاتی در دسترس نیست، می‌توان از این گزینه استفاده کرد. این کار فقط هنگام عمل به عنوان کلاینت NBD با گزینه --list مجاز است.
انشعاب فرآیند سرور و خروج والد پس از شروع به کار سرور.
ذخیره شناسه فرآیند سرور در فایل مشخص‌شده.
مشخص کردن شناسه یک شیء qauthz که قبلاً با گزینه --object ایجاد شده است. این گزینه برای اعتبارسنجی کاربران متصل‌شونده بر اساس نام مشخص‌شده x509 آن‌ها استفاده خواهد شد.
نمایش اطلاعات اشکال‌زدایی بیشتر. این گزینه همچنین در صورتی که فرآیند qemu-nbd به دلیل گزینه‌های دیگری مانند --fork یا -c دیمن شده باشد، جریان اصلی STDERR را باز نگه می‌دارد.
نمایش این راهنما و خروج.
نمایش اطلاعات نسخه و خروج.
مشخص کردن گزینه‌های ردیابی.

[enable=]PATTERN

فعال‌سازی فوری رویدادهای منطبق با PATTERN (خواه نام رویداد باشد یا یک الگوی globbing). این گزینه تنها در صورتی در دسترس است که QEMU با یکی از بک‌اندهای ردیابی simple، log یا ftrace کامپایل شده باشد. برای تعیین چندین رویداد یا الگو، گزینه -trace را چندین بار مشخص کنید.

از -trace help برای چاپ فهرستی از نام‌های نقاط ردیابی استفاده کنید.

events=FILE

فعال‌سازی فوری رویدادهای فهرست‌شده در FILE. این فایل باید در هر سطر شامل نام یک رویداد باشد (همان‌طور که در فایل trace-events-all فهرست شده است)؛ الگوهای globbing نیز پذیرفته می‌شوند. این گزینه تنها در صورتی در دسترس است که QEMU با یکی از بک‌اندهای ردیابی simple، log یا ftrace کامپایل شده باشد.

file=FILE

ثبت خروجی ردیابی‌ها در FILE. این گزینه تنها در صورتی در دسترس است که QEMU با بک‌اند ردیابی simple کامپایل شده باشد.

راه‌اندازی سروری که روی پورت 10809 گوش می‌دهد و فقط محتویات قابل مشاهده برای سیستم مهمان یک فایل qcow2 را بدون رمزنگاری TLS و با نام پیش‌فرض اکسپورت (یک رشته خالی) ارائه می‌دهد. این دستور یک‌بار‌مصرف است و تا زمانی که اولین کلاینت موفق قطع اتصال نکند، مسدود خواهد ماند:

qemu-nbd -f qcow2 file.qcow2

راه‌اندازی سرور ماندگار با رمزنگاری روی پورت 10810 و اجازه دادن به کلاینت‌هایی با یک گواهی X.509 مشخص برای اتصال به یک زیرمجموعه ۱ مگابایتی از یک فایل raw، با استفاده از نام اکسپورت 'subset':

qemu-nbd \
  --object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/qemutls \
  --object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,\
            O=Example Org,,L=London,,ST=London,,C=GB' \
  --tls-creds tls0 --tls-authz auth0 \
  -t -x subset -p 10810 \
  --image-opts driver=raw,offset=1M,size=1M,file.driver=file,file.filename=file.raw

سرویس‌دهی یک نسخه فقط‌خواندنی از یک ایمیج مهمان روی سوکت یونیکس با حداکثر ۵ خواننده هم‌زمان، با یک فرآیند ماندگار که به صورت دیمن فورک شده است:

qemu-nbd --fork --persistent --shared=5 --socket=/path/to/sock \
  --read-only --format=qcow2 file.qcow2

ارائه محتویات قابل مشاهده برای مهمان از یک فایل qcow2 از طریق یک دستگاه بلوکی /dev/nbd0 (و احتمالاً ایجاد /dev/nbd0p1 و موارد مشابه برای پارتیشن‌های یافت‌شده در آن)، سپس قطع اتصال دستگاه پس از اتمام کار. دسترسی برای متصل کردن qemu-nbd به یک دستگاه /dev/nbd عموماً نیازمند مجوزهای دسترسی ریشه است، و همچنین ممکن است برای فعال‌سازی ماژول کلاینت NBD هسته نیاز به اجرای modprobe nbd باشد. هشدار: از این روش برای سوار کردن (mount) سیستم‌فایل‌ها از یک ایمیج مهمان غیرقابل اعتماد استفاده نکنید - یک مهمان مخرب ممکن است ایمیج را به گونه‌ای آماده کرده باشد که اشکالات هسته را در پویش پارتیشن یا مانت کردن سیستم‌فایل تحریک کند.

qemu-nbd -c /dev/nbd0 -f qcow2 file.qcow2
qemu-nbd -d /dev/nbd0

پرس‌وجو از یک سرور راه دور برای مشاهده جزئیات مربوط به اکسپورت(هایی) که روی پورت 10809 ارائه می‌دهد و احراز هویت از طریق PSK:

qemu-nbd \
  --object tls-creds-psk,id=tls0,dir=/tmp/keys,username=eblake,endpoint=client \
  --tls-creds tls0 -L -b remote.example.com

qemu(1), qemu-img(1)

Anthony Liguori <anthony@codemonkey.ws>

2026, The QEMU Project Developers

August 28, 2026 11.1.1