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

lvmpersist - مدیریت رزروهای ماندگار (PR) بر روی گروهی از دستگاههای بلوکی

lvmpersist [گزینهها] دستگاهها...

دستور lvmpersist ابزاری سطح پایین برای مدیریت رزروهای ماندگار SCSI (Persistent Reservations) بر روی دستگاههای ذخیرهسازی مشترک در محیطهای خوشهای یا شبکه ذخیرهسازی (SAN) است.

رزروهای ماندگار (PR) مکانیزمی را برای کنترل دسترسی به دستگاه‌های ذخیره‌سازی مشترک فراهم می‌کنند، که معمولاً برای محافظت از دستگاه‌ها در برابر تغییر یافتن توسط میزبان‌هایی است که نباید روی دستگاه‌های مشترک بنویسند. این موضوع معمولاً در محیط‌های SAN یا محیط‌های خوشه‌ای که چندین میزبان به دستگاه‌های ذخیره‌سازی یکسان دسترسی دارند، اهمیت می‌یابد.

اگر یک گروه حجمی LVM (یا VG) شامل دستگاه‌هایی با قابلیت PR باشد، در این صورت می‌توان از دستورهای LVM برای مدیریت PR در سطح VG استفاده کرد و PR را روی هر حجم فیزیکی (PV) در آن VG اعمال نمود. (تمام PVهای موجود در VG باید از PR پشتیبانی کنند.)

lvmpersist یک ابزار سطح پایین است که برای انجام عملیات‌های PR روی دستگاه‌های بلوکی منفرد استفاده می‌شود. همچنین LVM یک رابط مدیریت PR سطح بالاتر را از طریق رابط دستورات استاندارد LVM فراهم می‌کند:
vgchange --setpersist, vgchange --persist

دستور lvmpersist یک اسکریپت است که گزینه‌ها یا قابلیت‌های رایج خط فرمان LVM را پیاده‌سازی نمی‌کند. این اسکریپت از دستورات sg_persist ،mpathpersist و nvme برای انجام عملیات‌های PR روی دستگاه‌های بلوکی استفاده می‌کند. دستورات سطح بالاتر LVM (مانند vgchange) اسکریپت lvmpersist را اجرا می‌کنند.

دستگاه‌های SCSI یا شبه‌SCSI (مانند iSCSI، SAS و Fibre Channel)، دستگاه‌های dm-multipath و NVME پشتیبانی می‌شوند. قابلیت PR همراه با استاندارد دستورات اولیه SCSI نسخه ۳ (SPC-3) معرفی شد.

هنگامی که از دستگاه‌های چندمسیره (multipath) استفاده می‌شود، فایل multipath.conf باید با "reservation_key file" پیکربندی شود. (دستور mpathconf --option reservation_key:file را اجرا کرده و multipathd را مجدداً راه‌اندازی کنید.)

سیستم LVM از نوع PR با عنوان "Write Exclusive" (یا WE) برای دستگاه‌ها در یک VG محلی، و "Write Exclusive - all registrants" (یا WEAR) برای دستگاه‌ها در یک VG مشترک استفاده می‌کند. یک استثنا دستگاه‌های dm-multipath هستند که برای آن‌ها در هر دو VG محلی و مشترک از WEAR استفاده می‌شود (این امر برای این است که تمام مسیرها همچنان قابل استفاده بمانند.)

دستور lvmpersist دو گزینه برای مشخص کردن نوع PR دارد:


اگر دستگاه‌ها فقط باید توسط یک میزبان مورد دسترسی قرار گیرند (یعنی دستگاه‌ها بخشی از یک VG محلی هستند)، مقدار دسترسی را روی "ex" (اختصاصی) قرار دهید. اگر قرار است دستگاه‌ها به صورت هم‌روند توسط چندین میزبان مورد دسترسی قرار گیرند (یعنی دستگاه‌ها بخشی از یک VG مشترک هستند)، مقدار دسترسی را روی "sh" (مشترک) تنظیم کنید. دستور lvmpersist نوع مناسب PR را برای هر دستگاه انتخاب خواهد کرد (معمولاً WE برای "ex"، و WEAR برای "sh".)
هنگامی که یک مقدار PRTYPE مشخص شود، lvmpersist فقط از آن نوع برای تمام دستگاه‌ها استفاده خواهد کرد.

انواع PR و اختصارات به کار رفته در رابط‌ها و پیام‌ها:

WE Write Exclusive (نوشتن اختصاصی)
EA Exclusive Access (دسترسی اختصاصی)
WERO Write Exclusive - registrants only (نوشتن اختصاصی - فقط ثبت‌نام‌کنندگان)
EARO Exclusive Access - registrants only (دسترسی اختصاصی - فقط ثبت‌نام‌کنندگان)
WEAR Write Exclusive - all registrants (نوشتن اختصاصی - تمام ثبت‌نام‌کنندگان)
EAAR Exclusive Access - all registrants (دسترسی اختصاصی - تمام ثبت‌نام‌کنندگان)

(انواع WERO و EARO هنوز پشتیبانی نمی‌شوند.)

کلیدهای PR می‌توانند تا ۸ بایت طول داشته باشند و با حداکثر ۱۶ نویسه هگزادسیمال با پیشوند "0x" نمایش داده می‌شوند. صفرهای پیشرو مجاز نیستند، برای مثال از 0x1234abcd استفاده کنید، نه 0x000000001234abcd. یک مقدار کلید در مبنای دهدهی (بدون پیشوند 0x) به عنوان ورودی پذیرفته می‌شود، اما در خروجی به صورت هگزادسیمال ظاهر خواهد شد.

هر میزبانی که از دستگاه‌های مشترک استفاده می‌کند باید از یک کلید یکتای PR استفاده کند.

کلیدهای PR باید در هر میزبان درون /etc/lvm/lvmlocal.conf پیکربندی شوند (بخش تنظیمات محلی در زیر را ببینید.)

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

ابزار PR در سطح دستگاه (تغییر وضعیت PR دستگاه):
lvmpersist start|stop|remove|clear|read [OPTIONS] DEST

پیکربندی PR در سطح VG (تغییر متادیتای VG):
vgchange --setpersist y|n VG

عملیات‌های PR در سطح VG (تغییر وضعیت PR دستگاه):
vgchange --persist start|stop|remove|clear|read|check VG

lvmpersist start --ourkey KEY DEST

دستور "start" کلید محلی را ثبت کرده و دستگاه‌ها را رزرو می‌کند. اگر کلید متفاوتی از همان میزبان همچنان ثبت شده باشد، با کلید مشخص‌شده جایگزین خواهد شد. هنگامی که --access یا --prtype مشخص نشود، از دسترسی "ex" استفاده می‌شود.

lvmpersist stop --ourkey KEY DEST

دستور "stop" ثبت کلید محلی را لغو می‌کند که این کار همچنین رزرو محلی را حذف می‌نماید.

lvmpersist remove --ourkey KEY --removekey REMKEY DEST

دستور "remove" کلید یک میزبان ثبت‌شده دیگر را حذف می‌کند. میزبانی که کلید آن حذف شده است توانایی نوشتن روی دستگاه‌ها را از دست می‌دهد. (این دستور برای VGهای مشترک که چندین میزبان هم‌زمان راه‌اندازی شده‌اند کاربرد دارد.)

lvmpersist start --ourkey KEY --removekey REMKEY DEST

دستور "start" همراه با removekey کلید محلی را ثبت کرده و رزرو را از میزبان دیگری می‌گیرد (با استفاده از preempt-abort). میزبان دیگر توانایی نوشتن روی دستگاه‌ها را از دست می‌دهد. (این دستور برای VGهای محلی که فقط یک میزبان می‌تواند در آن واحد راه‌اندازی شود کاربرد دارد.)

lvmpersist clear --ourkey KEY DEST

دستور "clear" تمام کلیدها و رزروها را از دستگاه‌ها پاک می‌کند.

lvmpersist devtest|read|read-keys|read-reservation DEST

این دستورات برای آزمایش پشتیبانی دستگاه‌ها از PR، و نمایش کلیدها و رزروهای فعلی PR استفاده می‌شوند.

