DMSETUP(8) MAINTENANCE COMMANDS DMSETUP(8)

dmsetup - ابزار سطح پایین پیکربندی و مدیریت نگاشتگر دستگاه (Device-Mapper)

clear device_name
create device_name [-n|--notable|--table table|table_file] [--readahead [+]sectors|auto|none] [-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume]
create --concise [concise_device_specification]
deps [-o options] [device_name ...]
help [-c|-C|--columns]
info [device_name ...]
info -c|-C|--columns [--count count] [--interval seconds] [--noheadings|--headings none|abbrev|full|0|1|2] [-o fields] [-O|--sort sort_fields] [--nameprefixes] [--separator separator] [device_name]
load device_name [--table table|table_file]
ls [--target target_type] [-o options] [--exec command] [--tree]
mangle [device_name ...]
measure [device_name ...]
message device_name sector message
mknodes [device_name ...]
reload device_name [--table table|table_file]
remove [-f|--force] [--retry] [--deferred] device_name ...
remove_all [-f|--force] [--deferred]
rename device_name new_name
rename device_name --setuuid uuid
resume device_name ... [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs] [--readahead [+]sectors|auto|none]
setgeometry device_name cyl head sect start
splitname device_name [subsystem]
stats command [options]
status [--target target_type] [--noflush] [device_name ...]
suspend device_name ... [--nolockfs] [--noflush]
table [--concise] [--target target_type] [--showkeys] [device_name ...]
targets
udevcomplete cookie
udevcomplete_all [age_in_minutes]
udevcookie
udevcreatecookie
udevflags cookie
udevreleasecookie [cookie]
version
wait device_name [--noflush] [event_nr]
wipe_table device_name ... [-f|--force] [--noflush] [--nolockfs]

devmap_name major minor
devmap_name major:minor

دستور dmsetup دستگاه‌های منطقی را که از درایور نگاشتگر دستگاه (device-mapper) استفاده می‌کنند، مدیریت می‌کند. دستگاه‌ها با بارگذاری یک جدول نگاشت ایجاد می‌شوند که برای هر سکتور (۵۱۲ بایت) در دستگاه منطقی، یک هدف (target) مشخص می‌کند.

آرگومان اول dmsetup یک دستور است. آرگومان دوم نام دستگاه منطقی یا uuid آن است.

فراخوانی ابزار dmsetup به‌صورت devmap_name (که به‌طور معمول توزیع نمی‌شود و تنها به دلایل تاریخی پشتیبانی می‌شود) معادل است با: dmsetup info -c --noheadings -j major -m minor.

