| PVMOVE(8) | System Manager's Manual | PVMOVE(8) |
نام (NAME)
pvmove - جابجایی اکستنتها از یک حجم فیزیکی به حجم فیزیکی دیگر
خلاصه دستور (SYNOPSIS)
- pvmove position_args
- [ option_args ]
[ position_args ]
توضیحات (DESCRIPTION)
دستور pvmove اکستنتهای فیزیکی (PE) تخصیصیافته را از روی یک PV مبدأ به یک یا چند PV مقصد منتقل میکند. میتوانید به صورت اختیاری یک LV مبدأ را مشخص کنید که در این صورت فقط اکستنتهای استفادهشده توسط آن LV به اکستنتهای آزاد (یا مشخصشده) روی PV مقصد جابجا خواهند شد. اگر هیچ PV مقصدی مشخص نشود، قواعد معمول تخصیص برای VG اعمال میشوند.
اگر pvmove به هر دلیلی قطع شود (برای نمونه کرش کردن سیستم)، pvmove را مجدداً بدون هیچ آرگومان PV اجرا کنید تا هرگونه عملیات در حال انجام از آخرین نقطه بررسی (checkpoint) از سر گرفته شود. در غیر این صورت، در هر زمان میتوانید از گزینه abort برای متوقف کردن عملیات استفاده نمایید. مکان نهایی LVها پس از لغو، به این بستگی دارد که آیا از گزینه atomic استفاده شده باشد یا خیر.
اگر دادهها از PVهای مبدأ متفاوتی جابجا شوند، بیش از یک دستور pvmove میتواند به طور همزمان اجرا شود؛ اما دستورات pvmove دیگر، هرگونه LV را که در حال حاضر در فرایند تغییر است نادیده میگیرند، بنابراین ممکن است بخشی از دادهها جابجا نشوند.
کاربرد (USAGE)
جابجایی اکستنتهای PV.
pvmove PV
[ -n|--name String ]
[ --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ]
[ --atomic ]
[ --noudevsync ]
[ --reportformat basic|json|json_std ]
[ COMMON_OPTIONS ]
[ PV ... ]
—
ادامه یا لغو عملیاتهای موجود pvmove.
pvmove
—
گزینههای عمومی برای دستور:
[ -i|--interval [+]Number ]
[ --abort ]
گزینههای عمومی برای lvm:
[ -h|--help ]
[ -q|--quiet ... ]
[ -t|--test ]
[ -v|--verbose ... ]
[ -y|--yes ]
[ --commandprofile String ]
[ --config String ]
[ --devices PV ]
[ --devicesfile String ]
[ --driverloaded y|n ]
[ --journal String ]
[ --lockopt String ]
[ --longhelp ]
[ --nohints ]
[ --nolocking ]
[ --profile String ]
[ --version ]
گزینهها (OPTIONS)
- --abort
- لغو هرگونه عملیات pvmove در حال انجام. اگر pvmove با گزینه --atomic آغاز شده باشد، تمام LVها روی PV مبدأ باقی میمانند. در غیر این صورت، بخشهایی (segments) که جابجا شدهاند روی 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 String
- پروفایل دستوری برای استفاده در پیکربندی دستور. برای اطلاعات بیشتر درباره پروفایلها به lvm.conf(5) مراجعه فرمایید.
- --config String
- تنظیمات پیکربندی برای دستور. این تنظیمات بر مقادیر پیکربندی در lvm.conf(5) اولویت دارند. آرگومان String از همان قالب lvm.conf(5) بهره میبرد یا میتواند از نحو بخش/فیلد استفاده کند. برای اطلاعات بیشتر درباره پیکربندی به lvm.conf(5) مراجعه فرمایید.
- -d|--debug ...
- تنظیم سطح اشکالزدایی (دیباگ). این گزینه را از ۱ تا ۶ بار تکرار کنید تا جزئیات پیامهای فرستادهشده به فایل لاگ و/یا syslog (در صورت فعال بودن) افزایش یابد.
- --devices PV
- دستگاههایی را که برای دستور قابل مشاهده و دسترسی هستند محدود میکند. دستگاههایی که فهرست نشده باشند مفقود در نظر گرفته میشوند. این گزینه میتواند تکرار شود، یا فهرستی از دستگاهها را که با کاما از هم جدا شدهاند بپذیرد. این گزینه بر فایل دستگاهها اولویت دارد.
- --devicesfile String
- فایلی شامل فهرست دستگاههایی که LVM باید استفاده کند. این فایل باید در مسیر /etc/lvm/devices/ وجود داشته باشد و با دستور lvmdevices(8) مدیریت میشود. این گزینه تنظیمات devices/devicesfile و devices/use_devicesfile در lvm.conf(5) را بازنویسی میکند.
- --driverloaded y|n
- در صورت تنظیم روی no، دستور تلاشی برای استفاده از device-mapper نخواهد کرد. برای اهداف آزمایش و اشکالزدایی.
- -h|--help
- نمایش متن راهنما.
- -i|--interval [+]Number
- گزارش پیشرفت در فواصل زمانی منظم. با پیشوند '+'، اولین بررسی به میزان تعداد ثانیههای مشخصشده به تاخیر میافتد و این امکان را میدهد تا عملیاتهای پسزمینه پیش از آغاز بررسی دورهای شروع شوند.
- --journal String
- ثبت
اطلاعات در
ژورنال systemd.
این
اطلاعات
علاوه بر
اطلاعاتی
است که با
تنظیم log/journal در
lvm.conf فعال
میشود.
command: ثبت اطلاعات درباره دستور.
output: ثبت خروجی پیشفرض دستور.
debug: ثبت اطلاعات کامل اشکالزدایی دستور. - --lockopt String
- جهت ارسال گزینهها در موارد خاص به lvmlockd استفاده میشود. برای اطلاعات بیشتر به lvmlockd(8) مراجعه فرمایید.
- --longhelp
- نمایش متن راهنمای بلند و تفصیلی.
- -n|--name String
- فقط اکستنتهای متعلق به LV نامبردهشده را جابجا میکند.
- --nohints
- عدم استفاده از فایل راهنما (hints) برای مکانیابی دستگاههای مربوط به PVها. در صورت عدم استفاده از hints، دستور ممکن است برای یافتن PVها دستگاههای بیشتری را بخواند. دستور همچنان باطلسازی استاندارد فایل راهنما را در موارد مقتضی انجام خواهد داد.
- --nolocking
- غیرفعال کردن قفلگذاری. با احتیاط استفاده شود؛ دستورات همزمان ممکن است نتایج نادرستی به همراه داشته باشند.
- --noudevsync
- غیرفعال کردن همگامسازی udev. فرایند منتظر اعلان از سوی udev نخواهد ماند و صرفنظر از هرگونه پردازش احتمالی udev در پسزمینه ادامه مییابد. تنها زمانی از این گزینه استفاده کنید که udev در حال اجرا نیست یا دارای قوانینی است که دستگاههای ایجادشده توسط LVM را نادیده میگیرند.
- --profile String
- نام مستعار برای --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]
- اندازه (Size) یک عدد ورودی است که یک واحد اختیاری را میپذیرد. واحدهای ورودی همواره صرفنظر از بزرگی یا کوچکی حروف به عنوان مقادیر بر مبنای دو در نظر گرفته میشوند؛ برای نمونه '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) تبدیل کرد.
به صورت پیشفرض، pvmove کل یک سگمنت LV را به یکباره آینهسازی میکند. اگر فرایند پیش از آینهسازی کامل سگمنت قطع شود (برای نمونه بر اثر کرش سیستم یا قطعی برق)، با راهاندازی مجدد pvmove باید کل سگمنت دوباره آینهسازی شود. برای سگمنتهای بسیار بزرگ، این کار میتواند منجر به دوبارهکاری قابل توجهی گردد. تنظیم allocation/pvmove_max_segment_size_mb در lvm.conf(5) میتواند برای محدود کردن حداکثر اندازه دادههای آینهسازیشده در یک عملیات واحد مورد استفاده قرار گیرد. هنگامی که این تنظیم روی مقداری غیر از صفر قرار داده شود، pvmove سگمنتهای بزرگ را به تکههای کوچکتر با اندازه مشخصشده (بر حسب MiB) تقسیم میکند، هر تکه را آینهسازی کرده و متادیتا را میان تکهها بهروزرسانی مینماید. این کار تضمین میکند که پس از هر قطعی، حداکثر یک تکه نیاز به آینهسازی مجدد خواهد داشت. برای نمونه، تنظیم این مقدار روی 10240 هر عملیات آینهسازی را به 10 GiB محدود میکند. مقدار پیشفرض 0 به معنای عدم وجود محدودیت است - یعنی تمام سگمنتها به یکباره آینهسازی میشوند.
در صورت استفاده از گزینه --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)
| LVM TOOLS 2.03.42(2) (2026-08-06) | Red Hat, Inc. |