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

pvck - بررسی و صحتسنجی متادیتای حجمهای فیزیکی LVM

pvck [گزینهها] دستگاه

دستور pvck ساختار برچسب دیسک LVM و نواحی متادیتای حجم فیزیکی (PV) را بررسی کرده و سلامت یا آسیبدیدگی هدرها را گزارش میدهد.

این ابزار همچنین امکان استخراج، بازبینی و بازسازی یا تعمیر ساختارهای آسیب‌دیده LVM بر روی حجم‌های فیزیکی را فراهم می‌آورد.

headers
چاپ هدرها و ساختارهای دیسکی LVM شامل: label_header، pv_header، mda_header(ها) و متن متادیتا. در صورت وجود مقادیر نامعتبر، هشدارهای لازم نمایش داده می‌شوند. هر دو بخش label_header و pv_header در یک سکتور ۵۱۲ بایتی قرار دارند که معمولاً سکتور دوم دستگاه است. یک mda_header در یک سکتور ۵۱۲ بایتی در آفست ۴۰۹۶ بایت واقع شده است. بخش mda_header دوم نیز به صورت اختیاری می‌تواند در نزدیکی انتهای دستگاه قرار گیرد. متن متادیتا در ناحیه‌ای (به طور پیش‌فرض حدود ۱ مبی‌بایت) بلافاصله پس از سکتور mda_header قرار دارد. متن متادیتا بررسی می‌شود اما محتوای آن چاپ نمی‌شود (سایر گزینه‌ها را ببینید).

metadata
چاپ متن متادیتای فعلی گروه حجم (VG) مربوط به LVM (یا ذخیره آن در یک فایل) با استفاده از هدرها به منظور یافتن جدیدترین نسخه متادیتا. در صورت آسیب دیدن هدرها ممکن است متادیتا یافت نشود (گزینه metadata_search را ببینید). از گزینه --settings mda_num=2 برای جستجو در mda2 (دومین ناحیه متادیتا در انتهای دستگاه، در صورت استفاده) بهره بگیرید. متن متادیتا در خروجی استاندارد چاپ شده یا با گزینه --file در یک فایل ذخیره می‌شود.

metadata_all
فهرست کردن تمام نسخه‌های متادیتای VG موجود در ناحیه متادیتا با استفاده از هدرها برای مکان‌یابی. نسخه‌های کامل متادیتاها با گزینه --file در یک فایل ذخیره می‌شوند. اگر هدرها آسیب دیده باشند، ممکن است متادیتا یافت نشود (گزینه metadata_search را ببینید). مانند حالت قبل می‌توانید از --settings mda_num=2 استفاده کنید. همچنین با استفاده از گزینه -v می‌توانید توضیحات و تاریخ‌ها را هنگام فهرست کردن نسخه‌های متادیتا درج کنید.

metadata_search
فهرست کردن تمام نسخه‌های متادیتای VG موجود در ناحیه متادیتا از طریق جستجوی مکان‌های رایج، تا در صورت خرابی هدرها نیز متادیتا قابل بازیابی باشد. نسخه‌های کامل تمامی متادیتاها با گزینه --file در یک فایل ذخیره می‌شوند. برای ذخیره یک نسخه خاص از متادیتا، از --settings metadata_offset=<;آفست> استفاده کنید که آفست مورد نظر از فهرست نسخه‌های یافت‌شده به دست می‌آید. از گزینه -v برای نمایش توضیحات و تاریخ‌ها استفاده نمایید.

metadata_area
ذخیره کل ناحیه متنی متادیتا در یک فایل بدون پردازش و دستکاری.

--repair
تعمیر هدرها و متادیتا روی یک حجم فیزیکی (PV). این عملیات از فایل ورودی متادیتا که قبلاً توسط گزینه --dump استخراج شده یا فایل پشتیبان موجود در مسیر /etc/lvm/backup استفاده می‌کند. در صورت امکان، از متادیتای ذخیره‌شده توسط --dump از یک PV دیگر در همان VG (یا از ناحیه متادیتای دوم روی همان PV) استفاده نمایید.