اطمینان از وجود گره /dev/mapper پس از اجرای dmsetup create.
اطمینان از وجود گره /dev/mapper پس از اجرای dmsetup resume (پیشفرض با udev).
انجام بررسی‌های تکمیلی روی عملیات درخواستی و گزارش مشکلات احتمالی. هنگام اشکال‌زدایی اسکریپت‌ها مفید است. در برخی موارد ممکن است این بررسی‌ها سرعت عملیات را به‌طور چشمگیری کاهش دهند.
نمایش خروجی در قالب ستون‌ها به‌جای خطوط «Field: Value».
تعداد دفعات تکرار گزارش را مشخص می‌کند. این مقدار را روی صفر تنظیم کنید تا گزارش تا زمان توقف توسط کاربر ادامه یابد. فاصله زمانی پیشفرض یک ثانیه است.
تلاش بیشتر برای تکمیل عملیات (اجبار).
خلاصه‌ای از دستورات موجود را به همراه فهرست فیلدهای گزارش (به‌صورت اختیاری) نمایش می‌دهد (هم‌معنی با دستور help).
هنگام دریافت هرگونه اطلاعات جدول نگاشت از هسته، به‌جای جدول فعال (live)، اطلاعات مربوط به جدول غیرفعال گزارش داده می‌شود. نیازمند درایور هسته نسخه 4.16.0 یا بالاتر است.
فاصله زمانی بین تکرارهای متوالی گزارش‌ها را برحسب ثانیه مشخص می‌کند. اگر گزینه --interval مشخص شود اما --count تعیین نگردد، تکرار گزارش‌ها تا زمان توقف ادامه می‌یابد. فاصله زمانی پیشفرض یک ثانیه است.
در زمان پردازش نام‌ها و UUIDهای دستگاه‌های نگاشتگر دستگاه، هر کاراکتری را که در فهرست سفید (whitelist) نباشد با استفاده از mangling_mode تغییر شکل (mangle) می‌دهد. نام‌ها و UUIDها در ورودی تغییر شکل داده می‌شوند و در خروجی بازگردانی می‌شوند (unmangled)، که حالت تغییر شکل یکی از موارد زیر است: auto (فقط در صورتی تغییر شکل می‌دهد که قبلاً انجام نشده باشد، اگر از قبل تغییر یافته باشد کاری انجام نمی‌دهد، در صورت حالت ترکیبی خطا می‌دهد)، hex (همیشه تغییر شکل را اعمال می‌کند) و none (بدون تغییر شکل). حالت پیشفرض auto است. فهرست سفید کاراکترها: 0–9, A–Z, a–z, #+-.:=@_. این فهرست سفید توسط udev نیز پشتیبانی می‌شود. هر کاراکتری که در فهرست سفید نباشد با مقدار هگزادسیمال آن (دو رقم) با پیشوند \x جایگزین می‌شود. حالت تغییر شکل را می‌توان از طریق متغیر محیطی DM_DEFAULT_NAME_MANGLING_MODE نیز تنظیم کرد.
شماره عمده (major) دستگاه را مشخص می‌کند.
شماره فرعی (minor) دستگاه را مشخص می‌کند.
هنگام ایجاد یک دستگاه، هیچ جدول نگاشتی بارگذاری نشود.
افزودن پیشوند "DM_" به‌علاوه نام فیلد به خروجی. در ترکیب با گزینه --noheadings برای تولید فهرستی از جفت‌های field=value جهت تنظیم متغیرهای محیطی مفید است (برای نمونه، در قوانین udev(7) ).
حذف خط عناوین هنگام استفاده از خروجی ستونی.
نوع خط عناوین مورد استفاده برای خروجی ستونی.
none یا 0 – بدون عناوین.
abbrev یا 1 – نام‌های اختصاری ستون‌ها.
full یا 2 – نام‌های کامل ستون‌ها.
هنگام تعلیق یک دستگاه، عملیات I/O معلق را تخلیه (flush) نمی‌کند، یا هنگام دریافت وضعیت thin-pool، متادیتای thin-pool را کامیت نمی‌کند.
تلاشی برای همگام‌سازی سیستم‌فایل انجام نمی‌دهد، برای نمونه هنگام تعلیق یک دستگاه.
به هسته اطلاع می‌دهد که تعداد ارجاعات باز بودن (open reference count) دستگاه را ارائه ندهد.
به udev اجازه مدیریت گره‌ها را برای دستگاه‌های موجود در پوشه نگاشتگر دستگاه نمی‌دهد.
هنگام ایجاد، تغییر نام یا حذف دستگاه‌ها، با udev همگام‌سازی انجام نمی‌دهد.
مشخص می‌کند که کدام فیلدها در خروجی نمایش داده شوند.
اندازه پیش‌خوانی (read ahead) را برحسب سکتور مشخص می‌کند. مقدار پیشفرض auto است که به هسته اجازه می‌دهد یک مقدار مناسب را به‌طور خودکار انتخاب کند. پیشوند + به شما امکان می‌دهد حداقل مقداری را مشخص کنید که اگر کمتر از مقدار انتخابی هسته باشد، استفاده نخواهد شد. مقدار none معادل تعیین صفر است.
جدول نگاشت در حال بارگذاری را فقط‌خواندنی می‌کند.
فقط مواردی را که با معیارهای selection تطابق دارند پردازش می‌کند. اگر دستور در حال تولید خروجی گزارش باشد، افزودن ستون "selected" (با -o selected) همه سطرها را نمایش می‌دهد و اگر سطر با selection مطابقت داشته باشد عدد 1 و در غیر این صورت 0 را نشان می‌دهد. معیارهای انتخاب با تعیین نام ستون‌ها و مقادیر معتبر آن‌ها با استفاده از عملگرهای مقایسه‌ای پشتیبانی‌شده تعریف می‌شوند. برای راهنمای سریع و مشاهده فهرست کامل نام ستون‌های قابل استفاده در گزینش و مجموعه عملگرهای انتخابی پشتیبانی‌شده، خروجی دستور زیر را بررسی کنید: dmsetup info -c -S help
--table table
یک جدول نگاشت یک‌خطی را مستقیماً در خط فرمان مشخص می‌کند. برای اطلاعات بیشتر در مورد قالب جدول نگاشت به بخش‌های زیر مراجعه کنید.
استفاده از کوکی (cookie) برای همگام‌سازی با udev.
نکته: باید برای عملیات یکسان از کوکی یکسان استفاده شود، یعنی ایجاد چندین دستگاه مختلف. ترکیب عملیات مختلف بر روی یک دستگاه منفرد توصیه نمی‌شود.
مشخص کردن uuid.
پاسخ بله به تمام اعلان‌ها به‌طور خودکار.
تولید خروجی با جزئیات بیشتر. برای افزایش جزئیات تا ۴ بار تکرار کنید (-vvvv): گزینه -vv پیام‌های اشکال‌زدایی را فعال می‌کند، گزینه -vvv زمان سپری‌شده پس از هر ioctl را اضافه می‌کند، گزینه -vvvv نام فایل مبدأ و شماره خطوط را درج می‌کند.
در صورت فعال بودن همگام‌سازی udev، بررسی می‌شود که عملیات udev به‌درستی انجام شود و در غیر این صورت تلاش می‌شود بعداً گره‌های دستگاه اصلاح گردند.
نمایش نسخه کتابخانه و درایور هسته.

clear device_name
جدول نگاشت موجود در اسلات جدول غیرفعال را برای device_name نابود می‌کند.

create device_name [-n|--notable|--table table|table_file] [--readahead [+]sectors|auto|none] [-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume]
دستگاهی با نام داده‌شده ایجاد می‌کند. اگر table یا table_file ارائه شود، جدول نگاشت بارگذاری شده و فعال (live) می‌شود. در غیر این صورت جدول از ورودی استاندارد خوانده می‌شود مگر آنکه از --notable استفاده شود. شناسه اختیاری uuid می‌تواند در دستورات بعدی dmsetup به‌جای device_name استفاده شود. در صورت موفقیت، دستگاه در جدول نگاشت ظاهر می‌شود و برای دستگاه فعال گره /dev/mapper/device_name ایجاد می‌گردد. برای اطلاعات بیشتر درباره قالب جدول نگاشت به بخش‌های زیر مراجعه کنید.

create --concise [concise_device_specification]
یک یا چند دستگاه را از روی مشخصات فشرده دستگاه ایجاد می‌کند. هر دستگاه با یک فهرست جداشده با کاما مشخص می‌شود: name, uuid, minor number, flags, comma-separated table lines. پرچم‌ها به‌طور پیشفرض خواندن-نوشتن (rw) هستند یا می‌توانند فقط‌خواندنی (ro) باشند. شناسه‌های Uuid، minor number و flags اختیاری هستند، بنابراین این فیلدها می‌توانند خالی باشند. یک نقطه-ویرگول مشخصات دستگاه‌های مختلف را از هم جدا می‌کند. برای اسکیپ کردن کاراکتر بعدی از بک‌اسلش استفاده کنید، برای نمونه یک کاما یا نقطه-ویرگول در نام یا جدول نگاشت. همچنین بخش قالب فشرده (CONCISE FORMAT) در زیر را ببینید.

deps [-o options] [device_name ...]
فهرستی از دستگاه‌های ارجاع داده‌شده توسط جدول فعال را برای دستگاه مشخص‌شده نمایش می‌دهد. نام دستگاه‌ها در خروجی می‌تواند با گزینه‌های زیر سفارشی‌سازی شود: devno (جفت major و minor، استفاده‌شده به‌طور پیشفرض)، blkdevname (نام دستگاه بلوکی)، devname (نام نگاشت برای دستگاه‌های نگاشتگر دستگاه، در غیر این صورت معادل blkdevname).

help [-c|-C|--columns]
خلاصه‌ای از دستورات موجود را نمایش می‌دهد و می‌تواند به‌طور اختیاری شامل فهرست فیلدهای گزارش باشد.

info [device_name ...]
اطلاعات مختصری درباره دستگاه به این شکل نمایش می‌دهد:

State: SUSPENDED|ACTIVE, READ-ONLY
Read Ahead: sectors
Tables present: LIVE and/or INACTIVE
Open reference count
Last event sequence number (used by wait)
Major and minor device number
Number of targets in the live table
UUID

