LOSETUP(8) System Administration LOSETUP(8)

losetup - راه‌اندازی و کنترل دستگاه‌های حلقه (Loop Devices)

دریافت اطلاعات:

losetup [loopdev]

losetup -l [-a]

losetup -j file [-o offset]

جدا کردن یک دستگاه حلقه:

losetup -d loopdev ...

جدا کردن تمام دستگاه‌های حلقه مرتبط:

losetup -D

راه‌اندازی یک دستگاه حلقه:

losetup [-o offset] [--sizelimit size] [--sector-size size] [--loop-ref name] [-Pr] [--show] -f|loopdev file

تغییر اندازه یک دستگاه حلقه:

losetup -c loopdev

دستور losetup برای مرتبط ساختن دستگاه‌های حلقه با پرونده‌های عادی یا دستگاه‌های بلوکی، جدا کردن دستگاه‌های حلقه و پرس‌وجو از وضعیت یک دستگاه حلقه استفاده می‌شود. اگر تنها آرگومان loopdev داده شود، وضعیت دستگاه حلقه متناظر نمایش داده می‌شود. اگر هیچ گزینه‌ای داده نشود، همه دستگاه‌های حلقه نمایش داده می‌شوند.

توجه داشته باشید که قالب خروجی قدیمی (یعنی losetup -a) با رشته‌های جداشده با کاما، به نفع قالب خروجی --list منسوخ شده است.

امکان ایجاد چندین دستگاه حلقه مستقل برای یک پرونده پشتیبان یکسان وجود دارد. این پیکربندی ممکن است خطرناک باشد و می‌تواند باعث از دست رفتن داده‌ها، خرابی و رونویسی شود. برای جلوگیری از این مشکل، هنگام راه‌اندازی از گزینه --nooverlap همراه با --find استفاده کنید.

راه‌اندازی دستگاه حلقه در صورت استفاده همراه با --find یک عملیات اتمیک نیست و losetup این عملیات را با هیچ قفلی محافظت نمی‌کند. تعداد تلاش‌ها در داخل برنامه به حداکثر ۱۶ محدود شده است. توصیه می‌شود برای جلوگیری از تداخل در موارد استفاده به شدت موازی، به عنوان مثال از flock(1) استفاده شود.

پسوندهای ضرب‌شونده KiB (=1024)، MiB (=1024*1024) و به همین ترتیب برای GiB، TiB، PiB، EiB، ZiB و YiB (عبارت "iB" اختیاری است، به عنوان مثال "K" همان معنای "KiB" را دارد) یا پسوندهای KB (=1000)، MB (=1000*1000) و به همین ترتیب برای GB، TB، PB، EB، ZB و YB می‌توانند پس از آرگومان‌های size و offset بیایند.

-a, --all

نمایش وضعیت تمام دستگاه‌های حلقه. توجه داشته باشید که تمام اطلاعات برای کاربران غیرریشه (non-root) در دسترس نیست. همچنین --list را ببینید. قالب خروجی قدیمی (همان‌طور که بدون --list چاپ می‌شود) منسوخ شده است.

-d, --detach loopdev...

جدا کردن پرونده یا دستگاه مرتبط با دستگاه(های) حلقه مشخص‌شده. توجه داشته باشید که از نسخه 3.7 لینوکس، هسته از «تخریب تنبل دستگاه» (lazy device destruction) استفاده می‌کند. عملیات جدا کردن در صورتی که دستگاه به طور فعال توسط سیستم استفاده شود، دیگر خطای EBUSY بازنمی‌گرداند، بلکه با پرچم autoclear علامت‌گذاری شده و بعداً نابود می‌شود. حتی اگر از دستگاه استفاده نشود، دستگاه حلقه می‌تواند بعداً نابود شود. اگر نیاز دارید منتظر حذف کامل دستگاه حلقه بمانید، پس از losetup دستور udevadm settle را فراخوانی کنید.

-D, --detach-all

جدا کردن تمام دستگاه‌های حلقه مرتبط.

-f, --find [file]

یافتن نخستین دستگاه حلقه استفاده‌نشده. اگر یک آرگومان file وجود داشته باشد، از دستگاه یافته‌شده به عنوان دستگاه حلقه استفاده می‌کند. در غیر این صورت، تنها نام آن را چاپ می‌کند.

--show

نمایش نام دستگاه حلقه اختصاص‌یافته در صورتی که گزینه -f و یک آرگومان file وجود داشته باشند.

-L, --nooverlap

بررسی تداخل میان دستگاه‌های حلقه برای جلوگیری از وضعیتی که یک پرونده پشتیبان یکسان بین چند دستگاه حلقه به اشتراک گذاشته شود. اگر پرونده از قبل توسط دستگاه دیگری استفاده شده است، به جای یک دستگاه جدید از همان دستگاه مجدداً استفاده می‌شود. این گزینه تنها همراه با --find معنا دارد.

-j, --associated file [-o offset]

نمایش وضعیت تمام دستگاه‌های حلقه مرتبط با file داده‌شده.

-o, --offset offset

شروع داده‌ها به میزان offset بایت به درون پرونده یا دستگاه مشخص‌شده منتقل می‌شود. offset می‌تواند با پسوندهای ضرب‌شونده همراه باشد؛ بالا را ببینید.

--loop-ref string

