Linux学习(十五)LVM

一、前言

LVM,逻辑卷管理工具,它的作用是提供一种灵活的磁盘管理办法。通常我们的某个分区用完了,想要扩容,很麻烦。但是用lvm就可以很方便的扩容,收缩。

看它的原理图:

它的原理大致是:首先将磁盘做成物理卷,然后物理卷再组成卷组,卷组下面再划分逻辑卷。

二、实现一个lvm

步骤:

2.1 做物理卷。

首先看看我们的磁盘/dev/sdb的分区情况:

[[email protected] ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2f45f776

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         6293504     7931903      819200   83  Linux
/dev/sdb3         2099200     6293503     2097152    5  Extended
/dev/sdb5         2101248     4198399     1048576   83  Linux
/dev/sdb6         4200448     5838847      819200   83  Linux

接下来,我们把sdb1,sdb2,sdb5的分区id修改为8e:

[[email protected] ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2f45f776

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   8e  Linux LVM
/dev/sdb2         6293504     7931903      819200   8e  Linux LVM
/dev/sdb3         2099200     6293503     2097152    5  Extended
/dev/sdb5         2101248     4198399     1048576   8e  Linux LVM
/dev/sdb6         4200448     5838847      819200   83  Linux

Partition table entries are not in disk order

如果是新创建的分区,找不到的话,使用partprobe命令刷新一下。

运行pvcreate命令,创建物理卷(physical volum)

[[email protected] ~]# pvs
-bash: pvs: 未找到命令
[[email protected] ~]# pvdisplay
-bash: pvdisplay: 未找到命令

发现这些命令都没有的话,那么就需要安装lvm2:

[[email protected] ~]# yum install lvm2
已加载插件:fastestmirror
base                                                                                    | 3.6 kB  00:00:00
extras                                                                                  | 3.4 kB  00:00:00
updates                                                                                 | 3.4 kB  00:00:00
(1/2): extras/7/x86_64/primary_db                                                       | 129 kB  00:00:00
(2/2): updates/7/x86_64/primary_db  

安装好之后,就可以使用pvcreate命令了:

[[email protected] ~]# pvcreate /dev/sdb1
WARNING: ext2 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
  Wiping ext2 signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created.
[[email protected] ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
[[email protected] ~]# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created.

运行pvs或者pvdisplay命令能查看当前的物理卷:

[[email protected] ~]# pvs
  PV         VG Fmt  Attr PSize   PFree
  /dev/sdb1     lvm2 ---    1.00g   1.00g
  /dev/sdb2     lvm2 ---  800.00m 800.00m
  /dev/sdb5     lvm2 ---    1.00g   1.00g
[[email protected] ~]# pvdisplay
  "/dev/sdb2" is a new physical volume of "800.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name
  PV Size               800.00 MiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               FS2sy9-BTxn-XzCz-6ZBH-fL04-r1mB-p2EH91

  "/dev/sdb5" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb5
  VG Name
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD

  "/dev/sdb1" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc

2.2 创建卷组

[[email protected] ~]# vgcreate vg1 /dev/sdb
sdb   sdb1  sdb2  sdb3  sdb5  sdb6
[[email protected] ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created
[[email protected] ~]# vgcreate vg2 /dev/sdb5
  Volume group "vg2" successfully created
[[email protected] ~]# vgs
  VG  #PV #LV #SN Attr   VSize    VFree
  vg1   2   0   0 wz--n-    1.77g    1.77g
  vg2   1   0   0 wz--n- 1020.00m 1020.00m
[[email protected] ~]# vgdisplay
  --- Volume group ---
  VG Name               vg2
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63

  --- Volume group ---
  VG Name               vg1
  System ID
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               1.77 GiB
  PE Size               4.00 MiB
  Total PE              454
  Alloc PE / Size       0 / 0
  Free  PE / Size       454 / 1.77 GiB
  VG UUID               qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7

使用vgs或者vgdisplay可以看到卷组。

2.3 创建逻辑卷

现在我们创建了两个卷组,一个是vg1的1.7G,一个是vg2的1G。接下来我们创建逻辑卷:

[[email protected] ~]# lvcreate -L 200M -n lv1 vg1
  Logical volume "lv1" created.

创建的逻辑需要被格式化之后才可以使用:

[[email protected] ~]# mke2fs -t ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

我们采用的ext4的文件系统格式化的,使用xfs的文件系统格式化也是可以的。

我们把格式化完成之后/dev/vg1/lv1挂载到/mnt目录下

[[email protected] ~]# mkdir /mnt/vg1
[[email protected] ~]# mount /dev/vg1/lv1 /mnt/vg1/
[[email protected] ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             18G  1.4G   17G    8% /
devtmpfs             479M     0  479M    0% /dev
tmpfs                489M     0  489M    0% /dev/shm
tmpfs                489M  6.8M  482M    2% /run
tmpfs                489M     0  489M    0% /sys/fs/cgroup
/dev/sda1            197M  109M   88M   56% /boot
tmpfs                 98M     0   98M    0% /run/user/0
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1
[[email protected] ~]# cat /etc/passwd >> /mnt/vg1/passwd
[[email protected] ~]# cat !$
cat /mnt/vg1/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ruanwenwu:x:1000:1000::/home/ruanwenwu:/bin/bash

到这里,我们的逻辑卷创建也结束了。

如果,我们要删除一个物理卷怎么操作呢?

[[email protected] ~]# pvremove /dev/sdb2
  PV /dev/sdb2 is used by VG vg1 so please use vgreduce first.
  (If you are certain you need pvremove, then confirm by using --force twice.)
  /dev/sdb2: physical volume label not removed.
[[email protected] ~]# man vdreduce
没有 vdreduce 的手册页条目
[[email protected] ~]# man vgreduce
[[email protected] ~]# man vgreduce
[[email protected] ~]# vgreduce vg1 /dev/sdb2
  Removed "/dev/sdb2" from volume group "vg1"
[[email protected] ~]# vgs
  VG  #PV #LV #SN Attr   VSize    VFree
  vg1   1   1   0 wz--n- 1020.00m  820.00m
  vg2   1   0   0 wz--n- 1020.00m 1020.00m
[[email protected] ~]# pvs
  PV         VG  Fmt  Attr PSize    PFree
  /dev/sdb1  vg1 lvm2 a--  1020.00m  820.00m
  /dev/sdb2      lvm2 ---   800.00m  800.00m
  /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m
[[email protected] ~]# pvremove /dev/sdb2
  Labels on physical volume "/dev/sdb2" successfully wiped.
[[email protected] ~]# pvs
  PV         VG  Fmt  Attr PSize    PFree
  /dev/sdb1  vg1 lvm2 a--  1020.00m  820.00m
  /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m

代码里碰到一个问题。如果一个物理卷已经被加入一个卷组里,需要使用vgreduce命令把这个物理卷从卷组里删除,然后再运行pvremove命令。

除了删除物理卷之外,逻辑卷也是可以删除的,使用命令lvremove /dev/vg1/lv1。

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 200.00m
[[email protected] ~]# lvremove /dev/vg1/lv1
  Logical volume vg1/lv1 contains a filesystem in use.
[[email protected] ~]# pwd
/root
[[email protected] ~]# rm -rf /dev/vg1/lv1/*
[[email protected] ~]# !lv
lvremove /dev/vg1/lv1
  Logical volume vg1/lv1 contains a filesystem in use.
[[email protected] ~]# umount /dev/vg1/lv1
[[email protected] ~]# !lv
lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
  Logical volume "lv1" successfully removed
[[email protected] ~]# lvs
[[email protected] ~]# pvs
  PV         VG  Fmt  Attr PSize    PFree
  /dev/sdb1  vg1 lvm2 a--  1020.00m 1020.00m
  /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m

现在我们再次将逻辑卷加回来:

[[email protected] ~]# history|grep lvcreate
  235  lvcreate -L 200M -n lv1 vg1
  273  history|lvcreate
  274  history|grep lvcreate
[[email protected] ~]# lvcreate -L 200M -n lv1 vg1
WARNING: ext4 signature detected on /dev/vg1/lv1 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vg1/lv1.
  Logical volume "lv1" created.
[[email protected] ~]# mke2fs -t ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 200.00m
[[email protected] ~]# mount /dev/vg1/lv1 /mnt/vg1/
[[email protected] ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             18G  1.4G   17G    8% /
devtmpfs             479M     0  479M    0% /dev
tmpfs                489M     0  489M    0% /dev/shm
tmpfs                489M  6.8M  482M    2% /run
tmpfs                489M     0  489M    0% /sys/fs/cgroup
/dev/sda1            197M  109M   88M   56% /boot
tmpfs                 98M     0   98M    0% /run/user/0
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1

到这里,我们的LVM基本上做完了。我们来梳理一下我们现有有了那些东西:

物理卷:

[[email protected] ~]# pvs
  PV         VG  Fmt  Attr PSize    PFree
  /dev/sdb1  vg1 lvm2 a--  1020.00m  820.00m
  /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m

卷组:

[[email protected] ~]# vgs
  VG  #PV #LV #SN Attr   VSize    VFree
  vg1   1   1   0 wz--n- 1020.00m  820.00m
  vg2   1   0   0 wz--n- 1020.00m 1020.00m

物理卷:

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 200.00m            

三、接下来讲如何扩容。

(先以ext4文件系统举例)

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 200.00m
[[email protected] ~]# lvresize -L 300M /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume vg1/lv1 successfully resized.
[[email protected] ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             18G  1.4G   17G    8% /
devtmpfs             479M     0  479M    0% /dev
tmpfs                489M     0  489M    0% /dev/shm
tmpfs                489M  6.8M  482M    2% /run
tmpfs                489M     0  489M    0% /sys/fs/cgroup
/dev/sda1            197M  109M   88M   56% /boot
tmpfs                 98M     0   98M    0% /run/user/0
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1
[[email protected] ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg1/lv1 is mounted.
e2fsck: 无法继续, 中止.

这说明ext4文件系统扩容的话需要先umount:

[[email protected] ~]# lvresize -L 300M /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume vg1/lv1 successfully resized.
[[email protected] ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             18G  1.4G   17G    8% /
devtmpfs             479M     0  479M    0% /dev
tmpfs                489M     0  489M    0% /dev/shm
tmpfs                489M  6.8M  482M    2% /run
tmpfs                489M     0  489M    0% /sys/fs/cgroup
/dev/sda1            197M  109M   88M   56% /boot
tmpfs                 98M     0   98M    0% /run/user/0
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1
[[email protected] ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg1/lv1 is mounted.
e2fsck: 无法继续, 中止.

[[email protected] ~]# umount /dev/vg1/lv1
[[email protected] ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  1.4G   17G    8% /
devtmpfs        479M     0  479M    0% /dev
tmpfs           489M     0  489M    0% /dev/shm
tmpfs           489M  6.8M  482M    2% /run
tmpfs           489M     0  489M    0% /sys/fs/cgroup
/dev/sda1       197M  109M   88M   56% /boot
tmpfs            98M     0   98M    0% /run/user/0
[[email protected] ~]# lvresize -L 300M /dev/vg1/lv1
  New size (75 extents) matches existing size (75 extents).
[[email protected] ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  1.4G   17G    8% /
devtmpfs        479M     0  479M    0% /dev
tmpfs           489M     0  489M    0% /dev/shm
tmpfs           489M  6.8M  482M    2% /run
tmpfs           489M     0  489M    0% /sys/fs/cgroup
/dev/sda1       197M  109M   88M   56% /boot
tmpfs            98M     0   98M    0% /run/user/0
[[email protected] ~]# mount /dev/vg1/lv1
mount: 在 /etc/fstab 中找不到 /dev/vg1/lv1
[[email protected] ~]# e2fsck /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg1/lv1: clean, 11/51200 files, 12115/204800 blocks
[[email protected] ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
请先运行 ‘e2fsck -f /dev/vg1/lv1‘.

[[email protected] ~]# resize2fs -f /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 307200 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 307200 blocks long.

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 300.00m
[[email protected] ~]# mount /dev/vg1/lv1
mount: 在 /etc/fstab 中找不到 /dev/vg1/lv1
[[email protected] ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[[email protected] ~]# lvresize /dev/vg1/lv1
  No command with matching syntax recognised.  Run ‘lvresize --help‘ for more information.
[[email protected] ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 307200 blocks long.  Nothing to do!

[[email protected] ~]# ls -ld /dev/vg1/lv1
lrwxrwxrwx. 1 root root 7 11月  4 12:42 /dev/vg1/lv1 -> ../dm-0
[[email protected] ~]# mount /dev/vg1/lv1 /mnt/vg1/
[[email protected] ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             18G  1.4G   17G    8% /
devtmpfs             479M     0  479M    0% /dev
tmpfs                489M     0  489M    0% /dev/shm
tmpfs                489M  6.8M  482M    2% /run
tmpfs                489M     0  489M    0% /sys/fs/cgroup
/dev/sda1            197M  109M   88M   56% /boot
tmpfs                 98M     0   98M    0% /run/user/0
/dev/mapper/vg1-lv1  287M  2.1M  266M    1% /mnt/vg1

总结一下步骤:

 lvresize -L 300M  /dev/vg1/lv1  重新设置卷大小

 e2fsck -f /dev/vg1/lv1 检查磁盘错误  (ext4执行)

 resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)

 xfs_growfs /dev/vg1/lv1  xfs文件系统需要执行

到这里扩容就成功了。

四、缩容

步骤:

缩减逻辑卷(xfs不支持)
 先umount

 e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)

 resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)

 lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

实验:

[[email protected] ~]# umount /dev/vg1/lv1
[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 100.00m
[[email protected] ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
[[email protected] ~]# resize2fs /dev/vg1/lv1 100M
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 102400 blocks long.  Nothing to do!

[[email protected] ~]# resize2fs /dev/vg1/lv1 50M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 51200 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 51200 blocks long.

[[email protected] ~]# lvresize -L 50M /dev/vg1/lv1
  Rounding size to boundary between physical extents: 52.00 MiB.
  WARNING: Reducing active logical volume to 52.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
  Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 52.00 MiB (13 extents).
  Logical volume vg1/lv1 successfully resized.
[[email protected] ~]# mount /dev/vg1/lv1 /mnt/vg1/
[[email protected] ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             18G  1.4G   17G    8% /
devtmpfs             479M     0  479M    0% /dev
tmpfs                489M     0  489M    0% /dev/shm
tmpfs                489M  6.8M  482M    2% /run
tmpfs                489M     0  489M    0% /sys/fs/cgroup
/dev/sda1            197M  109M   88M   56% /boot
tmpfs                 98M     0   98M    0% /run/user/0
/dev/mapper/vg1-lv1   45M  1.1M   40M    3% /mnt/vg1

五、扩展卷组

步骤:

fdisk /dev/sdb  新增/dev/sdb5(逻辑分区8e)  2G

 pvcreate /dev/sdb5

 vgextend vg1 /dev/sdb5

 lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

先创建一个分区,创建物理分区,将物理分区添加到卷组,然后重新分配卷大小。

[[email protected] ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):6
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):q

[[email protected] ~]# pvcreate /dev/sdb6
WARNING: ext4 signature detected on /dev/sdb6 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdb6.
  Physical volume "/dev/sdb6" successfully created.
[[email protected] ~]# vgex
vgexport  vgextend
[[email protected] ~]# vgex
vgexport  vgextend
[[email protected] ~]# vgextend vg1 /dev/sdb6
  Volume group "vg1" successfully extended
[[email protected] ~]# vgdisplay -v
  --- Volume group ---
  VG Name               vg2
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63

  --- Physical volumes ---
  PV Name               /dev/sdb5
  PV UUID               6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
  PV Status             allocatable
  Total PE / Free PE    255 / 255

  --- Volume group ---
  VG Name               vg1
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  9
  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.77 GiB
  PE Size               4.00 MiB
  Total PE              454
  Alloc PE / Size       13 / 52.00 MiB
  Free  PE / Size       441 / 1.72 GiB
  VG UUID               qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7

  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                x6wfyb-ZMDC-eGmK-8TRH-cVX5-JZB2-u0ZYID
  LV Write Access        read/write
  LV Creation host, time ruanwenwu02, 2017-11-04 11:52:34 +0800
  LV Status              available
  # open                 1
  LV Size                52.00 MiB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Physical volumes ---
  PV Name               /dev/sdb1
  PV UUID               lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc
  PV Status             allocatable
  Total PE / Free PE    255 / 242

  PV Name               /dev/sdb6
  PV UUID               QsRgrb-3vmW-Jte1-o5Qv-JvgZ-oNnO-MJkOoG
  PV Status             allocatable
  Total PE / Free PE    199 / 199

六、命令整理:

6.1 fdisk diskname -> t ->8e

修改磁盘分区为lvm类型。

6.2 pvcreate partionname

创建物理分区

6.4 pvremove

删除物理分区

6.3 vgcreate vg1 /dev/sdb1 /dev/sdb2

创建卷组

6.4 vgremove

移除卷组

6.5 lvcreate -L 200M -n lv1 vg1

创建逻辑卷

6.6 lvresize -L 300M /dev/vg1/lv1

扩容逻辑卷大小

6.7 扩容之后的操作

 e2fsck -f /dev/vg1/lv1 检查磁盘错误  (ext4执行)

 resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)

 xfs_growfs /dev/vg1/lv1  xfs文件系统需要执行

6.8 缩容操作

先umount

 e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)

 resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)

 lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

6.9 列出卷组的详细信息

[[email protected] ~]# vgdisplay -v
  --- Volume group ---
  VG Name               vg2
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63

  --- Physical volumes ---
  PV Name               /dev/sdb5
  PV UUID               6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
  PV Status             allocatable
  Total PE / Free PE    255 / 255

  --- Volume group ---
  VG Name               vg1
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  9
  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.77 GiB
  PE Size               4.00 MiB
  Total PE              454
  Alloc PE / Size       13 / 52.00 MiB
  Free  PE / Size       441 / 1.72 GiB
  VG UUID               qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7

  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                x6wfyb-ZMDC-eGmK-8TRH-cVX5-JZB2-u0ZYID
  LV Write Access        read/write
  LV Creation host, time ruanwenwu02, 2017-11-04 11:52:34 +0800
  LV Status              available
  # open                 1
  LV Size                52.00 MiB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Physical volumes ---
  PV Name               /dev/sdb1
  PV UUID               lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc
  PV Status             allocatable
  Total PE / Free PE    255 / 242

  PV Name               /dev/sdb6
  PV UUID               QsRgrb-3vmW-Jte1-o5Qv-JvgZ-oNnO-MJkOoG
  PV Status             allocatable
  Total PE / Free PE    199 / 199

七、总结

LVM的命令还是比较多的,有机会多看看多练练吧。

时间: 2024-11-09 00:05:35

Linux学习(十五)LVM的相关文章

Linux学习第五节课-标准I/O和管道

Linux学习第五节课 ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 三十一.标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: file descriptor (文

攻城狮在路上(叁)Linux(十五)--- 文件与目录的默认权限与隐藏权限

一.文件默认权限:umask <==需要被减去的权限. 1.umask指的是当前用户在新建文件或者目录时的默认权限,如0022; 2.默认情况下,用户创建文件的最大权限为666; 创建目录的最大权限为777. 3.最终权限 = 最大权限 - umask; <== 此处注意并非是数值直接相减. 4.设置umask: umask 002; 5.由上述条件,自己判断用户新建文件或目录的最终权限. 二.文件的隐藏属性: chattr.lsattr , 隐藏属性对于系统安全有很大的帮助. chattr

Oracle学习(十五):分布式数据库

--分布式数据库的独立性:分布数据的独立性指用户不必关心数据如何分割和存储,只需关心他需要什么数据. --本地操作 SQL> sqlplus scott/tiger --远程操作 SQL> sqlplus scott/[email protected]:1521/orcl --分布式操作 SQL> --创建数据库链路l2(需要权限): SQL> --remoteorcl服务命名(在net manager里配置):配置跟远程服务器的数据库的连接协议.主机名(ip地址).端口号等 SQ

CSS基础学习十五:盒子模型补充之外边距合并

今天继续接着CSS盒子模型补充,CSS基础学习十三:盒子模型和CSS基础学习十四:盒子模型补充之display属 性设置都是介绍了盒子模型中的内容概括.开始今天的主题:外边距合并. 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合 并的外边距的高度中的较大者. (1)外边距合并 外边距合并叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外 边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的

Linux学习心得之 LVM管理与Linux系统安装

LVM管理与Linux系统安装 1.前言 2.LVM 简介与术语 3.LVM 使用 4.Linux 分区 5.Linux 安装注意事项 一.前言 本篇博文记录了Linux的学习心得,重点记录了 Logical Volume Manager(LVM,逻辑卷管理)技术的应用,以及安装Linux时的分区的基础方案. 本篇博文大部分内容基于以下文章,甚至于一些图片来自于以下一些博客,本文在一定程度上,可以说是对以下文章的转载和学习; http://www.cnblogs.com/gaojun/archi

Linux 学习记录 五(软件的安装升级)

一.gcc gcc是Linux上面最标准的C语言的编译程序,用来源代码的编译链接. gcc -c hello.c 编译产生目标文件hello.o gcc -O hello.c 编译产生目标文件,并进行优化 gcc -o hello hello.c 生成hello这个可执行的二进制文件 缺点:命令的冗余性,如果 C 语言程序中包含对其他函数或者程序的引用,那么其他程序也要编译成目标文件,然后一起编译成可执行文件,才能运行成功.一个大的程序引用是非常多的,所以用gcc来编译,显得很冗余. 二.mak

JS学习十五天----设计模式开篇

JS设计模式开篇 前言 作为小小程序员一枚,除了敲个hello,world以后啥都不会了,最近发现设计模式这个东西挺好,想搞一下,声明,本屌不是一个看见什么好,什么新潮就追什么的人,本屌还是一个比较实际的人,一般不会说什么好要什么,学设计模式完全是个人的爱好,看一看做是无聊打发时间的消遣吧. 什么是设计模式呢?既然是个模式,就说明可以套用这个模式,套用你知道是什么意思吧?一本万利明白吧?差不多就是这个意思,等你熟练掌握了所有的设计模式之后,你就可上九天揽月,可下五洋捉鳖.手握日月摘星辰,世间无我

Linux 学习笔记之 LVM

LVM相关概念: LVM(Logical Volume Manager)利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件).通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),从而可以更简便地扩大和缩小分区,可以在增删分区时无需担心某个硬盘上没有足够的连续空间,LVM只是提供了对硬盘的一个方便的管理机制,并没有提供额外的安全保证. LVM的相关术语: 物理卷Physical volume(PV):位于逻辑卷

Linux 第十五天

2)环境变量:这种变量中主要保存的是和系统操作环境相关的数据. export 变量名=变量值    设置环境变量 env                     查询变量 unset变量名             删除变量 pstree                   查询shell继承树 ◆PATH:命令执行路径 ◆PS1:定义系统提示符的变量 \d:显示日期,格式为"星期月日" \h:显示简写主机名.如默认主机名"localhost" \t:  显示24小时

linux第二十二LVM

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版.Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间.普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件