lvmpersist check-key --key KEY DEST

بررسی ثبت بودن یک کلید مشخص‌شده.


کلید PR محلی، مانند 0x123abc

کلید PR یک میزبان دیگر.

هر کلیدی برای بررسی شدن.

استفاده از نوع PR برای دسترسی اختصاصی (exclusive) یا مشترک (shared) به دستگاه.

استفاده از نوع رزرو مشخص‌شده (جایگزین --access).

فعال‌سازی ماندگاری پس از قطع برق (persist through power loss) در هنگام شروع (ثبت).


یک یا چند دستگاه برای انجام عملیات.

یک VG برای انجام عملیات (تمام PVهای درون VG).

یک یا چند دستگاه برای انجام عملیات، و یک نام VG برای استفاده به عنوان شناسه برای مجموعه دستگاه‌ها.

دستور lvmpersist یا نیازمند نام دستگاه‌های مشخص است که هر کدام به صورت --device /dev/name مشخص می‌شوند، یا نیازمند نام یک VG است که با --vg VGNAME مشخص می‌شود. هنگامی که یک VG بدون دستگاه‌های بلوکی مشخص شود، lvmpersist دستورات PR را روی هر PV موجود در VG اجرا می‌کند. هنگامی که دستگاه‌ها مشخص شوند و یک VG نیز با --vg ارائه شود، نام VG صرفاً در پیام‌های لاگ برای شناسایی مجموعه دستگاه‌ها به صورت یکپارچه استفاده می‌شود. هنگامی که lvmpersist توسط دستورات سطح بالاتر LVM اجرا می‌شود، هر دستگاه با --device و نام VG با --vg مشخص می‌گردد.

دستور vgchange --setpersist برای پیکربندی خودکارسازی و اعمال PR در رابطه با استفاده گسترده‌تر از VG به کار می‌رود. این پیکربندی در متادیتای VG ذخیره می‌شود.

vgchange --setpersist y|n VG

فعال یا غیرفعال کردن خودکارسازی و اعمال پیش‌فرض PR برای VG، با تنظیم یا پاک کردن هر دو تنظیم "autostart" و "require" مربوط به PR (و به صورت بالقوه تنظیمات دیگر در آینده).

vgchange --setpersist autostart|noautostart|require|norequire VG

تنظیم یا پاک کردن انفرادی تنظیمات autostart و require.

هنگامی که "autostart" تنظیم شده باشد، دستورات فعال‌سازی خودکار و شروع خودکار قفل (vgchange -aay و vgchange --lockstart --lockopt auto) ابتدا PR را روی VG آغاز می‌کنند. اگر شروع PR ناموفق باشد، این دستورات متوقف می‌شوند و تلاشی برای فعال‌سازی یا شروع قفل نخواهند کرد.

هنگامی که "require" تنظیم شده باشد، دستورات lvm که روی یک VG می‌نویسند یا آن را فعال می‌کنند نیازمند این هستند که PR قبل از تلاش برای نوشتن یا فعال‌سازی شروع شده باشد.

vgs -o persist VG

نمایش تنظیمات.

دستور vgchange --persist برای انجام عملیات‌های PR روی دستگاه‌های VG استفاده می‌شود.

vgchange --persist start VG

شروع PR روی دستگاه‌های VG. کلید محلی را ثبت می‌کند و یک رزرو به دست می‌آورد.

vgchange --persist stop VG

توقف PR روی دستگاه‌های VG. ثبت کلید محلی را لغو می‌کند که در صورت در دست داشتن رزرو توسط کلید، رزرو آزاد می‌شود.

vgchange --persist remove --removekey remkey VG

حذف کلید PR یک میزبان دیگر از روی دستگاه‌های یک VG مشترک، که بلافاصله توانایی میزبان دیگر برای نوشتن روی دستگاه‌ها را غیرفعال می‌کند. (این دستور برای VGهای مشترک، که چندین میزبان در آن هم‌زمان راه‌اندازی شده‌اند کاربرد دارد.)

vgchange --persist start --removekey remkey VG