تنظیم رشته مرجع (reference string). مقدار پیش‌فرض سازگار با گذشته، استفاده از نام پرونده پشتیبان به عنوان مرجع در ioctl راه‌اندازی حلقه است (با نام lo_file_name). این گزینه می‌تواند این رفتار پیش‌فرض را بازنویسی کرده و مرجع را روی string تنظیم کند. مرجع ممکن است توسط udevd در /dev/loop/by-ref استفاده شود. هسته لینوکس اصلاً از مرجع استفاده نمی‌کند، اما می‌تواند توسط برخی ابزارهای قدیمی که قادر به خواندن پرونده پشتیبان از sysfs نیستند استفاده شود. مرجع تنها برای کاربر ریشه (root) خواندنی است (--output +REF را ببینید) و به ۶۴ بایت محدود شده است.

--sizelimit size

پایان داده‌ها به حداکثر size بایت پس از شروع داده‌ها تنظیم می‌شود. size می‌تواند با پسوندهای ضرب‌شونده همراه باشد؛ بالا را ببینید.

-b, --sector-size size

تنظیم اندازه سکتور منطقی دستگاه حلقه بر حسب بایت (از لینوکس 4.14). این گزینه می‌تواند هنگام ایجاد یک دستگاه حلقه جدید و همچنین به عنوان یک دستور مستقل برای تغییر اندازه سکتور دستگاه حلقه از قبل موجود استفاده شود.

-c, --set-capacity loopdev

وادار کردن درایور حلقه به بازخوانی اندازه پرونده مرتبط با دستگاه حلقه مشخص‌شده.

-P, --partscan

وادار کردن هسته به پویش جدول پارتیشن روی یک دستگاه حلقه تازه‌ساخته‌شده. توجه داشته باشید که تجزیه جدول پارتیشن به اندازه‌های سکتور بستگی دارد. اندازه سکتور پیش‌فرض ۵۱۲ بایت است، در غیر این صورت باید از گزینه --sector-size همراه با --partscan استفاده کنید.

-r, --read-only

راه‌اندازی یک دستگاه حلقه فقط‌خواندنی.

--direct-io[=on|off]

فعال یا غیرفعال کردن ورودی/خروجی مستقیم (Direct I/O) برای پرونده پشتیبان. مقدار پیش‌فرض off است. مشخص کردن --direct-io یا --direct-io=on آن را فعال می‌کند. اما برای غیرفعال کردن صریح آن می‌توان از --direct-io=off استفاده کرد.

-v, --verbose

حالت با جزئیات (verbose).

-l, --list

اگر یک دستگاه حلقه یا گزینه -a مشخص شده باشد، ستون‌های پیش‌فرض را برای دستگاه حلقه مشخص‌شده یا تمام دستگاه‌های حلقه چاپ می‌کند؛ حالت پیش‌فرض چاپ اطلاعات درباره همه دستگاه‌ها است. همچنین --output، --noheadings، --raw و --json را ببینید.

-O, --output column[,column]...

مشخص کردن ستون‌هایی که باید برای خروجی --list چاپ شوند. برای دریافت فهرستی از تمام ستون‌های پشتیبانی‌شده از --help استفاده کنید.

--output-all

چاپ تمام ستون‌های موجود.

-n, --noheadings

چاپ نکردن سرستون‌ها برای قالب خروجی --list.

--raw

استفاده از قالب خروجی خام برای --list.

-J, --json

استفاده از قالب JSON برای خروجی --list.

Cryptoloop دیگر پشتیبانی نمی‌شود و dm-crypt جایگزین آن شده است. برای جزئیات بیشتر cryptsetup(8) را ببینید.

دستور losetup در صورت موفقیت 0 و در صورت شکست مقداری غیرصفر بازمی‌گرداند. هنگامی که losetup وضعیت یک دستگاه حلقه را نمایش می‌دهد، اگر دستگاه پیکربندی نشده باشد 1 و اگر خطایی رخ دهد که مانع از تعیین وضعیت دستگاه شود 2 را بازمی‌گرداند.

از نسخه 2.37 دستور losetup از ioctl مربوط به LOOP_CONFIGURE برای راه‌اندازی دستگاه حلقه جدید با یک فراخوانی ioctl استفاده می‌کند. نسخه‌های قدیمی از ioctlهای LOOP_SET_FD و LOOP_SET_STATUS64 برای انجام همین کار استفاده می‌کردند.

LOOPDEV_DEBUG=all

خروجی اشکال‌زدایی را فعال می‌کند.

/dev/loop[0..N]

دستگاه‌های بلوکی حلقه

/dev/loop-control

دستگاه کنترل حلقه

دستورهای زیر می‌توانند به عنوان مثالی از استفاده از دستگاه حلقه به کار روند.

# dd if=/dev/zero of=~/file.img bs=1024k count=10
# losetup --find --show ~/file.img
/dev/loop0
# mkfs -t ext2 /dev/loop0
# mount /dev/loop0 /mnt
...
# umount /dev/loop0
# losetup --detach /dev/loop0

Karel Zak <kzak@redhat.com>، بر پایه نسخه اصلی از Theodore Ts’o <tytso@athena.mit.edu>.

برای گزارش اشکال، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues.

دستور losetup بخشی از بسته util-linux است که می‌تواند از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت شود.

2026-06-16 util-linux 2.41.5