در برخی موارد لازم است شناسه یکتای سراسری (UUID) حجم فیزیکی در حال تعمیر مشخص شود. این کار با استفاده از --settings pv_uuid=<UUID>; انجام می‌پذیرد. به ویژه اگر نام دستگاه برای PV در حال تعمیر با نام قبلی آن مطابقت نداشته باشد، LVM ممکن است نتواند UUID صحیح PV را تشخیص دهد. زمانی که هدرهای بیش از یک PV در یک VG آسیب دیده‌اند، تعیین UUID درست توسط کاربر و مشخص کردن آن در --settings بسیار حیاتی است؛ در غیر این صورت، در صورتی که نام‌های دستگاه از زمان آخرین ثبت متادیتا جابجا شده باشند، ممکن است UUID اشتباه به کار رود.

اگر یک PV هیچ ناحیه متادیتایی نداشته باشد و pv_header آن آسیب ببیند، عملیات تعمیر نمی‌داند که نباید هیچ ناحیه متادیتایی بسازد و به طور پیش‌فرض متادیتا را در mda1 بازسازی می‌کند. برای تعمیر دستگاه بدون ایجاد ناحیه متادیتا، از تنظیمات --settings mda_offset=0 mda_size=0 استفاده کنید.

در شرایطی خاص لازم است عملیات تعمیر روی تمام PVهای موجود در VG (با استفاده از همان فایل متادیتا) اجرا شود: اگر تمام PVهای داخل VG آسیب دیده باشند، اگر از نسخه متادیتای قدیمی استفاده شود، یا اگر به جای متادیتای خام استخراج‌شده از دستور pvck dump، از فایل پشتیبان استفاده شده باشد.

استفاده از گزینه --repair معادل اجرای --repairtype pv_header و در ادامه اجرای --repairtype metadata است.

--repairtype pv_header
تعمیر سکتور هدر، شامل pv_header و label_header.

--repairtype metadata
تعمیر mda_header و متن متادیتا. این گزینه نیازمند آن است که هدرها سالم و صحیح باشند (چه از ابتدا آسیبی ندیده باشند و چه قبلاً تعمیر شده باشند).

--repairtype label_header
تعمیر فیلدهای label_header در حالی که pv_header (در همان سکتور) دست‌نخورده باقی می‌ماند. (معمولاً بهتر است به جای آن از repairtype pv_header استفاده شود.)

گزینه --settings رفتارهای مشخصی از استخراج (dump) یا تعمیر (repair) را کنترل کرده یا بازنویسی می‌کند. تمام مقادیر آفست و اندازه در تنظیمات بر حسب بایت هستند (واحدها شناسایی نمی‌شوند). این تنظیمات ممکن است در نسخه‌های آینده تغییر کنند.

mda_num=1|2
انتخاب ناحیه متادیتایی که باید استفاده شود. به طور پیش‌فرض اولین ناحیه متادیتا (۱) استفاده می‌شود. ناحیه mda1 همیشه در آفست ۴۰۹۶ قرار دارد. ناحیه mda2 در انتهای دستگاه اغلب وجود ندارد (به طور پیش‌فرض ایجاد نمی‌شود). اگر mda1 پاک شود، در صورت وجود mda2، اغلب متادیتا هنوز در آن موجود خواهد بود.

metadata_offset=بایت
انتخاب متن متادیتا در آفست مشخص‌شده. همراه با metadata_search برای چاپ یا ذخیره یک نمونه خاص از متن متادیتا به کار می‌رود.

mda_offset=بایت mda_size=بایت
اشاره به موقعیت مکانی و اندازه ناحیه متادیتا (mda). یک mda شامل mda_header و یک بافر حلقوی متنی متادیتا است. تنظیم این مقدار metadata_search را مجبور می‌کند تا متادیتا را به جای مکان‌های استاندارد، در ناحیه مشخص‌شده جستجو کند. هنگامی که در زمان تعمیر برابر با صفر قرار داده شود، نشان‌دهنده آن است که هیچ ناحیه متادیتایی نباید وجود داشته باشد.

mda2_offset=بایت mda2_size=بایت
هنگام تعمیر pv_header، این تنظیم آفست و اندازه خاصی را برای mda2 اعمال می‌کند که باید در pv_header ثبت شود.

pv_uuid=شناسه_uuid
تعیین مشخصات PV UUID برای دستگاهی که در حال تعمیر است. در صورت عدم تعیین، دستور تعمیر تلاش می‌کند تا با تطبیق نام دستگاه در متادیتا، UUID مناسب را بیابد.

