LVM: تفاوت بین نسخه‌ها

از ویکی فارسی اوبونتو
پرش به: ناوبری، جستجو
جز
(کاستن از فضای home/ و افزودن به var/)
 
(۶۱ نسخه‌ٔ میانی ویرایش شده توسط ۳ کاربر نشان داده نشده)
سطر ۱: سطر ۱:
'''LVM''' سرواژگان(Logical Volume Manager) به معنای «مدیر حجم منطقی»، راهکاری برای انتزاع حجم‌های منطقی از فضای فیزیکی است که بر افزایش انعطاف تمرکز دارد. با LVM می‌توان کارهایی مثل افزودن دیسک‌های جدید، انتقال داده‌ها به آن‌ها، برداشتن دیسک‌های قدیمی، تغییر اندازهٔ حجم‌های منطقی و… را به سرعت و بدون پیاده کردن حجم‌ها انجام داد.
+
'''LVM''' (سرواژگان Logical Volume Manager) به معنای «مدیر حجم منطقی»، راهکاری برای انتزاع حجم‌های منطقی از فضای فیزیکی است که بر افزایش انعطاف تمرکز دارد. با LVM می‌توان کارهایی مثل افزودن دیسک‌های جدید، انتقال داده‌ها به آن‌ها، برداشتن دیسک‌های قدیمی و تغییر اندازهٔ حجم‌های منطقی را به سرعت و بدون پیاده کردن حجم‌ها انجام داد.
  
 
= مفاهیم =
 
= مفاهیم =
این انعطاف از طریق سطحی از انتزاع به دست می‌آید که شامل سه مفهوم است:
+
در LVM انعطاف پذیری در مدیریت فضای حافظه فیزیکی دردسترس یک رایانه، از طریق سطحی از انتزاع به دست می‌آید که شامل سه مفهوم است:
  
 
== حجم فیزیکی ==
 
== حجم فیزیکی ==
حجم فیزیکی یا PV مخفّف Physical Volume و نزدیک‌ترین مفهوم به سخت‌افزار است. این حجم می‌تواند [[Partition|افرازی]] از دیسک، یک دیسک کامل یا هر [[Block device|افزارهٔ بلوکی]] دیگری (مثلاً یک آرایهٔ [[RAID]]) باشد.
+
حجم فیزیکی یا PV سرواژگان Physical Volume و نزدیک‌ترین مفهوم به سخت‌افزار است. این حجم می‌تواند یک دیسک کامل، [[Partition|افرازی]] از دیسک یا هر [[Block device|افزارهٔ بلوکی]] دیگری (برای نمونه یک آرایهٔ [[RAID]]) باشد.
  
 
به خاطر داشته باشید هنگامی که عنصری فیزیکی برای PV بودن در LVM برپا شد، باید فقط از طریق LVM مدیریت شود؛ در غیر این صورت، ممکن است موجب خرابی داده‌ها شود.
 
به خاطر داشته باشید هنگامی که عنصری فیزیکی برای PV بودن در LVM برپا شد، باید فقط از طریق LVM مدیریت شود؛ در غیر این صورت، ممکن است موجب خرابی داده‌ها شود.
 +
به عبارت دیگر با فعال‌سازی این ویژگی، LVM مدیریت دستگاه‌های فیزیکی را برعهده می‌گیرد.
  
 
== گروه حجمی ==
 
== گروه حجمی ==
تعدادی از حجم‌های فیزیکی می‌توانند در یک گروه حجمی یا VG مخفّف Volume Group قرار گیرند که مانند دیسکی مجازی و قابل گسترش است.
+
تعدادی از حجم‌های فیزیکی می‌توانند در یک گروه حجمی یا VG سرواژگان Volume Group قرار گیرند که مانند دیسکی مجازی و قابل گسترش است.
  
 
گروه‌های حجمی انتزاعی بوده و در پروندهٔ افزاره‌ای در ‪/dev‬ ظاهر نمی‌شوند، پس خطر استفادهٔ مستقیم از آن‌ها وجود ندارد.
 
گروه‌های حجمی انتزاعی بوده و در پروندهٔ افزاره‌ای در ‪/dev‬ ظاهر نمی‌شوند، پس خطر استفادهٔ مستقیم از آن‌ها وجود ندارد.
  
 
== حجم منطقی ==
 
== حجم منطقی ==
سومین مفهوم، حجم‌های منطقی یا LVها مخفّف Logical Volume هستند که بخشی از یک گروه حجمیند. اگر قیاس «گروه حجمی به مثابه دیسک» را در نظر بگیریم، حجم منطقی به مثابه یک افراز است.
+
سومین مفهوم، حجم‌های منطقی یا LVها سرواژگان Logical Volume هستند که بخشی از یک گروه حجمی‌اند. اگر قیاس «گروه حجمی به مثابه دیسک» را در نظر بگیریم، حجم منطقی به مثابه یک افراز است.
  
 
حجم‌های منطقی به عنوان یک افزارهٔ بلوکی در ‪/dev‬ قرار گرفته و می‌توانند مانند یک افراز عادی استفاده شوند.
 
حجم‌های منطقی به عنوان یک افزارهٔ بلوکی در ‪/dev‬ قرار گرفته و می‌توانند مانند یک افراز عادی استفاده شوند.
سطر ۲۵: سطر ۲۶:
  
 
در هر صورت، به خاطر داده باشید که یک حجم منطقی به هیچ حجم فیزیکی خاصی متّصل نیست. امکان تعیین دقیق این که داده‌های یک حجم منطقی به صورت فیزیکی در کجا قرار دارند وجود دارد، ولی این این امکان برای استفادهٔ روزمره کارایی ندارد. به طور خلاصه: هنگام استفاده از حجم‌های فیزیکی مختلف، یک حجم منطقی می‌تواند بین فضاهای فیزیکی مختلف آن گروه حجمی، جابه‌جا شود.
 
در هر صورت، به خاطر داده باشید که یک حجم منطقی به هیچ حجم فیزیکی خاصی متّصل نیست. امکان تعیین دقیق این که داده‌های یک حجم منطقی به صورت فیزیکی در کجا قرار دارند وجود دارد، ولی این این امکان برای استفادهٔ روزمره کارایی ندارد. به طور خلاصه: هنگام استفاده از حجم‌های فیزیکی مختلف، یک حجم منطقی می‌تواند بین فضاهای فیزیکی مختلف آن گروه حجمی، جابه‌جا شود.
 +
 +
= نصب =
 +
با فرمان زیر ابزار مدیریت lvm را نصب می‌کنیم.
 +
 +
{{bc|
 +
$ sudo apt install lvm2
 +
}}
 +
 +
= نمونه =
 +
فرض کنید یک دیسک به اندازهٔ حجمی 2TB در اختیار داریم که می‌خواهیم آن را با lvm مدیریت کنیم.
 +
 +
{{اخطار| با توجه به حساسیت کار و امکان از دست دادن داده‌ها پیش از شروع گام‌ها بررسی‌های لازم را انجام دهید.}}
 +
 +
بهتر است پیش از شروع کار اهداف و نتیجهٔ دلخواه نهایی را یادداشت کنید و براساس آن‌ها گام‌های مورد نظر را تنظیم کنید تا از برداشت‌های نادرست و نتایج نامناسب پیشگیری شود.
 +
 +
با فرمان [[lsblk]] یا [[fdisk]] می‌توان از متصل بودن دیسک به سامانه و اینکه می‌خواهیم روی کدام یک از دیسک‌ها کار کنیم اطمینان حاصل کرد.
 +
 +
{{bc|
 +
$ lsblk -f
 +
}}
 +
 +
{{bc|
 +
$ fdisk -l
 +
}}
 +
 +
فرض کنیم دیسک مورد نظر به عنوان sdb شناخته شده است.
 +
 +
هدف مدیریت یک دیسک به حجم 2TB است که در سامانه با نام sdb شناسایی شده است.
 +
 +
== [[افرازش]] دیسک ==
 +
نخستین گام افراز بندی دیسک است.
 +
 +
{{bc|
 +
$ fdisk /dev/sdb
 +
}}
 +
 +
تمام فضای دیسک را به یک قسمت افراز می‌کنیم.(sdb1)
 +
 +
اگر دیسک‌های دیگری هم داریم به همین شکل کار را ادامه می‌دهیم.
 +
 +
== ساخت یک حجم فیزیکی physical volume ==
 +
 +
برای هریک از افرازها یک حجم فیزیکی با فرمان زیر می‌سازیم.
 +
{{bc|
 +
$ pvcreate /dev/sdb1
 +
}}
 +
 +
 +
با فرمان pvdisplay از ساخت حجم فیزیکی اطمینان حاصل می‌کنیم.
 +
 +
{{bc|
 +
$ pvdisplay
 +
$ pvs
 +
}}
 +
 +
== ساخت یک گروه منطقی logical group ==
 +
 +
 +
دسته‌ای از حجم‌های فیزیکی را در یک گروه منطقی قرار می‌دهیم.
 +
 +
{{bc|
 +
$ vgcreate mynew_vg /dev/sdb1
 +
}}
 +
 +
اگر دو حجم داشته باشیم به این شکل از آنها یک گروه منطقی می‌سازیم.
 +
 +
{{bc|
 +
$ vgcreate mynew_vg /dev/sdb1 /dev/sdc1
 +
}}
 +
 +
== ساخت یک حجم منطقی logical volume ==
 +
 +