info -c|-C|--columns [--count count] [--interval seconds] [--noheadings|--headings none|abbrev|full|0|1|2] [-o fields] [-O|--sort sort_fields] [--nameprefixes] [--separator separator] [device_name]
خروجی که می‌توانید آن را سفارشی‌سازی کنید. فیلدها با کاما از یکدیگر جدا می‌شوند و از فهرست زیر انتخاب می‌گردند: name, major, minor, attr, open, segments, events, uuid. ویژگی‌ها عبارتند از: (L)ive, (I)nactive, (s)uspended, (r)ead-only, read-(w)rite. علامت '+' را قبل از فهرست قرار دهید تا به‌جای جایگزینی، به ستون‌های پیشفرض افزوده شود. علامت '-' را قبل از هر فیلد مرتب‌سازی قرار دهید تا مرتب‌سازی معکوس روی آن ستون اعمال شود.

ls [--target target_type] [-o options] [--exec command] [--tree]
فهرست نام دستگاه‌ها. به‌طور اختیاری تنها دستگاه‌هایی را فهرست می‌کند که دست‌کم یک هدف از نوع مشخص‌شده دارند. به‌طور اختیاری برای هر دستگاه یک دستور را اجرا می‌کند. نام دستگاه به انتهای دستور ارائه‌شده الحاق می‌شود. نام دستگاه‌ها در خروجی می‌تواند با گزینه‌های زیر سفارشی شود: devno (جفت major و minor، استفاده‌شده به‌طور پیشفرض)، blkdevname (نام دستگاه بلوکی)، devname (نام نگاشت برای دستگاه‌های نگاشتگر دستگاه، در غیر این صورت معادل blkdevname). گزینه --tree وابستگی‌های بین دستگاه‌ها را به‌صورت یک درخت نمایش می‌دهد. این گزینه فهرستی از گزینه‌ها با جداکننده کاما را می‌پذیرد. برخی از آن‌ها اطلاعات نمایش‌داده‌شده برای هر گره را مشخص می‌کنند: device / nodevice; blkdevname; active, open, rw, uuid. برخی دیگر نحوه نمایش درخت را مشخص می‌کنند: ascii, utf, vt100; compact, inverted, notrunc.

reload device_name [--table table|table_file]
بارگذاری table یا table_file در اسلات جدول غیرفعال برای device_name. اگر هیچ‌کدام ارائه نشود، جدول را از ورودی استاندارد می‌خواند.

mangle [device_name ...]
اطمینان حاصل می‌کند که device_name و UUID دستگاه نگاشتگر دستگاه موجود، در قالب تغییر شکل‌یافته (mangled) صحیح و حاوی فقط کاراکترهای فهرست سفید (پشتیبانی‌شده توسط udev) باشد و در صورت لزوم تغییر نام انجام می‌دهد. هر کاراکتری که در فهرست سفید نباشد بر اساس تنظیم --manglename تغییر شکل می‌یابد. تغییر نام خودکار فقط برای نام دستگاه‌ها عمل می‌کند و برای UUID دستگاه‌ها کار نمی‌کند، زیرا هسته اجازه تغییر دادن UUID دستگاه‌های فعال را نمی‌دهد. هرگونه UUID نادرست تنها گزارش می‌شود و باید با غیرفعال کردن اولیه دستگاه و سپس فعال‌سازی مجدد آن با حالت تغییر شکل مناسب، به‌صورت دستی اصلاح شود (گزینه --manglename را نیز ببینید).

measure [device_name ...]
داده‌هایی را نمایش می‌دهد که در صورت راه‌اندازی اندازه‌گیری در زمان جاری، توسط device_name به زیرسیستم IMA گزارش می‌شد. این دستور صرفاً برای اشکال‌زدایی است و در عمل اندازه‌گیری را آغاز نمی‌کند.

message device_name sector message
ارسال پیام به هدف (target). اگر به سکتور نیازی نیست از 0 استفاده کنید.