شروع PR روی دستگاه‌های VG، هم‌زمان با حذف کلید و رزرو میزبان دیگر از روی دستگاه‌های VG، که توانایی میزبان دیگر برای نوشتن روی دستگاه‌ها را غیرفعال می‌کند. (این دستور برای VGهای محلی، که در آن‌ها فقط یک میزبان می‌تواند فعال باشد، به کار می‌رود.)

vgchange --persist check VG

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

vgchange --persist read VG

نمایش کلیدهای ثبت‌شده و رزروهای PR روی هر یک از دستگاه‌های VG.

vgchange --persist clear VG

پاک کردن تمام کلیدها و رزروهای PR روی دستگاه‌های VG.

vgchange --persist autostart VG

شروع PR روی دستگاه‌های VG در صورتی که autostart تنظیم شده باشد. این مورد برای استفاده توسط خودکارسازی‌های سیستم، مانند autoactivation و auto-lockstart در نظر گرفته شده است.

گزینه --persist start را می‌توان به سایر دستورات اضافه کرد تا این دستورات ابتدا تلاش کنند PR را شروع کنند (بدون در نظر گرفتن تنظیمات autostart).

vgchange -ay --persist start
vgchange -aay --persist start
vgchange --lockstart --persist start
vgchange --setpersist y|require|autostart --persist start
vgimport --persist start
vgchange --systemid <local_id> --persist start

هنگام استفاده از یک VG محلی، فقط یک میزبان در هر زمان راه‌اندازی می‌شود، و یک رزرو WE (نوشتن اختصاصی) معمولاً روی دستگاه‌ها نگه‌داشته می‌شود.

استفاده از PR به همراه VGهای محلی، از دستگاه‌های VG در برابر نوشتن اشتباهی توسط میزبان دیگر که به همان دستگاه‌ها دسترسی دارد محافظت می‌کند. این ویژگی مکمل استفاده از شناسه سیستم VG (system ID) برای کنترل مالک مورد نظر یک VG است، اما حفاظت اجباری در سطح دستگاه را اضافه می‌کند، در حالتی که میزبان دیگر از قابلیت شناسه سیستم LVM استفاده نکند.

اگر یک میزبان بخواهد به اجبار یک VG محلی را که هم‌اکنون توسط میزبان دیگری در حال استفاده است در اختیار بگیرد، می‌تواند از دستور زیر استفاده کند:
vgchange --persist start --removekey remkey VG
که در آن "remkey" کلید PR میزبانی است که در حال حاضر راه‌اندازی شده است.

برای یک VG مشترک، متادیتای VG توسط یک میزبان با استفاده از دستور vgchange --setpersist پیکربندی می‌شود، که پیکربندی دلخواه PR را در متادیتای VG می‌نویسد. دستور vgchange --setpersist نیازمند فعال بودن قفل‌گذاری VG (VG locking) است. تمام میزبان‌ها از دستورات vgchange --persist برای شروع/توقف/بررسی وضعیت PR مربوط به خود روی دیسک استفاده می‌کنند. این‌ها عملیات‌های متادیتای VG نیستند، بلکه دستورات PR را برای تغییر وضعیت PR روی دیسک ارسال می‌کنند (معمولاً از طریق lvmpersist).

هنگام استفاده از یک VG مشترک، تمام میزبان‌هایی که از VG استفاده می‌کنند یک دستور start را اجرا خواهند کرد، و یک رزرو WEAR (نوشتن اختصاصی - تمام ثبت‌نام‌کنندگان) روی دستگاه‌ها نگه‌داشته خواهد شد.

عملیات PR باید قبل از شروع قفل‌گذاری آغاز شود (vgchange --persist start و سپس vgchange --lockstart، یا دستور ترکیبی vgchange --persist start --lockstart).

اگر یک میزبان بخواهد به اجبار مانع نوشتن میزبان دیگری روی دستگاه‌های VG مشترک شود، می‌تواند از vgchange --persist remove --removekey remkey استفاده کند که در آن "remkey" کلید PR میزبان دیگر است.

