在 Linux 中使用动态磁盘

 是否遇到过这样的问题,划分了 10G 的一个分区,挂接到 /home 下,可是随着时间的流逝,10G 的空间开始不够用了,需要把它扩充。假设要扩充到 12G,那么唯一的方法就是建立一个 12G 的新分区,然后将原来的 10G 分区中的数据全部移动到新分区中,再修改挂接配置。这样不仅麻烦而且浪费时间。

Linux 2.4 开始支持 LVM(Logical Volume Manager,逻辑卷管理器),通过 LVM,可以动态地改变“分区”(准确地说应当称之为卷)的大小,而不必担心数据移动的问题。LVM 的原理是,首先在硬盘上创建 PV(Physical Volume: 物理卷)。PV 可以创建在一个分区上,也可以创建在整个硬盘上,它由许多的 PE(Physical Extent)组成,每个 PE 的默认值为 4MB。之后将数个 PV 合在一起组成一个 VG(Volume Group: 卷组)。最后在 VG 中创建 LV(Logical Volume: 逻辑卷),它也由许多的 LE(Logical Extent)组成,LE 的大小与 PE 相同,并与 PE 一一对应。LV 就可以像普通的分区一样挂接在任何地方了。

下面我们总结一下这里出现的词汇:
LVM (Logical Volume Manager,逻辑卷管理器):Linux 中用于管理逻辑卷的功能。
PV(Physical Volume,物理卷):数据实际保存的位置,由许多 PE 组成。
VG(Volume Group,卷组):多个 PV 组合在一起。
LV(Logical Volume,逻辑卷):LVM 创建的虚拟卷,由许多 LE 组成,可以像普通分区一样进行挂接,可以动态修改大小。
PE(Physical Extent):LVM 管理的最小单位,默认为 4MB。
LE(Logical Extent):大小与 PE 相同,并与 PE 一一对应。
制作 LVM

下面我们尝试在 Linux 下使用 LVM 来管理分区。以下操作使用的系统为 Fedora Core 3。

1. 首先用 fdisk 创建两个分区 /dev/hda7 和 /dev/hda8,选择分区大小为 1G。结果如下:
    Device Boot      Start         End      Blocks   Id  System
 /dev/hdb1               1        2117     1000251   83  Linux
 /dev/hdb2            2118        4234     1000282+  83  Linux

2. 使用 pvcreate 命令将分区建立为 PV。
 # pvcreate /dev/hdb1
   Physical volume "/dev/hdb1" successfully created
 # pvcreate /dev/hdb2
   Physical volume "/dev/hdb2" successfully created

3. 使用 vgcreate 命令将新建的两个 PV 组合成 VG。
 # vgcreate newvg /dev/hdb1 /dev/hdb2
   Volume group "newvg" successfully created

之后我们可以发现在 /dev 目录下多了一个名为 newvg 的目录,这就是我们建立的 VG。

4. 使用 lvcreate 命令在 newvg 中建立一个 LV,名为 lv01,大小为 256M。
 # lvcreate -L 256M -n lv01 newvg
   Logical volume "lv01" created

可以发现在 /dev/newvg 下多了一个名为 lv01 的符号链接,这就是 LV。

5. 在 lv01 上建立文件系统。
 # mke2fs /dev/newvg/lv01

6. 挂接该文件系统。
 # mount -t ext2 /dev/newvg/lv01 /root/lv

至此一个 LV 已经建立完毕。我们可以试着增大该 LV 的容量。使用 lvextend 命令将刚刚建立的 LV 增大 128M。扩大容量之后需要使用 resize2fs 命令来扩大原有的文件系统到新的容量。
 # lvextend -L+128M /dev/newvg/lv01
   Extending logical volume lv01 to 384.00 MB
   Logical volume lv01 successfully resized
 
 # umount /dev/newvg/lv01
 
 # e2fsck -f /dev/newvg/lv01
 e2fsck 1.36 (05-Feb-2005)
 Pass 1: Checking inodes, blocks, and sizes
 Pass 2: Checking directory structure
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
 /dev/newvg/lv01: 12/65536 files (8.3% non-contiguous), 10336/262144 blocks
 
 # resize2fs /dev/newvg/lv01
 resize2fs 1.36 (05-Feb-2005)
 Resizing the filesystem on /dev/newvg/lv01 to 393216 (1k) blocks.
 The filesystem on /dev/newvg/lv01 is now 393216 blocks long.
 
 # mount -t ext2 /dev/newvg/lv01 /root/lv

之后马上就可以利用 df -h 命令看到文件系统的容量改变了。

我们也可以利用 vgdisplay 命令来查看 VG 的信息。
 # vgdisplay newvg
   --- Volume group ---
   VG Name               newvg
   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               1.91 GB
   PE Size               4.00 MB
   Total PE              488
   Alloc PE / Size       96 / 384.00 MB
   Free  PE / Size       392 / 1.53 GB
   VG UUID               YAlPwY-Vlfa-ZBa7-4jPQ-60Gk-Fzwi-jUW8BM

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值