mknodes [device_name ...]
اطمینان حاصل می‌کند که گره موجود در /dev/mapper برای device_name صحیح است. اگر هیچ device_name ارائه نشود، اطمینان حاصل می‌کند که تمام گره‌های موجود در /dev/mapper مربوط به دستگاه‌های نگاشت‌شده‌ای هستند که در حال حاضر توسط درایور کرنل نگاشتگر دستگاه بارگذاری شده‌اند، و در صورت لزوم گره‌ها را اضافه، تغییر یا حذف می‌کند.

remove [-f|--force] [--retry] [--deferred] device_name ...
یک دستگاه را حذف می‌کند. دستگاه دیگر برای dmsetup قابل مشاهده نخواهد بود. دستگاه‌های باز (open) را نمی‌توان حذف کرد، اما افزودن --force جدول نگاشت را با جدولی جایگزین می‌کند که همه عملیات I/O را با خطا مواجه می‌سازد. گزینه --deferred حذف با تأخیر دستگاه‌های باز را فعال می‌کند - دستگاه هنگامی که آخرین کاربر آن را ببندد حذف خواهد شد. قابلیت حذف با تأخیر از نسخه 4.27.0 درایور نگاشتگر دستگاه در نسخه هسته بالادستی 3.13 پشتیبانی می‌شود. (از dmsetup version برای بررسی این مورد استفاده کنید.) اگر تلاشی برای حذف دستگاه ناموفق باشد، احتمالاً به این دلیل که فرآیندی ناشی از اجرای یک قانون سریع udev موقتاً دستگاه را باز کرده است، گزینه --retry موجب می‌شود که عملیات پیش از اعلام شکست، برای چند ثانیه مجدداً تکرار شود. گزینه‌های --force و --udevcookie را با یکدیگر ترکیب نکنید، زیرا ممکن است udev پردازش قوانین udev را در میانه جایگزینی هدف با خطا آغاز کند و منجر به نتایج پیش‌بینی‌نشده شود.

remove_all [-f|--force] [--deferred]
تلاش برای حذف تمام تعاریف دستگاه‌ها، یعنی بازنشانی درایور (reset). این دستور همچنین پس از آن mknodes را اجرا می‌کند. با احتیاط استفاده کنید! دستگاه‌های باز را نمی‌توان حذف کرد، اما افزودن --force جدول نگاشت را با جدولی جایگزین می‌کند که همه عملیات I/O را با خطا مواجه می‌سازد. گزینه --deferred حذف با تأخیر دستگاه‌های باز را فعال می‌کند - دستگاه با بسته شدن توسط آخرین کاربر حذف خواهد شد. قابلیت حذف با تأخیر از نسخه 4.27.0 درایور نگاشتگر دستگاه موجود در نسخه بالادستی 3.13 هسته پشتیبانی می‌شود.

rename device_name new_name
تغییر نام یک دستگاه.

rename device_name --setuuid uuid
تنظیم uuid برای دستگاهی که بدون uuid ایجاد شده است. پس از تنظیم، uuid قابل تغییر نیست.

resume device_name ... [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs] [--readahead [+]sectors|auto|none]
خروج دستگاه از حالت تعلیق. اگر یک جدول نگاشت غیرفعال بارگذاری شده باشد، فعال می‌شود. سپس I/O به تعویق افتاده مجدداً برای پردازش در صف قرار می‌گیرد.

setgeometry device_name cyl head sect start
تنظیم هندسه دستگاه برحسب C/H/S.

splitname device_name [subsystem]
نام دستگاه داده‌شده (device name) را به مؤلفه‌های تشکیل‌دهنده subsystem تفکیک می‌کند. زیرسیستم پیشفرض LVM است. در حال حاضر LVM نام دستگاه‌ها را با الحاق نام‌های گروه حجم (Volume Group)، حجم منطقی (Logical Volume) و هر لایه داخلی با خط تیره به‌عنوان جداکننده تولید می‌کند. هر خط تیره درون نام‌ها برای اسکیپ شدن دو برابر می‌شود. کدگذاری دقیق ممکن است در نسخه‌های بعدی بدون اطلاع قبلی تغییر کند، بنابراین توصیه می‌کنیم همیشه با استفاده از نسخه فعلی این دستور رمزگشایی را انجام دهید.

stats command [options]
مدیریت نواحی آمار IO برای دستگاه‌ها. برای جزئیات بیشتر dmstats(8) را ببینید.

