محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش ایجاد LVM در لینوکس بصورت گام به گام به زبان بسیار ساده

در مقاله قبلی در توسینسو در خصوص اینکه Logical Volume Manager یا LVM چیست و چه کاری برای ما انجام می دهد بصورت مفصل صبحت کردیم و متوجه شدیم که این قابلیت چه امکاناتی را به ما ارائه می دهد. اگر هنوز اطلاعاتی در خصوص LVM ندارید پیشنهاد می کنم به مقاله بنده با عنوان LVM چیست مراجعه کنید و بعد از مطالعه به این مطلب مراجعه کنید. اما اگر با LVM آشنایی دارید به ادامه مطالب می رویم در این مطلب قصد داریم در سیستم عامل لینوکس توزیع Debian قابلیت LVM را برای دو عدد از دیسک هایی که در سیستم قرار داده ایم ایجاد کنیم ، دستوراتی که استفاده می کنیم تقریبا جدید هستند و ممکن است قبلا از آنها استفاده نکرده باشید بنابراین با دقت بیشتری مطلب را مرور کنید ، تنظیمات ماشین مجازی که من می خواهم در آن LVM را پیاده سازی کنم به شکل زیر است :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  1. هارد دیسک اول بصورت dev//sda با ظرفیت 20 گیگابایت
  2. هارد دیسک دوم بصورت dev//sdb با ظرفیت 10گیگابایت برای استفاده در LVM
  3. هارد دیسک سوم بصورت dev/sdc با ظرفیت 6 گیگابایت برای استفاده در LVM

حالا برای پیدا کردن پارتیشن ها یا درایوهایی که بر روی سیستم شما نصب شده است کافیست دستور زیر را وارد کنید :

root@itpro-debian:~# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders, total 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table
root@itpro-debian:~#
آموزش تصویری پارتیشن بندی با LVM در لینوکس

 

همانطور که در پاراگراف قبلی مشاهده کردید دیسک دوم ما با ظرفیت 10 گیگابایت قرار است در LVM قرار بگیرد و از طرفی یک هارد دیسک 4 گیگابایتی هم به عنوان دیسک سوم اضافه کرده ایم که بتوانیم بعدا به شما روش Extend کردن فضای پارتیشن در LVM را آموزش بدهیم ، خوب قبل از هر کاری بایستی دیسک های مورد نظرمان را فرمت کنیم ، در گام اول با استفاده از دستورات زیر هارد دیسک دوم 10 گیگابایتی را فرمت می کنیم :

  1. دستور fdisk //dev//sdb را مطابق شکل زیر وارد کنید. ( البته ممکن است اسم هارد درایور در سیستم شما متفاوت باشد)
  2. حرف n را برای ایجاد کردن new partition وارد کنید و Enter را بزنید.
  3. حرف p را برای ایجاد کردن primary partition وارد کنید و Enter را بزنید
  4. در قسمت partition number شماره 1 را وارد کنید
  5. در قسمت First Sector فقط Enter را بزنید تا سیلندر انتخابی اولین سیلندر هارد دیسک باشد ( می خواهیم از تمام فضا بهره ببریم)
  6. در قسمت Last Sector هم فقط Enter را بزنید تا سیلندر انتخاب آخرین سیلندر هارد دیسک باشد.
  7. در انتخاب کلید p را بزنید تا مشخصات پارتیشن ایجاد شده نمایش داده شود ( همه مراحل در تصویر زیر گویاست)
root@itpro-debian:~# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xacf2d566.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 
Using default value 20971519

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xacf2d566

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20971519    10484736   83  Linux

Command (m for help):
آموزش تصویری ایجاد پارتیشن LVM در لینوکس

 

همانطور که در تصویر بالا هم مشاهده می کنید پارتیشن ما به اسم dev//sdb1// ایجاد شد و نوع پارتیشن نیز با توجه به id ای که مشاهده می کنید کد 83 است که ما باید در این مرحله این کد را تبدیل به LVM کنیم ، حالا در این مرحله حرف t را وارد کنید ، پارتیشن مورد نظرتان را انتخاب کنید ، با توجه به اینکه ما در اینجا یک پارتیشن ایجاد کرده ایم که تمام فضای دیسک را به خودش اختصاص داده است بصورت پیشفرض انتخاب شده است ، حالا ما باید کد HEX نوع پارتیشن یا Partition Type را وارد کنیم ، برای پیدا کردن و مشاهده کدها کافیست حرف l را وارد کنیم ، حالا با توجه به لیستی که به ما نمایش داده شده است متوجه می شویم که کد نوع پارتیشنی که باید برای LVM انتخاب کنیم 8e است ، حالا برای اینکه تغییرات اعمال شود کافیست کلید w را فشار دهیم و با استفاده از دستور partprobe کرنل را از تغییرات ایجاد شده مطلع می سازیم ، اگر دستور partprobe پیدا نشد به دلیل این است که شما بسته parted را نصب نکرده اید و باید با اتصال به اینترنت و زدن دستور زیر این بسته را نصب کنید تا از parted استفاده کنید :

apt-get install parted

البته اگر نمی خواهید این بسته را نصب کنید و برای برقراری ارتباط با اینترنت مشکل دارید کافیست سیستم عامل را یکبار restart کنید، موارد گفته شده در تصویر زیر قابل مشاهده است :

Selected partition 1
Hex code (type L to list codes): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
آموزش راه اندازی LVM Partition در لینوکس

 

تا اینجای کار ما پارتیشن دوم خود را ایجاد کرده ایم و آن را از نوع Linux LVM قرار داده ایم ، حالا نوبت به هارد دیسک سوم می رسد که فضای آن 6 گیگابایت است ، در این حالت ما نمی خواهیم همه 6 گیگابایت را به LVM اختصاص بدهیم و فقط می خواهیم فضایی بالغ بر 4 گیگابایت را از این هارد دیسک گرفته و به پارتیشن قبلی اضافه یا Extend کنیم ، همه مراحل بالا را تکرار می کنیم با این تفاوت که در این مرحله به جای اینکه تمام ظرفیت هارد دیسک را انتخاب کنیم برای Start و Finish سیلندر های مورد نظرمان را انتخاب می کنیم و بر اساس نیاز فضای مورد نیازمان را تعریف می کنیم ، ما در این قسمت از 4 گیگابایت فضا استفاده خواهیم کرد ، بنابراین ابتدا با استفاده از دستورات زیر فرآیند ایجاد کردن پارتیشن 4 گیگابایتی از نوع LVM را بر روی هارد دیسک سوم انجام می دهیم :

  1. دستور fdisk //dev//sdc را وارد کنید
  2. کلید n را برای ایجاد کردن new partition وارد کنید و Enter را بزنید
  3. کلید p را برای ایجاد کردن primary partition وارد کنید و Enter را بزنید
  4. در قسمت Finishing Cylinder کلمه 4G+ را با توجه به نیاز به فضای 4 گیگابایتی وارد و Enter را بزنید
  5. دکمه t را بزنید
  6. برای کد پارتیشن 8e را وارد کنید تا Linux LVM انتخاب شود
  7. کلید w را برای نوشته شدن اطلاعات وارد کنید ( در صورت نیاز partprobe را وارد کنید)
  8. شما در حال حاضر آماده ایجاد کردن LVM هستید ( تمامی مراحل در زیر آمده است )
root@itpro-debian:~# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9d0aa7a9.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-12582911, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-12582911, default 12582911): +4G

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
root@itpro-debian:~#
آموزش گام به گام ایجاد پارتیشن LVM در لینوکس

تا اینجای کار ما دو پارتیشن با partition type بصورت LVM ایجاد کرده ایم ، مرحله بعدی نوبت به ایجاد کردن Physical Volumes است که با دستور زیر انجام می شود :

root@itpro-debian:~# pvcreate /dev/sdb1 /dev/sdc1
  Writing physical volume data to disk "/dev/sdb1"
  Physical volume "/dev/sdb1" successfully created
  Writing physical volume data to disk "/dev/sdc1"
  Physical volume "/dev/sdc1" successfully created
root@itpro-debian:~#
آموزش تصویری راه اندازی LVM پارتیشن در لینوکس

 

