4.10 LVM讲解

 

磁盘分区形成物理卷,多个物理卷形成卷组,再在卷组的基础上划分出逻辑卷,并最终在逻辑卷的基础上格式化并挂载使用;

一个卷组可以包含一个或多个物理卷;

 

创建步骤:

1 创建一个物理分区

2 物理分区形成物理卷

3 一个或多个物理卷形成卷组

4 卷组划分出逻辑卷

5 格式化逻辑卷并挂载使用

 

准备磁盘:

磁盘 /dev/sdb10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xb81c7d69

 

   设备 Boot      Start         End      Blocks   Id  System

 

命令(输入 m 获取帮助)n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分区号 (1-4,默认 1)

起始 扇区 (2048-20971519,默认为 2048)

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519)+1G

分区 1 已设置为 Linux 类型,大小设为 1 GiB

 

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

 

磁盘 /dev/sdb10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xb81c7d69

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   83  Linux 83表示为普通类型

 

命令(输入 m 获取帮助)t 更改类型

已选择分区 1

Hex 代码(输入 L 列出所有代码)8e 8e表示类型为LVM

已将分区“Linux”的类型更改为“Linux LVM

 

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

 

磁盘 /dev/sdb10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xb81c7d69

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   8e  Linux LVM

修改为8e后分区才可以做物理卷

[root@hyc-01-01 ~]# fdisk -l

 

磁盘 /dev/sda21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x000c9c2f

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048      411647      204800   83  Linux

/dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris

/dev/sda3         4605952    41943039    18668544   83  Linux

 

磁盘 /dev/sdb10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xb81c7d69

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   8e  Linux LVM

/dev/sdb2         2099200     4196351     1048576   8e  Linux LVM

/dev/sdb3         4196352     6293503     1048576   8e  Linux LVM

 

创建物理卷:

 

[root@hyc-01-01 ~]# yum install -y lvm 发现无法创建物理卷,需要安装LVM

[root@hyc-01-01 ~]# pvcreate /dev/sdb1 安装LVM包后仍无法使用pvcreate命令

-bash: pvcreate: 未找到命令

[root@hyc-01-01 ~]# yum provides "/*/pvcreate" 根据使用的命令搜索要安装的包

7:lvm2-2.02.177-4.el7.x86_64 : Userland logical volume management tools

    base

匹配来源:

文件名    /usr/sbin/pvcreate

[root@hyc-01-01 ~]# yum install -y lvm2

[root@hyc-01-01 ~]# pvcreate /dev/sdb1

  Device /dev/sdb1 not found. 由于系统中没有该块设备文件,所以无法执行,linux中一切皆文件

[root@hyc-01-01 ~]# partprobe 一般分区创建完成后块设备文件会自动生成,若不生成可以使用该命令

[root@hyc-01-01 ~]# ls /dev/sdb1

/dev/sdb1 块设备文件出现

[root@hyc-01-01 ~]# pvcreate /dev/sdb1

  Can't open /dev/sdb1 exclusively.  Mounted filesystem? 由于sdb1仍然被挂载产生的报错信息

