`
brucehe3
  • 浏览: 21917 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Linux中LVM的使用

阅读更多

LVM 是 "逻辑卷管理 (Logical Volume Manager)" 的简称。简单点说,就是将多个 "物理卷(Physical Volume, PV, 通常是物理硬盘分区)" 合并成一个更大的 "逻辑卷组(Volume Group, VG)",然后在其上切分和传统分区相同用途的 "逻辑卷 (Logical Volume, LV)"。逻辑卷允许我们在不中断系统运行的情况随时调整文件系统容量大小,理论上具备 "无限" 的热扩容能力。

操作步骤:

(1) 物理硬盘分区(fdisk)
(2) 创建物理卷(pvcreate)
(3) 创建卷组(vgcreate)
(4) 激活卷组(vgchange)
(5) 创建逻辑卷(lvcreate)
(6) 卷组扩容(vgextend) 或 逻辑卷扩容(lvextent)

下面是一个在虚拟机上的操作演示。

1. 对新硬盘分区

将新硬盘 /dev/sdb 划分为一个独立主分区。

$ sudo fdisk /dev/sdb

Command (m for help): n

Command action
   e   extended
   p   primary partition (1-4)
p

Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):
Using default value 2610

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

Calling ioctl() to re-read partition table.
Syncing disks.

$ sudo fdisk -l

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe7b472ca

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  83  Linux


2. 创建卷组

实际操作时,我们可以省略用 "sudo pvcreate /dev/sdb1" 创建物理卷的过程。
创建名为 myvg 的卷组,并将物理卷 /dev/sdb1 添加到该组。卷组使用前需要激活。

$ sudo vgcreate myvg /dev/sdb1
  No physical volume label read from /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
  Volume group "myvg" successfully created

$ sudo vgchange -a y myvg
  0 logical volume(s) in volume group "myvg" now active

$ sudo vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               19.99 GiB
  PE Size               4.00 MiB
  Total PE              5118
  Alloc PE / Size       0 / 0
  Free  PE / Size       5118 / 19.99 GiB
  VG UUID               O7APOI-T0b1-T1my-PkKg-zbu3-ZBHn-KX7hCm


3. 创建逻辑卷

创建一个名为 mywww 大小 10G 的逻辑卷,用于 /var/www 数据存储。别忘了创建文件系统,否则无法使用。建议使用 ext4 或 reiserfs,否则热扩容可能失败。

$ sudo lvcreate -L 10G -n mywww myvg
  Logical volume "mywww" created

$ sudo lvdisplay
  --- Logical volume ---
  LV Name                /dev/myvg/mywww
  VG Name                myvg
  LV UUID                dK9aNo-0GDu-2sxP-i1kM-Nni6-u58k-IMWAtT
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           251:2

$ sudo mkfs -t ext4 -j /dev/myvg/mywww

mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 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

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

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


4. 挂载逻辑卷

将 /dev/myvg/mywww 挂载到 /var/www。

$ sudo mkdir -p /var/www

$ sudo mount /dev/myvg/mywww /var/www

$ df -h /var/www
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mywww
                      9.9G   23M  9.4G   1% /var/www

$ mount
/dev/mapper/myvg-mywww on /var/www type ext4 (rw)


当然,我们可以将其加入 /etc/fstab 中,以便开机后自动挂载。

$ sudo cat /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/myvg/mywww /var/www        auto    defaults        0       0


5. 新增物理卷

将新的物理分区 /dev/sdc1 添加到卷组中进行扩容。

$ sudo vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.99 GiB
  PE Size               4.00 MiB
  Total PE              5118
  Alloc PE / Size       2560 / 10.00 GiB
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               qWjob5-j7VY-uOnp-BMoH-7TV0-nwJA-mghxk8

$ sudo vgextend myvg /dev/sdc1
  No physical volume label read from /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
  Volume group "myvg" successfully extended

$ sudo vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               39.98 GiB
  PE Size               4.00 MiB
  Total PE              10236
  Alloc PE / Size       2560 / 10.00 GiB
  Free  PE / Size       7676 / 29.98 GiB
  VG UUID               qWjob5-j7VY-uOnp-BMoH-7TV0-nwJA-mghxk8


通过查看 "VG Size" 和 "Free PE / Size" 可以确认扩容成功。

6. 对逻辑卷扩容

为 /dev/myvg/www 新增 5GB 空间。

$ sudo lvextend -L +5G /dev/myvg/mywww
  Extending logical volume mywww to 15.00 GiB
  Logical volume mywww successfully resized

$ sudo resize2fs -f /dev/myvg/mywww
resize2fs 1.41.11 (14-Mar-2010)
Filesystem at /dev/myvg/mywww is mounted on /var/www; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mywww to 3932160 (4k) blocks.
The filesystem on /dev/myvg/mywww is now 3932160 blocks long.

$ df -h /var/www
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mywww
                       15G  153M   14G   2% /var/www


扩容成功!

7. 删除逻辑卷

解除挂载,删除 /dev/myvg/mywww 逻辑卷。

$ sudo umount /var/www

$ sudo lvremove /dev/myvg/mywww
Do you really want to remove active logical volume mywww? [y/n]: y
  Logical volume "mywww" successfully removed

$ sudo vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  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               39.98 GiB
  PE Size               4.00 MiB
  Total PE              10236
  Alloc PE / Size       0 / 0
  Free  PE / Size       10236 / 39.98 GiB
  VG UUID               qWjob5-j7VY-uOnp-BMoH-7TV0-nwJA-mghxk8


--------- 分隔线 ----------------

建议在安装 Linux Server 时,除了为基本系统(/, /boot, swap) 划出几个总容量不超过 5GB 的分区,其他剩余空间统统纳入 LVM (/home, /var),如此以后扩容就非常方便了。

参考文档:

《通用线程: 学习 Linux LVM,第 1 部分》
《通用线程: 学习 Linux LVM,第 2 部分》
《逻辑卷管理 (LVM)》
《创建和管理 LVM》

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics