INTEGRITYSETUP(8) دستورهای مدیریتی و نگهداری INTEGRITYSETUP(8)

integritysetup - مدیریت دستگاههای یکپارچگی داده dm-integrity

integritysetup [<گزینهها>] <عملکرد> [<آرگومانهای عملکرد>]

ابزار مدیریت و پیکربندی دستگاههای ماژول هسته dm-integrity جهت احراز اصالت و بررسی یکپارچگی بلوکهای داده.

مقصد یکپارچگی نگاشت‌کننده دستگاه (device-mapper integrity target) امکان بررسی شفاف یکپارچگی خواندن/نوشتن دستگاه‌های بلوکی را فراهم می‌کند. مقصد dm-integrity یک فیلد یکپارچگی داده اضافی به ازای هر سکتور شبیه‌سازی می‌کند. می‌توانید از این فیلد اضافی به طور مستقیم با ابزار integritysetup یا به طور غیرمستقیم (برای رمزنگاری احراز اصالت‌شده) از طریق cryptsetup استفاده کنید.

ابزار integritysetup از عملیات زیر پشتیبانی می‌کند:

format <device>

دستگاه <device> را قالب‌بندی می‌کند (فضای مورد نیاز و ابربلوک dm-integrity را محاسبه کرده و دستگاه را پاک‌سازی می‌کند).

<گزینه‌ها> می‌توانند [--data-device, --batch-mode, --no-wipe, --journal-size, --interleave-sectors, --tag-size, --integrity, --integrity-key-size, --integrity-key-file, --sector-size, --progress-frequency, --progress-json] باشند.

open <device> <name>
create <name> <device> (نحو منسوخ‌شده)

یک نگاشت با نام <name> با تکیه بر دستگاه <device> باز می‌کند.

اگر الگوریتم یکپارچگی دستگاه غیرپیش‌فرض باشد، باید الگوریتم با گزینه --integrity مشخص شود. این مورد از روی دستگاه تشخیص داده نخواهد شد.

<گزینه‌ها> می‌توانند [--data-device, --batch-mode, --journal-watermark, --journal-commit-time, --buffer-sectors, --integrity, --integrity-key-size, --integrity-key-file, --integrity-no-journal, --integrity-recalculate, --integrity-recalculate-reset, --integrity-recovery-mode, --allow-discards] باشند.

close <name>
remove <name> (نحو منسوخ‌شده)

نگاشت موجود <name> را حذف می‌کند.

<گزینه‌ها> می‌توانند [--deferred] یا [--cancel-deferred] باشند.

status <name>

وضعیت نگاشت یکپارچگی فعال <name> را گزارش می‌دهد.

dump <device>

پارامترها را از ابربلوک ذخیره‌شده روی دیسک گزارش می‌دهد.

resize <name>

اندازه یک نگاشت فعال <name> را تغییر می‌دهد.

اگر --size (به سکتورهای ۵۱۲ بایتی) یا --device-size مشخص نشده باشد، اندازه از دستگاه زیرین محاسبه می‌شود. پس از تغییر اندازه، پرچم recalculating تنظیم می‌شود. اگر پرچم --wipe تنظیم شده باشد و اندازه دستگاه افزایش یابد، بخش تازه افزوده‌شده پاک‌سازی (wipe) خواهد شد.

افزایش اندازه حجم‌های یکپارچگی از نسخه ۵.۷ هسته لینوکس در دسترس است، کاهش اندازه باید روی هسته‌های قدیمی‌تر نیز کار کند.

<گزینه‌ها> می‌توانند [--size, --device-size, --wipe] باشند.

--allow-discards

اجازه استفاده از درخواست‌های دورریز (discard / TRIM) را برای دستگاه می‌دهد. این گزینه از نسخه ۵.۷ هسته لینوکس در دسترس است.

--batch-mode, -q

عدم درخواست تاییدیه (حالت دسته‌ای و غیرتعاملی).

--bitmap-flush-time MS