[root@hyc-01-01 ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda3        18G  1.2G   17G    7% /

devtmpfs        483M     0  483M    0% /dev

tmpfs           493M     0  493M    0% /dev/shm

tmpfs           493M  6.9M  486M    2% /run

tmpfs           493M     0  493M    0% /sys/fs/cgroup

/dev/sda1       197M   97M  100M   50% /boot

tmpfs            99M     0   99M    0% /run/user/0

/dev/sdb         10G   33M   10G    1% /mnt

[root@hyc-01-01 ~]#umount /dev/sdb 卸载sdb

[root@hyc-01-01 ~]# pvcreate /dev/sdb1

  Physical volume "/dev/sdb1" successfully created.

[root@hyc-01-01 ~]# pvdisplay 显示物理卷信息

  "/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               3flTOL-WVQn-cUvg-9PsO-ucs5-8kpg-uyXzIU

[root@hyc-01-01 ~]# pvcreate /dev/sdb2

  Physical volume "/dev/sdb2" successfully created.

[root@hyc-01-01 ~]# pvcreate /dev/sdb3

WARNING: ext4 signature detected on /dev/sdb3 at offset 1080. Wipe it? [y/n]: y

  Wiping ext4 signature on /dev/sdb3. 将原来的ext4文件系统覆盖

  Physical volume "/dev/sdb3" successfully created.

 

4.11 LVM讲解

 

[root@hyc-01-01 ~]# pvs 查看当前的物理卷都有哪些

  PV         VG Fmt  Attr PSize PFree

  /dev/sdb1     lvm2 ---  1.00g 1.00g

  /dev/sdb2     lvm2 ---  1.00g 1.00g

  /dev/sdb3     lvm2 ---  1.00g 1.00g

[root@hyc-01-01 ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2

  Volume group "vg1" successfully created

使用物理卷sdb1sdb2创建卷组vg1

[root@hyc-01-01 ~]# vgdisplay 查看卷组信息

  --- 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.99 GiB

  PE Size               4.00 MiB

  Total PE              510

  Alloc PE / Size       0 / 0  

  Free  PE / Size       510 / 1.99 GiB

  VG UUID               l7ARjU-Uevg-OmJ6-Ge4T-Bmy0-CBeT-uqlb39

  

[root@hyc-01-01 ~]# vgs 查看卷组信息

  VG  #PV #LV #SN Attr   VSize VFree

  vg1   2   0   0 wz--n- 1.99g 1.99g

[root@hyc-01-01 ~]# lvcreate -L 100M -n lv1 vg1 从卷组vg1中划分100M创建逻辑卷lv1

  Logical volume "lv1" created.

[root@hyc-01-01 ~]# mkfs.ext4 /dev/vg1/lv1 将逻辑卷lv1格式化为ext4文件格式

[root@hyc-01-01 ~]# mount /dev/vg1/lv1 /mnt 挂载lv1mnt目录下

[root@hyc-01-01 ~]# df -h

文件系统             容量  已用  可用 已用% 挂载点

/dev/sda3             18G  1.2G   17G    7% /

devtmpfs             483M     0  483M    0% /dev

tmpfs                493M     0  493M    0% /dev/shm

tmpfs                493M  6.8M  486M    2% /run

tmpfs                493M     0  493M    0% /sys/fs/cgroup

/dev/sda1            197M   97M  100M   50% /boot

tmpfs                 99M     0   99M    0% /run/user/0

/dev/mapper/vg1-lv1   93M  1.6M   85M    2% /mnt

[root@hyc-01-01 ~]# ls -l /dev/mapper/vg1-lv1

lrwxrwxrwx. 1 root root 7 6  18 16:20 /dev/mapper/vg1-lv1 -> ../dm-0

[root@hyc-01-01 ~]# ls -l /dev/vg1/lv1

lrwxrwxrwx. 1 root root 7 6  18 16:20 /dev/vg1/lv1 -> ../dm-0

/dev/mapper/vg1-lv1/dev/vg1/lv1指向相同的文件../dm-0

[root@hyc-01-01 ~]# cd /mnt

[root@hyc-01-01 mnt]# mkdir 1 lv1的挂载点/mnt下创建新的文件、目录

[root@hyc-01-01 mnt]# cd 1

[root@hyc-01-01 1]# touch 2.txt

[root@hyc-01-01 1]# echo 32413434 > 2.txt

 

扩容:

[root@hyc-01-01 1]# lvresize -L 200M /dev/vg1/lv1 为逻辑卷lv1扩容至200M

  Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents).

  Logical volume vg1/lv1 successfully resized.

[root@hyc-01-01 mnt]# df –h 刚刚扩容后的空间无法被正常识别

文件系统             容量  已用  可用 已用% 挂载点

/dev/sda3             18G  1.2G   17G    7% /

devtmpfs             483M     0  483M    0% /dev

tmpfs                493M     0  493M    0% /dev/shm

tmpfs                493M  6.8M  486M    2% /run

tmpfs                493M     0  493M    0% /sys/fs/cgroup

/dev/sda1            197M   97M  100M   50% /boot

tmpfs                 99M     0   99M    0% /run/user/0

/dev/mapper/vg1-lv1   93M  1.6M   85M    2% /mnt

[root@hyc-01-01 1]# umount -l /dev/vg1/lv1 卸载逻辑卷lv1

[root@hyc-01-01 1]# mount /dev/vg1/lv1 /mnt

[root@hyc-01-01 1]# df –h 卸载再挂载逻辑卷大小仍不改变

文件系统             容量  已用  可用 已用% 挂载点

/dev/sda3             18G  1.2G   17G    7% /

devtmpfs             483M     0  483M    0% /dev

tmpfs                493M     0  493M    0% /dev/shm

tmpfs                493M  6.8M  486M    2% /run

tmpfs                493M     0  493M    0% /sys/fs/cgroup

/dev/sda1            197M   97M  100M   50% /boot

tmpfs                 99M     0   99M    0% /run/user/0

/dev/mapper/vg1-lv1   93M  1.6M   85M    2% /mnt

[root@hyc-01-01 1]# cd ..

[root@hyc-01-01 mnt]# cd ..

[root@hyc-01-01 /]# umount /mnt

[root@hyc-01-01 /]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda3        18G  1.2G   17G    7% /

devtmpfs        483M     0  483M    0% /dev

tmpfs           493M     0  493M    0% /dev/shm

tmpfs           493M  6.8M  486M    2% /run

tmpfs           493M     0  493M    0% /sys/fs/cgroup

/dev/sda1       197M   97M  100M   50% /boot

tmpfs            99M     0   99M    0% /run/user/0

[root@hyc-01-01 /]# lvresize -L 200M /dev/vg1/lv1 一般正常步骤是先卸载逻辑卷,再扩容

  New size (50 extents) matches existing size (50 extents).

[root@hyc-01-01 /]# e2fsck -f /dev/vg1/lv1 检查磁盘是否正常

e2fsck 1.42.9 (28-Dec-2013)

第一步: 检查inode,,和大小

第二步: 检查目录结构

3: 检查目录连接性

Pass 4: Checking reference counts

5: 检查簇概要信息

/dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks

[root@hyc-01-01 /]# resize2fs /dev/vg1/lv1 更新逻辑卷信息

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.

The filesystem on /dev/vg1/lv1 is now 204800 blocks long.

 

[root@hyc-01-01 /]# mount /dev/vg1/lv1 /mnt 挂载逻辑卷

[root@hyc-01-01 /]# df -h

文件系统             容量  已用  可用 已用% 挂载点

/dev/sda3             18G  1.2G   17G    7% /

devtmpfs             483M     0  483M    0% /dev

tmpfs                493M     0  493M    0% /dev/shm

tmpfs                493M  6.8M  486M    2% /run

tmpfs                493M     0  493M    0% /sys/fs/cgroup

/dev/sda1            197M   97M  100M   50% /boot

tmpfs                 99M     0   99M    0% /run/user/0

/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt 此时显示的容量为扩容后的正常容量

要让更新后的容量被正常识别需要在扩容后检查磁盘并更细逻辑卷信息

 

缩容(xfs不支持):

[root@hyc-01-01 /]# umount /mnt 缩容时要先卸载

[root@hyc-01-01 /]# e2fsck -f /dev/vg1/lv1 先检查磁盘情况

e2fsck 1.42.9 (28-Dec-2013)

第一步: 检查inode,,和大小

第二步: 检查目录结构

3: 检查目录连接性

Pass 4: Checking reference counts

5: 检查簇概要信息

/dev/vg1/lv1: 13/49400 files (7.7% non-contiguous), 11887/204800 blocks

[root@hyc-01-01 /]# resize2fs /dev/vg1/lv1 100M 将逻辑卷缩容为100M

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg1/lv1 to 102400 (1k) blocks.

The filesystem on /dev/vg1/lv1 is now 102400 blocks long.

 

[root@hyc-01-01 /]# lvresize -L 100M /dev/vg1/lv1 更新逻辑卷信息为100M

  WARNING: Reducing active logical volume to 100.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 200.00 MiB (50 extents) to 100.00 MiB (25 extents).

  Logical volume vg1/lv1 successfully resized.

[root@hyc-01-01 /]# lvdisplay 查看逻辑卷大小

  --- Logical volume ---

  LV Path                /dev/vg1/lv1

  LV Name                lv1

  VG Name                vg1

  LV UUID                3NN0sH-Zf3l-8cWo-73cD-cPPC-P3WA-34uusI

  LV Write Access        read/write

  LV Creation host, time hyc-01-01, 2018-06-18 16:18:21 +0800

  LV Status              available

  # open                 0

  LV Size                100.00 MiB

  Current LE             25

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     8192

  Block device           253:0

[root@hyc-01-01 /]# lvs 查看逻辑卷

  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv1  vg1 -wi-a----- 100.00m   

[root@hyc-01-01 /]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda3        18G  1.2G   17G    7% /

devtmpfs        483M     0  483M    0% /dev

tmpfs           493M     0  493M    0% /dev/shm

tmpfs           493M  6.8M  486M    2% /run

tmpfs           493M     0  493M    0% /sys/fs/cgroup

/dev/sda1       197M   97M  100M   50% /boot

tmpfs            99M     0   99M    0% /run/user/0

[root@hyc-01-01 /]# mount /dev/vg1/lv1 /mnt 挂载vg1逻辑卷

[root@hyc-01-01 /]# tree /mnt 改变大小重挂载后文件内容未丢失

/mnt

├── 1

   └── 2.txt

└── lost+found

 

2 directories, 1 file

 

xfs不支持缩容

 

xfs扩容:

[root@hyc-01-01 /]# umount /mnt 卸载vg1

[root@hyc-01-01 /]# mkfs.xfs -f /dev/vg1/lv1 将逻辑卷vg1重格式化为xfs

meta-data=/dev/vg1/lv1           isize=512    agcount=4, agsize=6400 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0, sparse=0

data     =                       bsize=4096   blocks=25600, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal log           bsize=4096   blocks=855, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@hyc-01-01 /]# mount /dev/vg1/lv1 /mnt 挂载

[root@hyc-01-01 /]# cd /mnt

[root@hyc-01-01 mnt]# mkdir 1

[root@hyc-01-01 mnt]# touch 2.txt

[root@hyc-01-01 mnt]# echo aaaaa > 2.txt

[root@hyc-01-01 mnt]# lvs

  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv1  vg1 -wi-ao---- 100.00m                                                   

[root@hyc-01-01 mnt]# lvresize -L 300M /dev/vg1/lv1 lv1逻辑卷扩容为300M

  Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 300.00 MiB (75 extents).

  Logical volume vg1/lv1 successfully resized.

执行xfs扩容时不需要先执行umount卸载逻辑卷

[root@hyc-01-01 mnt]# xfs_growfs /dev/vg1/lv1 更新逻辑卷信息(更新时必须为挂载状态)

[root@hyc-01-01 mnt]# df -h

文件系统             容量  已用  可用 已用% 挂载点

/dev/sda3             18G  1.2G   17G    7% /

devtmpfs             483M     0  483M    0% /dev

tmpfs                493M     0  493M    0% /dev/shm

tmpfs                493M  6.8M  486M    2% /run

tmpfs                493M     0  493M    0% /sys/fs/cgroup

/dev/sda1            197M   97M  100M   50% /boot

tmpfs                 99M     0   99M    0% /run/user/0

/dev/mapper/vg1-lv1  297M  5.5M  292M    2% /mnt

 

4.12 lvm讲解

 

扩容卷组:

[root@hyc-01-01 mnt]# vgextend vg1 /dev/sdb3 sdb3扩展到卷组vg1

  Volume group "vg1" successfully extended

 

4.13 磁盘故障小案例

 

故障现象:开机界面无法进入系统

故障原因通常是因为磁盘挂载出现问题

 

操作办法:

1 根据提示输入root密码进入操作界面,但此时仍然存在问题;

2 这类故障通常与/etc/fstab文件有关,可能需要对文件做修改,如删除错误或修改配置;

3 进入操作界面后输入journalctl –xb可以查看日志

 

此处由于sdb未格式化,所以无法以xfs文件系统正常挂载导致问题

删除/etc/fstab/关于/dev/sdb的那一行配置后问题消失