天天看點

示範針對LVM分區的管理

<code>假設已經增加一塊磁盤:</code><code>/dev/sdb</code>

<code>一、将sdb配置成LVM分區</code>

<code>1、說明</code>

<code>目前系統有sda和sdb這2個實體磁盤,各有100G的大小。</code>

<code>[root@svr200-11 ~]</code><code># ls /dev/sd*</code>

<code>sda   sda1  sda2  sdb   </code>

<code>2、給sdb分區</code>

<code>1)最簡單的方式是使用整個磁盤:</code>

<code>[root@svr200-11 ~]</code><code># pvcreate /dev/sdb</code>

<code>2)如果遇到這樣的異常(多半是因為在之前的操作中已經建立過sdb):</code>

<code>[root@GZ01A020 ~]</code><code># pvcreate  /dev/sdb</code>

<code>  </code><code>Device </code><code>/dev/sdb</code> <code>not found (or ignored by filtering).</code>

<code>則如下操作:</code>

<code>dmsetup remove_all</code>

<code>fdisk</code> <code>/dev/sdb</code>

<code>删除分區</code>

<code>然後再使用pvcreate建立分區</code>

<code>3)如果隻是劃分部分空間,時間lvm分區</code>

<code>[root@svr200-11 ~]</code><code># fdisk /dev/sdb</code>

<code>WARNING: DOS-compatible mode is deprecated. It's strongly recommended to</code>

<code>         </code><code>switch off the mode (</code><code>command</code> <code>'c'</code><code>) and change display </code><code>units</code> <code>to</code>

<code>         </code><code>sectors (</code><code>command</code> <code>'u'</code><code>).</code>

<code>注1:使用“n”建立新分區</code>

<code>Command (m </code><code>for</code> <code>help): n</code>

<code>Command action</code>

<code>   </code><code>e   extended</code>

<code>   </code><code>p   primary partition (1-4)</code>

<code>注2:使用“p”建立主分區</code>

<code>p</code>

<code>注3:使用“1”建立分區1(在1-4中選擇,目前磁盤支援最多4個主分區,GPT格式的磁盤支援更多主分區)</code>

<code>Partition number (1-4): 1</code>

<code>注4:選擇預設值</code>

<code>First cylinder (1-13054, default 1): </code>

<code>Using default value 1</code>

<code>注5:選擇一個分區大小,看提示,可以用</code><code>"+|大小|機關"</code><code>這樣的格式,此處是增加20G的分區</code>

<code>Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +20G</code>

<code>注6:更改分區格式為LVM,先輸入“t”,然後輸入“8e”(Linux LVM),不清楚請輸入“l”去檢視對應的代碼</code>

<code>Command (m </code><code>for</code> <code>help): t</code>

<code>Selected partition 1</code>

<code>Hex code (</code><code>type</code> <code>L to list codes): l</code>

<code> </code><code>0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        </code>

