| NVMETCLI(8) | NVMETCLI(8) |
نام (NAME)
nvmetcli - پیکربندی NVMe-over-Fabrics Target.
نحوه استفاده (USAGE)
nvmetcli nvmetcli clear nvmetcli restore [filename.json]
توضیحات (DESCRIPTION)
nvmetcli برنامهای برای مشاهده، ویرایش، ذخیره و راهاندازی NVMe Target در کرنل لینوکس است که برای پیکربندی شبکه NVMe-over-Fabrics به کار میرود. این ابزار به مدیر سیستم اجازه میدهد یک منبع ذخیرهسازی (مانند دستگاههای NVMe، فایلها و حجمها) را به عنوان دستگاه بلوکی محلی خروجی دهد و آنها را بر اساس مشخصات NVMe-over-Fabrics از http://www.nvmexpress.org در دسترس سیستمهای راه دور قرار دهد.
nvmetcli با دسترسی ریشه (root) اجرا میشود و دارای دو حالت است:
پیشزمینه (BACKGROUND)
اصطلاح NQN که در سراسر این صفحه راهنما استفاده شده، قالب NVMe Qualified Name است که یک نقطه پایانی NVMe (دستگاه، زیرسیستم و غیره) باید از آن پیروی کند تا یکتا بودن نام تحت استاندارد NVMe تضمین شود. هر نامی را میتوان در راهاندازی سیستم شبکه استفاده کرد، اما اگر از قالب NQN پیروی نکند، ممکن است در یک شبکه NVMe-over-Fabrics یکتا نباشد.
توجه داشته باشید که برخی از فیلدهای تنظیمشده برای یک درگاه NVMe Target در حالت تعاملی، در بخش "Discovery Log Page" از مشخصات NVMe-over-Fabrics تعریف شدهاند. هر NVMe Target دارای یک سازوکار کنترلکننده کشف (discovery controller) است که یک NVMe Host میتواند از آن برای تعیین زیرسیستمهای NVM قابل دسترسی استفاده کند. nvmetcli میتواند برای افزودن یک رکورد جدید به کنترلکننده کشف به ازای هر مدخل زیرسیستم جدید و مدخل درگاهی که مدخل زیرسیستم تازه ایجادشده به آن متصل میشود، استفاده شود (بخشهای گزینهها (OPTIONS) و مثالها (EXAMPLES) را ببینید). هر NVMe Host تنها مدخلهای کشف تعریفشده در /subsystems/[NQN NAME]/allowed_hosts و درگاه IP متصل به NVMe Target را مشاهده میکند. یک NVMe Host میتواند این لاگهای کشف را از طریق ابزار nvme-cli (https://github.com/linux-nvme/nvme-cli) دریافت کند.
گزینهها (OPTIONS)
شل تعاملی پیکربندی (Interactive Configuration Shell)
برای شروع شل تعاملی پیکربندی، nvmetcli را در خط فرمان وارد کنید. nvmetcli با زیرسیستم configfs مربوط به NVMe Target کرنل لینوکس از دایرکتوریهای پایه /port، /subsystem و /host تعامل برقرار میکند. تغییرات پیکربندی واردشده توسط مدیر سیستم بلافاصله روی پیکربندی هدف کرنل اعمال میشوند. دستورات زیر در حالت شل تعاملی پیکربندی قابل استفاده هستند:
| cd | امکان پیمایش در درخت را فراهم میکند. |
| ls | محتویات گره فعلی درخت را فهرست میکند. |
| create [NQN name]/[#] | ایجاد یک شیء جدید با استفاده از نام یا شماره مشخصشده. اگر [NQN name]/[#] مشخص نشود، یک مدخل تصادفی استفاده خواهد شد. |
| delete [NQN name]/[#] | حذف یک شیء با نام یا شماره مشخصشده. |
| set attr allow_any_host=[0/1] | در مسیر /subsystems/[NQN name] استفاده میشود تا مشخص کند آیا هر NVMe Host میتواند به زیرسیستم متصل شود یا خیر. |
| set device path=[device path] | در مسیر /subsystems/[NQN name]/namespaces برای تنظیم دستگاه (ذخیرهسازی) مورد استفاده به کار میرود. |
| set device nguid=[string] | در مسیر /subsystems/[NQN name]/namespaces برای تنظیم شناسه یکتای دستگاه در فضای نام تعریفشده استفاده میشود. |
| enable/disable | در مسیر /subsystems/[NQN name]/namespaces برای فعال و غیرفعال کردن فضای نام استفاده میشود. |
| set addr [discovery log page field]=[string] | در مسیر /ports/[#] برای ایجاد درگاهی که دسترسی به آن مجاز است استفاده میشود. برای اطلاعات بیشتر بخش مثالها (EXAMPLES) را ببینید. |
| saveconfig [filename.json] | پیکربندی NVMe Target را با فرمت .json ذخیره میکند. بدون مشخص کردن نام فایل، در /etc/nvmet/config.json ذخیره خواهد شد. این فایل با فرمت JSON است و میتوان آن را مستقیماً با ویرایشگر فایل دلخواه ویرایش کرد. |
| exit | از حالت شل تعاملی پیکربندی خارج میشود. |
حالت خط فرمان (Command Line Mode)
وارد کردن nvmetcli [cmd] در خط فرمان، دستور را اجرا کرده و وارد شل تعاملی پیکربندی نمیشود.
| restore [filename.json] | یک پیکربندی ذخیرهشده NVMe Target را بارگذاری میکند. بدون مشخص کردن نام فایل، از /etc/nvmet/config.json استفاده خواهد شد. |
| clear | پیکربندی فعلی NVMe Target را پاک میکند. |
| ls | پیکربندی فعلی NVMe Target را نمایش میدهد (dump میکند). |
مثالها (EXAMPLES)
اطمینان حاصل کنید که nvmetcli به عنوان ریشه (root) اجرا میشود، ماژول nvmet بارگذاری شده است، دستگاههای شما و تمامی ماژولهای وابسته بارگذاری شدهاند، و configfs با دستور زیر روی /sys/kernel/config مانت شده است:
mount -t configfs none /sys/kernel/config
بخش زیر یک نمونه پیکربندی را شرح میدهد.
# ./nvmetcli ...>
> cd /subsystems ...> create testnqn
...> cd /hosts ...> create hostnqn ...> cd /subsystems/testnqn ...> set attr allow_any_host=0 ...> cd /subsystems/testnqn/allowed_hosts/ ...> create hostnqn
...> cd /subsystems/testnqn/allowed_hosts/ ...> delete hostnqn
...> cd /subsystems/testnqn/ ...> set attr allow_any_host=1
...> cd /subsystems/testnqn/namespaces ...> create 1 ...> cd 1 ...> set device path=/dev/nvme0n1 ...> enable
توجه داشته باشید که در پیکربندی بالا نیازی به تنظیم ویژگی device_nguid برای کارکرد صحیح NVMe Target نیست (اما برای تطابق دقیق یک فضای نام با دستگاه مربوطه در عملیات clear و restore، توصیه میشود پارامتر device_nguid تنظیم شود).
...> cd /ports/ ...> create 1 ...> cd 1/ ...> set addr trtype=loop ...> cd subsystems/ ...> create testnqn
...> cd /ports/ ...> create 2 ...> cd 2/ ...> set addr trtype=rdma ...> set addr adrfam=ipv4 ...> set addr traddr=192.168.6.68 ...> set addr trsvcid=4420 ...> cd subsystems/ ...> create testnqn
...> cd /ports/ ...> create 3 ...> cd 3/ ...> set addr trtype=fc ...> set addr adrfam=fc ...> set addr traddr=nn-0x1000000044001123:pn-0x2000000055001123 ...> set addr trsvcid=none ...> cd subsystems/ ...> create testnqn
./nvmetcli ...> saveconfig test.json
./nvmetcli restore test.json
./nvmetcli clear
اطلاعات تکمیلی (ADDITIONAL INFORMATION)
nvmetcli این قابلیت را دارد که با استفاده از ابزار لینوکسی systemctl از طریق یک فایل .service، پیکربندی NVMe Target را هنگام بوت و خاموش شدن راهاندازی و متوقف کند. بسته nvmetcli همراه با nvmet.service ارائه میشود که پس از نصب میتواند به طور خودکار پیکربندی پیشفرض و ذخیرهشده NVMe Target را از /etc/nvmet/config.json بازیابی کند. فایل nvmet.service میتواند در دایرکتوریهایی مانند /lib/systemd/system نصب شود.
برای فعالسازی صریح سرویس، وارد کنید:
systemctl enable nvmet
برای غیرفعالسازی صریح سرویس، وارد کنید:
systemctl disable nvmet
همچنین systemctl(1) را ببینید.
نویسندگان (AUTHORS)
این صفحه راهنما توسط Jay Freyensee[1] نوشته شده است. nvmetcli در اصل توسط Christoph Hellwig[2] نوشته شده بود.
گزارش باگها و توسعه (REPORTING BUGS & DEVELOPMENT)
لطفاً وصلهها و گزارشهای اشکال را برای بررسی و پذیرش به linux-nvme@lists.infradead.org[3] ارسال کنید.
مجوز (LICENSE)
ابزار nvmetcli تحت Apache License, Version 2.0 منتشر شده است. نرمافزار ارائهشده تحت این مجوز بر مبنای «همانگونه که هست» (AS IS) و بدون هرگونه ضمانت صریح یا ضمنی توزیع میشود.
نکات (NOTES)
- 1.
- Jay Freyensee
- 2.
- Christoph Hellwig
- 3.
- linux-nvme@lists.infradead.org
| 08/19/2026 |