RHCE Preparations Point 1:LVM的概念和使用方法

本文详细介绍LVM的基本概念、创建流程及如何调整LV大小,并提供了将LV挂载信息写入fstab的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一)名词解释:PV、PE、VG、LV

Physical Volume(PV):物理磁盘,即我们用fdisk看到的磁盘分区。磁盘分区的ID为8e(LVM),才能被LVM使用。

Volume Group(VG):LVM主要的目的就是要建立VG。它将一个或多个PV组合成为一个大磁盘。这个大磁盘以后可以分区。

Physical Extend(PE):在建立VG的时候,同时需要指定PE的数值,如果不指定的话,它的默认值是4MB。PE的大小直接影响到VG的最大容量,当PE为4MB时,VG的最大容量是256GB。

Logical Volume(LV):LV就是最后载入到文件系统的分区。LV是由VG分割来的,它会在系统中建立设备代号。

 

使用LVM的目的是增加管理整个分区大小的灵活性,而不是提高性能。

 

二)制作LVM的流程

[step 1] 修改磁盘分区的ID号

[root@localhost flagonxia]# fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1             1        62    497983+  83  Linux
/dev/sdb2            63       124    498015   83  Linux
/dev/sdb3           125       261   1100452+  83  Linux

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1             1        62    497983+  83  Linux
/dev/sdb2            63       124    498015   83  Linux
/dev/sdb3           125       261   1100452+  83  Linux

 

--将/dev/sdb1的分区ID设置为8e

Command (m for help): t

Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

 

-- 如法炮制,将/dev/sdb2,/dev/sdb3的分区ID也设置为8e

 

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End      Blocks        Id  System
/dev/sdb1             1        62         497983+    8e  Linux LVM
/dev/sdb2            63       124       498015      8e  Linux LVM
/dev/sdb3           125       261      1100452+  8e  Linux LVM

 

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

 

-- 让核心立刻读取新的分区表,而无须重新启动

[root@localhost flagonxia]# partprobe

 

[step 2]  建立PV

[root@localhost root]# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ERROR "pv_read(): read" reading physical volumes

 

[root@localhost root]# pvcreate /dev/sda1
pvcreate -- ERROR: "/etc/lvmtab" doesn't exist; please run vgscan

 

[root@localhost root]# vgscan
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume group

 

[root@localhost flagonxia]# pvcreate /dev/sdb1
pvcreate -- physical volume "/dev/sdb1" successfully created

 

[root@localhost flagonxia]# pvcreate /dev/sdb2
pvcreate -- physical volume "/dev/sdb2" successfully created

 

[root@localhost flagonxia]# pvcreate /dev/sdb3
pvcreate -- physical volume "/dev/sdb3" successfully created

 

[root@localhost flagonxia]# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1" is in no VG  [486.31 MB]
pvscan -- inactive PV "/dev/sdb2" is in no VG  [486.34 MB]
pvscan -- inactive PV "/dev/sdb3" is in no VG  [1.05 GB]
pvscan -- total: 3 [2 GB] / in use: 0 [0] / in no VG: 3 [2 GB]

 

[root@localhost flagonxia]# pvdisplay /dev/sdb1 /dev/sdb2 /dev/sdb3
pvdisplay -- "/dev/sdb1" is a new physical volume of 486.31 MB
pvdisplay -- "/dev/sdb2" is a new physical volume of 486.34 MB
pvdisplay -- "/dev/sdb3" is a new physical volume of 1.05 GB

 

[step 3] 建立VG

[root@localhost flagonxia]# vgcreate xboxvg /dev/sdb1 /dev/sdb2 /dev/sdb3
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "xboxvg"
vgcreate -- volume group "xboxvg" successfully created and activated

 

[root@localhost flagonxia]# vgscan
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- found active volume group "xboxvg"
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume group 

 

[root@localhost flagonxia]# vgdisplay
--- Volume group ---
VG Name               xboxvg
VG Access             read/write
VG Status             available/resizable
VG #                  0
MAX LV                256
Cur LV                0
Open LV               0
MAX LV Size           255.99 GB
Max PV                256
Cur PV                3
Act PV                3
VG Size               1.98 GB
PE Size               4 MB
Total PE              507
Alloc PE / Size       0 / 0
Free  PE / Size       507 / 1.98 GB
VG UUID               8mhdbu-dsP5-7MF0-nu1q-UQ0r-aXN4-B9F5YU

 

-- 将/dev/sdb2从VG中删除

[root@localhost flagonxia]# vgreduce xboxvg /dev/sdb2
vgreduce -- doing automatic backup of volume group "xboxvg"
vgreduce -- volume group "xboxvg" successfully reduced by physical volume:
vgreduce -- /dev/sdb2

 

-- 使用vgdisplay命令观察,整个VG(xboxvg)变成了1.5G

[root@localhost flagonxia]# vgdisplay
--- Volume group ---
VG Name              xboxvg
VG Access             read/write
VG Status             available/resizable
VG #                     0
MAX LV                 256
Cur LV                  0
Open LV               0
MAX LV Size         255.99 GB
Max PV                256
Cur PV                 2
Act PV                  2
VG Size                1.51 GB
PE Size                4 MB
Total PE               387
Alloc PE / Size      0 / 0
Free  PE / Size      387 / 1.51 GB
VG UUID               8mhdbu-dsP5-7MF0-nu1q-UQ0r-aXN4-B9F5YU

 

-- 再将/dev/sdb2加回VG中

[root@localhost flagonxia]# vgextend xboxvg /dev/sdb2
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "xboxvg"
vgextend -- volume group "xboxvg" successfully extended

[root@localhost flagonxia]# vgdisplay
--- Volume group ---
VG Name               xboxvg
VG Access             read/write
VG Status             available/resizable
VG #                     0
MAX LV                 256
Cur LV                  0
Open LV               0
MAX LV Size         255.99 GB
Max PV                 256
Cur PV                 3
Act PV                  3
VG Size                1.98 GB
PE Size                4 MB
Total PE                507
Alloc PE / Size       0 / 0
Free  PE / Size      507 / 1.98 GB
VG UUID               8mhdbu-dsP5-7MF0-nu1q-UQ0r-aXN4-B9F5YU

 

[step 4] 建立LV

[root@localhost flagonxia]# lvcreate -L 1.98G -n xboxlv xboxvg
lvcreate -- rounding size up to physical extent boundary
lvcreate -- doing automatic backup of "xboxvg"
lvcreate -- logical volume "/dev/xboxvg/xboxlv" successfully created

 

[root@localhost flagonxia]# lvscan
lvscan -- ACTIVE            "/dev/xboxvg/xboxlv" [1.98 GB]
lvscan -- 1 logical volumes with 1.98 GB total in 1 volume group
lvscan -- 1 active logical volumes

 

[root@localhost flagonxia]# ll /dev/xboxvg/xboxlv
brw-rw----    1 root     disk      58,   0  6月 14 11:28 /dev/xboxvg/xboxlv


[root@localhost flagonxia]# lvdisplay /dev/xboxvg/xboxlv
--- Logical volume ---
LV Name                /dev/xboxvg/xboxlv
VG Name                xboxvg
LV Write Access     read/write
LV Status               available
LV #                      1
# open                  0
LV Size                  1.98 GB
Current LE             507
Allocated LE           507
Allocation               next free
Read ahead sectors     1024
Block device           58:0

 

这样的话,LV就已经建立了。

 

step 5] 格式化LV

[root@localhost flagonxia]# mke2fs -j /dev/xboxvg/xboxlv

--可以用另一条命令:mkfs.ext3 /dev/xboxvg/xboxlv
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
259584 inodes, 519168 blocks
25958 blocks (5.00%) reserved for the super user
First data block=0
16 block groups
32768 blocks per group, 32768 fragments per group
16224 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

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

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost flagonxia]# mkdir /mnt/lvm

[root@localhost flagonxia]# mount -t ext3 /dev/xboxvg/xboxlv /mnt/lvm

[root@localhost lvm]# df /mnt/lvm
文件系统               1K-块        已用     可用 已用% 挂载点
/dev/xboxvg/xboxlv     2044048     32828   1907388   2% /mnt/lvm

 

 

总而言之,创建LV需要以下几个步骤:

1)create  a partition with the right flag/code (8e);

2)Assign the partition as a Physical Volume (PV);

3)Use one or more PVs as a Volume Group (VG);

4)Use space from a VG as a Logical Volume (LV);

5)Format the LV.

 

三)改变LV的大小 (Resize the LV)

我们已经建立了一个VG:pspvg,它有2G的空间。利用它,我们建立一个500M的LV:psplv。

[root@localhost flagonxia]# lvcreate -L 500M pspvg -n psplv