<code> </code><code>1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS</code><code>/sec</code> <code>(FAT-</code>

<code> </code><code>2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS</code><code>/sec</code> <code>(FAT-</code>

<code> </code><code>3  XENIX usr       40  Venix 80286     84  OS</code><code>/2</code> <code>hidden C:  c6  DRDOS</code><code>/sec</code> <code>(FAT-</code>

<code> </code><code>4  FAT16 &lt;32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         </code>

<code> </code><code>5  Extended        42  SFS             86  NTFS volume </code><code>set</code> <code>da  Non-FS data    </code>

<code> </code><code>6  FAT16           4d  QNX4.x          87  NTFS volume </code><code>set</code> <code>db  CP</code><code>/M</code> <code>/ CTOS / .</code>

<code> </code><code>7  HPFS</code><code>/NTFS</code>       <code>4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   </code>

<code> </code><code>8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       </code><code>df</code>  <code>BootIt         </code>

<code> </code><code>9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     </code>

<code> </code><code>a  OS</code><code>/2</code> <code>Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R</code><code>/O</code>        

<code> </code><code>b  W95 FAT32       52  CP</code><code>/M</code>            <code>9f  BSD</code><code>/OS</code>          <code>e4  SpeedStor      </code>

<code> </code><code>c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        </code>

<code> </code><code>e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            </code>

<code> </code><code>f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12</code><code>/16/</code>

<code>10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux</code><code>/PA-RISC</code> <code>b</code>

<code>11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      </code>

<code>12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      </code>

<code>14  Hidden FAT16 &lt;3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  </code>

<code>16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    </code>

<code>17  Hidden HPFS</code><code>/NTF</code> <code>65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE </code>

<code>18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto</code>

<code>1b  Hidden W95 FAT3 75  PC</code><code>/IX</code>           <code>bb  Boot Wizard hid fe  LANstep        </code>

<code>1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            </code>

<code>1e  Hidden W95 FAT1</code>

<code>Hex code (</code><code>type</code> <code>L to list codes): 8e</code>

<code>Changed system </code><code>type</code> <code>of partition 1 to 8e (Linux LVM)</code>

<code>注7:列印目前的分區狀态</code>

<code>Command (m </code><code>for</code> <code>help): p</code>

<code>Disk </code><code>/dev/sdb</code><code>: 107.4 GB, 107374182400 bytes</code>

<code>255 heads, 63 sectors</code><code>/track</code><code>, 13054 cylinders</code>

<code>Units = cylinders of 16065 * 512 = 8225280 bytes</code>

<code>Sector size (logical</code><code>/physical</code><code>): 512 bytes / 512 bytes</code>

<code>I</code><code>/O</code> <code>size (minimum</code><code>/optimal</code><code>): 512 bytes / 512 bytes</code>

<code>Disk identifier: 0xb07a7c89</code>

<code>   </code><code>Device Boot      Start         End      Blocks   Id  System</code>

<code>/dev/sdb1</code>               <code>1        2612    20980858+  8e  Linux LVM</code>

<code>注8:确認無誤,寫入磁盤</code>

<code>Command (m </code><code>for</code> <code>help): w</code>

<code>The partition table has been altered!</code>

<code>Calling ioctl() to re-</code><code>read</code> <code>partition table.</code>

<code>Syncing disks.</code>

<code>二、實體卷(Physical Volume)</code>

<code>1、建立PV</code>

<code>[root@svr200-11 ~]</code><code># pvcreate  /dev/sdb</code>

<code>2、檢視PV</code>

<code>[root@svr200-11 ~]</code><code># pvdisplay </code>

<code>  </code> 

<code>三、卷組(Volume Group)  </code>

<code>1、建立一個VG,定義組名,組員(PV)</code>

<code>[root@svr200-11 ~]</code><code># vgcreate vg_test01 /dev/sdb</code>

<code>2、檢視VG</code>

<code>[root@svr200-11 ~]</code><code># vgdisplay </code>

<code>四、邏輯卷(Logical Volume)</code>

<code>1、建立一個新LV(了解成正常的一個分區,需要mkfs格式化後挂載到檔案系統使用),定義大小,邏輯卷名稱,以及從哪個VG上建立。</code>

<code>[root@svr200-11 ~]</code><code># lvcreate -L 8G -n lv_test01 vg_test01</code>

<code>當然,也可以使用全部的磁盤空間:</code>

<code>[root@svr200-11 ~]</code><code># lvcreate -l 100%FREE -n lv_test01 vg_test01</code>

<code>這裡要注意一下“-l”參數的用法。</code>

<code>2、檢視邏輯卷</code>

<code>[root@svr200-11 ~]</code><code># lvdisplay </code>

<code>五、格式化lv并挂載到檔案系統使用</code>

<code>1、格式化</code>

<code>[root@svr200-11 ~]</code><code># mkfs -t ext4 /dev/vg_test01/lv_test01 </code>

<code>2、挂載</code>

<code>[root@svr200-11 ~]</code><code># mkdir /data/test01 </code>

<code>[root@svr200-11 ~]</code><code># mount /dev/vg_test01/lv_test01 /data/test01/</code>

<code>[root@svr200-11 ~]</code><code># df -h |grep data</code>

<code>/dev/mapper/vg_test01-lv_test01</code>  <code>7.9G  146M  7.4G   2% </code><code>/data/test01</code>  

<code>注:當然了,要記得更新fstab檔案</code>

<code>或者先查詢uuid</code>

<code># blkid /dev/vg_test01/lv_test01</code>

<code>然後寫入fstab</code>

<code># cat &lt;&lt;'_EOF' &gt;&gt;/etc/fstab</code>

<code>UUID=xxxx </code><code>/data</code>                   <code>ext4    defaults        0 0</code>

<code>_EOF</code>

<code>接着挂載</code>

<code># mount -a</code>

<code>六、目前狀态</code>

<code>1、實體磁盤:sdb,100G</code>

<code>2、建立了一個LVM格式的分區:sdb1,20G</code>

<code>3、建立了一個vg(vg_test01),把sdb1加入了vg_test01中</code>

<code>4、在vg_test01上,建立了一個大小為8G的分區lv_test01(邏輯卷lv)</code>

<code>5、格式化和挂載分區lv_test01到</code><code>/data/test01</code><code>上使用</code>

<code>七、上述是正常的增加一個分區的步驟,接下來探讨如何給分區擴容。</code>

<code>1、假設已經删除了上面使用的</code><code>/dev/sdb</code><code>,這次的目的是,給卷組(vg_svr20011)擴容,最終是要給邏輯卷(lv_home)擴容</code>

<code>掃描和删除有如下指令:</code>

<code>pvscan</code>

<code>vgscan</code>

<code>lvscan</code>

<code>pvremove</code>

<code>vgremove</code>

<code>lvremove</code>

<code>2、建立</code><code>/dev/sdb1</code><code>,大小全部空間(100G),LVM分區</code>

<code>fdisk</code> <code>/dev/sdb</code> <code>&lt;&lt;_EOF</code>

<code>n</code>

<code>1</code>

<code>t</code>

<code>8e</code>

<code>w</code>

<code>建立PV:</code>

<code>[root@svr200-11 ~]</code><code># pvcreate /dev/sdb1</code>

<code>  </code><code>Physical volume </code><code>"/dev/sdb1"</code> <code>successfully created</code>

<code>檢視PV狀态:</code>

<code>[root@svr200-11 ~]</code><code># pvscan </code>

<code>  </code><code>PV </code><code>/dev/sda2</code>   <code>VG vg_svr20011     lvm2 [99.51 GiB / 0    </code><code>free</code><code>]</code>

<code>  </code><code>PV </code><code>/dev/sdb1</code>                      <code>lvm2 [100.00 GiB]</code>

<code>  </code><code>Total: 2 [199.51 GiB] / </code><code>in</code> <code>use: 1 [99.51 GiB] / </code><code>in</code> <code>no VG: 1 [100.00 GiB]</code>

<code>給現有的VG擴容:</code>

<code>[root@svr200-11 ~]</code><code># vgextend vg_svr20011 /dev/sdb1</code>

<code>  </code><code>Volume group </code><code>"vg_svr20011"</code> <code>successfully extended</code>

<code>再次檢視PV的狀态:  </code>

<code>[root@svr200-11 ~]</code><code># pvscan</code>

<code>  </code><code>PV </code><code>/dev/sda2</code>   <code>VG vg_svr20011   lvm2 [99.51 GiB / 0    </code><code>free</code><code>]</code>

<code>  </code><code>PV </code><code>/dev/sdb1</code>   <code>VG vg_svr20011   lvm2 [100.00 GiB / 100.00 GiB </code><code>free</code><code>]</code>

<code>  </code><code>Total: 2 [199.50 GiB] / </code><code>in</code> <code>use: 2 [199.50 GiB] / </code><code>in</code> <code>no VG: 0 [0   ]</code>

<code>sdb1已經和sda2已經屬于同一個卷組。</code>

<code>3、給邏輯卷(LV)擴容</code>

<code>檢視LV的狀态:</code>

<code>[root@svr200-11 ~]</code><code># lvscan</code>

<code>  </code><code>ACTIVE            </code><code>'/dev/vg_svr20011/lv_root'</code> <code>[50.00 GiB] inherit</code>

<code>  </code><code>ACTIVE            </code><code>'/dev/vg_svr20011/lv_home'</code> <code>[47.54 GiB] inherit</code>

<code>  </code><code>ACTIVE            </code><code>'/dev/vg_svr20011/lv_swap'</code> <code>[1.97 GiB] inherit</code>

<code>目前lv_home 使用了50G,先擴容到80G看看</code>

<code>[root@svr200-11 ~]</code><code># lvextend -L 80G /dev/vg_svr20011/lv_home </code>

<code>  </code><code>Extending logical volume lv_home to 80.00 GiB</code>

<code>  </code><code>Logical volume lv_home successfully resized</code>

<code>  </code><code>ACTIVE            </code><code>'/dev/vg_svr20011/lv_home'</code> <code>[80.00 GiB] inherit</code>

<code>用</code><code>df</code><code>檢視分區資訊:</code>

<code>[root@svr200-11 ~]</code><code># df -h</code>

<code>Filesystem                       Size  Used Avail Use% Mounted on</code>

<code>/dev/mapper/vg_svr20011-lv_root</code>   <code>50G  3.1G   44G   7% /</code>

<code>tmpfs                            499M     0  499M   0% </code><code>/dev/shm</code>

<code>/dev/sda1</code>                        <code>485M   34M  426M   8% </code><code>/boot</code>

<code>/dev/mapper/vg_svr20011-lv_home</code>   <code>47G   38G  7.2G  84% </code><code>/home</code>

<code>此時用</code><code>df</code><code>指令檢視分區,會發現分區大小尚未更新,因為我們還需要on-line resize一下分區:</code>

<code>[root@svr200-11 ~]</code><code># resize2fs /dev/vg_svr20011/lv_home </code>

<code>resize2fs 1.41.12 (17-May-2010)</code>

<code>Filesystem at </code><code>/dev/vg_svr20011/lv_home</code> <code>is mounted on </code><code>/home</code><code>; on-line resizing required</code>

<code>old desc_blocks = 3, new_desc_blocks = 5</code>

<code>Performing an on-line resize of </code><code>/dev/vg_svr20011/lv_home</code> <code>to 20971520 (4k) blocks.</code>

<code>The filesystem on </code><code>/dev/vg_svr20011/lv_home</code> <code>is now 20971520 blocks long.</code>

<code>再看:</code>

<code>/dev/mapper/vg_svr20011-lv_home</code>   <code>79G   38G   38G  50% </code><code>/home</code>

<code>符合預期</code>

<code>八、附上一個可有可無的小腳本,用于快速的删除和建立lvm分區來熟悉指令</code>

<code>[root@svr200-11 ~]</code><code># cat lvm_fdisk.sh </code>

<code>#!/bin/bash</code>

<code>#</code>

<code># 2015/4/30</code>

<code># 建立和删除lvm分區的一個示例</code>

<code>function</code> <code>part_lvm() {</code>

<code>  </code><code>echo</code> <code>-e </code><code>"\033[1;40;31m[+] 使用fdisk建立分區\033[0m"</code>

<code>  </code><code>echo</code> <code>-e </code><code>"\033[40;32m開始操作:\033[40;37m"</code>

<code>  </code><code>fdisk</code> <code>$1 &lt;&lt;_EOF</code>

<code>  </code><code>echo</code>

<code>  </code><code>echo</code> <code>-e </code><code>"\033[40;32m完成!\033[40;37m"</code>

<code>  </code><code>echo</code> <code>-e </code><code>"\033[1;40;31m[-] 已經建立分區:${1}1\033[0m"</code>

<code>}</code>

<code>function</code> <code>part_rm() {</code>

<code>  </code><code>echo</code> <code>-e </code><code>"\033[1;40;31m[+] 使用fdisk删除分區\033[0m"</code>

<code>  </code><code>count=$(</code><code>fdisk</code> <code>-l </code><code>/dev/sdb</code> <code>|</code><code>grep</code> <code>dev |</code><code>grep</code> <code>-</code><code>v</code> <code>Disk |</code><code>wc</code> <code>-l)</code>

<code>  </code><code>if</code> <code>[ $count -lt 2 ]; </code><code>then</code>

<code>    </code><code>fdisk</code> <code>$1 &lt;&lt;_EOF</code>

<code>d</code>

<code>    </code><code>echo</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[40;32m完成!\033[40;37m"</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[1;40;31m[-] 已經删除分區:${1}1\033[0m"</code>

<code>  </code><code>else</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[1;40;31m[-] 這個磁盤有多個分區,請先檢查确認!\033[0m"</code>

<code>  </code><code>fi</code>

<code>function</code> <code>usage() {</code>

<code>  </code><code>cat</code> <code>&lt;&lt;_EOF</code>

<code>usage: $0 </code><code>type</code> <code>device</code>

<code>$0 lvm </code><code>/dev/sdb</code>

<code>$0 </code><code>rm</code> <code>/dev/sdb</code>

<code>case</code> <code>$1 </code><code>in</code>

<code>  </code><code>lvm|</code><code>rm</code><code>)</code>

<code>    </code><code>part_$1 $2</code>

<code>    </code><code>;;</code>

<code>  </code><code>*)</code>

<code>    </code><code>usage</code>

<code>esac</code>

本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1640926,如需轉載請自行聯系原作者

繼續閱讀