天天看點

LVM 邏輯卷的擴容/縮容

[1] 建立邏輯卷

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<code>[root@hyperStor ~]</code><code># vgs //檢視目前卷組</code>

<code></code><code>VG </code><code>#PV #LV #SN Attr VSize VFree</code>

<code></code><code>vg0 2 2 0 wz--n- 698.38g 98.29g</code>

<code>[root@hyperStor ~]</code><code># lvcreate -L 2GB -n lv1 vg0 //在卷組vg0上建立2GB的邏輯卷lv1</code>

<code></code><code>Logical volume </code><code>"lv1"</code><code>created</code>

<code>[root@hyperStor ~]</code><code># lvs |grep lv1</code>

<code></code><code>lv1 vg0 -wi-a- 2.00g</code>

<code>[root@hyperStor ~]</code><code># mkfs.ext4 /dev/vg0/lv1 &gt; /dev/null 2&gt;&amp; 1 //格式化lv1</code>

<code>[root@hyperStor ~]</code><code># mkdir /lv1</code>

<code>[root@hyperStor ~]</code><code># mount /dev/vg0/lv1 /lv1 //挂載lv1到/lv1目錄下</code>

<code>[root@hyperStor ~]</code><code># df -H |grep lv1 //檢視挂載狀态</code>

<code>/dev/mapper/vg0-lv1</code><code>2.2G 71M 2.0G 4% </code><code>/lv1</code>

<code>[root@hyperStor ~]</code><code># mount |grep lv1</code>

<code>/dev/mapper/vg0-lv1</code><code>on </code><code>/lv1</code><code>type</code><code>ext4 (rw)</code>

<code>[root@hyperStor ~]</code><code># dd if=/dev/zero of=/lv1/test1 bs=100M count=5 //想/lv1中寫入500M資料</code>

<code>5+0 records </code><code>in</code>

<code>5+0 records out</code>

<code>524288000 bytes (524 MB) copied, 1.92862 s, 272 MB</code><code>/s</code>

<code>[root@hyperStor ~]</code><code># du -sh /lv1/* //檢視檔案狀态</code>

<code>16K</code><code>/lv1/lost</code><code>+found</code>

<code>500M</code><code>/lv1/test1</code>

[2] lvextend指令擴容lv1到3GB

<code>//</code><code>将lv1擴到3GB,如果是從2GB到5GB,則為lvextend -L +3GB</code>

<code>[root@hyperStor ~]</code><code># lvextend  -L 3GB -n  /dev/vg0/lv1</code>

<code>  </code><code>Extending logical volume lv1 to 3.00 GiB</code>

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

<code>[root@hyperStor ~]</code><code># lvs |grep lv1  //檢視目前邏輯卷大小,已經為3GB</code>

<code>  </code><code>lv1            vg0  -wi-ao   3.00g                          </code>

<code>[root@hyperStor ~]</code><code># df -H |grep lv1  //檢視檔案系統狀态,發現檔案系統仍沒有擴容</code>

<code>/dev/mapper/vg0-lv1</code>    <code>2.2G   595M   1.5G  30% </code><code>/lv1</code>

<code>[root@hyperStor ~]</code><code># resize2fs  /dev/vg0/lv1  //調整檔案系統大小</code>

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

<code>Filesystem at </code><code>/dev/vg0/lv1</code> <code>is mounted on </code><code>/lv1</code><code>; on-line resizing required</code>

<code>old desc_blocks = 1, new_desc_blocks = 1</code>

<code>Performing an on-line resize of </code><code>/dev/vg0/lv1</code> <code>to 786432 (4k) blocks.</code>

<code>The filesystem on </code><code>/dev/vg0/lv1</code> <code>is now 786432 blocks long.</code>

<code>[root@hyperStor ~]</code><code># df -H |grep lv1   //重新檢視檔案系統大小,成功線上擴容到3GB</code>

<code>/dev/mapper/vg0-lv1</code>    <code>3.2G   595M   2.5G  20% </code><code>/lv1</code>

<code>[root@hyperStor ~]</code><code># du -sh /lv1/*     //檢視資料是否完整</code>

<code>501M</code><code>/lv1/test1</code>

[3] lvreduce 縮容,不可“線上”操作 lv1:3GB--&gt;1GB

22

23

24

25

26

27

28

29

30

31

32

33

<code>[root@hyperStor ~]</code><code># umount /lv1/      //解除安裝檔案系統</code>

<code>[root@hyperStor ~]</code><code># mount |grep lv1|wc -l   //檢視是否成功解除安裝</code>

<code>0</code>

<code>[root@hyperStor ~]</code><code># lvs |grep lv1  //檢視目前lv1 狀态</code>

<code>  </code><code>lv1            vg0  -wi-a-   3.00g                           </code>

<code>[root@hyperStor ~]</code><code># e2fsck -f /dev/vg0/lv1   //進行磁盤檢查</code>

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

<code>Pass 1: Checking inodes, blocks, and sizes</code>

