حتماً برای شما هم پیش آمده است که یک ماشین مجازی با حجم مشخصی از دیسک (که در ابتدا کافی هم به نظر میرسد) ایجاد کرده اید، اما پس از گذشت اندک زمانی این حجم در آستانه پر شدن قرار گرفته است. در چنین شرایطی احتمالا به دنبال راه حلی هستید که در کمترین زمان ممکن و بدون اینکه مجبور به reboot کردن سیستم باشید، افزایش حجم دیسک ماشین مجازی را در دستور کار خود قرار دهید.
روش انجام دادن این کار در دو سیستم عامل لینوکس و ویندوز متفاوت است؛ در ابتدا به سراغ سیستم عامل لینوکس خواهیم رفت.
A. افزایش حجم هارد دیسک ماشین مجازی در سیستم عامل لینوکس
قبل شروع مراحل افزایش حجم دیسک ماشین مجازی لازم است که با یک مفهوم اساسی در سیستم عامل لینوکس با نام LVM یا Logical Volume Manager آشنا شوید.
Logical Volume Manager (LVM) چیست؟
اگر تجربه کار با SAN Storage ها را دارید به احتمال زیاد مفاهیم LVM را بهتر درک خواهید کرد. همانطور که شما در لایه Storage فقط LUN را در اختیار لایه بالاتر قرار میدهید و دیسک، Pool، RAID و … را به صورت انتزاعی مدیریت می کنید؛ در LVM هم دیسک و پارتیشن و … در لایه انتزاعی است و کاربر تنها فضایی که اصطلاحاً به آن Logical Volume گفته می شود را در اختیار خواهد داشت؛ هر گونه تغییری در لایه پایین از دید کاربر به طور کامل مخفی خواهد ماند.
LVM به شما این اجازه را خواهد داد که فضای در اختیار کاربر یا سیستم عامل را افزایش (Extend) یا کاهش (Shrink) دهید و یا حتی به صورت Online آن را به مکان دیگری انتقال دهید؛ بدون اینکه کوچکترین تداخلی در عملکرد کاربر یا سیستم عامل ایجاد شود. به عبارت دقیق تر LVM یک لایه انتزاعی بین Storage Device و Filesystem در لینوکس ایجاد خواهد کرد.
اصطلاحات پایه ای LVM
قبل از ادامه مبحث، بهتر است نیم نگاه داشته باشیم به اصلاحات پایه در این زمینه:
- Physical Volume (PV): اولین لایه انتزاعی در LVM، لایه PV است. در واقع Storage Device هایی هستند که توسط LVM مورد استفاده قرار خواهد گرفت. این Storage Deviceها لزوماً دیسک فیزیکی نیستند، فقط کافی است در سمت سیستم عامل لینوکس به صورت Block در دسترس و قابل مشاهده باشند؛ Physical Disk Drive، iSCSI Devices، SAN LUN و… همگی میتوانند به عنوان PV مورد استفاده قرار بگیرند. شما میتوانید کل فضا را در اختیار PV قرار دهید یا اینکه ابتدا Storage Device را پارتیشن بندی کرده و فقط بخشی از پارتیشن مورد نظر خود را به PV تخصیص دهید.
- Volume Group (VG): VG یک مفهوم منطقی است که از یک یا چند PV ایجاد می شود. به عبارتی میتوان VG را به عنوان یک Pool از Storage ها در نظر گرفت. اگر بخواهیم فضای یک VG را افزایش دهیم کافی است PVهای بیشتر در اختیارش بگذاریم. همچنین توجه داشته باشید که میتوانید انواع مختلفی از Storage را در داخل یک VG با هم ترکیب کنید. به عنوان مثال یک VG داشته باشید که از مجموعه PVهای SAN LUN و Local Hard Disk تشکیل شده است.
- Logical Volume (LV): LV هم یک واحد منطقی است که از داخل VG ساخته میشود. نهایتاً کافی است LV را با فایل سیستم دلخواه خود (Ext3, Ext4, ReiserFS, …) فرمت و سپس آن را داخل دایرکتوری مورد نظر Mount کنید. اگر LVM وجود نداشت (مدل سنتی) شما فایل سیستم را مستقیماً روی Disk Partition قرار میدادید، اما با وجود LVM فایل سیستم روی LV قرار خواهد گرفت. تا زمانی که VG فضای خالی در اختیار داشته باشد، فضای LV قابل Extend شدن است. همچنین این امکان وجود دارد که فضای LV را Shrink کنید تا فضای خالی و بلا استفاده آن را به VG برگردانید.
شکل زیر لایههای انتزاعی فوق در LVM را نمایش میدهد.
مزایای LVM
- Flexibility: در LVM مدیریت سیستم به مراتب ساده تر خواهد بود. شما میتوانید بدون کوچکترین مشکلی فضای مورد نیاز کاربران را افزایش یا کاهش دهید. در مدل سنتی برای افزایش فضا، گاهی اوقات لازم بود که شما از اطلاعات خود Backup تهیه کنید، حجم دیسک را افزایش دهید و داده های پشتیبان را روی فضای جدید Restore کنید که این خود مستلزم Downtime بود.
- Convenient Device Naming: یکی مزایای LVM این است که به جای استفاده از نامگذاریهای انتزاعی قدیمی میتوانید از اسامی دلخواه خود استفاده کنید. به جای استفاده از /dev/sdb3 خیلی بهتر خواهد بود اگر از /dev/VG_Database/LV_LogFiles استفاده کنیم، و LVM این امکان را در اختیار ما خواهد گذاشت.
- Disk Striping: LVM میتواند Disk Throughput را افزایش دهد. با توجه به اینکه در LVM، Data Striping اتفاق میافتد، خواندن داده ها از دیسک های مختلفی انجام میشود که این خود باعث افزایش کارایی خواهد شد.
- Data Redundancy: LVM قابلیت Data Mirroring را نیز فراهم میکند که این خود به Redundancy و Fault Tolerance سیستم کمک خواهد کرد.
- Snapshot: یکی از قابلیتهای فوق العاده LVM، قابلیت Snapshot است. LVM این قابلیت را در اختیار شما قرار خواهد داد که از فایل سیستم خودPoint-in-time Snapshot تهیه کنید.
مراحل کار در LVM
به طور کلی مراحل کار در LVM به شرح زیر است:
- ایجاد Physical Volume
- تعریف Volume Group
- ساخت Logical Volume
توجه داشته باشید که کلیه مراحل فوق نیاز به root privilege دارند.
1.ایجاد Physical Volume
قبل از اینکه بخواهیم PV را ایجاد کنیم لازم است بدانیم چه Storage Deviceهایی برای LVM در دسترسی هستند. برای این منظور کافی است از دستور lvmdiskscan استفاده کنیم.
ماشین مثال فوق دارای 3 دیسک است که یکی از دیسک ها برای نصب لینوکس مورد استفاده قرار گرفته است. اما دستور فوق اطلاعات تکمیلی در اختیار ما قرار نمی دهد، برای این منظور از دستور lsblk استفاده می کنیم.
همانطور که مشاهده می کنید خروجی دستور فوق نشان میدهد کدام یک دیسک است، کدام پارتیشن است و کدامیک قبلاً استفاده و Mount گردیده است.
همچنین با استفاده از دستور df می توان درصد Usage دیسک های Mount شده را نیز مورد بررسی دقیق تری قرار داد.
با استفاده از دستور fdisk -l می توانید کلیه اطلاعات مربوط به دیسک های متصل به سیستم را مشاهده کنید.
پس از اینکه شناخت کافی از لایه Storage متصل پیدا کردید، کافی است با استفاده از دستور pvcreate اقدام به ایجاد PV کنیم.
با استفاده از دستور pvs می توان لیست PVهای موجود را مشاهده کرد.
2.تعریف Volume Group
حال که PV ها آماده هستند می توان از آنها برای ساخت Volume Group های مورد نظر استفاده کرد. برای این منظور از دستور vgcreate استفاده میکنیم. پس از دستور vgcreate نام VG مورد نظر خود و سپس حداقل یک PV را به عنوان آرگومان های دستور وارد خواهیم کرد.
از دستور vgs هم میتوان برای مشاهده VG های موجود استفاده کرد.
حال یک بار دیگر نگاهی داشته باشیم به خروجی دستور pvs:
حال اگر بخواهیم PV های بیشتری به VG ایجاد شده اضافه کنیم، باید از دستور vgextend استفاده کرد.
3.ساخت Logical Volume
با استفاده از دستور lvcreate میتوان LV مورد نظر خود را ساخت. آرگومانهای این دستور به ترتیب عبارتند از -L [LV Size]، -n [LV Name] و در انتها نام VG مورد نظر.
در نهایت می توان با استفاده از دستورات lvs و lvdisplay، اطلاعات کاملتری از LV های ساخته شده مشاهده کرد.
گفتیم که هدف نهایی فرمت کردن LV و Mount کردن آن جهت استفاده کاربران سیستم است. برای این منظور از دستورات mkfs و mount استفاده میکنیم.
از بحث LVM خارج شویم و به موضوع اصلی خود برگردیم؛ حال کافی است به ماشین مجازی خود دیسکهای جدید اضافه کنید، این دیسک جدید به صورت آنلاین به لیست دیسک ها اضافه خواهد شد و کافی است با استفاده از دانش LVM که به دست آوردهاید، حجم LV را افزایش دهید.
B. افزایش حجم دیسک ماشین مجازی در سیستم ویندوز
در سیستم عامل ویندوز کار به مراتب سادهتر است. کافی است در گام اول به Edit Settings ماشین مجازی رفته و حجم دیسک موجود را افزایش دهید.
سپس در داخل ماشین مجازی به قسمت Disk Management رفته و در صورت نیاز یکبار دکمه F5 را فشار دهید تا حجم دیسک افزایش یافته را مشاهده کنید؛ روی پارتیشن اصلی کلیک راسته کرده و گزینه Extend را انتخاب کنید. به همین سادگی!
در این نوشته روش افزایش هارد دیسک ماشین مجازی را بدون Reboot کردن سیستم را در دو سیستم عامل ویندوز (Windows) و لینوکس (Linux) مورد بررسی قرار دادیم.امیدواریم که از این آموزش استفاده کافی را برده باشید.
ممنون از شما
بسیار عالی و جامع
ممنون از بازخورد شما.
سلام، ای کاش برای pvcreate هم مثالی میزدید
با سلام. ممنون از کامنتتون.
در اولین فرصت به ادامه مطلب اضافه خواهد شد.