看了几篇文章和视频,跟啊铭老师也沟通过,下面列出啊铭老师没有说到的命令和自己的一些问题总结
RHCA会考到LVM 扩容 缩容
九个查看命令
pvdisplay
vgdisplay
lvdisplay
pvs 常用
vgs 常用
lvs 常用
pvscan
vgscan
lvscan
激活命令
lvchange -ay /dev/vg0 激活,如果逻辑卷还未激活的话就激活
lvchange -an /dev/vg0 休眠
root@steven ~]# pvscan
PV /dev/sda2 VG VolGroup lvm2 [19.51 GiB / 0 free]
Total: 1 [19.51 GiB] / in use: 1 [19.51 GiB] / in no VG: 0 [0 ]
[root@steven ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup" using metadata type lvm2
[root@steven ~]# lvscan
ACTIVE '/dev/VolGroup/lv_root' [17.54 GiB] inherit
ACTIVE '/dev/VolGroup/lv_swap' [1.97 GiB] inherit
[root@steven ~]# pvs #Attr不是 a-- 表示未激活 大小是19.51g 没有剩余空间
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- 19.51g 0
[root@steven ~]# vgs # 这个vg下有一个pv 2个lv 大小跟pv的大小一样都是19.51g 没有剩余空间
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- 19.51g 0
[root@steven ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao---- 17.54g
lv_swap VolGroup -wi-ao---- 1.97g
lvreduce -L 700M /dev/vgdata/lvdata1
一般用大L 指定大小,弊端就是有可能用不完vg里面的空间
用小 l,-l 127, 127 个PE ,弊端是需要计算,比如一个PE 4M 127*4M=508M 但是不会出现用不完vg的空间的情况
问题一
使用lvreduce进行缩容的时候需要umount ,如果apache相关文件放在/data下,你要对/data进行缩容,那么apache只能停机
问题二
扩容步骤1、先fdisk分区
fdisk /dev/sdb
n new
l login分区
+200M
t 分区类型
15 第15个分区
8e lvm类型
w 保存
2、重新读取分区
partprobe
3、建pv ,扩展vg,扩展lv,resize
pvcreate /dev/sdb15
vgextend vg0 /dev/sdb15
lvextend –L 1G /dev/vg0/LV01 #扩展LV
resize2fs /dev/vg0/LV01
问题三
5) 当磁盘或分区损坏时,如何转移数据
pvmove 转移空间数据 --> vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去 --> pvremove命令将即将坏的磁盘或者分区从系统中删除掉 --> 拆除或修复磁盘
pvmove /dev/sdb1
vgreduce vgdata /dev/sdb1
pvremove /dev/sdb1
执行pvmove 的时候,Linux是把sdb1 的数据移动到别的分区
lvm配置 (参考内容,大家自行实践)
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。支持动态扩充磁盘空间。
首先从空的硬盘sdb上创建两个分区sdb1 1G, sdb2 2G。
1)创建逻辑卷
pvcreate /dev/sdb1 /dev/sdb2 //创建物理卷
pvdisplay //可以列出已经创建的物理卷
vgcreate vgdata /dev/sdb1 /dev/sdb2 //创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组
vgdisplay //可以列出已经建好的卷组
# 默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。
lvcreate -L 500M -n lvdata1 vgdata //分割500M给新的逻辑卷lvdata1-n :指定 lv的名字
lvdisplay //列出当前的逻辑卷
mkfs.ext4 /dev/vgdata/lvdata1 //格式化逻辑卷
mount /dev/vgdata/lvdata1 /aming //挂载逻辑卷
2) 扩展逻辑卷
逻辑卷lvdata1不够用了,我们如何给他增加空间呢?
lvextend –L +500M /dev/vgdata/lvdata1 //给lvdata1增加500M空间。
resize2fs /dev/vgdata/lvdata1 //同步文件系统
3)扩展卷组
当卷组不够用的情况下,我们也是可以扩展卷组的。我们再创建一个新的分区叫做/dev/sdb3.
vgextend vgdata /dev/sdb3 //把sdb3加入到卷组vgdata中
4)减少逻辑卷大小
卸载 --> e2fsck 检测剩余空间 --> resize2fs 同步文件系统 --> 使用lvreduce命令将逻辑卷减少
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
umount /data1
e2fsck -yf /dev/mapper/vgdata-lvdata1resize2fs /dev/mapper/vgdata-lvdata1
lvreduce -L 700M /dev/vgdata/lvdata1
mount /dev/vgdata/lvdata1 /data1
5) 当磁盘或分区损坏时,如何转移数据
pvmove 转移空间数据 --> vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去 --> pvremove命令将即将坏的磁盘或者分区从系统中删除掉 --> 拆除或修复磁盘
pvmove /dev/sdb1
vgreduce vgdata /dev/sdb1
pvremove /dev/sdb1
6) 删除整个逻辑卷
umount卸载逻辑卷 --> 修改配置文件/etc/fstab(若是之前更改过) --> lvremove 删除逻辑卷lvdata1 --> vgremove 删除卷组vgdata --> pvremove 将物理卷转化成普通分区
umount /dev/vgdata/lvdata1
lvremove /dev/vgdata/lvdata1
vgremove vgdata
pvremove /dev/sdb2
pvremove /dev/sdb3
=================================================
------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
动手实验 动态扩容和缩容
扩容
1、在线加一块磁盘
添加1G大小的磁盘
完成
2、在终端里面 fdisk -l 就能看到新添加的磁盘,如果看不到可以使用这个方法
地址:不用重启在CentOS / RHEL 虚拟机中添加一块新硬盘
-
确定主机总线号,磁盘是有总线连接着的
-
[root@steven ~]# ls /sys/class/scsi_host/
-
host0 host1 host2
-
-
-
-
-
重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线
-
[root@steven ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
-
[root@steven ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
-
[root@steven ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
3、用fdisk分出一个扩展分区 ,当然分出主分区也是可以的
fdisk /dev/sdb
n new
e
+500M 大小500m (我这里只分了500M,当然用尽1G也是可以的)
w 保存
4、再在/dev/sdb 上分逻辑分区
-
[root@steven ~]# fdisk /dev/sdb
复制代码
n
l
+200M
p 打印出来看一下分区号
-
Device Boot Start End Blocks Id System
-
/dev/sdb2 1 65 522081 5 Extended
-
/dev/sdb5 1 26 208782 83 Linux
复制代码
t
5
8e
w
5、重新读取分区partprobe
partprobe
6、建pv
pvcreate /dev/sdb5
-
[root@steven ~]# pvcreate /dev/sdb5
-
Physical volume "/dev/sdb5" successfully created
复制代码
7、查看当前系统中的vg情况
vgs
-
[root@steven ~]# vgs
-
VG #PV #LV #SN Attr VSize VFree
-
VolGroup 1 2 0 wz--n- 19.51g 0
复制代码
8、扩展vg 增加了200M的vg
vgextend VolGroup /dev/sdb5
-
[root@steven ~]# vgextend VolGroup /dev/sdb5
-
. Volume group "VolGroup" successfully extended
复制代码
扩容前
9、扩展lv
lvextend -L +200M /dev/VolGroup/lv_root
设备文件名规律 /dev/VG名/LV名
-
[root@steven dev]# lvextend -L +200M /dev/VolGroup/lv_root
-
Size of logical volume VolGroup/lv_root changed from 17.54 GiB (4490 extents) to 17.73 GiB (4540 extents).
-
Logical volume lv_root successfully resized
复制代码
10、同步
resize2fs /dev/VolGroup/lv_root
-
[root@steven dev]# resize2fs /dev/VolGroup/lv_root
-
resize2fs 1.41.12 (17-May-2010)
-
Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required
-
old desc_blocks = 2, new_desc_blocks = 2
-
Performing an on-line resize of /dev/VolGroup/lv_root to 4648960 (4k) blocks.
-
The filesystem on /dev/VolGroup/lv_root is now 4648960 blocks long.
复制代码
扩容后 Use% 比之前少了,说明扩容成功
扩容时的两个谣言
1、将新的磁盘分区加入到卷组vg之前,需要对分区进行格式化为lv所用的文件系统,通过实验证明是不需要格式化的,直接加入到卷组vg即可
2、对lv进行扩容,需要先umount才能扩容,通过实验证明是不需要umount的,也就是说在Apache服务或者其他服务正常运行的情况下就可以扩容
====================================================================
===============================================================
缩容
因为刚才扩容是在根分区扩容的,那么缩容涉及到umount,那么就不在根分区上面做了,我们另外新建一个分区
1、建立文件夹
mkdir /aming
-
[root@steven ~]# mkdir /aming
复制代码
2、我们刚才还有500M的空间可以利用,我们利用250M建立一个主分区,再用250M建立另一个主分区
fdisk /dev/sdb
n
p
1
+250M
t
1
8e
w
sdb1 lvm
fdisk /dev/sdb
n
p
3
+220M
t
3
8e
w
sdb3 lvm
3、创建物理卷
-
Device Boot Start End Blocks Id System
-
/dev/sdb1 66 98 265072+ 8e Linux LVM
-
/dev/sdb2 1 65 522081 5 Extended
-
/dev/sdb3 99 127 232942+ 8e Linux LVM
-
/dev/sdb5 1 26 208782 8e Linux LVM
复制代码
partprobe
pvcreate /dev/sdb1 /dev/sdb3
-
[root@steven ~]# pvcreate /dev/sdb1
-
Physical volume "/dev/sdb1" successfully created
-
[root@steven ~]# pvcreate /dev/sdb3
-
Physical volume "/dev/sdb3" successfully created
复制代码
4、查看物理卷pvs
5、创建卷组vgdata
vgcreate vgdata /dev/sdb1
-
[root@steven ~]# vgcreate vgdata /dev/sdb1
-
Volume group "vgdata" successfully created
复制代码
查看卷组
6、创建逻辑卷
lvcreate -L +240M -n lvdata1 vgdata
-
[root@steven ~]# lvcreate -L +240M -n lvdata1 vgdata
-
Logical volume "lvdata1" created
复制代码
查看逻辑卷
lvs
7、格式化逻辑卷mkfs.ext4 /dev/vgdata/lvdata1
-
[root@steven ~]# mkfs.ext4 /dev/vgdata/lvdata1
-
mke2fs 1.41.12 (17-May-2010)
-
文件系统标签=
-
操作系统:Linux
-
块大小=1024 (log=0)
-
分块大小=1024 (log=0)
-
Stride=0 blocks, Stripe width=0 blocks
-
61440 inodes, 245760 blocks
-
12288 blocks (5.00%) reserved for the super user
-
第一个数据块=1
-
Maximum filesystem blocks=67371008
-
30 block groups
-
8192 blocks per group, 8192 fragments per group
-
2048 inodes per group
-
Superblock backups stored on blocks:
-
8193, 24577, 40961, 57345, 73729, 204801, 221185
-
-
正在写入inode表: 完成
-
Creating journal (4096 blocks): 完成
-
Writing superblocks and filesystem accounting information: 完成
-
-
This filesystem will be automatically checked every 24 mounts or
-
180 days, whichever comes first. Use tune2fs -c or -i to override.
复制代码
8、挂载 如果要永久挂载 就要写在/etc/fstab 文件里面
mount /dev/vgdata/lvdata1 /aming
-
[root@steven ~]# cd /aming
-
[root@steven aming]# ls
-
lost+found
复制代码
fdisk -l
-
Disk /dev/mapper/vgdata-lvdata1: 251 MB, 251658240 bytes
-
255 heads, 63 sectors/track, 30 cylinders
-
Units = cylinders of 16065 * 512 = 8225280 bytes
-
Sector size (logical/physical): 512 bytes / 512 bytes
-
I/O size (minimum/optimal): 512 bytes / 512 bytes
-
Disk identifier: 0x00000000
复制代码
9、扩展vg ,将sdb3加进来
vgextend vgdata /dev/sdb3
-
[root@steven aming]# vgextend vgdata /dev/sdb3
-
Volume group "vgdata" successfully extended
复制代码
10、扩展lv
lvextend -L +230M /dev/vgdata/lvdata1
-
[root@steven aming]# lvextend -L +230M /dev/vgdata/lvdata1
-
Rounding size to boundary between physical extents: 232.00 MiB
-
Size of logical volume vgdata/lvdata1 changed from 240.00 MiB (60 extents) to 472.00 MiB (118 extents).
-
Logical volume lvdata1 successfully resized
复制代码
11、同步
resize2fs /dev/vgdata/lvdata1
-
[root@steven aming]# resize2fs /dev/vgdata/lvdata1
-
resize2fs 1.41.12 (17-May-2010)
-
Filesystem at /dev/vgdata/lvdata1 is mounted on /aming; on-line resizing required
-
old desc_blocks = 1, new_desc_blocks = 2
-
Performing an on-line resize of /dev/vgdata/lvdata1 to 483328 (1k) blocks.
-
The filesystem on /dev/vgdata/lvdata1 is now 483328 blocks long.
复制代码
查看空间占用df -h
缩容
12、减少逻辑卷大小
先cd回去root目录 cd
umount -l /aming 强制卸载
13、e2fsck 检测剩余空间
e2fsck -yf /dev/vgdata/lvdata1
-yf:不询问
-
[root@steven ~]# e2fsck -yf /dev/vgdata/lvdata1
-
e2fsck 1.41.12 (17-May-2010)
-
第一步: 检查inode,块,和大小
-
第二步: 检查目录结构
-
第3步: 检查目录连接性
-
Pass 4: Checking reference counts
-
第5步: 检查簇概要信息
-
/dev/vgdata/lvdata1: 13/120832 files (0.0% non-contiguous), 21656/483328 blocks
复制代码
14、resize2fs 同步文件系统
resize2fs -f /dev/vgdata/lvdata1
-
[root@steven ~]# resize2fs -f /dev/vgdata/lvdata1
-
resize2fs 1.41.12 (17-May-2010)
-
The filesystem is already 483328 blocks long. Nothing to do!
复制代码
15、使用lvreduce命令将逻辑卷减少注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
lvreduce -L -230M /dev/vgdata/lvdata1
-
[root@steven ~]# lvreduce -L -230M /dev/vgdata/lvdata1
-
Rounding size to boundary between physical extents: 228.00 MiB
-
WARNING: Reducing active logical volume to 244.00 MiB
-
THIS MAY DESTROY YOUR DATA (filesystem etc.)
-
Do you really want to reduce lvdata1? [y/n]: y
-
Size of logical volume vgdata/lvdata1 changed from 472.00 MiB (118 extents) to 244.00 MiB (61 extents).
-
Logical volume lvdata1 successfully resized
复制代码
16、重新挂载
mount /dev/vgdata/lvdata1 /aming
不知道为何superblock损坏,mount不上[root@steven ~]# mount /dev/vgdata/lvdata1 /aming
mount: wrong fs type, bad option, bad superblock on /dev/mapper/vgdata-lvdata1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
===================================================================================================================
删除LVM
1、umount卸载逻辑卷
先cd回去root目录 cd
umount -l /aming 强制卸载
修改配置文件/etc/fstab(若是之前更改过)
2、lvremove 删除逻辑卷lvdata1
lvremove /dev/vgdata/lvdata1
-
[root@steven ~]# lvremove /dev/vgdata/lvdata1
-
Do you really want to remove active logical volume lvdata1? [y/n]: y
-
Logical volume "lvdata1" successfully removed
复制代码
3、vgremove 删除卷组
vgremove vgdata
-
[root@steven ~]# vgremove vgdata
-
Volume group "vgdata" successfully removed
复制代码
4、pvremove 将物理卷转化成普通分区
pvremove /dev/sdb1 /dev/sdb3
-
[root@steven ~]# pvremove /dev/sdb1 /dev/sdb3
-
Labels on physical volume "/dev/sdb1" successfully wiped
-
Labels on physical volume "/dev/sdb3" successfully wiped
复制代码
5、将sdb1和sdb3 转换回 83 Linux分区类型
fdisk /dev/sdb
l
-
Command (m for help): l
-
-
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
-
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
-
2 XENIX root 3c PartitionMagic 83 Linux
复制代码
t
1
t
3
w
6、查看分区类型
partprobe
fdisk -l
-
Disk /dev/sdb: 1073 MB, 1073741824 bytes
-
255 heads, 63 sectors/track, 130 cylinders
-
Units = cylinders of 16065 * 512 = 8225280 bytes
-
Sector size (logical/physical): 512 bytes / 512 bytes
-
I/O size (minimum/optimal): 512 bytes / 512 bytes
-
Disk identifier: 0xf27bd8ef
-
-
Device Boot Start End Blocks Id System
-
/dev/sdb1 66 98 265072+ 83 Linux
-
/dev/sdb2 1 65 522081 5 Extended
-
/dev/sdb3 99 127 232942+ 83 Linux
-
/dev/sdb5 1 26 208782 8e Linux LVM
复制代码
7、格式化 sdb1和sdb3
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb3
-
[root@steven aming]# mkfs -t ext4 /dev/sdb3
-
mke2fs 1.41.12 (17-May-2010)
-
文件系统标签=
-
操作系统:Linux
-
块大小=1024 (log=0)
-
分块大小=1024 (log=0)
-
Stride=0 blocks, Stripe width=0 blocks
-
58464 inodes, 232940 blocks
-
11647 blocks (5.00%) reserved for the super user
-
第一个数据块=1
-
Maximum filesystem blocks=67371008
-
29 block groups
-
8192 blocks per group, 8192 fragments per group
-
2016 inodes per group
-
Superblock backups stored on blocks:
-
8193, 24577, 40961, 57345, 73729, 204801, 221185
-
-
正在写入inode表: 完成
-
Creating journal (4096 blocks): 完成
-
Writing superblocks and filesystem accounting information: 完成
-
-
This filesystem will be automatically checked every 38 mounts or
-
180 days, whichever comes first. Use tune2fs -c or -i to override.
复制代码
8、创建目录
[root@steven ~]# mkdir /testsdb1
[root@steven ~]# mkdir /testsdb3
9、挂载
[root@steven ~]# mount /dev/sdb1 /testsdb1
[root@steven ~]# mount /dev/sdb3 /testsdb3
10、查看挂载情况
-
[root@steven testsdb3]# mount
-
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
-
proc on /proc type proc (rw)
-
sysfs on /sys type sysfs (rw)
-
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
-
tmpfs on /dev/shm type tmpfs (rw)
-
/dev/sda1 on /boot type ext4 (rw)
-
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
-
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
-
/dev/sdb1 on /testsdb1 type ext4 (rw)
-
/dev/sdb3 on /testsdb3 type ext4 (rw)
复制代码
11、卸载先cd 回根目录
[root@steven testsdb3]# umount -l /testsdb3
[root@steven testsdb3]# umount -l /testsdb1
12、删除sdb1和sdb3fdisk /dev/sdb
d
1
d
3
w
partprobe
fdisk -l
-
Device Boot Start End Blocks Id System
-
/dev/sdb2 1 65 522081 5 Extended
-
/dev/sdb5 1 26 208782 8e Linux LVM
复制代码
阅读(7692) | 评论(0) | 转发(1) |