هر میزبانی که از PR استفاده می‌کند باید دارای یک کلید PR باشد که در بین تمام میزبان‌های استفاده‌کننده از یک VG مشترک یکتا باشد. دو روش برای تعیین مقدار کلید وجود دارد که در /etc/lvm/lvmlocal.conf تنظیم می‌شوند:

کلید رزرو ماندگار محلی به صورت هگزادسیمال. حداکثر طول ۱۶ نویسه هگزادسیمال (۸ بایت)، به علاوه یک پیشوند اختیاری 0x است. تنظیم pr_key برای VGهای محلی استفاده می‌شود. گروه‌های حجمی مشترک از کلیدهای PR که بر پایه host_id هستند استفاده می‌کنند و این تنظیم pr_key را نادیده می‌گیرند.
یک شناسه یکتا برای میزبان، که برای VGهای مشترک sanlock و برای کلیدهای رزرو ماندگار استفاده می‌شود. مقادیر پذیرفته‌شده ۱ تا ۲۰۰۰ هستند، مگر زمانی که sanlock_align_size روی ۱، ۲ یا ۴ پیکربندی شده باشد که متناظر با حداکثر مقادیر host_id برابر با ۲۵۰، ۵۰۰ یا ۱۰۰۰ خواهد بود. کلیدهای PR برای VGهای sanlock ترکیبی از host_id و شماره نسل (generation number) sanlock هستند. گروه‌های حجمی محلی تنها در صورتی از host_id به عنوان کلید PR استفاده خواهند کرد که local/pr_key تنظیم نشده باشد.

برای یک VG محلی یا یک VG مشترک dlm، یک کلید با استفاده از host_id شکلی به این صورت دارد:

0x100000000000XXXX

که در آن XXXX ارقام هگزادسیمال برای مقدار host_id هستند.

برای یک VG مشترک sanlock، کلید بر اساس host_id و یک شماره نسل (گرفته شده از اجاره sanlock) ساخته می‌شود و شکلی به این صورت دارد:

0x100000YYYYYYXXXX

که در آن XXXX ارقام هگزادسیمال برای مقدار host_id، و YYYYYY ارقام هگزادسیمال برای شماره نسل هستند.

شماره نسل sanlock هر بار که میزبان VG را شروع می‌کند افزایش می‌یابد، بنابراین یک میزبان در هر بار شروع از یک کلید جدید استفاده خواهد کرد. در برخی موارد، ممکن است PR با کلیدی شروع شود که شامل شماره نسل نادرست است، که در این حالت دستور lockstart کلید را با مقدار صحیح به‌روزرسانی می‌کند (شماره نسل رسماً در طول lockstart تعیین می‌شود).

ویژگی‌های PR را می‌توان هنگام ایجاد یک VG جدید فعال کرد:

vgcreate --setpersist y VG PVs

برای VGهای محلی، می‌توان --persist start را نیز گنجاند تا هم‌زمان PR روی VG جدید شروع شود.

ایجاد VGهای مشترک جدید با --setpersist متفاوت عمل می‌کند. عملیات PR همیشه برای یک VG مشترک جدید آغاز می‌شود، حتی بدون ذکر --persist start. ابتدا یک PR اختصاصی (معمولاً حالت WE) برای دستگاه‌های VG جدید گرفته می‌شود. سپس دستگاه‌ها مقداردهی اولیه می‌شوند و متادیتای VG جدید نوشته می‌شود. سپس PR اختصاصی حذف شده و یک PR مشترک (معمولاً حالت WEAR) برای اشتراک‌گذاری عادی VG گرفته می‌شود. در نهایت، فضای قفل (lockspace) گروه حجمی آغاز به کار می‌کند.

برای VGهای محلی، دستور vgextend قبل از افزودن دستگاه‌های جدید به VG، عملیات PR را روی آن‌ها شروع می‌کند (تنظیم require یا autostart باید فعال باشد). برای VGهای مشترک، کاربر باید قبل از اجرای vgextend با استفاده از lvmpersist عملیات PR را از تمام میزبان‌ها روی دستگاه‌های جدید شروع کند. دستور vgextend بررسی می‌کند که رزرو و کلیدها روی دستگاه‌های جدید با دستگاه‌های موجود همخوانی داشته باشند.

