NVME-DISCOVER(1) NVMe Manual NVME-DISCOVER(1)

nvme-discover - ارسال دستور کشف NVMe-oF

nvme discover [--transport=<trtype> | -t <trtype>]
                        [--nqn=<subnqn> | -n <subnqn>]
                        [--traddr=<traddr> | -a <traddr>]
                        [--trsvcid=<trsvcid> | -s <trsvcid>]
                        [--host-traddr=<traddr> | -w <traddr>]
                        [--host-iface=<iface> | -f <iface>]
                        [--hostnqn=<hostnqn> | -q <hostnqn>]
                        [--hostid=<hostid> | -I <hostid>]
                        [--raw=<filename> | -r <filename>]
                        [--device=<device> | -d <device>]
                        [--config=<filename> | -J <filename>]
                        [--keep-alive-tmo=<sec> | -k <sec>]
                        [--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=<fmt> | -o <fmt>]
                        [--force] [--nbft] [--no-nbft] [--nbft-path=<STR>]
                        [--context=<STR>]
                        [--output-format=<fmt> | -o <fmt>] [--verbose | -v]

ارسال یک یا چند درخواست Get Log Page به یک کنترل‌کننده کشف NVMe-over-Fabrics.

اگر هیچ پارامتری داده نشود، nvme discover تلاش می‌کند فایل /etc/nvme/discovery.conf را پیدا کند تا از آن برای تامین فهرستی از دستورات کشف جهت اجرا استفاده نماید. اگر فایل /etc/nvme/discovery.conf وجود نداشته باشد، دستور با خطا متوقف می‌شود.

در غیر این صورت، باید با استفاده از گزینه‌های --transport، --traddr و در صورت لزوم --trsvcid یک کنترل‌کننده کشف مشخص تعیین شود. سپس یک درخواست کشف به کنترل‌کننده کشف مشخص‌شده ارسال خواهد شد.

مشخصات 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 استفاده می‌شود.

-t <trtype>, --transport=<trtype>

این فیلد ساختار انتقال شبکه (fabric) مورد استفاده برای یک شبکه NVMe-over-Fabrics را مشخص می‌کند. مقادیر متنی فعلی عبارتند از:
مقدار تعریف
rdma شبکه از نوع rdma است (RoCE، iWARP، Infiniband، rdma پایه و غیره)
fc WIP شبکه از نوع Fibre Channel است.
tcp شبکه از نوع TCP/IP است.
loop اتصال به یک هدف NVMe over Fabrics روی میزبان محلی

-n <subnqn>, --nqn <subnqn>

این فیلد نام زیرسیستم NVMe را برای اتصال مشخص می‌کند.

-a <traddr>, --traddr=<traddr>

این فیلد نشانی شبکه کنترل‌کننده کشف را مشخص می‌کند. برای انتقال‌هایی که از آدرس‌دهی IP استفاده می‌کنند (مانند rdma)، این مقدار باید یک نشانی مبتنی بر IP باشد (مانند IPv4).

-s <trsvcid>, --trsvcid=<trsvcid>

این فیلد شناسه سرویس انتقال را مشخص می‌کند. برای انتقال‌هایی که از آدرس‌دهی IP استفاده می‌کنند (مانند rdma) این فیلد شماره درگاه (پورت) است. به طور پیش‌فرض، شماره پورت IP برای انتقال RDMA برابر با 4420 است.

-w <traddr>, --host-traddr=<traddr>

این فیلد نشانی شبکه مورد استفاده روی میزبان را برای اتصال به کنترل‌کننده مشخص می‌کند. برای TCP، این گزینه آدرس مبدأ را روی سوکت تنظیم می‌کند.

-f <iface>, --host-iface=<iface>

این فیلد رابط شبکه مورد استفاده روی میزبان را برای اتصال به کنترل‌کننده مشخص می‌کند (مانند IP eth1، enp2s0، enx78e7d1ea46da). این گزینه اتصال را اجباراً از طریق یک رابط مشخص برقرار می‌کند به جای اینکه انتخاب آن به عهده سیستم گذاشته شود.

-q <hostnqn>, --hostnqn=<hostnqn>

مقدار پیش‌فرض host NQN را که میزبان NVMe را مشخص می‌کند، بازنویسی می‌کند. اگر این گزینه مشخص نشود، مقدار پیش‌فرض ابتدا از /etc/nvme/hostnqn خوانده می‌شود. اگر آن فایل وجود نداشته باشد، مقدار NQN تولیدشده خودکار توسط ماژول هسته NVMe Host استفاده می‌شود.

-I <hostid>, --hostid=<hostid>

شناسه یکتای جهانی (UUID) که باید کشف شود و باید قالب‌بندی شده باشد.

-r <filename>, --raw=<filename>

این فیلد خروجی دستور nvme discover را دریافت کرده و آن را در یک فایل باینری خام ذخیره می‌کند. به طور پیش‌فرض nvme discover خروجی را در stdout چاپ می‌کند.

-d <device>, --device=<device>

این فیلد یک دستگاه را به عنوان ورودی دریافت می‌کند. این دستگاه باید یک دستگاه پایدار مرتبط با یک کنترل‌کننده کشف باشد که قبلاً توسط دستور "connect-all" یا "discover" ایجاد شده است. <device> از قالب *nvme پیروی می‌کند، مانند nvme0 یا nvme1.

-J <filename>, --config=<filename>

استفاده از فایل پیکربندی 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 <fmt>, --output-format=<fmt>

تنظیم قالب گزارش‌دهی روی یکی از مقادیر normal، json یا binary. در هر زمان تنها یک قالب خروجی قابل استفاده است.

--force

قوانین توکار اتصال کشف پایدار را غیرفعال می‌کند. در ترکیب با گزینه --persistent، همیشه یک اتصال کشف پایدار جدید ایجاد می‌کند.

--nbft

فقط به جدول‌های NBFT نگاه می‌کند.

--no-nbft

به جدول‌های NBFT نگاه نمی‌کند.

--nbft-path=<STR>

استفاده از مسیر مشخص‌شده توسط کاربر برای جدول‌های NBFT.

--context <STR>

تنظیم زمینه اجرای دستور روی <STR>. این گزینه هماهنگی در مدیریت منابع سراسری را امکان‌پذیر می‌سازد.

-o <fmt>, --output-format=<fmt>

تنظیم قالب گزارش‌دهی روی یکی از مقادیر normal، json یا binary. در هر زمان تنها یک قالب خروجی قابل استفاده است.

-v, --verbose

افزایش جزئیات اطلاعات در خروجی.

•استعلام از کنترل‌کننده کشف با نشانی 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" را وارد کنید.

nvme-connect(1) nvme-connect-all(1)

این مستند توسط Jay Freyensee[1] نوشته شده است.

بخشی از مجموعه nvme-user

1.
Jay Freyensee
mailto:james.p.freyensee@intel.com
02/16/2026 NVMe