device_size=بایت
data_offset=بایت
هنگام تعمیر pv_header، مقادیر device_size، data_offset و pvid همگی می‌توانند مستقیماً مشخص شوند؛ در این حالت، این مقادیر از فایل متادیتا (که منبع معمول آن‌هاست) خوانده نشده و می‌توان فایل متادیتا را نادیده گرفت. مقدار data_offset موقعیت آغازین اولین اکستنت فیزیکی (داده) است که بعد از اولین ناحیه متادیتا قرار می‌گیرد.

بررسی وجود متادیتا روی یک دستگاه:

pvck PV ...

[ گزینه‌های_عمومی ]

—

بررسی و چاپ هدرها و متادیتای LVM روی یک دستگاه:

pvck --dump headers|metadata|metadata_all|metadata_search PV

[ -f|--file رشته ]
[ --settings رشته ]
[ --[pv]metadatacopies 0|1|2 ]
[ گزینه‌های_عمومی ]

—

تعمیر هدرها یا متادیتای LVM روی یک دستگاه:

pvck --repairtype pv_header|metadata|label_header PV

[ -f|--file رشته ]
[ --settings رشته ]
[ گزینه‌های_عمومی ]

—

تعمیر هدرها و متادیتای LVM روی یک دستگاه:

pvck --repair -f|--file رشته PV

[ --settings رشته ]
[ گزینه‌های_عمومی ]

—

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

[ --labelsector عدد ]

گزینه‌های عمومی lvm:

[ -d|--debug ]
[ -h|--help ]
[ -q|--quiet ]
[ -t|--test ]
[ -v|--verbose ]
[ -y|--yes ]
[ --commandprofile رشته ]
[ --config رشته ]
[ --devices PV ]
[ --devicesfile رشته ]
[ --driverloaded y|n ]
[ --journal رشته ]
[ --lockopt رشته ]
[ --longhelp ]
[ --nohints ]
[ --nolocking ]
[ --profile رشته ]
[ --version ]

--commandprofile رشته
پروفایل فرمانی که برای پیکربندی دستور استفاده می‌شود. برای اطلاعات بیشتر در مورد پروفایل‌ها، lvm.conf(5) را ببینید.

--config رشته
تنظیمات پیکربندی برای دستور که بر تنظیمات lvm.conf(5) ارجحیت دارند. آرگومان رشته از همان قالب lvm.conf(5) استفاده می‌کند یا می‌تواند از ساختار بخش/فیلد بهره ببرد. برای اطلاعات بیشتر درباره پیکربندی، lvm.conf(5) را ببینید.

-d|--debug ...
تعیین سطح دیباگ و اشکال‌زدایی. برای افزایش جزئیات پیام‌های ارسالی به فایل گزارش وقایع یا syslog (در صورت فعال بودن)، آن را بین ۱ تا ۶ بار تکرار کنید.

--devices PV
دستگاه‌های قابل مشاهده و در دسترس دستور را محدود می‌کند. دستگاه‌هایی که در این لیست نباشند ناموجود فرض خواهند شد. این گزینه می‌تواند تکرار شود یا فهرستی از دستگاه‌ها را که با کاما از هم جدا شده‌اند بپذیرد. این گزینه بر فایل devices ارجحیت دارد.

--devicesfile رشته
فایلی شامل فهرستی از دستگاه‌هایی که LVM باید استفاده کند. این فایل باید در مسیر /etc/lvm/devices/ موجود باشد و با استفاده از دستور lvmdevices(8) مدیریت می‌شود. این گزینه تنظیمات devices/devicesfile و devices/use_devicesfile در lvm.conf(5) را بازنویسی می‌کند.

--driverloaded y|n
در صورت تنظیم روی no یا n، دستور تلاشی برای استفاده از device-mapper انجام نخواهد داد. این گزینه برای آزمون و عیب‌یابی به کار می‌رود.

--dump headers|metadata|metadata_all|metadata_search
تخلیه و استخراج هدرها و متادیتا از یک PV به منظور عیب‌یابی و تعمیر. مقادیر مجاز عبارتند از: headers برای چاپ و بررسی هدرهای LVM، metadata برای چاپ یا ذخیره متادیتای متنی جاری، metadata_all برای فهرست کردن یا ذخیره تمام نسخه‌های متادیتا، metadata_search برای فهرست کردن یا ذخیره همه نسخه‌های متادیتا با جستجوی مکان‌های استاندارد در صورت آسیب دیدن هدرها، و metadata_area برای ذخیره کل یک ناحیه متنی متادیتا در یک فایل.