status [--target target_type] [--noflush] [device_name ...]
نمایش اطلاعات وضعیت برای هریک از اهداف دستگاه. با گزینه --target، تنها اطلاعات مربوط به نوع هدف مشخص‌شده نمایش داده می‌شود. با گزینه --noflush، هدف thin (از نسخه 1.3.0) هیچ‌یک از تغییرات معلق را پیش از گزارش آمار خود بر روی دیسک کامیت نمی‌کند.

suspend device_name ... [--nolockfs] [--noflush]
تعلیق یک دستگاه. هر عملیات I/O که قبلاً توسط دستگاه نگاشت شده اما هنوز کامل نشده است تخلیه (flush) خواهد شد. هرگونه I/O بعدی به آن دستگاه تا زمانی که دستگاه در حالت تعلیق است به تعویق خواهد افتاد. اگر سیستم‌فایلی روی دستگاه باشد که از این عملیات پشتیبانی کند، ابتدا تلاشی برای همگام‌سازی (sync) آن انجام می‌شود مگر اینکه --nolockfs مشخص شده باشد. برخی از اهداف مانند نسخه‌های اخیر multipath (اکتبر ۲۰۰۶) ممکن است از گزینه --noflush پشتیبانی کنند. این گزینه به I/Oهای معلقی که هنوز به دستگاه نرسیده‌اند اجازه می‌دهد تخلیه‌نشده باقی بمانند.

table [--concise] [--target target_type] [--showkeys] [device_name ...]
جدول نگاشت فعلی دستگاه را در قالبی نمایش می‌دهد که می‌توان با دستورات create یا load مجدداً از آن استفاده کرد. با گزینه --target، تنها اطلاعات مربوط به نوع هدف مشخص‌شده نمایش داده می‌شود. کلیدهای رمزنگاری واقعی در خروجی جدول برای اهداف crypt و integrity پنهان می‌شوند مگر اینکه پارامتر --showkeys ارائه شود. ارجاعات کلید هسته با پیشوند : تحت تأثیر این پارامتر قرار نمی‌گیرند و همیشه نمایش داده می‌شوند (فقط برای هدف crypt). با گزینه --concise، خروجی به‌صورت فشرده در یک خط ارائه می‌شود. سپس کاماها نام، uuid، شماره فرعی دستگاه، پرچم‌ها ('ro' یا 'rw') و جدول نگاشت (در صورت وجود) را از هم جدا می‌کنند. نقطه-ویرگول‌ها دستگاه‌ها را جدا می‌سازند. بک‌اسلش‌ها کاماها، نقطه-ویرگول‌ها یا بک‌اسلش‌ها را اسکیپ می‌کنند. بخش قالب فشرده (CONCISE FORMAT) در زیر را ببینید.

targets
نام‌ها و نسخه‌های اهداف در حال حاضر بارگذاری‌شده را نمایش می‌دهد.

udevcomplete cookie
بیدار کردن فرآیندهایی که در انتظار اتمام پردازش کوکی مشخص‌شده توسط udev هستند.

udevcomplete_all [age_in_minutes]
حذف تمام کوکی‌های قدیمی‌تر از تعداد دقایق مشخص‌شده. هر فرآیندی که روی یک کوکی در انتظار باشد بلافاصله از سر گرفته می‌شود.

udevcookie
فهرست تمام کوکی‌های موجود. کوکی‌ها سمافورهای سراسری سیستم هستند که کلیدهای آن‌ها با دو بایت از پیش تعیین‌شده (0x0D4D) پیشوندگذاری شده‌اند.

udevcreatecookie
یک کوکی جدید برای همگام‌سازی اقدامات با پردازش udev ایجاد می‌کند. خروجی، مقدار کوکی است. معمولاً نیازی به ایجاد کوکی نداریم زیرا dmsetup به‌طور خودکار آن‌ها را برای هر اقدام ایجاد کرده و از بین می‌برد. با این حال، می‌توانیم به‌طور صریح یک کوکی بسازیم تا چندین اقدام را با هم گروه‌بندی کرده و در عوض تنها از یک کوکی استفاده کنیم. می‌توانیم با استفاده از گزینه --udevcookie کوکی مورد استفاده را برای هر دستور مربوطه تعریف کنیم. همچنین می‌توانیم این مقدار را در متغیر محیطی فرآیند dmsetup با نام DM_UDEV_COOKIE صادر (export) کنیم تا به‌طور خودکار در تمام دستورات بعدی تا زمان حذف متغیر استفاده شود. فراخوانی این دستور یک سمافور سراسری در سیستم ایجاد می‌کند که باید با فراخوانی صریح دستور udevreleasecookie پاکسازی گردد.