زمان تخلیه نگاشت بیتی (bitmap) به میلی‌ثانیه.

هشدار: در صورت خرابی ناگهانی سیستم (crash)، اگر ژورنال غیرفعال باشد این احتمال وجود دارد که داده‌ها و برچسب یکپارچگی با یکدیگر مطابقت نداشته باشند.

--bitmap-sectors-per-bit SECTORS

تعداد سکتورهای ۵۱۲ بایتی به ازای هر بیت نگاشت بیتی؛ این مقدار باید توانی از دو باشد.

--buffer-sectors SECTORS

تعداد سکتورها در یک بافر.

دسترسی به ناحیه برچسب با استفاده از بافرها انجام می‌شود؛ اندازه بزرگ‌تر بافر بدین معناست که اندازه ورودی/خروجی (I/O) بزرگ‌تر خواهد بود، اما ممکن است تعداد درخواست‌های ورودی/خروجی کمتری صادر شود.

--cancel-deferred

حذف معوق پیکربندی‌شده قبلی دستگاه را در دستور close لغو می‌کند.

--data-device <data_device>

یک دستگاه داده جداگانه را مشخص می‌کند که حاوی داده‌های موجود است. در این حالت <device> شامل برچسب‌های یکپارچگی محاسبه‌شده و ژورنال برای داده‌های روی <data_device> خواهد بود.

نکته: برای پاک‌سازی نشدن دستگاه داده پس از قالب‌بندی اولیه، گزینه --no-wipe را نیز مشخص کرده و با --integrity-recalculate فعال کنید تا برچسب‌های یکپارچگی به طور خودکار محاسبه مجدد شوند.

--debug

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

--deferred

حذف دستگاه را در دستور close تا زمانی که آخرین کاربر آن را ببندد به تعویق می‌اندازد.

--help, -?

نمایش متن راهنما و پارامترهای پیش‌فرض.

--integrity, -I ALGORITHM

استفاده از محاسبه یکپارچگی داخلی (حالت مستقل). الگوریتم یکپارچگی می‌تواند CRC (مانند crc32c/crc32)، تابع هش غیررمزنگاری (xxhash64) یا تابع هش (sha1, sha256) باشد.

برای HMAC (مانند hmac-sha256) باید یک کلید یکپارچگی و اندازه آن را نیز مشخص کنید.

--integrity-bitmap-mode, -B

استفاده از حالت نگاشت بیتی جایگزین (در دسترس از هسته ۵.۲ لینوکس) که در آن dm-integrity به جای ژورنال از نگاشت بیتی استفاده می‌کند. اگر بیتی در نگاشت بیتی ۱ باشد، داده‌ها و برچسب‌های یکپارچگی ناحیه متناظر همگام‌سازی نشده‌اند - در صورت خرابی ناگهانی سیستم، نواحی همگام‌نشده دوباره محاسبه خواهند شد. حالت نگاشت بیتی سریع‌تر از حالت ژورنال است، زیرا داده‌ها دو بار نوشته نمی‌شوند، اما قابلیت اطمینان کمتری دارد، زیرا اگر خرابی داده‌ها هنگام کرش سیستم رخ دهد، ممکن است تشخیص داده نشود.

--integrity-key-file FILE

فایل حاوی کلید یکپارچگی.

--integrity-key-size BYTES

اندازه کلید یکپارچگی داده‌ها. حداکثر ۴۰۹۶ بایت است.

--integrity-no-journal, -D

غیرفعال کردن ژورنال برای دستگاه یکپارچگی.

--integrity-recalculate

محاسبه مجدد خودکار برچسب‌های یکپارچگی در هسته هنگام فعال‌سازی. دستگاه می‌تواند در طول محاسبه مجدد خودکار یکپارچگی استفاده شود اما تنها پس از پایان عملیات پس‌زمینه به طور کامل از نظر یکپارچگی محافظت می‌شود. این گزینه از نسخه ۴.۱۹ هسته لینوکس در دسترس است.

--integrity-recalculate-reset