روی گروه منطقی '''mynew_vg''' یک حجم منطقی به اندازهٔ 1000GB با نام database می‌سازیم.
 +
 +
{{bc|
 +
$ lvcreate -L 1000G -n database mynew_vg
 +
}}
 +
 +
در این مرحله می‌توان گروه‌های منطقی را با فرمان vgdisplay بررسی کرد.
 +
 +
{{bc|
 +
$ vgdisplay
 +
$ vgs
 +
}}
 +
 +
نمایش حجم منطقی
 +
 +
{{bc|
 +
$ lvdisplay
 +
$ lvs
 +
}}
 +
 +
== قالب‌بندی(format)==
 +
 +
برای ساخت سیستم‌فایل روی حجم‌های منطقی lv قالب‌بندی(format) انجام می‌دهیم.
 +
 +
{{bc|
 +
$ mkfs.ext4 -m 0 /dev/mynew_vg/database
 +
}}
 +
 +
==سوارکردن حجم‌ها روی فایل سیستم==
 +
 +
{{bc|
 +
$ mkdir /mnt/database
 +
$ mount /dev/mynew_vg/database  /mnt/database
 +
}}
 +
 +
برای دائمی کردن این تنظیم پروندهٔ fstab را ویرایش می‌کنیم.
 +
 +
خطوط لازم را از فایل {{ic| /etc/mtab}}  می‌خوانیم.
 +
 +
{{bc|
 +
/dev/mapper/mynew_vg/database /home/database ext4 rw,seclabel,relatime,attr2,inode64,noquota 0 0
 +
}}
 +
 +
و در پروندهٔ {{ic| /etc/fstab}} قرار می‌دهیم.
 +
 +
{{bc|
 +
/dev/mapper/mynew_vg/database /home/database ext4 defaults 0 0
 +
}}
 +
 +
بررسی سوار شدن صحیح گروه حجمی
 +
 +
{{bc|
 +
$ mount -a
 +
}}
 +
 +
به این شکل پس از باز راه‌اندازی سامانه سوارشدن‌ها نیز به صورت خودکار انجام می‌شود.
 +
 +
=تغییر اندازهٔ گروه حجمی=
 +
 +
== نمونه‌های پرتکرار==
 +
 +
{{اخطار| توجه کنید دستکاری دیسک و افرازی که توسط lvm مدیریت می‌شود با ابزارهایی به جز lvm منجر به خرابی داده‌ها خواهد شد. بهتر است پیش از اعمال تغییرات مخرب از صحت نسخه پشتیبان تهیه شده اطمینان حاصل کنید.}}
 +
 +
 +
=== کاستن از فضای افراز / ===
 +
از آنجایی که اعمال تغییرات و حذف نیاز به فرمان {{ic |umount}} دارد باید سامانه را به صورت زنده راه‌اندازی کنید و مراحل را پی‌بگیرید.
 +
 +
 +
=== کاستن از فضای home/ و افزودن به var/===
 +
 +
 +
فرض کنید فضای ذخیره‌سازی روی '''var/''' کافی نیست و نیاز به افزایش دارد. با استفاده از امکانات lvm می‌توان از فضای خالی '''home/''' کاست و به '''var/''' افزود.
 +
 +
پیش از شروع به با اجرای فرمان‌های زیر از مسیرها و نام افرازها و همچنین اندازه‌ها مطمئن می‌شویم.
 +
 +
{{bc|
 +
$ sudo lvdisplay -c
 +
$ sudo lvdisplay
 +
$ sudo lvs
 +
}}
 +
 +
کاستن از فضای یک گروه حجمی (home)
 +
 +
می‌توانید یکی از دو فرمان زیر را اجرا کنید.
 +
 +
کم کردن حجم
 +
{{bc|
 +
$ lvreduce --resizefs -L 20G  /dev/debian-vg/home
 +
}}
 +
 +
تنظیم مقدار جدید
 +
{{bc|
 +
$ lvresize --resizefs -L 20G  /dev/debian-vg/home
 +
}}
 +
 +
 +
فرمان بالا میزان دیسک را روی 20GB تنظیم می‌کند.
 +
 +
تغییر اندازه را بررسی کنید.
 +
 +
{{bc|
 +
$ sudo lvs
 +
}}
 +
 +
افزودن فضای بدست آمده به گروه حجمی var
 +
 +
{{bc|
 +
$ lvextend --resizefs -l +100%FREE /dev/debian-vg/var
 +
}}
 +
 +
فرمان بالا فضای آزاد شده از دیسک را(همهٔ فضای ممکن) به var اضافه می‌کند.
 +
می‌توانید با تنظیم عدد درصد مقدار مورد نظر را به گروه بیفزایید.
 +
 +
{{نکته| از این فرمان برای افزودن تمام فضای خالی موجود روی یک گروه حجمی  vg به حجم منظقی lv مورد نظر استفاده می‌شود.}}
 +
 +
 +
{{اخطار| دقت داشته باشید انتخاب '''resizefs''' در هر دو فرمان الزامی است در غیر این صورت فایل سیستم خراب می‌شود.}}
 +
 +
