NVME-DISCOVER(1) NVMe Manual NVME-DISCOVER(1) نام (NAME) nvme-discover - ارسال دستور کشف NVMe-oF خلاصه دستور (SYNOPSIS) nvme discover [--transport= | -t ] [--nqn= | -n ] [--traddr= | -a ] [--trsvcid= | -s ] [--host-traddr= | -w ] [--host-iface= | -f ] [--hostnqn= | -q ] [--hostid= | -I ] [--raw= | -r ] [--device= | -d ] [--config= | -J ] [--keep-alive-tmo= | -k ] [--reconnect-delay=<#> | -c <#>] [--ctrl-loss-tmo=<#> | -l <#>] [--nr-io-queues=<#> | -i <#>] [--nr-write-queues=<#> | -W <#>] [--nr-poll-queues=<#> | -P <#>] [--queue-size=<#> | -Q <#>] [--keyring=<#>] [--tls_key=<#>] [--hdr-digest | -g] [--data-digest | -G] [--persistent | -p] [--quiet] [--tls] [--concat] [--dump-config | -O] [--output-format= | -o ] [--force] [--nbft] [--no-nbft] [--nbft-path=] [--context=] [--output-format= | -o ] [--verbose | -v] توضیحات (DESCRIPTION) ارسال یک یا چند درخواست Get Log Page به یک کنترل‌کننده کشف NVMe-over-Fabrics. اگر هیچ پارامتری داده نشود، nvme discover تلاش می‌کند فایل /etc/nvme/discovery.conf را پیدا کند تا از آن برای تامین فهرستی از دستورات کشف جهت اجرا استفاده نماید. اگر فایل /etc/nvme/discovery.conf وجود نداشته باشد، دستور با خطا متوقف می‌شود. در غیر این صورت، باید با استفاده از گزینه‌های --transport، --traddr و در صورت لزوم --trsvcid یک کنترل‌کننده کشف مشخص تعیین شود. سپس یک درخواست کشف به کنترل‌کننده کشف مشخص‌شده ارسال خواهد شد. پیش‌زمینه (BACKGROUND) مشخصات NVMe-over-Fabrics مفهوم کنترل‌کننده کشف (Discovery Controller) را تعریف می‌کند که یک میزبان NVMe می‌تواند روی یک شبکه فابریک از آن استعلام بگیرد تا زیرسیستم‌های NVMe موجود در اهداف NVMe (Targets) را که می‌تواند روی شبکه به آن‌ها متصل شود، کشف کند. کنترل‌کننده کشف، صفحات گزارش کشف (Discovery Log Pages) را بازمی‌گرداند که اطلاعات مشخصی (مانند آدرس شبکه و NQN یکتای زیرسیستم) را به میزبان NVMe ارائه می‌دهد تا میزبان بتواند با اجرای دستور اتصال NVMe، خود را به منبع ذخیره‌سازی موجود در آن زیرسیستم NVMe روی هدف متصل سازد. توجه داشته باشید که مشخصات پایه NVMe ساختار NQN (نام واجد شرایط NVMe یا NVMe Qualified Name) را تعریف می‌کند که یک نقطه پایانی NVMe (دستگاه، زیرسیستم و غیره) باید برای تضمین نام یکتا طبق استاندارد NVMe از آن پیروی کند. به‌ویژه، Host NQN به صورت یکتا میزبان NVMe را مشخص می‌کند و ممکن است توسط کنترل‌کننده کشف برای مدیریت این‌که چه منابعی از اهداف NVMe برای اتصال به میزبان اختصاص داده شوند، استفاده شود. یک کنترل‌کننده کشف دارای NQN مخصوص به خود است که در مشخصات NVMe-over-Fabrics تعریف شده است: nqn.2014-08.org.nvmexpress.discovery. تمام کنترل‌کننده‌های کشف باید از این نام NQN استفاده کنند. این NQN به طور پیش‌فرض توسط nvme-cli برای دستور discover استفاده می‌شود. گزینه‌ها (OPTIONS) -t , --transport= این فیلد ساختار انتقال شبکه (fabric) مورد استفاده برای یک شبکه NVMe-over-Fabrics را مشخص می‌کند. مقادیر متنی فعلی عبارتند از: ┌──────┬───────────────────────────┐ │مقدار │ تعریف │ ├──────┼───────────────────────────┤ │rdma │ شبکه از نوع rdma است │ │ │ (RoCE، iWARP، Infiniband، │ │ │ rdma پایه و غیره) │ ├──────┼───────────────────────────┤ │fc │ WIP شبکه از نوع Fibre │ │ │ Channel است. │ ├──────┼───────────────────────────┤ │tcp │ شبکه از نوع TCP/IP است. │ ├──────┼───────────────────────────┤ │loop │ اتصال به یک هدف NVMe over │ │ │ Fabrics روی میزبان محلی │ └──────┴───────────────────────────┘ -n , --nqn این فیلد نام زیرسیستم NVMe را برای اتصال مشخص می‌کند. -a , --traddr= این فیلد نشانی شبکه کنترل‌کننده کشف را مشخص می‌کند. برای انتقال‌هایی که از آدرس‌دهی IP استفاده می‌کنند (مانند rdma)، این مقدار باید یک نشانی مبتنی بر IP باشد (مانند IPv4). -s , --trsvcid= این فیلد شناسه سرویس انتقال را مشخص می‌کند. برای انتقال‌هایی که از آدرس‌دهی IP استفاده می‌کنند (مانند rdma) این فیلد شماره درگاه (پورت) است. به طور پیش‌فرض، شماره پورت IP برای انتقال RDMA برابر با 4420 است. -w , --host-traddr= این فیلد نشانی شبکه مورد استفاده روی میزبان را برای اتصال به کنترل‌کننده مشخص می‌کند. برای TCP، این گزینه آدرس مبدأ را روی سوکت تنظیم می‌کند. -f , --host-iface= این فیلد رابط شبکه مورد استفاده روی میزبان را برای اتصال به کنترل‌کننده مشخص می‌کند (مانند IP eth1، enp2s0، enx78e7d1ea46da). این گزینه اتصال را اجباراً از طریق یک رابط مشخص برقرار می‌کند به جای اینکه انتخاب آن به عهده سیستم گذاشته شود. -q , --hostnqn= مقدار پیش‌فرض host NQN را که میزبان NVMe را مشخص می‌کند، بازنویسی می‌کند. اگر این گزینه مشخص نشود، مقدار پیش‌فرض ابتدا از /etc/nvme/hostnqn خوانده می‌شود. اگر آن فایل وجود نداشته باشد، مقدار NQN تولیدشده خودکار توسط ماژول هسته NVMe Host استفاده می‌شود. -I , --hostid= شناسه یکتای جهانی (UUID) که باید کشف شود و باید قالب‌بندی شده باشد. -r , --raw= این فیلد خروجی دستور nvme discover را دریافت کرده و آن را در یک فایل باینری خام ذخیره می‌کند. به طور پیش‌فرض nvme discover خروجی را در stdout چاپ می‌کند. -d , --device= این فیلد یک دستگاه را به عنوان ورودی دریافت می‌کند. این دستگاه باید یک دستگاه پایدار مرتبط با یک کنترل‌کننده کشف باشد که قبلاً توسط دستور "connect-all" یا "discover" ایجاد شده است. از قالب *nvme پیروی می‌کند، مانند nvme0 یا nvme1. -J , --config= استفاده از فایل پیکربندی JSON مشخص‌شده به جای فایل پیش‌فرض /etc/nvme/config.json، یا مقدار none برای جلوگیری از خواندن فایل‌های پیکربندی موجود. ساختار فایل پیکربندی JSON در نشانی زیر مستند شده است: https://github.com/linux-nvme/libnvme/blob/master/doc/config-schema.json -k <#>, --keep-alive-tmo=<#> زمان پیش‌فرض مهلت زنده نگه‌داشتن (keep alive timeout بر حسب ثانیه) را تغییر می‌دهد. این گزینه برای عملیات کشف نادیده گرفته می‌شود و صرفاً جهت کامل بودن پیاده‌سازی شده است. -c <#>, --reconnect-delay=<#> میزان تاخیر پیش‌فرض (بر حسب ثانیه) را پیش از تلاش مجدد برای اتصال پس از قطع ارتباط بازنویسی می‌کند. -l <#>, --ctrl-loss-tmo=<#> مدت زمان مهلت پیش‌فرض از دست رفتن کنترل‌کننده (بر حسب ثانیه) را بازنویسی می‌کند. -i <#>, --nr-io-queues=<#> تعداد پیش‌فرض صف‌های I/O ایجاد شده توسط درایور را بازنویسی می‌کند. این گزینه برای عملیات کشف نادیده گرفته می‌شود و صرفاً جهت کامل بودن پیاده‌سازی شده است. -W <#>, --nr-write-queues=<#> صف‌های اضافی را که برای I/O نوشتن استفاده می‌شوند اضافه می‌کند. -P <#>, --nr-poll-queues=<#> صف‌های اضافی را که برای نظرسنجی (polling) درخواست‌های I/O حساس به تاخیر استفاده می‌شوند اضافه می‌کند. -Q <#>, --queue-size=<#> تعداد پیش‌فرض عناصر موجود در صف‌های I/O ایجاد شده توسط درایور را که در drivers/nvme/host/fabrics.h تعریف شده است، بازنویسی می‌کند. این گزینه برای عملیات کشف نادیده گرفته می‌شود و صرفاً جهت کامل بودن پیاده‌سازی شده است. --keyring=<#> دسته کلید (Keyring) برای جستجوی کلید TLS. --tls_key=<#> کلید TLS برای اتصال (TCP). -g, --hdr-digest چکیده هدر (header digest) را تولید/اعتبارسنجی می‌کند (TCP). -G, --data-digest چکیده داده (data digest) را تولید/اعتبارسنجی می‌کند (TCP). -p, --persistent کنترل‌کننده کشف را پس از دریافت صفحه لاگ کشف حذف نمی‌کند. --tls فعال‌سازی رمزنگاری TLS (در ارتباط TCP). --concat فعال‌سازی الحاق امن (TCP). --quiet خطاهای مربوط به اتصال از پیش برقرار شده را نادیده می‌گیرد. -O, --dump-config چاپ فایل پیکربندی JSON حاصل در خروجی استاندارد (stdout). -o , --output-format= تنظیم قالب گزارش‌دهی روی یکی از مقادیر normal، json یا binary. در هر زمان تنها یک قالب خروجی قابل استفاده است. --force قوانین توکار اتصال کشف پایدار را غیرفعال می‌کند. در ترکیب با گزینه --persistent، همیشه یک اتصال کشف پایدار جدید ایجاد می‌کند. --nbft فقط به جدول‌های NBFT نگاه می‌کند. --no-nbft به جدول‌های NBFT نگاه نمی‌کند. --nbft-path= استفاده از مسیر مشخص‌شده توسط کاربر برای جدول‌های NBFT. --context تنظیم زمینه اجرای دستور روی . این گزینه هماهنگی در مدیریت منابع سراسری را امکان‌پذیر می‌سازد. -o , --output-format= تنظیم قالب گزارش‌دهی روی یکی از مقادیر normal، json یا binary. در هر زمان تنها یک قالب خروجی قابل استفاده است. -v, --verbose افزایش جزئیات اطلاعات در خروجی. مثال‌ها (EXAMPLES) • استعلام از کنترل‌کننده کشف با نشانی IPv4 برابر با 192.168.1.3 برای تمامی منابع تخصیص‌یافته به نام میزبان NVMe با مقدار host1-rogue-nqn روی شبکه RDMA؛ درگاه 4420 به طور پیش‌فرض استفاده می‌شود: # nvme discover --transport=rdma --traddr=192.168.1.3 \ --hostnqn=host1-rogue-nqn • اجرای یک دستور nvme discover با استفاده از جدول‌های پیش‌فرض NBFT تعریف‌شده در سیستم: # nvme discover --nbft • اجرای دستور nvme discover با استفاده از یک مسیر سفارشی برای جدول NBFT: # nvme discover --nbft-path=/sys/firmware/acpi/tables/NBFT1 • اجرای دستور nvme discover با استفاده از فایل /etc/nvme/discovery.conf: # Machine default 'nvme discover' commands. Query the # Discovery Controller's two ports (some resources may only # be accessible on a single port). Note an official # nqn (Host) name defined in the NVMe specification is being used # in this example. -t rdma -a 192.168.69.33 -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432 -t rdma -a 192.168.1.4 -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432 در اعلان ترمینال "nvme discover" را وارد کنید. همچنین ببینید (SEE ALSO) nvme-connect(1) nvme-connect-all(1) نویسندگان (AUTHORS) این مستند توسط Jay Freyensee[1] نوشته شده است. NVME بخشی از مجموعه nvme-user نکات (NOTES) 1. Jay Freyensee mailto:james.p.freyensee@intel.com NVMe 02/16/2026 NVME-DISCOVER(1)