شروع مجدد محاسبه از ابتدای دستگاه. این گزینه می‌تواند برای تغییر تابع چک‌سام یکپارچگی استفاده شود. توجه داشته باشید که این گزینه طول برچسب را تغییر نمی‌دهد. این گزینه از نسخه ۵.۱۳ هسته لینوکس در دسترس است.

--integrity-recovery-mode, -R

حالت بازیابی (بدون ژورنال، بدون بررسی برچسب).

--interleave-sectors SECTORS

تعداد سکتورهای درهم‌تنیده (interleaved).

--journal-commit-time MS

زمان ثبت (commit) به میلی‌ثانیه. با سپری شدن این زمان (و در صورتی که عملیات تخلیه صریحی صادر نشده باشد)، ژورنال نوشته می‌شود.

--journal-crypt ALGORITHM

الگوریتم رمزنگاری برای ناحیه داده‌های ژورنال. می‌توانید از یک رمزگذاری بلوکی مانند cbc-aes یا یک رمزگذاری جریانی، برای مثال chacha20 یا ctr-aes در اینجا استفاده کنید.

نکته: گزینه‌های رمزنگاری ژورنال تنها برای آزمایش در نظر گرفته شده‌اند. استفاده از رمزنگاری ژورنال بدون رمزنگاری خود داده‌ها بی‌معناست.

--journal-crypt-key-file FILE

فایل حاوی کلید رمزنگاری ژورنال.

--journal-crypt-key-size BYTES

اندازه کلید رمزنگاری ژورنال. حداکثر ۴۰۹۶ بایت است.

--journal-integrity ALGORITHM

الگوریتم یکپارچگی برای ناحیه ژورنال. برای مشخصات دقیق به گزینه --integrity مراجعه کنید.

--journal-integrity-key-file FILE

فایل حاوی کلید یکپارچگی ژورنال.

--journal-integrity-key-size BYTES

اندازه کلید یکپارچگی ژورنال. حداکثر ۴۰۹۶ بایت است.

--journal-size, -j BYTES

اندازه ژورنال.

--journal-watermark PERCENT

حد آستانه ژورنال به درصد. هنگامی که اندازه ژورنال از این حد فراتر رود، تخلیه ژورنال آغاز خواهد شد.

--no-wipe

دستگاه را پس از قالب‌بندی پاک‌سازی (wipe) نکنید. دستگاهی که در ابتدا پاک‌سازی نشده باشد حاوی چک‌سام‌های نامعتبر خواهد بود.

--progress-frequency <seconds>

چاپ یک خط جداگانه در هر <seconds> ثانیه همراه با پیشرفت پاک‌سازی.

--progress-json

داده‌های پیشرفت پاک‌سازی را در قالب json چاپ می‌کند که عمدتاً برای پردازش ماشینی مناسب است. این گزینه هر نیم ثانیه (یا بر اساس مقدار --progress-frequency) یک خط جداگانه چاپ می‌کند. خروجی JSON در طول پیشرفت پاک‌سازی به صورت زیر است (با این تفاوت که به صورت تک‌خط فشرده است):
{
  "device":"/dev/sda",      // backing device or file
  "device_bytes":"8192",    // bytes wiped so far
  "device_size":"44040192", // total bytes to wipe
  "speed":"126877696",      // calculated speed in bytes per second (based on progress so far)
  "eta_ms":"2520012",       // estimated time to finish wipe in milliseconds
  "time_ms":"5561235"       // total time spent wiping device in milliseconds
}

نکته در مورد اعداد در خروجی JSON: به دلیل محدودیت‌های تجزیه‌کننده‌های JSON، تمام اعداد به دلیل نیاز به اعداد صحیح ۶۴ بیتی بدون علامت در قالب رشته نمایش داده می‌شوند.

--sector-size, -s BYTES

اندازه سکتور (توانی از دو: ۵۱۲، ۱۰۲۴، ۲۰۴۸، ۴۰۹۶).

--tag-size, -t BYTES

