| PVMOVE(8) | دستورهای مدیریتی و نگهداری | PVMOVE(8) |
نام (NAME)
pvmove - جابجایی بخشهای فیزیکی (PE) از یک حجم فیزیکی به حجم فیزیکی دیگر
خلاصه دستور (SYNOPSIS)
pvmove [گزینهها] [حجم_فیزیکی_مبدأ [حجم_فیزیکی_مقصد...]]
توضیحات (DESCRIPTION)
دستور pvmove بخشهای فیزیکی (Physical Extents) تخصیصیافته را از روی یک حجم فیزیکی به یک یا چند حجم فیزیکی دیگر در همان گروه حجم جابجا میکند. میتوانید به طور اختیاری یک حجم منطقی (LV) مبدأ را تعیین کنید که در این صورت تنها بخشهای استفادهشده توسط آن LV به بخشهای آزاد (یا مشخصشده) در حجم فیزیکی (PV) مقصد جابجا خواهند شد. اگر هیچ PV مقصدی مشخص نشود، قواعد معمول تخصیص گروه حجم (VG) به کار گرفته میشوند.
اگر اجرای pvmove به هر دلیلی قطع شود (برای نمونه، از کار افتادن یا کرش رایانه)، دستور pvmove را دوباره بدون هیچ آرگومان PV اجرا کنید تا عملیات در حال انجام از آخرین نقطه بررسی (checkpoint) از سر گرفته شود. علاوه بر این، میتوانید در هر زمان از گزینه abort برای لغو عملیات استفاده کنید. مکان نهایی LVها پس از لغو، به استفاده یا عدم استفاده از گزینه atomic بستگی دارد.
در صورتی که دادهها از حجمهای فیزیکی مبدأ متفاوتی جابجا شوند، بیش از یک دستور pvmove میتواند به طور همزمان اجرا شود؛ اما دستورات pvmove اضافی حجمهای منطقی (LV) را که در حال حاضر فرایند تغییر آنها در جریان است نادیده میگیرند، بنابراین ممکن است برخی از دادهها جابجا نشوند.
کاربرد (USAGE)
جابجایی
بخشهای
فیزیکی PV.
pvmove PV
[ -n|--name LV ]
[ --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ]
[ --atomic ]
[ --noudevsync ]
[ --reportformat basic|json|json_std ]
[ گزینههای_عمومی ]
ادامه یا
لغو
عملیاتهای
موجود pvmove.
pvmove
گزینههای عمومی دستور:
[ -i|--interval تعداد ]
[ --abort ]
گزینههای عمومی برای lvm:
[ -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 ]
گزینهها (OPTIONS)
--abort
لغو هرگونه
عملیات pvmove در
حال انجام.
اگر pvmove با
گزینه --atomic
آغاز شده
باشد، تمام
حجمهای
منطقی (LV) در PV
مبدأ باقی
میمانند.
در غیر این
صورت،
بخشهایی
که جابجا
شدهاند در PV
مقصد باقی
مانده و
بخشهای
جابجانشده
در PV مبدأ
خواهند
ماند.
--alloc
contiguous|cling|cling_by_tags|normal|anywhere|inherit
تعیین
سیاست
تخصیص
زمانی که یک
دستور نیاز
به تخصیص
بخشهای
فیزیکی (PE) از VG
دارد. هر VG و LV
دارای یک
سیاست
تخصیص است
که میتوان
آن را با vgchange/lvchange
تغییر داد،
یا در خط
فرمان لغو (override)
نمود. normal
قواعد
منطقی و
عمومی را
اعمال
میکند،
مانند قرار
ندادن
باریکههای
موازی (stripes) روی
همان PV. inherit
سیاست VG را
بر یک LV
اعمال
میکند. contiguous
نیازمند
این است که
PEهای جدید در
مجاورت PEهای
موجود قرار
گیرند. cling
بخشهای
فیزیکی
جدید را روی
همان PVای
قرار
میدهد که
PEهای موجود
در همان
باریکه (stripe) از
LV قرار
دارند. اگر
PEهای کافی
برای یک
تخصیص وجود
داشته باشد
اما normal از
آنها
استفاده
نکند،
گزینه anywhere از
آنها
استفاده
خواهد کرد
حتی اگر
کارایی را
کاهش دهد،
برای نمونه
با قرار
دادن دو
باریکه روی
یک PV.
آرگومانهای
مکانی و
اختیاری PV در
خط فرمان
نیز
میتوانند
برای محدود
کردن
اینکه
دستور از
کدام PVها
برای تخصیص
استفاده
کند، به کار
روند. برای
اطلاعات
بیشتر
درباره
تخصیص به lvm(8)
مراجعه
فرمایید.
--atomic
عملیات pvmove را
به صورت
اتمیک
(تجزیهناپذیر
یا
همهیاهیچ)
در
میآورد؛
تضمین
میکند که
همه LVهای تحت
تأثیر به PV
مقصد منتقل
شوند، یا در
صورت لغو
عملیات
هیچیک
منتقل
نشوند.
-A|--autobackup y|n
مشخص
میکند که
آیا
متادیتا پس
از اعمال
تغییر به
طور خودکار
پشتیبانگیری
شود یا خیر.
فعال کردن
این گزینه
به شدت
توصیه
میشود!
برای
اطلاعات
بیشتر به
vgcfgbackup(8) مراجعه
فرمایید.
-b|--background
اگر عملیات
نیاز به
بررسی
دورهای (polling)
داشته
باشد، این
گزینه باعث
میشود
دستور پیش
از اتمام
عملیات
بازگردد و
بررسی
دورهای در
پسزمینه
انجام
پذیرد.
--commandprofile رشته
نمایه
دستوری
مورد
استفاده
برای
پیکربندی
دستور. برای
اطلاعات
بیشتر
درباره
نمایهها
به lvm.conf(5)
مراجعه
فرمایید.
--config رشته
تنظیمات
پیکربندی
برای دستور.
این
تنظیمات بر
مقادیر lvm.conf(5)
تقدم دارند.
آرگومان
رشته از
همان قالب
lvm.conf(5) بهره
میبرد یا
میتواند
از نحو
بخش/فیلد
استفاده
نماید. برای
اطلاعات
بیشتر
درباره
پیکربندی
به lvm.conf(5)
مراجعه
فرمایید.
-d|--debug ...
تنظیم سطح
اشکالزدایی
(دیباگ). این
گزینه را از
۱ تا ۶ بار
تکرار کنید
تا جزئیات
پیامهای
فرستادهشده
به فایل لاگ
و/یا syslog (در
صورت فعال
بودن)
افزایش
یابد.
--devices PV
محدود کردن
دستگاههایی
که برای
دستور قابل
مشاهده و
دسترسی
هستند.
دستگاههایی
که فهرست
نشده باشند
به عنوان
مفقود در
نظر گرفته
میشوند.
این گزینه
میتواند
تکرار شود،
یا فهرستی
جدا شده با
کاما از
دستگاهها
را بپذیرد.
این گزینه
بر فایل
دستگاهها
ارجحیت
دارد.
--devicesfile رشته
فایلی شامل
فهرست
دستگاههایی
که LVM باید
استفاده
کند. این
فایل باید
در مسیر /etc/lvm/devices/
وجود داشته
باشد و با
دستور lvmdevices(8)
مدیریت
میشود. این
گزینه
تنظیمات
devices/devicesfile و devices/use_devicesfile
در lvm.conf(5) را
بازنویسی
میکند.
--driverloaded y|n
در صورت
تنظیم بر
روی no، دستور
تلاشی برای
استفاده از
device-mapper نخواهد
کرد. برای
اهداف
آزمایش و
اشکالزدایی.
-h|--help
نمایش متن
راهنما.
-i|--interval
تعداد
گزارش
میزان
پیشرفت در
فواصل
زمانی
منظم.
--journal رشته
ثبت
اطلاعات در
ژورنال systemd.
این
اطلاعات
علاوه بر
اطلاعاتی
است که توسط
تنظیم log/journal در
lvm.conf فعال
میشود. command:
ثبت
اطلاعات
درباره
دستور؛ output:
ثبت خروجی
پیشفرض
دستور؛ debug:
ثبت
اطلاعات
اشکالزدایی
کامل
دستور.
--lockopt رشته
جهت ارسال
گزینهها
در موارد
خاص به lvmlockd
استفاده
میشود.
برای
اطلاعات
بیشتر به lvmlockd(8)
مراجعه
فرمایید.
--longhelp
نمایش متن
راهنمای
کامل و
تفصیلی.
-n|--name رشته
فقط
بخشهای (extents)
متعلق به
حجم منطقی (LV)
نامبرده
شده را
جابجا
میکند.
--nohints
عدم
استفاده از
فایل hints برای
یافتن
دستگاههای
مربوط به
PVها. در صورت
عدم
استفاده از
hints، دستور
ممکن است
دستگاههای
بیشتری را
برای یافتن
PVها بخواند.
دستور
همچنان
باطلسازی
استاندارد
فایل
راهنما (hints) را
در موارد
مقتضی
انجام
خواهد داد.
--nolocking
غیرفعال
کردن
قفلگذاری.
با احتیاط
استفاده
شود؛ اجرای
همزمان
دستورات
ممکن است
نتایج
نادرستی به
همراه
داشته
باشد.
--noudevsync
غیرفعال
کردن
همگامسازی
udev. فرایند
منتظر
اعلان از
سوی udev
نخواهد
ماند و
صرفنظر از
هرگونه
پردازش
احتمالی udev
در
پسزمینه
ادامه
خواهد یافت.
تنها زمانی
از این
گزینه
استفاده
کنید که udev در
حال اجرا
نیست یا
دارای
قوانینی
است که
دستگاههای
ایجادشده
توسط LVM را
نادیده
میگیرند.
--profile رشته
نام مستعار
برای --commandprofile یا
--metadataprofile بسته به
دستور مورد
نظر.
-q|--quiet ...
سرکوب
خروجی و
پیامهای
لاگ. بر
گزینههای
--debug و --verbose
ارجحیت
دارد. تکرار
دوباره آن
همچنین
پرسشهای
تاییدی با
پاسخ 'no' را
سرکوب
میکند.
--reportformat basic|json|json_std
بازنویسی
قالب خروجی
گزارشها
که به طور
سراسری
توسط تنظیم
report/output_format در lvm.conf(5)
تعیین شده
است. basic قالب
اصلی به
همراه
ستونها و
سطرها است.
اگر بیش از
یک گزارش در
هر دستور
وجود داشته
باشد،
پیشوند هر
گزارش نام
آن گزارش
برای
شناسایی
خواهد بود.
json خروجی
گزارش را در
قالب JSON
تولید
میکند. json_std
خروجی
گزارش را در
قالب JSON
تولید
میکند که
سازگاری
بیشتری با
استاندارد
JSON دارد. برای
اطلاعات
بیشتر به
lvmreport(7) مراجعه
فرمایید.
-t|--test
اجرا در
حالت
آزمایشی.
دستورات
متادیتا را
بهروزرسانی
نخواهند
کرد. این کار
با غیرفعال
کردن تمام
عملیات
نوشتن
متادیتا
اما
بازگرداندن
وضعیت
موفقیت به
تابع
فراخواننده
پیادهسازی
شده است. این
امر ممکن
است در
عملیاتهای
چندمرحلهای
منجر به
پیامهای
خطای
غیرمعمول
شود اگر
ابزاری به
خواندن
متادیتایی
اتکا کند که
فرض میکند
تغییر
یافته است
اما در واقع
تغییر
نیافته
است.
-v|--verbose ...
تنظیم سطح
پرگویی (verbosity).
این گزینه
را از ۱ تا ۴
بار تکرار
کنید تا
جزئیات
پیامهای
فرستادهشده
به stdout و stderr
افزایش
یابد.
--version
نمایش
اطلاعات
نسخه.
-y|--yes
عدم نمایش
تاییدیه به
صورت
تعاملی و در
نظر گرفتن
همیشگی
پاسخ مثبت (yes).
با احتیاط
فراوان
استفاده
شود. (برای
پاسخ منفی
خودکار،
گزینه -qq را
ببینید.)
متغیرها (VARIABLES)
- PV
- نام حجم فیزیکی، یک مسیر دستگاه زیر dev/. برای دستوراتی که بخشهای فیزیکی را مدیریت میکنند، یک آرگومان مکانی PV معمولاً پسوندی را میپذیرد که محدوده (یا چند محدوده) از بخشهای فیزیکی (PE) را مشخص میکند. هنگامی که نخستین PE حذف شود، به طور پیشفرض ابتدای دستگاه در نظر گرفته میشود و هنگامی که آخرین PE حذف شود، پیشفرض انتهای دستگاه است. محدوده آغاز و پایان (شامل هر دو): PV[:PE-PE]... محدوده شروع و طول (شمارش از ۰): PV[:PE+PE]...
- String
- برای اطلاعات درباره محتوای رشته به توضیحات همان گزینه مراجعه کنید.
- Size[UNIT]
- اندازه یک عدد ورودی است که یک واحد اختیاری را میپذیرد. واحدهای ورودی همواره صرفنظر از بزرگی یا کوچکی حروف به عنوان مقادیر بر مبنای دو در نظر گرفته میشوند؛ برای نمونه 'k' و 'K' هر دو به معنی ۱۰۲۴ هستند. واحد پیشفرض ورودی با حرف و در ادامه با |UNIT مشخص شده است. مقدار UNIT بیانگر دیگر واحدهای ورودی ممکن است: b|B بایت، s|S سکتورهای ۵۱۲ بایتی، k|K کیبیبایت (KiB)، m|M میبیبایت (MiB)، g|G گیبیبایت (GiB)، t|T تبیبایت (TiB)، p|P پبیبایت (PiB)، e|E اگزیبایت (EiB). (این مورد نباید با کنترل خروجی --units اشتباه گرفته شود که در آن حروف بزرگ به معنای مضاربی از ۱۰۰۰ هستند.)
متغیرهای محیطی (ENVIRONMENT VARIABLES)
برای اطلاعات در مورد متغیرهای محیطی مورد استفاده توسط lvm به lvm(8) مراجعه کنید. برای نمونه، LVM_VG_NAME معمولاً میتواند به جای یک پارامتر الزامی VG جایگزین شود.
نکات (NOTES)
دستور pvmove به شیوه زیر عمل میکند:
۱. یک LV موقت به نام 'pvmove' برای نگهداری جزئیات تمام جابجاییهای داده مورد نیاز ایجاد میشود.
۲. تمام LVهای موجود در VG برای یافتن دادههای پیوستهای که طبق آرگومانهای خط فرمان نیاز به جابجایی دارند، جستجو میشوند. به ازای هر بخش از دادههای یافتشده، یک سگمنت جدید به انتهای LV با نام pvmove اضافه میشود. این سگمنت به صورت یک آینه (mirror) موقت عمل میکند تا دادهها را از مکان اصلی به مکان جدید تخصیصیافته کپی نماید. حجم منطقی اصلی بهروزرسانی میشود تا به جای دسترسی مستقیم به دادهها، از سگمنت آینهای موقت جدید در LV موقت pvmove استفاده کند.
۳. متادیتای VG روی دیسک بهروزرسانی میشود.
۴. نخستین سگمنت از LV با نام pvmove فعال شده و آینهسازی نخستین بخش دادهها را آغاز میکند. در هر زمان تنها یک سگمنت آینهسازی میشود زیرا این کار معمولاً کارآمدتر است.
۵. یک دیمن به طور مکرر پیشرفت عملیات را در فواصل زمانی مشخصشده بررسی میکند. هنگامی که تشخیص دهد نخستین آینه موقت همگام (in sync) شده است، آن آینه را جدا میسازد تا تنها مکان جدید برای آن دادهها مورد استفاده قرار گیرد و یک نقطه بازبینی (checkpoint) در متادیتای VG روی دیسک ثبت میکند. سپس آینه مربوط به سگمنت بعدی LV با نام pvmove را فعال مینماید.
۶. هنگامی که هیچ سگمنت دیگری برای آینهسازی باقی نماند، LV موقت حذف شده و متادیتای VG بهروزرسانی میشود تا حجمهای منطقی منعکسکننده مکانهای جدید داده باشند.
توجه داشته باشید که این فرایند جدید نمیتواند از نوع متادیتای روی دیسک LVM1 اولیه پشتیبانی کند. متادیتا را میتوان با استفاده از vgconvert(8) تبدیل نمود.
در صورت استفاده از گزینه --atomic، رویکرد کمی متفاوتی برای جابجایی به کار گرفته میشود. مجدداً یک LV موقت 'pvmove' برای ذخیره جزئیات تمام جابجاییهای داده مورد نیاز ایجاد میشود. این LV موقت شامل تمام سگمنتهای مربوط به LVهای مختلفی است که باید منتقل شوند. با این حال، در این حالت یک LV کاملاً مشابه تخصیص مییابد که حاوی همان تعداد سگمنت است و یک آینه برای کپی کردن محتویات از اولین LV موقت به دومی ایجاد میشود. پس از ایجاد یک رونوشت کامل، LVهای موقت حذف شده و سگمنتها را روی PV مقصد بر جای میگذارند. در صورتی که در حین جابجایی دستوری مبنی بر لغو صادر شود، تمام LVهایی که در حال جابجایی هستند روی PV مبدأ باقی خواهند ماند.
مثالها (EXAMPLES)
جابجایی
تمام
بخشهای
فیزیکی که
توسط LVهای
ساده در PV
مشخصشده
استفاده
شدهاند،
به بخشهای
فیزیکی
آزاد در جای
دیگر درون VG:
pvmove /dev/sdb1
استفاده
از یک PV مقصد
مشخص هنگام
جابجایی
بخشهای
فیزیکی:
pvmove /dev/sdb1 /dev/sdc1
جابجایی
بخشهای
متعلق به یک
LV منفرد:
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
به جای
جابجایی
محتوای یک
دستگاه
کامل،
امکان
جابجایی
محدودهای
از بخشهای
فیزیکی
وجود دارد؛
برای
نمونه،
شمارههای
۱۰۰۰ تا
۱۹۹۹ (شامل
هر دو) روی PV
مشخصشده:
pvmove /dev/sdb1:1000-1999
محدودهای
از بخشهای
فیزیکی
برای
جابجایی را
میتوان به
صورت
شروع+طول
مشخص کرد؛
برای
نمونه، با
شروع از PE
شماره ۱۰۰۰
(شمارش از ۰
آغاز
میشود،
بنابراین
این به
بخشهای
۱۰۰۱ام تا
۲۰۰۰ام
اشاره دارد):
pvmove /dev/sdb1:1000+1000
جابجایی
محدودهای
از بخشهای
فیزیکی به
یک PV مشخص (که
باید
بخشهای
آزاد کافی
داشته باشد):
pvmove /dev/sdb1:1000-1999 /dev/sdc1
جابجایی
محدودهای
از بخشهای
فیزیکی به
بخشهای
جدید مشخص
در یک PV جدید:
pvmove /dev/sdb1:1000-1999 /dev/sdc1:0-999
اگر مبدأ و
مقصد روی یک
دیسک
باشند،
سیاست
تخصیص anywhere
مورد نیاز
است:
pvmove --alloc anywhere /dev/sdb1:1000-1999 /dev/sdb1:0-999
بخش مشخصی
از یک LV
موجود درون
یک محدوده
از بخشهای
فیزیکی را
نیز
میتوان
تفکیک و
جابجا نمود:
pvmove -n lvol1 /dev/sdb1:1000-1999 /dev/sdc1
همچنین ببینید (SEE ALSO)
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 |