LVM磁盘管理

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

[TOC]

lvm的应用场景及其弊端

应用场景:
随着公司的发展,数据增长较快,最初规划的磁盘容量不够用了

弊端:
数据不是直接存放在硬盘上,而是在硬盘的上面又虚拟出来一层逻辑卷存放数据,故而增加了磁盘数据恢复的难度

物理卷、卷组、逻辑卷

物理卷(pv):把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷

卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量

逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用

lvm管理

部署lvm

LVM部署有装系统前部署以及装系统后部署,此处仅介绍装系统后部署。

创建lvm步骤:

  • 首先添加物理磁盘

  • 然后创建卷组,将物理卷加入到卷组

  • 然后在卷组中划分逻辑分区

  • 其次执行格式化逻辑卷

  • 最后挂载使用

准备物理磁盘
1
2
3
4
[root@zhoulijie ~]# lsblk | grep sd[bcd]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
将磁盘加入pv
1
2
3
4
5
6
7
8
[root@zhoulijie ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.

# 检查pv创建情况
[root@zhoulijie ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 20.00g 20.00g
创建名为zhou的卷组
1
2
3
4
5
6
7
8
[root@zhoulijie ~]# vgcreate zhou /dev/sdb
Volume group "zhou" successfully created

# 检查卷组
[root@zhoulijie ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- <19.00g 0
zhou 1 0 0 wz--n- <20.00g <20.00g
创建逻辑卷,分配名称, 以及大小, 指定卷组
1
2
3
4
5
6
7
8
[root@zhoulijie ~]# lvcreate -L 100M -n lv1 zhou 
Logical volume "lv1" created.

#检查逻辑卷
[root@zhoulijie ~]# lvscan
ACTIVE '/dev/rhel/swap' [2.00 GiB] inherit
ACTIVE '/dev/rhel/root' [<17.00 GiB] inherit
ACTIVE '/dev/zhou/lv1' [100.00 MiB] inherit
格式化文件系统
1
[root@zhoulijie ~]# mkfs.xfs /dev/zhou/lv1
挂载使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@zhoulijie ~]# mkdir /opt/lv1
[root@zhoulijie ~]# mount /dev/zhou/lv1 /opt/lv1/
[root@zhoulijie ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root xfs 17G 3.2G 14G 19% /
devtmpfs devtmpfs 977M 0 977M 0% /dev
tmpfs tmpfs 993M 0 993M 0% /dev/shm
tmpfs tmpfs 993M 9.1M 984M 1% /run
tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sr0 iso9660 3.8G 3.8G 0 100% /mnt/cdrom
/dev/sda1 xfs 1014M 161M 854M 16% /boot
tmpfs tmpfs 199M 12K 199M 1% /run/user/42
tmpfs tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/zhou-lv1 xfs 97M 5.2M 92M 6% /opt/lv1

在这里我们总结一下lvm部署步骤:

1.添加硬盘

2.初始化硬盘成物理卷

pvcreate /dev/sd{b,c,d}

3.创建卷组

vgcreate VG_NAME /dev/sd{b,c,d}

4.创建逻辑卷

lvcreate -L SIZE -n LV_NAME VG_NAME

5.格式化逻辑卷

mkfs.ext4 /dev/VG_NAME/LV_NAME

6.挂载

blkid

vim /etc/fstab

UUID=” “ /挂载点 文件系统类型 挂载参数 0 0

  • 永久挂载注意事项:

    • 修改配置文件/etc/fstab的挂载参数后不会立即生效,必须卸载并重新挂载或者重启系统才能生效

    • 若想使之立即生效并不重启系统,可使用以下方式进行重新挂载

      mount -o remount,rw 挂载点

7.重读配置文件

mount -a

卷组管理

  • 扩展卷组,将新磁盘加如到卷组中
1
2
3
4
5
6
7
# 新硬盘加入pv
[root@zhoulijie ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.

使用vgextend扩展
[root@zhoulijie ~]# vgextend zhou /dev/sdc
Volume group "zhou" successfully extended
  • 缩减卷组,将指定磁盘从卷组中删除
1
2
[root@zhoulijie ~]# vgreduce zhou /dev/sdc
Removed "/dev/sdc" from volume group "zhou"
  • 数据迁移卷组,同一卷组的磁盘才可以进行在线迁移
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 检查当前逻辑卷VG中pv使用情况
[root@zhoulijie ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <19.00g 0
/dev/sdb zhou lvm2 a-- <20.00g <19.90g
/dev/sdc lvm2 --- 20.00g 20.00g

# pvmove在线数据迁移至其他pv
[root@localhost ~]# pvmove /dev/sdb
/dev/sdb: Moved: 41.33%
/dev/sdb: Moved: 100.00%

# 检查是否将sdb数据迁移至sdc
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g

逻辑卷管理

  • 逻辑卷扩展,逻辑卷的扩展取决于卷组中的容量,逻辑卷扩展的容量不能超过卷组的容量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@zhoulijie ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- <19.00g 0
zhou 1 1 0 wz--n- <20.00g <19.90g

1.扩展lv逻辑卷
# 增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@zhoulijie ~]# lvextend -L +800M /dev/zhou/lv1
Size of logical volume zhou/lv1 changed from 100.00 MiB (25 extents) to 900.00 MiB (225 extents).
Logical volume zhou/lv1 successfully resized.
# 分配磁盘池中多少百分比给逻辑卷
[root@zhoulijie ~]# lvextend -l +50%FREE /dev/zhou/lv1
Size of logical volume zhou/lv1 changed from 900.00 MiB (225 extents) to <10.4 4 GiB (2672 extents).
Logical volume zhou/lv1 successfully resized.

2.扩展fs文件系统
# 在这里要看你是什么格式
//xfs扩容
[root@zhoulijie ~]# xfs_growfs /dev/zhou/lv1
meta-data=/dev/mapper/zhou-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 2736128

//ext扩容
[root@zhoulijie ~]# resize2fs /dev/zhou/lv1
  • ext4文件系统的逻辑卷裁剪容量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 首先自己创建一个1G的逻辑卷作为裁剪的对象
lvcreate -n uplooking -L 1G finance
mkfs.ext4 /dev/finance/uplooking

mkdir -p /finance/uplooking
mount /dev/finance/uplooking /finance/uplooking/
cp /etc/host* /finance/uplooking/

# 如果已经挂载,就必须先卸载
umount /dev/finance/uplooking

# 裁剪容量,必须是先检测文件系统
e2fsck -f /dev/finance/uplooking
resize2fs /dev/finance/uplooking 512M

# 调整完毕后采取裁剪逻辑卷容量
lvreduce -L 512M /dev/finance/uplooking
WARNING: Reducing active logical volume to 512.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce uplooking? [y/n]: y
1
2
3
4
5
6
7
建议:建议裁剪后,再次进行检测文件系统
# e2fsck -f /dev/finance/uplooking

挂载测试:如果能够挂载,一般说明裁剪成功,文件系统没有被损坏
# mount /dev/finance/uplooking /mnt
...
/dev/mapper/finance-uplooking 472M 1.6M 435M 1% /mnt 而且文件系统容量被刷新了
缩减逻辑卷注意事项

1.不能在线缩减,得先卸载

2.确保缩减后的空间大小依然能存储原有数据

3.在缩减之前应该先检查文件,其确保文件系统处于一致性状态,使用命令:e2fsck -f /PATH/TO/LV

练习

1.如何查看/etc/目录大小

1
2
[root@zhoulijie ~]# du -sh /etc
43M /etc

2.如何查看磁盘使用分区情况

1
2
3
4
5
6
7
8
9
10
11
12
[root@zhoulijie ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─zhou-lv1 253:2 0 10.4G 0 lvm /opt/lv1
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sr0 11:0 1 3.8G 0 rom /mnt/cdrom

3.如何查看innode使用情况

1
2
3
4
5
6
7
8
9
10
[root@zhoulijie ~]# df -ih
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/rhel-root 8.5M 119K 8.4M 2% /
devtmpfs 245K 393 244K 1% /dev
tmpfs 249K 1 249K 1% /dev/shm
tmpfs 249K 573 248K 1% /run
tmpfs 249K 16 249K 1% /sys/fs/cgroup
/dev/sr0 0 0 0 - /mnt/cdrom
/dev/sda1 512K 325 512K 1% /boot
tmpfs 249K 16 249K 1% /run/user/0

4.如何查看磁盘block使用情况

5.如何查看分区使用格式

1
2
[root@zhoulijie ~]# blkid |grep /dev/sda1
/dev/sda1: UUID="9183ecd8-76e0-4f42-b256-21032b13dcd6" TYPE="xfs"

6.如何查看一个设备的UUID

1
2
[root@zhoulijie ~]# blkid |grep /dev/sda1
/dev/sda1: UUID="9183ecd8-76e0-4f42-b256-21032b13dcd6" TYPE="xfs"

7.请解释/etc/fstab中每段含义

1
2
/dev/cdrom       /mnt/cdrom       iso9660               defaults        0  0 
uuid(要挂载的) 所挂载的地方 设备类型 挂载选项 备份 磁盘检查

8.一个ext4的文件分区,当使用touch test.file命令创建一个新文件是报错,报错的信息提示磁盘已满,但是采用df –h 命令查看磁盘大小时,只是用了60%的磁盘空间,为什么会出现这个情况,说说你的理由.

磁盘分区方案

在虚拟机中添加一块20GB的SCISI磁盘
在新硬盘中建立一个5GB的分区,一个10G的分区
一个格式化为ext4的文件系统, 一个格式化为xfs的文件系统
新建两个目录站点进行挂载, 要求开机自动挂载该分区

LVM磁盘管理方案

在虚拟机环境中,新添加两块SCISI硬盘设备,完成硬盘检测及分区
建立逻辑卷mbvg, 格式化为ext4文件系统, 分配1G逻辑分区供/box目录使用
第二块逻辑分区, 格式化为xfs文件系统, 分配1G逻辑分区供/xfs目录使用
最后使用扩容方案将/box站点扩展到2.8G磁盘使用空间, 将/xfs目录扩展到2G

打赏
  • © 2019-2020 Li Jie
  • Powered by Hexo Theme Ayer
    • PV:
    • UV:

喜欢就打赏吧~

支付宝
微信