<code>Pass 2: Checking directory structure</code>

<code>Pass 3: Checking directory connectivity</code>

<code>Pass 4: Checking reference counts</code>

<code>Pass 5: Checking group summary information</code>

<code>/dev/vg0/lv1</code><code>: 12</code><code>/196608</code> <code>files (0.0% non-contiguous), 157501</code><code>/786432</code> <code>blocks</code>

<code>[root@hyperStor ~]</code><code># resize2fs  /dev/vg0/lv1  1G  //調整檔案系統</code>

<code>Resizing the filesystem on </code><code>/dev/vg0/lv1</code> <code>to 262144 (4k) blocks.</code>

<code>The filesystem on </code><code>/dev/vg0/lv1</code> <code>is now 262144 blocks long.</code>

<code>[root@hyperStor ~]</code><code># lvs |grep lv1    //檢視lv1 大小,未變</code>

<code>[root@hyperStor ~]</code><code># lvreduce -L 1GB /dev/vg0/lv1   //通過lvduce指令進行縮容</code>

<code>  </code><code>WARNING: Reducing active logical volume to 1.00 GiB</code>

<code>  </code><code>THIS MAY DESTROY YOUR DATA (filesystem etc.)</code>

<code>Do you really want to reduce lv1? [y</code><code>/n</code><code>]: y</code>

<code>  </code><code>Reducing logical volume lv1 to 1.00 GiB</code>

<code>[root@hyperStor ~]</code><code># lvs |grep lv1   //再次檢視lv1大小,減少</code>

<code>  </code><code>lv1            vg0  -wi-a-   1.00g                           </code>

<code>[root@hyperStor ~]</code><code># mount /dev/vg0/lv1  /lv1/   //重新挂載</code>

<code>[root@hyperStor ~]</code><code># df -H |grep lv1  //檢視目前狀态</code>

<code>/dev/mapper/vg0-lv1</code>    <code>1.1G   595M   410M  60% </code><code>/lv1</code>

<code>[root@hyperStor ~]</code><code># du -sh /lv1/* //檢視資料情況</code>

注意:在進行擴容,縮容之後進行原有檔案完整性校驗的時候最好通過比較檔案的md5值是否保持不變以判斷操作對原有檔案沒有造成影響

如:

【1】擴容:兩次/lv1/test1 的md5值均為d8b61b2c0025919d5321461045c8226f

<code>[root@hyperStor ~]</code><code># md5sum   /lv1/test1</code>

<code>d8b61b2c0025919d5321461045c8226f  </code><code>/lv1/test1</code>

<code>[root@hyperStor ~]</code><code># lvextend -L 2GB /dev/vg0/lv1</code>

<code>  </code><code>Extending logical volume lv1 to 2.00 GiB</code>

<code>r[root@hyperStor ~]</code><code># resize2fs  /dev/vg0/lv1</code>

<code>Performing an on-line resize of </code><code>/dev/vg0/lv1</code> <code>to 524288 (4k) blocks.</code>

<code>The filesystem on </code><code>/dev/vg0/lv1</code> <code>is now 524288 blocks long.</code>

<code>[root@hyperStor ~]</code><code># df -H |grep lv1</code>

【2】縮容

<code>[root@hyperStor ~]</code><code># umount /lv1/</code>

<code>[root@hyperStor ~]</code><code># e2fsck  -f /dev/vg0/lv1</code>

<code>/dev/vg0/lv1</code><code>: 12</code><code>/131072</code> <code>files (0.0% non-contiguous), 153389</code><code>/524288</code> <code>blocks</code>

<code>[root@hyperStor ~]</code><code># resize2fs  /dev/vg0/lv1  800M</code>

<code>Resizing the filesystem on </code><code>/dev/vg0/lv1</code> <code>to 204800 (4k) blocks.</code>

<code>The filesystem on </code><code>/dev/vg0/lv1</code> <code>is now 204800 blocks long.</code>

<code>[root@hyperStor ~]</code><code># lvreduce  -L 800M /dev/vg0/lv1</code>

<code>  </code><code>WARNING: Reducing active logical volume to 800.00 MiB</code>

<code>  </code><code>Reducing logical volume lv1 to 800.00 MiB</code>

<code>[root@hyperStor ~]</code><code># mount  /dev/vg0/lv1  /lv1</code>

拓展:LVM 卷組“擴容/縮容”

上面說了如果對LVM 邏輯卷進行擴容以及縮容,這邊說下如何對卷組進行所謂的擴容跟縮容,大家都知道卷組由實體卷組成,實體卷是卷組的最小組成機關,那麼卷組的擴容跟縮容無非就是實體卷加入卷組以及移除卷組的過程。

vgextend vg0 new_pv //将新的pv裝置加入vg0

vgreduce vg0 old_pv //将pv從vg0中删除,注意:是vgreduce 不是vgremove

本文轉自 暗黑魔君 51CTO部落格,原文連結:http://blog.51cto.com/clovemfong/1306682,如需轉載請自行聯系原作者