4.10/4.11/4.12 lvm讲解
4.13 磁盘故障小案例 


4.10 lvm讲解(上)


图讲解

两块硬盘 A B

A两个分区 B一个分区 共三个分区

三个分区组成一个物理卷(physical volume) 

然后物理卷上面再组成卷组(volume group),卷组1有物理卷1,卷组2有物理卷2,3。 卷组就是物理卷的一个集合。

卷组基础上划分逻辑卷,卷组1里有逻辑卷1,卷组有逻辑卷2,3。

最终在逻辑卷上面进行格式化,再挂载到系统上面使用。


分区准备

fdisk /dev/sdb

n创建三个新分区,分别1G

t改变分区类型为8e


分区操作

# fdisk /dev/sdb

创建1G的主分区,

   设备 Boot      Start         End      Blocks   Id  System
 /dev/sdb1            2048     2099199     1048576   83  Linux

ID为83代表只是普通的分区,如果想使用LVM,需要更改分区ID为8e,8e代表LVM分区


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

已选择分区 1

Hex 代码(输入 L 列出所有代码):8e

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


  设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   8e  Linux LVM


只有改到这样,才可以做物理卷


接下来,创建另外两个主分区,分别也是LVM类型(具体操作跟创建第一个一样)

   设备 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

分区之后,别忘了w保存 


#fdisk -l 查看分区是否成功

   设备 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


创建物理卷


安装lvm命令,安装失败。

# yum install -y lvm

已加载插件:fastestmirror

base                                                                        | 3.6 kB  00:00:00     

extras                                                                      | 3.4 kB  00:00:00     

updates                                                                     | 3.4 kB  00:00:00     

Determining fastest mirrors

 * base: mirrors.aliyun.com

 * extras: mirrors.aliyun.com

 * updates: mirrors.aliyun.com

没有可用软件包 lvm。

错误:无须任何处理


利用#yum通配搜索pvcreate命令

#yum provides "/*/pvcreate"

[root@centos7 ~]# yum provides "/*/pvcreate"

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

 * base: mirrors.aliyun.com

 * extras: mirrors.aliyun.com

 * updates: mirrors.aliyun.com

base/7/x86_64/filelists_db                                                  | 6.7 MB  00:00:01     

extras/7/x86_64/filelists_db                                                | 636 kB  00:00:00     

updates/7/x86_64/filelists_db                                               | 3.5 MB  00:00:01     

1:bash-completion-2.1-6.el7.noarch : Programmable completion for Bash

源    :base

匹配来源:

文件名    :/usr/share/bash-completion/completions/pvcreate




7:lvm2-2.02.171-8.el7.x86_64 : Userland logical volume management tools

源    :base

匹配来源:

文件名    :/usr/sbin/pvcreate


查到pvcreate命令来源于lvm2的包,所以安装这个lvm2即可

#yum install -y lvm2

安装成功,由于过程太多信息,就不列出。


继续操作

创建物理卷

(#partprobe命令,生成分区文件,用于系统没有自动生成文件。)

[root@centos7 ~]# pvcreate /dev/sdb1

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

  Wiping ext4 signature on /dev/sdb1.

  Physical volume "/dev/sdb1" successfully created.

[root@centos7 ~]# pvcreate /dev/sdb2

  Physical volume "/dev/sdb2" successfully created.

[root@centos7 ~]# pvcreate /dev/sdb3

  Physical volume "/dev/sdb3" successfully created.


#pvdisplay 查看物理卷建立状态。


 "/dev/sdb2" is a new physical volume of "1.00 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb2

  VG Name               

  PV Size               1.00 GiB

  Allocatable           NO

  PE Size               0   

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               crs9wx-KFZA-JPde-JwD2-fKnA-M6pi-Ci5kuj

   

  "/dev/sdb3" is a new physical volume of "1.00 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb3

  VG Name               

  PV Size               1.00 GiB

  Allocatable           NO

  PE Size               0   

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               5lyipH-eOGt-8je9-N2NQ-82dw-sdqh-RVRbvQ

   

  "/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               ffAd90-QY88-w25I-MSE1-gyA6-FtYc-l4XCyk



4.11 lvm讲解(中)


#pvs 同样也是查看物理卷

# 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


创建物理卷之后,再创建卷组。

#vgcreate卷组命令,组名 对应盘符 

创建卷组

#vgcreate vg1 /dev/sdb1 /dev/sdb2 

# vgcreate vg1 /dev/sdb1 /dev/sdb2 

  Volume group "vg1" successfully created


#vgs 查看卷组信息(#vgdisplay 也可以查看)

 vgs

  VG  #PV #LV #SN Attr   VSize VFree

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


创建卷组之后,创建逻辑卷

#lvcreate -L 100M -n lv1 vg1

指定100M 名字 lv1 从vg1里面划分出来

# lvcreate -L 100M -n lv1 vg1

  Logical volume "lv1" created.

# lvs

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

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

# lvdisplay

  --- Logical volume ---

 LV Path                /dev/vg1/lv1

  LV Name                lv1

  VG Name                vg1

  LV UUID                AYUXn9-xIp6-Ti6A-JWiI-hcvR-I1X2-PFoyrI

  LV Write Access        read/write

  LV Creation host, time centos7.4-01, 2018-02-26 15:36:16 +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


格式化ext4

#mkfs.ext4 /dev/vg1/lv1 逻辑卷的路径可以在#lvdisplay查看


挂载到/mnt

[root@centos7 ~]# mount /dev/vg1/lv1 /mnt

[root@centos7 ~]# df -h

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

/dev/sda3             28G  1.1G   27G    4% /

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            187M   97M   91M   52% /boot

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

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


#ls -l /dev/vg1/lv1

lrwxrwxrwx. 1 root root 7 2月  26 15:40 /dev/vg1/lv1 -> ../dm-0

/dev/vg1/lv1是一个软链接文件,指向../dm-0


创建目录,文件,写入内容。

[root@centos7 ~]# mkdir /mnt/1212

[root@centos7 ~]# touch /mnt/23.txt

[root@centos7 ~]# echo "11111" > /mnt/23.txt 


扩容逻辑卷

# lvresize 扩容命令 -L指定容量 后面对应盘符路径(扩容之前,应该先#umount)

# lvresize -L 200M /dev/vg1/lv1 

  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.

(如果进行#lvresize时忘记了#umount,可以先#umount再来一次#lvresize也是不影响效果的)

# umount /mnt/

# lvresize -L 200M /dev/vg1/lv1 

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


检查磁盘错误

#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


更新逻辑卷信息

# 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@centos7 ~]# !mount

mount /dev/vg1/lv1 /mnt



查看更新后的分区信息,/dev/vg1/lv1 容量比原来增大了

[root@centos7 ~]# df -h

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

/dev/sda3             28G  1.1G   27G    4% /

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            187M   97M   91M   52% /boot

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

/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt


检查设置后文件有没有受到影响,检查正常,无任何问题发现,由此证明扩容没有影响文件。

[root@centos7 ~]# ls /mnt/

1212  23.txt  lost+found

[root@centos7 ~]# cat /mnt/23.txt 

11111


缩减逻辑卷(xfs不支持)


先umount

#umount /mnt


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

# 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



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

# resize2fs /dev/vg1/lv1 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.



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

# lvresize -L 100M /dev/vg1/lv1 

  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.

此处提醒缩减可能会导致文件损坏,选y,后面再检查。


检查是否缩减变成了100M

# lvs

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

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



挂载,检查文件

#!mount

mount /dev/vg1/lv1 /mnt

[root@centos7 ~]# ls /mnt

1212  23.txt  lost+found

[root@centos7 ~]# cat /23.txt

cat: /23.txt: 没有那个文件或目录

[root@centos7 ~]# cat /mnt/23.txt

11111


检查结果,文件可以继续操作和查看,并无影响,由此证明,缩容没有影响文件问题。


将/dev/vg1/lv1 格式化为xfs 

#umount /mnt

#mkfs.xfs -f /dev/vg1/lv1 

# mkfs.xfs -f /dev/vg1/lv1 

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


#!mount 


[root@centos7 ~]# touch /mnt/233.txt

[root@centos7 ~]# echo "aaaa" > /mnt/233.txt 

[root@centos7 ~]# cat !$

cat /mnt/233.txt

aaaa

[root@centos7 ~]# lvs

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

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


xfs扩容300M,不需要卸载挂载

[root@centos7 ~]# lvresize -L 300M

  No command with matching syntax recognised.  Run 'lvresize --help' for more information.

  Nearest similar command has syntax:

  lvresize -L|--size [+|-]Size[m|UNIT] LV

  Resize an LV by a specified size.


[root@centos7 ~]# lvresize -L 300M /dev/vg1/lv1 

  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.

[root@centos7 ~]# lvs

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

  lv1  vg1 -wi-ao---- 300.00m  


#df-h 容量没有更新上去

# df -h

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

/dev/sda3             28G  1.1G   27G    4% /

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            187M   97M   91M   52% /boot

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

/dev/mapper/vg1-lv1   97M  5.2M   92M    6% /mnt


执行xfs_growfs /dev/vg1/lv1 让容量更新上去

[root@centos7 ~]# xfs_growfs /dev/vg1/lv1 

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

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0 spinodes=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               bsize=4096   blocks=855, version=2

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

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

data blocks changed from 25600 to 76800

[root@centos7 ~]# df -h

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

/dev/sda3             28G  1.1G   27G    4% /

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            187M   97M   91M   52% /boot

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

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



4.12 lvm讲解(下)


扩展卷组


把sdb3加入卷组vg1

[root@centos7 ~]# vgextend vg1 /dev/sdb3 

  Volume group "vg1" successfully extended

[root@centos7 ~]# vgs

  VG  #PV #LV #SN Attr   VSize  VFree 

  vg1   3   1   0 wz--n- <2.99g <2.70g


容量变为3G,表示添加成功。



4.13 磁盘故障小案例


开机失败,因为修改了文件错误。

这种情况,往往是磁盘挂载错误才出现的问题。


直接输入root的密码


进入/etc/fstab 

dd删掉最后一行

重启即可