'\" t .\" Title: nvme-discover .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 02/16/2026 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: Persian .\" .TH "NVME\-DISCOVER" "1" "02/16/2026" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" nvme-discover \- ارسال دستور کشف NVMe-oF .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fInvme discover\fR [\-\-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] .fi .SH "توضیحات (DESCRIPTION)" .sp ارسال یک یا چند درخواست Get Log Page به یک کنترل‌کننده کشف NVMe\-over\-Fabrics\&. .sp اگر هیچ پارامتری داده نشود، \fInvme discover\fR تلاش می‌کند فایل /etc/nvme/discovery\&.conf را پیدا کند تا از آن برای تامین فهرستی از دستورات کشف جهت اجرا استفاده نماید\&. اگر فایل /etc/nvme/discovery\&.conf وجود نداشته باشد، دستور با خطا متوقف می‌شود\&. .sp در غیر این صورت، باید با استفاده از گزینه‌های \-\-transport، \-\-traddr و در صورت لزوم \-\-trsvcid یک کنترل‌کننده کشف مشخص تعیین شود\&. سپس یک درخواست کشف به کنترل‌کننده کشف مشخص‌شده ارسال خواهد شد\&. .SH "پیش‌زمینه (BACKGROUND)" .sp مشخصات NVMe\-over\-Fabrics مفهوم کنترل‌کننده کشف (Discovery Controller) را تعریف می‌کند که یک میزبان NVMe می‌تواند روی یک شبکه فابریک از آن استعلام بگیرد تا زیرسیستم‌های NVMe موجود در اهداف NVMe (Targets) را که می‌تواند روی شبکه به آن‌ها متصل شود، کشف کند\&. کنترل‌کننده کشف، صفحات گزارش کشف (Discovery Log Pages) را بازمی‌گرداند که اطلاعات مشخصی (مانند آدرس شبکه و NQN یکتای زیرسیستم) را به میزبان NVMe ارائه می‌دهد تا میزبان بتواند با اجرای دستور اتصال NVMe، خود را به منبع ذخیره‌سازی موجود در آن زیرسیستم NVMe روی هدف متصل سازد\&. .sp توجه داشته باشید که مشخصات پایه NVMe ساختار NQN (نام واجد شرایط NVMe یا NVMe Qualified Name) را تعریف می‌کند که یک نقطه پایانی NVMe (دستگاه، زیرسیستم و غیره) باید برای تضمین نام یکتا طبق استاندارد NVMe از آن پیروی کند\&. به‌ویژه، Host NQN به صورت یکتا میزبان NVMe را مشخص می‌کند و ممکن است توسط کنترل‌کننده کشف برای مدیریت این‌که چه منابعی از اهداف NVMe برای اتصال به میزبان اختصاص داده شوند، استفاده شود\&. .sp یک کنترل‌کننده کشف دارای NQN مخصوص به خود است که در مشخصات NVMe\-over\-Fabrics تعریف شده است: \fBnqn\&.2014\-08\&.org\&.nvmexpress\&.discovery\fR\&. تمام کنترل‌کننده‌های کشف باید از این نام NQN استفاده کنند\&. این NQN به طور پیش‌فرض توسط nvme\-cli برای دستور \fIdiscover\fR استفاده می‌شود\&. .SH "گزینه‌ها (OPTIONS)" .PP \-t , \-\-transport= .RS 4 این فیلد ساختار انتقال شبکه (fabric) مورد استفاده برای یک شبکه NVMe\-over\-Fabrics را مشخص می‌کند\&. مقادیر متنی فعلی عبارتند از: .TS allbox tab(:); lt lt lt lt lt lt lt lt lt lt. T{ مقدار T}:T{ تعریف T} T{ rdma T}:T{ شبکه از نوع rdma است (RoCE، iWARP، Infiniband، rdma پایه و غیره) T} T{ fc T}:T{ \fBWIP\fR شبکه از نوع Fibre Channel است\&. T} T{ tcp T}:T{ شبکه از نوع TCP/IP است\&. T} T{ loop T}:T{ اتصال به یک هدف NVMe over Fabrics روی میزبان محلی T} .TE .sp 1 .RE .PP \-n , \-\-nqn .RS 4 این فیلد نام زیرسیستم NVMe را برای اتصال مشخص می‌کند\&. .RE .PP \-a , \-\-traddr= .RS 4 این فیلد نشانی شبکه کنترل‌کننده کشف را مشخص می‌کند\&. برای انتقال‌هایی که از آدرس‌دهی IP استفاده می‌کنند (مانند rdma)، این مقدار باید یک نشانی مبتنی بر IP باشد (مانند IPv4)\&. .RE .PP \-s , \-\-trsvcid= .RS 4 این فیلد شناسه سرویس انتقال را مشخص می‌کند\&. برای انتقال‌هایی که از آدرس‌دهی IP استفاده می‌کنند (مانند rdma) این فیلد شماره درگاه (پورت) است\&. به طور پیش‌فرض، شماره پورت IP برای انتقال RDMA برابر با 4420 است\&. .RE .PP \-w , \-\-host\-traddr= .RS 4 این فیلد نشانی شبکه مورد استفاده روی میزبان را برای اتصال به کنترل‌کننده مشخص می‌کند\&. برای TCP، این گزینه آدرس مبدأ را روی سوکت تنظیم می‌کند\&. .RE .PP \-f , \-\-host\-iface= .RS 4 این فیلد رابط شبکه مورد استفاده روی میزبان را برای اتصال به کنترل‌کننده مشخص می‌کند (مانند IP eth1، enp2s0، enx78e7d1ea46da)\&. این گزینه اتصال را اجباراً از طریق یک رابط مشخص برقرار می‌کند به جای اینکه انتخاب آن به عهده سیستم گذاشته شود\&. .RE .PP \-q , \-\-hostnqn= .RS 4 مقدار پیش‌فرض host NQN را که میزبان NVMe را مشخص می‌کند، بازنویسی می‌کند\&. اگر این گزینه مشخص نشود، مقدار پیش‌فرض ابتدا از /etc/nvme/hostnqn خوانده می‌شود\&. اگر آن فایل وجود نداشته باشد، مقدار NQN تولیدشده خودکار توسط ماژول هسته NVMe Host استفاده می‌شود\&. .RE .PP \-I , \-\-hostid= .RS 4 شناسه یکتای جهانی (UUID) که باید کشف شود و باید قالب‌بندی شده باشد\&. .RE .PP \-r , \-\-raw= .RS 4 این فیلد خروجی دستور \fInvme discover\fR را دریافت کرده و آن را در یک فایل باینری خام ذخیره می‌کند\&. به طور پیش‌فرض \fInvme discover\fR خروجی را در stdout چاپ می‌کند\&. .RE .PP \-d , \-\-device= .RS 4 این فیلد یک دستگاه را به عنوان ورودی دریافت می‌کند\&. این دستگاه باید یک دستگاه پایدار مرتبط با یک کنترل‌کننده کشف باشد که قبلاً توسط دستور "connect\-all" یا "discover" ایجاد شده است\&. از قالب *nvme پیروی می‌کند، مانند nvme0 یا nvme1\&. .RE .PP \-J , \-\-config= .RS 4 استفاده از فایل پیکربندی JSON مشخص‌شده به جای فایل پیش‌فرض /etc/nvme/config\&.json، یا مقدار \fInone\fR برای جلوگیری از خواندن فایل‌های پیکربندی موجود\&. ساختار فایل پیکربندی JSON در نشانی زیر مستند شده است: \m[blue]\fBhttps://github\&.com/linux\-nvme/libnvme/blob/master/doc/config\-schema\&.json\fR\m[] .RE .PP \-k <#>, \-\-keep\-alive\-tmo=<#> .RS 4 زمان پیش‌فرض مهلت زنده نگه‌داشتن (keep alive timeout بر حسب ثانیه) را تغییر می‌دهد\&. این گزینه برای عملیات کشف نادیده گرفته می‌شود و صرفاً جهت کامل بودن پیاده‌سازی شده است\&. .RE .PP \-c <#>, \-\-reconnect\-delay=<#> .RS 4 میزان تاخیر پیش‌فرض (بر حسب ثانیه) را پیش از تلاش مجدد برای اتصال پس از قطع ارتباط بازنویسی می‌کند\&. .RE .PP \-l <#>, \-\-ctrl\-loss\-tmo=<#> .RS 4 مدت زمان مهلت پیش‌فرض از دست رفتن کنترل‌کننده (بر حسب ثانیه) را بازنویسی می‌کند\&. .RE .PP \-i <#>, \-\-nr\-io\-queues=<#> .RS 4 تعداد پیش‌فرض صف‌های I/O ایجاد شده توسط درایور را بازنویسی می‌کند\&. این گزینه برای عملیات کشف نادیده گرفته می‌شود و صرفاً جهت کامل بودن پیاده‌سازی شده است\&. .RE .PP \-W <#>, \-\-nr\-write\-queues=<#> .RS 4 صف‌های اضافی را که برای I/O نوشتن استفاده می‌شوند اضافه می‌کند\&. .RE .PP \-P <#>, \-\-nr\-poll\-queues=<#> .RS 4 صف‌های اضافی را که برای نظرسنجی (polling) درخواست‌های I/O حساس به تاخیر استفاده می‌شوند اضافه می‌کند\&. .RE .PP \-Q <#>, \-\-queue\-size=<#> .RS 4 تعداد پیش‌فرض عناصر موجود در صف‌های I/O ایجاد شده توسط درایور را که در drivers/nvme/host/fabrics\&.h تعریف شده است، بازنویسی می‌کند\&. این گزینه برای عملیات کشف نادیده گرفته می‌شود و صرفاً جهت کامل بودن پیاده‌سازی شده است\&. .RE .PP \-\-keyring=<#> .RS 4 دسته کلید (Keyring) برای جستجوی کلید TLS\&. .RE .PP \-\-tls_key=<#> .RS 4 کلید TLS برای اتصال (TCP)\&. .RE .PP \-g, \-\-hdr\-digest .RS 4 چکیده هدر (header digest) را تولید/اعتبارسنجی می‌کند (TCP)\&. .RE .PP \-G, \-\-data\-digest .RS 4 چکیده داده (data digest) را تولید/اعتبارسنجی می‌کند (TCP)\&. .RE .PP \-p, \-\-persistent .RS 4 کنترل‌کننده کشف را پس از دریافت صفحه لاگ کشف حذف نمی‌کند\&. .RE .PP \-\-tls .RS 4 فعال‌سازی رمزنگاری TLS (در ارتباط TCP)\&. .RE .PP \-\-concat .RS 4 فعال‌سازی الحاق امن (TCP)\&. .RE .PP \-\-quiet .RS 4 خطاهای مربوط به اتصال از پیش برقرار شده را نادیده می‌گیرد\&. .RE .PP \-O, \-\-dump\-config .RS 4 چاپ فایل پیکربندی JSON حاصل در خروجی استاندارد (stdout)\&. .RE .PP \-o , \-\-output\-format= .RS 4 تنظیم قالب گزارش‌دهی روی یکی از مقادیر \fInormal\fR، \fIjson\fR یا \fIbinary\fR\&. در هر زمان تنها یک قالب خروجی قابل استفاده است\&. .RE .PP \-\-force .RS 4 قوانین توکار اتصال کشف پایدار را غیرفعال می‌کند\&. در ترکیب با گزینه \-\-persistent، همیشه یک اتصال کشف پایدار جدید ایجاد می‌کند\&. .RE .PP \-\-nbft .RS 4 فقط به جدول‌های NBFT نگاه می‌کند\&. .RE .PP \-\-no\-nbft .RS 4 به جدول‌های NBFT نگاه نمی‌کند\&. .RE .PP \-\-nbft\-path= .RS 4 استفاده از مسیر مشخص‌شده توسط کاربر برای جدول‌های NBFT\&. .RE .PP \-\-context .RS 4 تنظیم زمینه اجرای دستور روی \&. این گزینه هماهنگی در مدیریت منابع سراسری را امکان‌پذیر می‌سازد\&. .RE .PP \-o , \-\-output\-format= .RS 4 تنظیم قالب گزارش‌دهی روی یکی از مقادیر \fInormal\fR، \fIjson\fR یا \fIbinary\fR\&. در هر زمان تنها یک قالب خروجی قابل استفاده است\&. .RE .PP \-v, \-\-verbose .RS 4 افزایش جزئیات اطلاعات در خروجی\&. .RE .SH "مثال‌ها (EXAMPLES)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} استعلام از کنترل‌کننده کشف با نشانی IPv4 برابر با 192\&.168\&.1\&.3 برای تمامی منابع تخصیص‌یافته به نام میزبان NVMe با مقدار host1\-rogue\-nqn روی شبکه RDMA؛ درگاه 4420 به طور پیش‌فرض استفاده می‌شود: .sp .if n \{\ .RS 4 .\} .nf # nvme discover \-\-transport=rdma \-\-traddr=192\&.168\&.1\&.3 \e \-\-hostnqn=host1\-rogue\-nqn .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اجرای یک دستور \fInvme discover\fR با استفاده از جدول‌های پیش‌فرض NBFT تعریف‌شده در سیستم: .sp .if n \{\ .RS 4 .\} .nf # nvme discover \-\-nbft .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اجرای دستور \fInvme discover\fR با استفاده از یک مسیر سفارشی برای جدول NBFT: .sp .if n \{\ .RS 4 .\} .nf # nvme discover \-\-nbft\-path=/sys/firmware/acpi/tables/NBFT1 .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اجرای دستور \fInvme discover\fR با استفاده از فایل /etc/nvme/discovery\&.conf: .sp .if n \{\ .RS 4 .\} .nf # Machine default \*(Aqnvme discover\*(Aq commands\&. Query the # Discovery Controller\*(Aqs 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" را وارد کنید\&. .fi .if n \{\ .RE .\} .RE .SH "همچنین ببینید (SEE ALSO)" .sp nvme\-connect(1) nvme\-connect\-all(1) .SH "نویسندگان (AUTHORS)" .sp این مستند توسط \m[blue]\fBJay Freyensee\fR\m[]\&\s-2\u[1]\d\s+2 نوشته شده است\&. .SH "NVME" .sp بخشی از مجموعه nvme\-user .SH "نکات (NOTES)" .IP " 1." 4 Jay Freyensee .RS 4 \%mailto:james.p.freyensee@intel.com .RE