دستور vgremove عملیات PR را روی دستگاه‌های VG تنها در صورتی متوقف می‌کند که تنظیمات "require" یا "autostart" با استفاده از vgchange --setpersist تعیین شده باشند. اگر PR مستقل از هرگونه تنظیمات setpersist آغاز شده باشد، vgremove به صورت خودکار PR را روی دستگاه‌ها متوقف نخواهد کرد.

vgexport --persist stop عملیات PR را پس از برون‌بری (export) گروه حجمی متوقف می‌کند، و vgimport --persist start عملیات PR را قبل از درون‌بری (import) گروه حجمی شروع می‌کند. نوشتن متادیتای VG برای برون‌بری پیش از توقف PR رخ می‌دهد، و نوشتن متادیتای VG برای درون‌بری پس از شروع PR انجام می‌شود.

عملیات PR را می‌توان هم‌زمان با گرفتن مالکیت شناسه سیستم یک VG آغاز کرد، یا PR را می‌توان هم‌زمان با واگذاری مالکیت شناسه سیستم یک VG متوقف نمود (برای اطلاعات بیشتر lvmsystemid(7) را ببینید.)

vgchange --systemid local_system_id --persist start VG

این دستور برای گرفتن مالکیت یک VG متعلق به سیستم خارجی (foreign) استفاده می‌شود. عملیات PR آغاز می‌شود، و در صورت موفقیت، شناسه سیستم VG روی شناسه سیستم محلی تنظیم خواهد شد. (توجه: شناسه سیستم خارجی VG باید در extra_system_ids محلی گنجانده شده باشد تا دسترسی به VG خارجی حاصل شود.) برای حذف اجباری (preempt-abort) رزرو PR نگه‌داشته‌شده توسط میزبان دیگر روی VG، می‌توان --removekey remkey را نیز اضافه کرد که در آن remkey کلید PR دارنده فعلی PR است.

vgchange --systemid foreign_system_id --persist stop VG

این دستور برای واگذاری مالکیت یک VG با مالکیت محلی استفاده می‌شود. شناسه سیستم VG به مقدار جدید به‌روزرسانی شده و سپس PR متوقف می‌گردد.

برای فعال‌سازی استفاده از قابلیت «ماندگاری پس از قطع برق» (Persist Through Power Loss) که در آن وضعیت PR روی یک دستگاه در صورت قطع و وصل برق حفظ می‌شود، تنظیم ptpl را فعال کنید:

vgchange --setpersist ptpl VG

تنظیم PTPL در طول ثبت کلید (بخشی از PR start) اعمال می‌شود، بنابراین برای هر میزبان در شروع بعدی اثر خواهد گذاشت. این تنظیم روی تمام PVهای موجود در VG اعمال می‌شود، بنابراین هر دستگاه باید از PTPL پشتیبانی کند. تنظیم PTPL توسط "--setpersist y"; فعال نمی‌شود.

هر یک از دستورات زیر تنظیم PTPL را پاک خواهد کرد:

vgchange --setpersist noptpl VG
vgchange --setpersist n VG

host1:
$ lvmconfig local/host_id
host_id=1
$ vgcreate vg /dev/sda /dev/sdb
  Physical volume "/dev/sda" successfully created.
  Physical volume "/dev/sdb" successfully created.
  Volume group "vg" successfully created
$ vgchange --setpersist y vg
  Volume group "vg" successfully changed.
$ vgchange --persist start vg
  lvmpersist: started vg with key 0x1000000000000001.
$ vgchange --persist check vg
  key for local host is registered: 0x1000000000000001
  reservation WE for local host
  PR is started.
$ lvcreate -l1 -n lvol0 vg
  Logical volume "lvol0" created.
$ vgchange -an vg
  0 logical volume(s) in volume group "vg" now active
$ vgchange --persist stop vg
  lvmpersist: stopped vg with key 0x1000000000000001.
$ vgchange -ay vg
  persistent reservation is not started.
  Cannot access VG vg without persistent reservation.