اگر از انتخاب '''resizefs''' استفاده نکردید پس از آن بلافاصله فرمان '''resize2fs''' را به صورت مجزا روی افراز مورد نظر اجرا کنید.
 +
 +
{{bc|
 +
$ lvextend -l +100%FREE /dev/debian-vg/var
 +
$ resize2fs /dev/debian-vg/var
 +
}}
 +
 +
 +
=== گام‌های لازم برای حذف یک دیسک یا افرازی که با lvm مدیریت می‌شود.===
 +
 +
بررسی میزان مصرف حجم فیزیکی
 +
{{bc|
 +
$ pvs -o+pv_used
 +
}}
 +
بدیهی است اگر حجم فیزیکی در حال استفاده باشند چنین کاری ممکن نیست.
 +
 +
پس به افراز مورد نظر رفته و با جابه‌جایی یا حذف پرونده‌های حجیم حجم فیزیکی را از نیاز به استفاده خارج می‌کنیم.
 +
 +
{{bc|
 +
$ sudo pvs -o+pv_used
 +
  PV        VG        Fmt  Attr PSize  PFree  Used 
 +
  /dev/sda5  debian-vg lvm2 a--    6.64g 224.00m <6.43g
 +
  /dev/sdb1            lvm2 ---  <10.76g <10.76g    0
 +
}}
 +
خروجی بالا نشان می‌دهد افراز sdb1 در حال استفاده نیست. پس می‌تواند حذف شود.
 +
 +
حذف افراز از گروه حجمی
 +
{{bc|
 +
$ vgreduce debian-vg /dev/sdb1
 +
}}
 +
 +
{{bc|
 +
sudo pvs
 +
  PV        VG        Fmt  Attr PSize  PFree 
 +
  /dev/sda5  debian-vg lvm2 a--    6.64g 224.00m
 +
  /dev/sdb1            lvm2 ---  <10.76g <10.76g
 +
}}
 +
 +
 +
{{bc|
 +
$ sudo pvremove /dev/sdb1
 +
  Labels on physical volume "/dev/sdb1" successfully wiped.
 +
}}
 +
 +
حالا افراز مورد نظر مشارکتی در ساختار lvm ندارد و توسط آن مدیریت نمی‌شود.
 +
حالا می‌تواند به شکل فیزیکی از سامانه جدا شود یا اینکه توسط سایر ابزارها و در مقاصد دیگری به کار گرفته شود.
 +
 +
{{bc|
 +
$ sudo pvs
 +
  PV        VG        Fmt  Attr PSize PFree 
 +
  /dev/sda5  debian-vg lvm2 a--  6.64g 224.00m
 +
}}
 +
 +
برای نمونه با به کارگیری فرمان fdisk افراز به کلی حذف شد.
 +
 +
{{bc|
 +
$ lsblk
 +
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 +
loop0                  7:0    0  2.8G  1 loop /run/live/rootfs/filesystem.squashfs
 +
sda                    8:0    0  7.5G  0 disk
 +
├─sda1                  8:1    0  822M  0 part
 +
├─sda2                  8:2    0    1K  0 part
 +
└─sda5                  8:5    0  6.6G  0 part
 +
  ├─debian--vg-root  254:0    0  5.7G  0 lvm 
 +
  └─debian--vg-swap_1 254:1    0  740M  0 lvm 
 +
sdb                    8:16  0 10.8G  0 disk
 +
}}
 +
 +
هم اکنون می‌توان خود دیسک sdb را نیز از سامانه جدا کرد.
 +
 +
=== اتصال یک دیسک جدید به سامانه و افزودن فضای آن به یک حجم منطقی(افراز lvm) ===
 +
 +
یک دیسک جدید به سامانه متصل می‌کنیم. و فضای آن را به ابتدا به گروه حجمی اضافه می‌افزاییم.
 +
سپس با افزایش حجم روی افراز lvm از آن استفاده می‌کنیم.
 +
{{bc|
 +
$ lsblk -f
 +
}}
 +
 +
 +
دیسک افزوده شده sdb است.
 +
 +
حال دیسک را افراز می‌کنیم. یک افزار روی دیسک تازه به نام sdb1 با برنامهٔ fdisk می‌سازیم.
 +
 +
{{bc|
 +
$ sudo fdisk /dev/sdb
 +
}}
 +
 +
 +
برای دیدن شیوهٔ این کار
 +
[https://wiki.ubuntu-ir.org/wiki/Fdisk#.D8.A7.DB.8C.D8.AC.D8.A7.D8.AF_.DB.8C.DA.A9_.D8.A7.D9.81.D8.B1.D8.A7.D8.B2 ساخت افراز] در ویکی را ببینید.
 +
 +
پیش از افزودن فضای فیزیکی ایجاد شده فهرست گروه حجمی مورد نظر را با فرمان {{ic| pvs}}  بررسی کنید و گروه مورد نظر را برگزینید.
 +
در این جا نام گروه حجمی {{ic | debian-vg}} است که در دومین فرمان استفاده شده است.
 +
 +
{{bc|
 +
sudo pvcreate /dev/sdb1
 +
sudo vgextend debian-vg /dev/sdb1
 +
sudo lvextend -r -l +100%FREE /dev/debian-vg/home
 +
}}
 +
 +
{{اخطار| دقت داشته باشید انتخاب '''r-''' در فرمان بالا اجباری است در غیر این صورت تغییرات روی دیسک اعمال نمی‌شود و یا برای اعمال باید به شکل دستی resize2fs را روی دیسک اجرا کنید.}}
 +
 +
نخستین فرمان یک حجم فیزیکی روی  {{ic|/dev/sdb1}} می‌سازد.
 +
با دستور دوم حجم فیزیکی ساخته شده به گروه حجمی با نام  {{ic| debian-vg}} افزوده می‌شود.
 +
وبا دستور سوم تمام فضای خالی داخل گروه حجمی {{ic| debian-vg}} به حجم منظقی {{ic|/dev/debian-vg/home}} اختصاص می‌یابد.
 +
 +
 +
به جای ساختن افراز روی sdb می‌توان کل دیسک را به عنوان یک pv تعریف کرد آن را به vg افزود و فضای دراختیار گرفته شده را به lv ها اختصاص داد.
 +
 +
{{bc|
 +
sudo pvcreate /dev/sdb
 +
sudo vgextend debian-vg /dev/sdb
 +
sudo lvextend -L 40G /dev/debian-vg/var --resizefs
 +
}}
 +
 +
=== افزایش فضای یک دیسک فیزیکی(در مجازی ساز) و افزودن فضای آن به یک حجم منطقی(افراز lvm) ===
 +
 +
فرض می‌کنیم دیسک مورد نظر sda است. با fdisk فضای افزوده شده را افراز می‌‌کنیم.
 +
 +
{{bc|
 +
$ sudo fdisk /dev/sda
 +
}}
 +
 +
فرض می‌کنیم افراز ساخته شده sda3 باشد.
 +
 +
به شکل مشابه برای افزودن فضای جدید به حجم منطقی home فرمان‌های زیر را اجرا می‌کنیم.
 +
{{bc|
 +
sudo pvcreate /dev/sda3
 +
sudo vgextend debian-vg /dev/sda3
 +
sudo lvextend -r -l +100%FREE /dev/debian-vg/home
 +
}}
 +
 +
= بررسی صحت انجام کار با ساخت پروندهٔ حجیم =
 +
 +
در پایان کار می‌توان برای بررسی صحت عملکرد کار یک پرونده به حجم دلخواه را روی دیسک ساخت تا از افزایش ظرفیت حجم منطقی مطمئن شد.
 +
 +
{{bc|
 +
$ fallocate -l 10G create_file.img
 +
$ ls -ltrh
 +
$ lsblf -f
 +
}}
 +
  
 
[[رده:تعاریف]]
 
[[رده:تعاریف]]
 +
[[رده:سخت‌افزار]]

نسخهٔ کنونی تا ‏۱۵ مرداد ۱۴۰۴، ساعت ۱۵:۴۲

LVM (سرواژگان Logical Volume Manager) به معنای «مدیر حجم منطقی»، راهکاری برای انتزاع حجم‌های منطقی از فضای فیزیکی است که بر افزایش انعطاف تمرکز دارد. با LVM می‌توان کارهایی مثل افزودن دیسک‌های جدید، انتقال داده‌ها به آن‌ها، برداشتن دیسک‌های قدیمی و تغییر اندازهٔ حجم‌های منطقی را به سرعت و بدون پیاده کردن حجم‌ها انجام داد.

مفاهیم

در LVM انعطاف پذیری در مدیریت فضای حافظه فیزیکی دردسترس یک رایانه، از طریق سطحی از انتزاع به دست می‌آید که شامل سه مفهوم است:

حجم فیزیکی

حجم فیزیکی یا PV سرواژگان Physical Volume و نزدیک‌ترین مفهوم به سخت‌افزار است. این حجم می‌تواند یک دیسک کامل، افرازی از دیسک یا هر افزارهٔ بلوکی دیگری (برای نمونه یک آرایهٔ RAID) باشد.

به خاطر داشته باشید هنگامی که عنصری فیزیکی برای PV بودن در LVM برپا شد، باید فقط از طریق LVM مدیریت شود؛ در غیر این صورت، ممکن است موجب خرابی داده‌ها شود. به عبارت دیگر با فعال‌سازی این ویژگی، LVM مدیریت دستگاه‌های فیزیکی را برعهده می‌گیرد.

گروه حجمی

تعدادی از حجم‌های فیزیکی می‌توانند در یک گروه حجمی یا VG سرواژگان Volume Group قرار گیرند که مانند دیسکی مجازی و قابل گسترش است.

گروه‌های حجمی انتزاعی بوده و در پروندهٔ افزاره‌ای در ‪/dev‬ ظاهر نمی‌شوند، پس خطر استفادهٔ مستقیم از آن‌ها وجود ندارد.

حجم منطقی

سومین مفهوم، حجم‌های منطقی یا LVها سرواژگان Logical Volume هستند که بخشی از یک گروه حجمی‌اند. اگر قیاس «گروه حجمی به مثابه دیسک» را در نظر بگیریم، حجم منطقی به مثابه یک افراز است.

حجم‌های منطقی به عنوان یک افزارهٔ بلوکی در ‪/dev‬ قرار گرفته و می‌توانند مانند یک افراز عادی استفاده شوند.

نکات

نکتهٔ مهم این است که بخش کردن گروه حجمی به حجم‌های منطقی، کاملاً مستقل از مولفهٔ فیزیکی آن است. گروه حجمی‌ای با فقط یک مولفهٔ فیزیکی (مثلاً یک دیسک) می‌تواند به ده‌ها حجم فیزیکی تقسیم شود. به طور مشابه، یک گروه حجمی می‌تواند از چندین دیسک فیزیکی استفاده کرده و به شکل یک حجم منطقی بزرگ ظاهر شود. تنها محدودیت، این است که به شکل واضحی، مجموع حجم تخصیصی به حجم‌های منطقی نمی‌تواند بیش‌تر از ظرفیت کل حجم‌های فیزیکی در گروه حجمی باشد.

منطقی است که نوعی همگنی میان مولفه‌های فیزیک یک گروه حجمی و تقسیمش به حجم‌های منطقی‌ای که الگوهای استفادهٔ مشابه دارند باشد. برای مثال، اگر سخت‌افزار موجود دارای دیسک‌های سریع و دیسک‌هایی کند است، سریع‌ها در یک گروه حجمی و کندها در در گروهی دیگر افزوده شوند. بخش‌های گروه حجمی نخست می‌توانند برای کاربردهایی که نیاز به دسترسی سریع به داده دارند استفاده شده و بخش‌های دومی برای نگه‌داری داده‌های کم‌تر مورد نیاز.

در هر صورت، به خاطر داده باشید که یک حجم منطقی به هیچ حجم فیزیکی خاصی متّصل نیست. امکان تعیین دقیق این که داده‌های یک حجم منطقی به صورت فیزیکی در کجا قرار دارند وجود دارد، ولی این این امکان برای استفادهٔ روزمره کارایی ندارد. به طور خلاصه: هنگام استفاده از حجم‌های فیزیکی مختلف، یک حجم منطقی می‌تواند بین فضاهای فیزیکی مختلف آن گروه حجمی، جابه‌جا شود.

نصب

با فرمان زیر ابزار مدیریت lvm را نصب می‌کنیم.


$ sudo apt install lvm2

نمونه

فرض کنید یک دیسک به اندازهٔ حجمی 2TB در اختیار داریم که می‌خواهیم آن را با lvm مدیریت کنیم.


اخطار:

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

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

با فرمان lsblk یا fdisk می‌توان از متصل بودن دیسک به سامانه و اینکه می‌خواهیم روی کدام یک از دیسک‌ها کار کنیم اطمینان حاصل کرد.


$ lsblk -f


$ fdisk -l

فرض کنیم دیسک مورد نظر به عنوان sdb شناخته شده است.

هدف مدیریت یک دیسک به حجم 2TB است که در سامانه با نام sdb شناسایی شده است.

افرازش دیسک

نخستین گام افراز بندی دیسک است.


$ fdisk /dev/sdb

تمام فضای دیسک را به یک قسمت افراز می‌کنیم.(sdb1)

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

ساخت یک حجم فیزیکی physical volume

برای هریک از افرازها یک حجم فیزیکی با فرمان زیر می‌سازیم.

$ pvcreate /dev/sdb1


با فرمان pvdisplay از ساخت حجم فیزیکی اطمینان حاصل می‌کنیم.


$ pvdisplay
$ pvs

ساخت یک گروه منطقی logical group

دسته‌ای از حجم‌های فیزیکی را در یک گروه منطقی قرار می‌دهیم.


$ vgcreate mynew_vg /dev/sdb1 

اگر دو حجم داشته باشیم به این شکل از آنها یک گروه منطقی می‌سازیم.


$ vgcreate mynew_vg /dev/sdb1 /dev/sdc1 

ساخت یک حجم منطقی logical volume

روی گروه منطقی mynew_vg یک حجم منطقی به اندازهٔ 1000GB با نام database می‌سازیم.


$ lvcreate -L 1000G -n database mynew_vg

در این مرحله می‌توان گروه‌های منطقی را با فرمان vgdisplay بررسی کرد.


$ vgdisplay
$ vgs

نمایش حجم منطقی


$ lvdisplay
$ lvs

قالب‌بندی(format)

برای ساخت سیستم‌فایل روی حجم‌های منطقی lv قالب‌بندی(format) انجام می‌دهیم.


$ mkfs.ext4 -m 0 /dev/mynew_vg/database 

سوارکردن حجم‌ها روی فایل سیستم

$ mkdir /mnt/database 
$ mount /dev/mynew_vg/database   /mnt/database 

برای دائمی کردن این تنظیم پروندهٔ fstab را ویرایش می‌کنیم.

خطوط لازم را از فایل /etc/mtab می‌خوانیم.


/dev/mapper/mynew_vg/database /home/database ext4 rw,seclabel,relatime,attr2,inode64,noquota 0 0

و در پروندهٔ /etc/fstab قرار می‌دهیم.


/dev/mapper/mynew_vg/database /home/database ext4 defaults 0 0

بررسی سوار شدن صحیح گروه حجمی


$ mount -a

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

تغییر اندازهٔ گروه حجمی

نمونه‌های پرتکرار

اخطار:

توجه کنید دستکاری دیسک و افرازی که توسط lvm مدیریت می‌شود با ابزارهایی به جز lvm منجر به خرابی داده‌ها خواهد شد. بهتر است پیش از اعمال تغییرات مخرب از صحت نسخه پشتیبان تهیه شده اطمینان حاصل کنید.


کاستن از فضای افراز /

از آنجایی که اعمال تغییرات و حذف نیاز به فرمان umount دارد باید سامانه را به صورت زنده راه‌اندازی کنید و مراحل را پی‌بگیرید.


کاستن از فضای home/ و افزودن به var/

فرض کنید فضای ذخیره‌سازی روی var/ کافی نیست و نیاز به افزایش دارد. با استفاده از امکانات lvm می‌توان از فضای خالی home/ کاست و به var/ افزود.

پیش از شروع به با اجرای فرمان‌های زیر از مسیرها و نام افرازها و همچنین اندازه‌ها مطمئن می‌شویم.


$ sudo lvdisplay -c
$ sudo lvdisplay
$ sudo lvs

کاستن از فضای یک گروه حجمی (home)

می‌توانید یکی از دو فرمان زیر را اجرا کنید.

کم کردن حجم

$ lvreduce --resizefs -L 20G  /dev/debian-vg/home

تنظیم مقدار جدید

$ lvresize --resizefs -L 20G  /dev/debian-vg/home


فرمان بالا میزان دیسک را روی 20GB تنظیم می‌کند.

تغییر اندازه را بررسی کنید.


$ sudo lvs

افزودن فضای بدست آمده به گروه حجمی var


$ lvextend --resizefs -l +100%FREE /dev/debian-vg/var

فرمان بالا فضای آزاد شده از دیسک را(همهٔ فضای ممکن) به var اضافه می‌کند. می‌توانید با تنظیم عدد درصد مقدار مورد نظر را به گروه بیفزایید.


نکته: از این فرمان برای افزودن تمام فضای خالی موجود روی یک گروه حجمی vg به حجم منظقی lv مورد نظر استفاده می‌شود.


اخطار:

دقت داشته باشید انتخاب resizefs در هر دو فرمان الزامی است در غیر این صورت فایل سیستم خراب می‌شود.

اگر از انتخاب resizefs استفاده نکردید پس از آن بلافاصله فرمان resize2fs را به صورت مجزا روی افراز مورد نظر اجرا کنید.


$ lvextend -l +100%FREE /dev/debian-vg/var
$ resize2fs /dev/debian-vg/var


گام‌های لازم برای حذف یک دیسک یا افرازی که با lvm مدیریت می‌شود.

بررسی میزان مصرف حجم فیزیکی

$ pvs -o+pv_used

بدیهی است اگر حجم فیزیکی در حال استفاده باشند چنین کاری ممکن نیست.

پس به افراز مورد نظر رفته و با جابه‌جایی یا حذف پرونده‌های حجیم حجم فیزیکی را از نیاز به استفاده خارج می‌کنیم.


$ sudo pvs -o+pv_used
  PV         VG        Fmt  Attr PSize   PFree   Used  
  /dev/sda5  debian-vg lvm2 a--    6.64g 224.00m <6.43g
  /dev/sdb1            lvm2 ---  <10.76g <10.76g     0 

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

حذف افراز از گروه حجمی

$ vgreduce debian-vg /dev/sdb1


sudo pvs
  PV         VG        Fmt  Attr PSize   PFree  
  /dev/sda5  debian-vg lvm2 a--    6.64g 224.00m
  /dev/sdb1            lvm2 ---  <10.76g <10.76g


$ sudo pvremove /dev/sdb1 
  Labels on physical volume "/dev/sdb1" successfully wiped.

حالا افراز مورد نظر مشارکتی در ساختار lvm ندارد و توسط آن مدیریت نمی‌شود. حالا می‌تواند به شکل فیزیکی از سامانه جدا شود یا اینکه توسط سایر ابزارها و در مقاصد دیگری به کار گرفته شود.


$ sudo pvs
  PV         VG        Fmt  Attr PSize PFree  
  /dev/sda5  debian-vg lvm2 a--  6.64g 224.00m

برای نمونه با به کارگیری فرمان fdisk افراز به کلی حذف شد.


$ lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                   7:0    0  2.8G  1 loop /run/live/rootfs/filesystem.squashfs
sda                     8:0    0  7.5G  0 disk 
├─sda1                  8:1    0  822M  0 part 
├─sda2                  8:2    0    1K  0 part 
└─sda5                  8:5    0  6.6G  0 part 
  ├─debian--vg-root   254:0    0  5.7G  0 lvm  
  └─debian--vg-swap_1 254:1    0  740M  0 lvm  
sdb                     8:16   0 10.8G  0 disk 

هم اکنون می‌توان خود دیسک sdb را نیز از سامانه جدا کرد.

اتصال یک دیسک جدید به سامانه و افزودن فضای آن به یک حجم منطقی(افراز lvm)

یک دیسک جدید به سامانه متصل می‌کنیم. و فضای آن را به ابتدا به گروه حجمی اضافه می‌افزاییم. سپس با افزایش حجم روی افراز lvm از آن استفاده می‌کنیم.

$ lsblk -f


دیسک افزوده شده sdb است.

حال دیسک را افراز می‌کنیم. یک افزار روی دیسک تازه به نام sdb1 با برنامهٔ fdisk می‌سازیم.


$ sudo fdisk /dev/sdb


برای دیدن شیوهٔ این کار ساخت افراز در ویکی را ببینید.

پیش از افزودن فضای فیزیکی ایجاد شده فهرست گروه حجمی مورد نظر را با فرمان pvs بررسی کنید و گروه مورد نظر را برگزینید. در این جا نام گروه حجمی debian-vg است که در دومین فرمان استفاده شده است.


sudo pvcreate /dev/sdb1
sudo vgextend debian-vg /dev/sdb1
sudo lvextend -r -l +100%FREE /dev/debian-vg/home


اخطار:

دقت داشته باشید انتخاب r- در فرمان بالا اجباری است در غیر این صورت تغییرات روی دیسک اعمال نمی‌شود و یا برای اعمال باید به شکل دستی resize2fs را روی دیسک اجرا کنید.

نخستین فرمان یک حجم فیزیکی روی /dev/sdb1 می‌سازد. با دستور دوم حجم فیزیکی ساخته شده به گروه حجمی با نام debian-vg افزوده می‌شود. وبا دستور سوم تمام فضای خالی داخل گروه حجمی debian-vg به حجم منظقی /dev/debian-vg/home اختصاص می‌یابد.


به جای ساختن افراز روی sdb می‌توان کل دیسک را به عنوان یک pv تعریف کرد آن را به vg افزود و فضای دراختیار گرفته شده را به lv ها اختصاص داد.


sudo pvcreate /dev/sdb 
sudo vgextend debian-vg /dev/sdb
sudo lvextend -L 40G /dev/debian-vg/var --resizefs

افزایش فضای یک دیسک فیزیکی(در مجازی ساز) و افزودن فضای آن به یک حجم منطقی(افراز lvm)

فرض می‌کنیم دیسک مورد نظر sda است. با fdisk فضای افزوده شده را افراز می‌‌کنیم.


$ sudo fdisk /dev/sda

فرض می‌کنیم افراز ساخته شده sda3 باشد.

به شکل مشابه برای افزودن فضای جدید به حجم منطقی home فرمان‌های زیر را اجرا می‌کنیم.

sudo pvcreate /dev/sda3
sudo vgextend debian-vg /dev/sda3
sudo lvextend -r -l +100%FREE /dev/debian-vg/home

بررسی صحت انجام کار با ساخت پروندهٔ حجیم

در پایان کار می‌توان برای بررسی صحت عملکرد کار یک پرونده به حجم دلخواه را روی دیسک ساخت تا از افزایش ظرفیت حجم منطقی مطمئن شد.


$ fallocate -l 10G create_file.img
$ ls -ltrh
$ lsblf -f