LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
在目前的云服务器中,我们经常需要升级配置,比如硬盘什么的,windows比较方便,直接用diskpart工具下的extend命令就可以搞定,而linux如果用普通分区方式,就无法扩展分区了,比较不方面。由此,建议云服务器用户用lvm来创建分区。下面以centos6为例,讲讲如何创建lvm。

首先,登录系统,记录创建分区等操作,必须具备root权限!
先看看磁盘设备:

[root@cloud ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb

我们发现了,系统盘在sda设备上,我们要操作的应该是sdb这个硬盘设备。
用fdisk分区

[root@cloud ~]# 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-8224, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-8224, default 8224):
Using default value 8224

上面依次按n,p创建分区后,按t,选择类型为8e,也就是lvm类型,之后按w保存。再次查看

[root@cloud ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1

发现多了个sdb1的分区,我们就在这个上面创建lvm。

[root@cloud ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@cloud ~]# vgcreate vg0 /dev/sdb1
  Volume group "vg0" successfully created
[root@cloud ~]# lvcreate -L 30G -n lv0 vg0
  Logical volume "lv0" created

上面的lvm,我们先创建了30g大小,如果不够,以后可以扩大逻辑卷的。格式化lvm:

[root@cloud ~]# mkfs.ext4 /dev/vg0/lv0

创建挂载目录/mnt/sdb,然后挂载:

[root@cloud ~]# blkid
/dev/sdb1: UUID="a5i0dO-I1Cr-SScv-7M1n-6pNz-ucd2-a9o1eY" TYPE="LVM2_member"
/dev/sda1: UUID="63f656e2-4a3c-4b34-a59e-13358830e87b" TYPE="ext4"
/dev/sda2: UUID="dtK0fn-wMNW-wB8L-ueXq-H3Ad-cek9-5wCgac" TYPE="LVM2_member"
/dev/mapper/vg_cloud-lv_root: UUID="b1b727fa-2e21-4399-8e63-d5565636c16b" TYPE="ext4"
/dev/mapper/vg_cloud-lv_swap: UUID="9464fd57-de55-47d9-9015-80dab53800b1" TYPE="swap"
/dev/mapper/vg0-lv0: UUID="f17c14b5-fb85-4624-8eee-d5a700f3047e" TYPE="ext4"

把我们要挂载卷的UUID=”f17c14b5-fb85-4624-8eee-d5a700f3047e”记下来,写入/etc/fstab,可以用vim编辑,也可以直接执行:

echo "UUID=f17c14b5-fb85-4624-8eee-d5a700f3047e       /mnt/sdb        ext4    defaults        0 0" >> /etc/fstab

执行mount -a挂载。此时逻辑卷应该已经挂载成功了,查看下:

[root@cloud ~]# mount
/dev/mapper/vg_cloud-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/mapper/vg0-lv0 on /mnt/sdb type ext4 (rw)

可以看到,已经挂载到/mnt/sdb上去了。

要扩大lvm大小,可以执行:

[root@cloud ~]# lvresize -L 35G /dev/vg0/lv0
  Extending logical volume lv0 to 35.00 GiB
  Logical volume lv0 successfully resized
[root@cloud ~]# resize2fs /dev/vg0/lv0
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg0/lv0 is mounted on /mnt/sdb; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vg0/lv0 to 9175040 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 9175040 blocks long.

查看大小:

[root@cloud ~]# df -lhT
文件系统    类型      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_cloud-lv_root
              ext4    7.5G  3.5G  3.7G  49% /
tmpfs        tmpfs    946M   72K  946M   1% /dev/shm
/dev/sda1     ext4    485M   32M  428M   7% /boot
/dev/mapper/vg0-lv0
              ext4     35G  176M   33G   1% /mnt/sdb

可以看到,已经扩大到35G了。
要使用全部大小,可以用vgdisplay,显示vg的大小,之后按上述方案分配即可。

[root@cloud ~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 63.00 GiB
PE Size 4.00 MiB
Total PE 16127
Alloc PE / Size 8960 / 35.00 GiB
Free PE / Size 7167 / 28.00 GiB
VG UUID j0lzmj-7daQ-aTFv-EHdA-02px-dir6-xjP973

可以看到,vg0最大有63GiB大小,总PE数量为16127个。

有些客户,喜欢把系统根目录”/”的lvm和其他磁盘合并,这样做其实非常不科学和危险,一旦系统出问题,重装系统,lvm卷里的数据很难恢复,处理起来也非常麻烦,不推荐大家和根目录逻辑卷合并。

Linux创建逻辑卷管理(LVM)教程

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注