$ lvcreate -l1 -n lvol1 vg
  persistent reservation is not started.
  Cannot access VG vg without persistent reservation.
$ vgchange --persist start vg
  lvmpersist: started vg with key 0x1000000000000001.
$ vgchange -ay vg
  1 logical volume(s) in volume group "vg" now active
$ lvcreate -l1 -n lvol1 vg
  Logical volume "lvol1" created.
host2 foricibly takes VG from host1:
$ lvmconfig local/host_id
host_id=2
$ vgchange -ay vg
  persistent reservation is not started.
  Cannot access VG vg without persistent reservation.
$ vgchange --persist start vg
  persistent reservation is started by another host
$ vgchange --persist check vg
  key for local host is not registered (host_id 2)
  key for other host is registered: 0x1000000000000001
  reservation WE for other host
  PR is not started.
$ dd if=/dev/zero of=/dev/sda
dd: error writing '/dev/sda': Input/output error
$ vgchange --persist start --removekey 0x1000000000000001 vg
  lvmpersist: started vg with key 0x1000000000000002.
$ vgchange -ay vg
  2 logical volume(s) in volume group "vg" now active
$ vgchange --persist check vg
  key for local host is registered: 0x1000000000000002
  reservation WE for local host
  PR is started.
host1 can no longer write:
$ dd if=/dev/zero of=/dev/vg/lvol0
dd: error writing '/dev/vg/lvol0': Input/output error
$ lvcreate -l1 -n lvol1 vg
  persistent reservation is not started.
  Cannot access VG vg without persistent reservation.
$ vgchange --persist check vg
  key for local host is not registered (host_id 1)
  key for other host is registered: 0x1000000000000002
  reservation WE for other host
  PR is not started.

host1:
$ lvmconfig local/host_id
host_id=1
$ vgcreate --shared vg /dev/sda /dev/sdb
  Enabling sanlock global lock
  Physical volume "/dev/sda" successfully created.
  Physical volume "/dev/sdb" successfully created.
  Logical volume "lvmlock" created.
  Volume group "vg" successfully created
  VG vg starting sanlock lockspace
  Starting locking.  Waiting until locks are ready...
$ vgchange --setpersist y vg
  Volume group "vg" successfully changed.
$ vgchange --persist start vg
  lvmpersist: started vg with key 0x1000000000010001.
$ vgchange --persist check vg
  key for local host is registered: 0x1000000000010001
  keys for all registered hosts: 0x1000000000010001
  reservation WEAR for registered hosts
  PR is started.
$ lvcreate -l1 -n lvol0 vg
  Logical volume "lvol0" created.
host2:
$ lvmconfig local/host_id
host_id=2
$ vgchange --persist start vg
  lvmpersist: started vg with key 0x1000000000010002.
$ vgchange --lockstart vg
  VG vg starting sanlock lockspace
  Starting locking.  Waiting for sanlock...
$ vgchange --persist check vg
  key for local host is registered: 0x1000000000010002
  keys for all registered hosts: 0x1000000000010001 0x1000000000010002
  reservation WEAR for registered hosts
  PR is started.
$ lvcreate -l1 -n lvol1 vg
  Logical volume "lvol1" created.
$ lvchange -ay vg/lvol0
  LV locked by other host: vg/lvol0 (host_id 1)
  Failed to lock logical volume vg/lvol0.
$ vgchange -an vg
  0 logical volume(s) in volume group "vg" now active
$ vgchange --lockstop vg
$ vgchange --persist stop vg
  lvmpersist: stopped ee with key 0x1000000000010002.
$ vgchange --persist check vg
  key for local host is not registered (host_id 2)
  keys for all registered hosts: 0x1000000000010001
  reservation WEAR for registered hosts
  PR is not started.
$ dd if=/dev/zero of=/dev/sda
dd: error writing '/dev/sda': Input/output error

lvm(8), lvm.conf(5), lvmlocal.conf(5), lvmsystemid(7), vgchange(8), vgcreate(8), vgextend(8), mpathconf(8), multipath.conf(5)

مه ۲۰۲۵ lvm2