-f|--file رشته
فایل متادیتا برای خواندن یا نوشتن.

-h|--help
نمایش متن راهنما.

--journal رشته
ثبت اطلاعات در ژورنال systemd. این اطلاعات علاوه بر اطلاعات فعال‌شده از طریق تنظیم log/journal در lvm.conf است: command اطلاعات مربوط به دستور را ثبت می‌کند؛ output خروجی پیش‌فرض دستور را ثبت می‌کند؛ debug اطلاعات کامل عیب‌یابی دستور را ثبت می‌کند.

--labelsector عدد
به طور پیش‌فرض، PV با یک شناسه LVM2 در سکتور دوم خود (سکتور ۱) برچسب‌گذاری می‌شود. این گزینه اجازه می‌دهد از سکتور دیگری در نزدیکی ابتدای دیسک (بین ۰ تا ۳ شامل خود آن‌ها - ثابت LABEL_SCAN_SECTORS در کد منبع را ببینید) استفاده کنید. با احتیاط استفاده شود.

--lockopt رشته
برای ارسال گزینه‌های موارد خاص به lvmlockd استفاده می‌شود. برای اطلاعات بیشتر، lvmlockd(8) را ببینید.

--longhelp
نمایش متن راهنمای تفصیلی و کامل.

--nohints
عدم استفاده از فایل راهنما (hints) برای مکان‌یابی دستگاه‌ها برای PVها. هنگامی که از فایل hints استفاده نشود، ممکن است دستور دستگاه‌های بیشتری را برای یافتن PVها بخواند. دستور همچنان باطل‌سازی استاندارد فایل hints را در صورت لزوم انجام خواهد داد.

--nolocking
غیرفعال کردن قفل‌گذاری (locking). با احتیاط استفاده شود؛ دستورات همزمان ممکن است نتایج نادرستی ایجاد کنند.

--profile رشته
نام مستعاری برای --commandprofile یا --metadataprofile بسته به دستور مورد نظر.

--[pv]metadatacopies 0|1|2
تعداد نواحی متادیتایی که برای ذخیره متادیتای VG روی یک PV اختصاص می‌یابد. اگر مقدار ۲ باشد، یک نسخه از متادیتای VG در ابتدای PV و نسخه دوم در انتهای آن ذخیره می‌شود. اگر مقدار ۱ باشد، یک نسخه در ابتدای PV ذخیره می‌شود. اگر مقدار ۰ باشد، هیچ نسخه‌ای از متادیتای VG روی این PV ذخیره نمی‌شود. این حالت ممکن است در VGهایی که شامل PVهای متعددی هستند مفید باشد (البته محدودیت‌هایی در امکان استفاده بعدی از vgsplit ایجاد می‌کند).

-q|--quiet ...
فرونشاندن خروجی‌ها و پیام‌های وقایع. این گزینه بر --debug و --verbose ارجحیت دارد. تکرار مجدد آن، پاسخ خودکار «نه» (no) به هرگونه سوال تأییدیه را اعمال خواهد کرد.

--repair
تعمیر هدرها و متادیتا روی یک حجم فیزیکی (PV).

--repairtype pv_header|metadata|label_header
تعمیر هدرها و متادیتا روی یک PV. بخش توضیحات دستور را ببینید.

--settings رشته
تعیین تنظیمات خاص دستور در قالب "Key = Value". چندین تنظیم را می‌توان در داخل گیومه قرار داد یا گزینه settings را برای هر کدام تکرار کرد.

-t|--test
اجرا در حالت آزمایشی (Test mode). در این حالت دستورات متادیتا را به‌روزرسانی نمی‌کنند. این قابلیت با غیرفعال کردن تمام عملیات نوشتن متادیتا اما بازگرداندن وضعیت موفقیت‌آمیز به تابع فراخواننده پیاده‌سازی شده است. این امر در عملیات‌های چندمرحله‌ای چنانچه ابزاری متکی به خواندن متادیتایی باشد که فرض می‌کند تغییر کرده ولی نکرده است، ممکن است به پیام‌های خطای غیرمعمول منجر شود.

-v|--verbose ...
تعیین سطح پرحرفی (verbose). برای افزایش جزئیات پیام‌های ارسالی به stdout و stderr، از ۱ تا ۴ بار تکرار کنید.

--version
نمایش اطلاعات نسخه نرم‌افزار.

-y|--yes
عدم درخواست تاییدیه به صورت تعاملی و پیش‌فرض در نظر گرفتن پاسخ مثبت (yes). با احتیاط بسیار زیاد استفاده شود. (برای پاسخ منفی خودکار، گزینه -qq را ببینید.)

نام حجم فیزیکی، یک مسیر دستگاه زیر شاخه /dev. برای دستوراتی که اکستنت‌های فیزیکی را مدیریت می‌کنند، آرگومان موقعیتی PV معمولاً پسوندی را می‌پذیرد که محدوده (یا محدوده‌های چندگانه) از اکستنت‌های فیزیکی (PE) را مشخص می‌کند. هنگامی که اولین PE حذف شود، پیش‌فرض ابتدای دستگاه خواهد بود و هنگامی که آخرین PE حذف شود، پیش‌فرض انتهای آن است.
محدوده آغاز و پایان (شامل خودشان):
PV[:PE-PE]...
محدوده آغاز و طول (شمارش از ۰):
PV[:PE+PE]...
رشته
برای اطلاعات بیشتر در مورد محتوای رشته، توضیحات مربوط به هر گزینه را ببینید.
اندازه[واحد]
اندازه یک عدد ورودی است که یک واحد اختیاری را می‌پذیرد. واحدهای ورودی بدون توجه به بزرگی یا کوچکی حروف همیشه به عنوان مقادیر بر مبنای دو (باینری) در نظر گرفته می‌شوند؛ به عنوان مثال 'k' و 'K' هر دو نشان‌دهنده ۱۰۲۴ هستند. واحد ورودی پیش‌فرض با حرف و به دنبال آن |واحد مشخص می‌شود. واحد نشان‌دهنده سایر واحدهای ورودی ممکن است: b|B بایت، s|S سکتورهای ۵۱۲ بایتی، k|K کیبی‌بایت (KiB)، m|M مبی‌بایت (MiB)، g|G گیبی‌بایت (GiB)، t|T تبی‌بایت (TiB)، p|P پبی‌بایت (PiB)، e|E اگزی‌بایت (EiB). (این مورد نباید با گزینه خروجی --units اشتباه گرفته شود که در آن حروف بزرگ مضاربی از ۱۰۰۰ هستند.)

برای اطلاعات بیشتر درباره متغیرهای محیطی استفاده‌شده توسط LVM، lvm(8) را ببینید. به عنوان مثال، LVM_VG_NAME معمولاً می‌تواند به جای یک پارامتر الزامی VG جایگزین شود.

اگر جدول پارتیشن در مسیر /dev/sda آسیب دیده یا از بین رفته باشد و شما گمان می‌کنید که یک پارتیشن LVM در حدود ۱۰۰ مبی‌بایت وجود داشته است، می‌توان این ناحیه از دیسک را با استفاده از پارامتر --labelsector با مقدار ۲۰۴۸۰۰ اسکن کرد (۵۱۲ / ۱۰۲۴ * ۱۰۲۴ * ۱۰۰ = ۲۰۴۸۰۰):

pvck --labelsector 204800 /dev/sda

lvm(8), lvm.conf(5), lvmconfig(8), lvmdevices(8),

pvchange(8), pvck(8), pvcreate(8), pvdisplay(8), pvmove(8), pvremove(8), pvresize(8), pvs(8), pvscan(8),

vgcfgbackup(8), vgcfgrestore(8), vgchange(8), vgck(8), vgcreate(8), vgconvert(8), vgdisplay(8), vgexport(8), vgextend(8), vgimport(8), vgimportclone(8), vgimportdevices(8), vgmerge(8), vgmknodes(8), vgreduce(8), vgremove(8), vgrename(8), vgs(8), vgscan(8), vgsplit(8),

lvcreate(8), lvchange(8), lvconvert(8), lvdisplay(8), lvextend(8), lvreduce(8), lvremove(8), lvrename(8), lvresize(8), lvs(8), lvscan(8),

lvm-fullreport(8), lvm-lvpoll(8), blkdeactivate(8), lvmdump(8),

dmeventd(8), lvmpolld(8), lvmlockd(8), lvmlockctl(8), cmirrord(8), lvmdbusd(8), fsadm(8),

lvmsystemid(7), lvmreport(7), lvmcache(7), lvmraid(7), lvmthin(7), lvmvdo(7), lvmautoactivation(7)

مه ۲۰۲۵ lvm2