اندازه برچسب یکپارچگی به ازای هر سکتور (در اینجا تابع یکپارچگی برچسب احراز اصالت را ذخیره می‌کند).

نکته: اندازه می‌تواند کوچک‌تر از اندازه خروجی تابع هش باشد، که در این صورت فقط بخشی از هش ذخیره خواهد شد.

--usage

نمایش راهنمای کوتاه گزینه‌ها.

--verbose, -v

چاپ اطلاعات بیشتر هنگام اجرای دستور.

--version, -V

نمایش نسخه برنامه.

--wipe

ناحیه تازه تخصیص‌یافته را پس از تغییر اندازه به اندازه بزرگ‌تر، پاک‌سازی (wipe) می‌کند. اگر این پرچم تنظیم نشود، چک‌سام‌ها برای داده‌هایی که قبلاً در ناحیه تازه تخصیص‌یافته ذخیره شده بودند محاسبه خواهند شد.

هشدار:

از این گزینه‌ها استفاده نکنید مگر اینکه به سازگاری با یک هسته قدیمی خاص نیاز داشته باشید.

--integrity-legacy-padding

استفاده از پدینگ قدیمی ناکارآمد.

--integrity-legacy-hmac

استفاده از محاسبه قدیمی و دارای نقص HMAC (همچنین از ابربلوک محافظت نمی‌کند).

--integrity-legacy-recalculate

اجازه محاسبه مجدد ناامن حجم‌ها با کلیدهای HMAC (آفست محاسبه مجدد در ابربلوک محافظت نمی‌شود).

دستور integritysetup در صورت موفقیت مقدار 0 و در صورت بروز خطا یک مقدار غیرصفر برمی‌گرداند.

کدهای خطا عبارتند از: 1 پارامترهای نادرست، 2 عدم دسترسی یا مجوز ناکافی، 3 کمبود حافظه، 4 دستگاه نادرست مشخص‌شده، 5 دستگاه از قبل وجود دارد یا دستگاه مشغول است.

مقصد dm-integrity از نسخه ۴.۱۲ هسته لینوکس در دسترس است.

قالب‌بندی و فعال‌سازی یک دستگاه یکپارچگی همیشه نیازمند امتیازات مدیر سیستم (کاربر ارشد) است زیرا ابربلوک در مقصد هسته dm-integrity محاسبه و مدیریت می‌شود.

قالب‌بندی دستگاه در حالت مستقل پیش‌فرض (CRC32C):

integritysetup format <device>

باز کردن دستگاه با پارامترهای پیش‌فرض:

integritysetup open <device> test

قالب‌بندی دستگاه در حالت مستقل برای استفاده با HMAC(SHA256):

integritysetup format <device> --tag-size 32 --integrity hmac-sha256 --integrity-key-file <keyfile> --integrity-key-size <key_bytes>

باز کردن (فعال‌سازی) دستگاه با HMAC(SHA256) و کلید HMAC موجود در فایل:

integritysetup open <device> test --integrity hmac-sha256 --integrity-key-file <keyfile> --integrity-key-size <key_bytes>

تخلیه اطلاعات ابربلوک dm-integrity:

integritysetup dump <device>

مشخصات فرمت روی دیسک در صفحه DMIntegrity https://gitlab.com/cryptsetup/cryptsetup/wikis/DMIntegrity در دسترس است.

ابزار integritysetup توسط Milan Broz <gmazyland@gmail.com>. نوشته شده است.

باگ‌ها را در لیست پستی cryptsetup <cryptsetup@lists.linux.dev> یا در بخش مسائل پروژه https://gitlab.com/cryptsetup/cryptsetup/-/issues/new. گزارش دهید.

لطفاً خروجی دستور ناموفق را همراه با گزینه --debug پیوست کنید.

Cryptsetup FAQ https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions

cryptsetup(8), integritysetup(8) و veritysetup(8)

بخشی از پروژه cryptsetup https://gitlab.com/cryptsetup/cryptsetup.

مه ۲۰۲۵ cryptsetup 2.7.5