udevflags cookie
مقدار cookie داده‌شده را تجزیه می‌کند و هرگونه پرچم‌های کنترلی udev کدگذاری‌شده را استخراج می‌نماید. خروجی در قالب کلید متغیر محیطی است که برای استفاده در قوانین udev مناسب است. اگر پرچم نام نمادین داشته باشد، خروجی به شکل زیر است: DM_UDEV_FLAG_<flag_name> = '1'، DM_UDEV_FLAG<flag_position> = '1' در غیر این صورت. پرچم‌های udev زیرسیستم فاقد نام‌های نمادین هستند و این پرچم‌ها همیشه به‌صورت: DM_SUBSYSTEM_UDEV_FLAG<flag_position> = '1'. گزارش می‌شوند. در مجموع ۱۶ پرچم udev وجود دارد.

udevreleasecookie [cookie]
منتظر تمامی پردازش‌های معلق udev مرتبط با مقدار کوکی داده‌شده می‌ماند و کوکی را همراه با سمافور زیرین آن پاکسازی می‌کند. اگر کوکی مستقیماً مشخص نشده باشد، دستور تلاش می‌کند از مقدار تعریف‌شده توسط متغیر محیطی DM_UDEV_COOKIE استفاده کند.

version
نمایش اطلاعات نسخه.

wait device_name [--noflush] [event_nr]
تا زمانی که شمارنده رویداد برای device_name از event_nr بیشتر شود، متوقف می‌شود (sleep). برای مشاهده شماره رویداد برگردانده‌شده از -v استفاده کنید. برای صبر کردن تا زمان فعال‌سازی رویداد بعدی، از info برای یافتن آخرین شماره رویداد استفاده کنید. با گزینه --noflush، هدف thin (از نسخه 1.3.0) هیچ‌یک از تغییرات معلق را قبل از گزارش آماری خود روی دیسک کامیت نمی‌کند.

wipe_table device_name ... [-f|--force] [--noflush] [--nolockfs]
منتظر می‌ماند تا تمامی عملیات I/O در حال اجرا از طریق دستگاه کامل شوند، سپس جدول نگاشت را با جدولی جدید جایگزین می‌کند که هرگونه I/O ارسالی جدید به دستگاه را با خطا مواجه می‌سازد. در صورت موفقیت، این عمل باید هر دستگاهی را که توسط جدول(های) دستگاه باز نگه داشته شده است، آزاد کند.

هر خط از جدول نگاشت، یک هدف (target) منفرد را مشخص می‌کند و به شکل زیر است:

logical_start_sector num_sectors target_type target_args

انواع ساده هدف و آرگومان‌های هدف عبارتند از:

linear destination_device start_sector
نگاشت خطی مرسوم.

striped num_stripes chunk_size [destination start_sector] ...
ایجاد یک ناحیه راه‌راه (striped).
برای نمونه striped 2 32 /dev/hda1 0 /dev/hdb1 0 اولین چانک (16 KiB) را به این صورت نگاشت می‌کند:

LV chunk 1 → hda1, chunk 1
LV chunk 2 → hdb1, chunk 1
LV chunk 3 → hda1, chunk 2
LV chunk 4 → hdb1, chunk 2
و غیره.
هرگونه I/O به این ناحیه را با خطا مواجه می‌کند. برای آزمایش یا ایجاد دستگاه‌هایی با حفره (hole) درون آن‌ها کاربرد دارد.
هنگام خواندن، بلوک‌هایی از صفر را برمی‌گرداند. هر داده‌ای که نوشته شود بی سر و صدا دور انداخته می‌شود. این یک معادل دستگاه بلوکی از سینک داده دستگاه کاراکتری /dev/zero شرح داده‌شده در null(4) است.

اهداف پیچیده‌تر عبارتند از:

کارایی یک دستگاه بلوکی (مانند یک هارد دیسک چرخشی) را با مهاجرت پویای بخشی از داده‌های آن به یک دستگاه کوچک‌تر و سریع‌تر (مانند یک SSD) بهبود می‌بخشد.
رمزنگاری شفاف دستگاه‌های بلوکی با استفاده از API رمزنگاری هسته (crypto API).
خواندن و/یا نوشتن روی دستگاه‌های مختلف را به تأخیر می‌اندازد. برای آزمایش مفید است.
نگاشتی شبیه به هدف linear ایجاد می‌کند اما به‌صورت دوره‌ای رفتارهای نامطمئن و خطا از خود نشان می‌دهد. برای شبیه‌سازی خرابی دستگاه‌ها هنگام آزمایش کاربرد دارد.
داده‌ها را روی دو یا چند دستگاه آینه‌سازی (mirror) می‌کند.
دسترسی را از طریق چندین مسیر به یک دستگاه واحد میانجی‌گری می‌کند.
یک رابط به درایور RAID نرم‌افزاری هسته، یعنی md ارائه می‌دهد.
پشتیبانی از اسنپ‌شات‌های (تصاویر لحظه‌ای) دستگاه‌ها را فراهم می‌کند.
از تخصیص پویای فضا (thin provisioning) در دستگاه‌ها پشتیبانی می‌کند و همچنین پشتیبانی بهتری از اسنپ‌شات ارائه می‌دهد.

برای کسب اطلاعات بیشتر درباره اهداف گوناگون، قالب‌های جدول نگاشت آن‌ها و خطوط وضعیت، لطفاً فایل‌های موجود در دایرکتوری Documentation/device-mapper در درخت کد منبع هسته را مطالعه کنید. (ممکن است توزیع شما نسخه‌ای از این اطلاعات را در پوشه مستندات بسته device-mapper گنجانده باشد.)

# A table to join two disks together
0 1028160 linear /dev/hda 0
1028160 3903762 linear /dev/hdb 0

# A table to stripe across the two disks,
# and add the spare space from
# hdb to the back of the volume
0 2056320 striped 2 32 /dev/hda 0 /dev/hdb 0
2056320 2875602 linear /dev/hdb 1028160

نمایش فشرده از یک یا چند دستگاه:

  • یک کاما فیلدهای هر دستگاه را از هم جدا می‌کند.
  • یک نقطه-ویرگول دستگاه‌ها را جدا می‌کند.

نمایش یک دستگاه به شکل زیر است:

<name>,<uuid>,<minor>,<flags>,<table>[,<table>+][;<name>,<uuid>,<minor>,<flags>,<table>[,<table>+]]

فیلدها عبارتند از:

نام دستگاه.
شناسه UUID دستگاه (یا خالی).
شماره فرعی (minor) دستگاه. اگر خالی باشد، هسته یک شماره فرعی مناسب اختصاص می‌دهد.
پرچم‌های پشتیبانی‌شده عبارتند از:
جدول نگاشت در حال بارگذاری را برای دستگاه فقط‌خواندنی تنظیم می‌کند
جدول نگاشت در حال بارگذاری را برای دستگاه خواندن-نوشتن تنظیم می‌کند (پیشفرض)
یک خط از جدول نگاشت. بخش «قالب جدول» در بالا را ببینید.

# A simple linear read-only device
test-linear-small,,,ro,\
 0 2097152 linear /dev/loop0 0,\
 2097152 2097152 linear /dev/loop1 0

# Two linear devices
test-linear-small,,,,\
 0 2097152 linear /dev/loop0 0;\
 test-linear-large,,,,\
 0 2097152 linear /dev/loop1 0,\
 2097152 2097152 linear /dev/loop2 0

نام دایرکتوری دستگاه‌ها. پیشفرض "/dev" است و باید یک مسیر مطلق باشد.
کوکی مورد استفاده برای تمام دستورات مربوطه جهت همگام‌سازی با پردازش udev. این یک جایگزین برای استفاده از گزینه --udevcookie است.
حالت پیشفرض تغییر شکل (mangling). پیشفرض "auto" است و یک جایگزین برای استفاده از گزینه --manglename است.
تنظیم روی 1 برای افزودن فایل مبدأ و شماره خط به پیام‌های اشکال‌زدایی. به‌طور خودکار توسط -vvvv فعال می‌شود.

نسخه اصلی: Joe Thornber

dmstats(8), udev(7), udevadm(8)

صفحه منابع LVM2:
صفحه منابع نگاشتگر دستگاه:

Mar 26 2025 Linux