[root@localhost mnt]# lvdisplay /dev/pspvg/psplv
--- Logical volume ---
LV Name                 /dev/pspvg/psplv
VG Name                 pspvg
LV Write Access       read/write
LV Status               available
LV #                      1
# open                   1
LV Size                   500 MB
Current LE               125
Allocated LE            125
Allocation                next free
Read ahead sectors  1024
Block device            58:1

-- 为psplv增加200M的空间

-- 之前我们已经将psplv挂载到了/mnut/test目录。在改变其大小前,先卸载它。

[root@localhost sbin]# umount /mnt/test

 

[root@localhost sbin]# lvextend -L +200M /dev/pspvg/psplv
lvextend -- extending logical volume "/dev/pspvg/psplv" to 700 MB
lvextend -- doing automatic backup of volume group "pspvg"
lvextend -- logical volume "/dev/pspvg/psplv" successfully extended 

 

[root@localhost sbin]# lvdisplay /dev/pspvg/psplv
--- Logical volume ---
LV Name                     /dev/pspvg/psplv
VG Name                    pspvg
LV Write Access          read/write
LV Status                    available
LV #                           1
# open                       1
LV Size                        700 MB
Current LE                  175
Allocated LE                175
Allocation                     next free
Read ahead sectors     1024
Block device                 58:1

-- 为psplv减少100M的空间

[root@localhost sbin]# lvreduce -L -100M /dev/pspvg/psplv
lvreduce -- WARNING: reducing active and open logical volume to 600 MB
lvreduce -- THIS MAY DESTROY YOUR DATA (filesystem etc.)
lvreduce -- do you really want to reduce "/dev/pspvg/psplv"? [y/n]: y
lvreduce -- doing automatic backup of volume group "pspvg"
lvreduce -- logical volume "/dev/pspvg/psplv" successfully reduced

 

[root@localhost sbin]# lvdisplay /dev/pspvg/psplv
--- Logical volume ---
LV Name                     /dev/pspvg/psplv
VG Name                    pspvg
LV Write Access          read/write
LV Status                    available
LV #                           1
# open                       1
LV Size                       600 MB
Current LE                  150
Allocated LE                150
Allocation                    next free
Read ahead sectors    1024
Block device                58:1

 

-- 使用了上面的命令后,用df看/dev/pspvg/psplv所占的大小没有发生变化。我们还要用下面的命令来是LV改变过的大小起作用。

-- 对于resize2fs的使用要说明一下。

-- 1)resize2fs仅支持离线缩小,就是说如果要缩小文件系统(ext3)时,应该先卸载(umount);

-- 2)如果放大文件系统时,无此限制。也就是说可以直接增加已挂载或已卸载的文件系统的大小。

-- 在本例中,文件系统是卸载的状态。

[root@localhost sbin]# resize2fs /dev/pspvg/psplv
resize2fs 1.32 (09-Nov-2002)
Please run 'e2fsck -f /dev/pspvg/psplv' first.

[root@localhost sbin]# e2fsck -f /dev/pspvg/psplv
e2fsck 1.32 (09-Nov-2002)
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/pspvg/psplv: 11/128016 files (0.0% non-contiguous), 24395/512000 blocks

 

[root@localhost sbin]# resize2fs /dev/pspvg/psplv

[root@localhost mnt]# df -h
文件系统                       容量     已用     可用     已用%    挂载点
/dev/sda2                   4.9G    2.3G    2.4G   50%      /
/dev/sda1                   99M     9.3M    85M   10%      /boot
none                           504M   0         504M  0%        /dev/shm
/dev/xboxvg/xboxlv     2.0G    33M     1.9G   2%        /mnt/lvm
/dev/pspvg/psplv     582M   8.3M    544M  2%        /mnt/test

 

四)将LV的挂载信息写入/etc/fstab中

 

[root@localhost mnt]# vi /etc/fstab

......

-- 加入下面一行

/dev/pspvg/psplv        /mnt/test               ext3    defaults        1 2 

 

下次开机,用df检查是否mount成功。

[flagonxia@localhost flagonxia]$ df -h
文件系统                     容量     已用     可用      已用%    挂载点
/dev/sda2                 4.9G    2.3G    2.4G    50%      /
/dev/sda1                 99M     9.3M    85M    10%      /boot
none                         504M   0         504M   0%        /dev/shm
/dev/pspvg/psplv  582M   8.3M   544M   2%     /mnt/test 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值