حالا نوبت به ایجاد کردن Volume Group است که ما در اینجا اسم Volume Group خود را itprovg می گذاریم و با دستور زیر آن را ایجاد می کنیم :

root@itpro-debian:~# vgcreate itprovg /dev/sdb1 /dev/sdc1
  Volume group "itprovg" successfully created
root@itpro-debian:~# 
آموزش ایجاد LVM پارتیشن دستور vgcreate در لینوکس

 

شما می توانید با استفاده از دستور vgdisplay در ترمینال وضعیت Logical Group ها را به شکل زیر مشاهده کنید :

root@itpro-debian:~# vgdisplay
  --- Volume group ---
  VG Name               itprovg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               13.99 GiB
  PE Size               4.00 MiB
  Total PE              3582
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3582 / 13.99 GiB
  VG UUID               1pA8ps-uSpR-PNSc-wloD-8SJM-4sPb-qVU8M1
   
root@itpro-debian:~# 
آموزش راه اندازی پارتیشن در لینوکس LVM Partition

 

حالا نوبت به ایجاد کردن Logical Volume است که با دستور زیر ایجاد می شود :

root@itpro-debian:~# lvcreate itprovg -L 13.99G -n unity
  Rounding up size to full physical extent 13.99 GiB
  Logical volume "unity" created
root@itpro-debian:~# 
آموزش راه اندازی LVM Partition در لینوکس

در دستور بالا itprovg اسم Volume Group ای است که ایجاد کردیم ، سویچ L- اندازه یا محدوده پارتیشن ها را در نظر می گیرد که در اینجا 14 گیگابایت است و در نهایت سویچ n- اسم Logical Volume ما است که در اینجا unity قرار داده ایم.

 

حالا با استفاده از دستور lvdisplay ساختار logical volume های خود را به شکل زیر مشاهده می کنیم :

root@itpro-debian:~# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/itprovg/unity
  LV Name                unity
  VG Name                itprovg
  LV UUID                ZSpv3e-QEaz-BqjR-XD5C-1NDk-c5D9-stwIIH
  LV Write Access        read/write
  LV Creation host, time itpro-debian, 2015-04-05 06:20:46 -0400
  LV Status              available
  # open                 0
  LV Size                13.99 GiB
  Current LE             3582
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
   
root@itpro-debian:~#
آموزش راه اندازی LVM پارتیشن در لینوکس

 

خوب تا اینجای کار ما یک پارتیشن LVM ایجاد کردیم که تقریبا 14 گیگابایت ( 13.99 ) ظرفیت دارد و از دو دیسک فیزیکی مختلف تشکیل شده است ، تنها کاری که در حال حاضر قرار است شما انجام بدهید این است که این پارتیشن را مثل هر پارتیشن دیگری mount کنید و از آن استفاده کنید ، خوب با استفاده از دستور زیر ابتدا یک دایرکتوری ایجاد می کنیم که در آن پارتیشن مورد نظر را mount کنیم :

root@itpro-debian:~# mkdir /home/unity-mount
ایجاد کردن پارتیشن در لینوکس

 

حالا پارتیشن LVM ای که ایجاد کرده ایم را باید با استفاده از دستور زیر فرمت کنیم :

root@itpro-debian:~# mkfs.ext4 /dev/itprovg/unity 
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
917504 inodes, 3667968 blocks
183398 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3758096384
112 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

root@itpro-debian:~# 
آموزش ایجاد LVM پارتیشن در لینوکس بصورت تصویری

 

و در نهایت با استفاده از دستور زیر شما پارتیشن مورد نظر را به دایرکتوری که ایجاد کرده این mount می کنید و شروع به استفاده از آن می کنید :

root@itpro-debian:~# mount /dev/itprovg/unity /home/unity-mount/
آموزش راه اندازی LVM در لینوکس

 

امیدوارم این آموزش مورد توجه شما قرار گرفته باشد ، اگر سئوال یا ابهامی در خصوص این مطلب به ذهنتان می رسد خوشحال می شویم در ادامه همین مطلب عنوان کنید تا ما هم از تجربیات و نظرات شما عزیزان استفاده کنیم. ITPRO باشید

نویسنده : محمد نصیری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات