既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
[root@lv-test ~]# lsblk | grep sda3
└─sda3 8:3 0 100G 0 part
[root@lv-test ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
[root@lv-test ~]#
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 4.00m
/dev/sda3 lvm2 --- 100.00g 100.00g
[root@lv-test ~]#
[root@lv-test ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<99.00 GiB / 4.00 MiB free]
PV /dev/sda3 lvm2 [100.00 GiB]
Total: 2 [<199.00 GiB] / in use: 1 [<99.00 GiB] / in no VG: 1 [100.00 GiB]
[root@lv-test ~]#
增加vg空间
- 现有vg信息
注:增加vg的时候就需要注意了,如果有多个vg,得确定最终扩容lv所属vg是什么,如:现在扩容的 根目录是在这个 centos的vg下的【因为根目录lv的vg是centos所以我们增加容量必须得增加到这个centos的vg上才行】。
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- <99.00g 4.00m
[root@lv-test ~]#
# lvs可以看到需要扩容的vg名称
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 50.00g
swap centos -wi-ao---- <7.88g
[root@lv-test ~]#
- 开始把上面100g的lv空间加到这个centos上
可以看到vg已经变成198g,并且可用是100g了
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- <99.00g 4.00m
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 4.00m
/dev/sda3 lvm2 --- 100.00g 100.00g
[root@lv-test ~]#
[root@lv-test ~]# vgextend centos /dev/sda3
Volume group "centos" successfully extended
[root@lv-test ~]#
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 100.00g
[root@lv-test ~]#
增加lv空间
- 扩容前根目录的lv和df看到的信息都是50G,我们需要扩100g,那么最终根会为150G才对
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 50.00g
swap centos -wi-ao---- <7.88g
[root@lv-test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 1.1G 49G 3% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 12M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
/dev/mapper/centos-home 42G 33M 42G 1% /home
tmpfs 781M 0 781M 0% /run/user/0
[root@lv-test ~]#
- 开始扩
可以看到扩容后root信息已经变成150G了
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 50.00g
swap centos -wi-ao---- <7.88g
[root@lv-test ~]#
# 不知道lv名称格式的,可以用lvdisplay 查看详细路径
[root@lv-test ~]# lvextend -L +100G /dev/centos/root
Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 150.00 GiB (38400 extents).
Logical volume centos/root successfully resized.
[root@lv-test ~]#
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
[root@lv-test ~]#
- 现在df呢,是看不到150g空间的,需要刷新以后才能看到
刷新之前呢,需要先看这个是啥格式的,如我的根是xfs格式的,那么我就需要用xfs的方式来刷新
[root@lv-test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 1.1G 49G 3% /
devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 12M 3.8G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
/dev/mapper/centos-home xfs 42G 33M 42G 1% /home
tmpfs tmpfs 781M 0 781M 0% /run/user/0
[root@lv-test ~]#
# xfs的刷新,ext4不能用
# 一般是用挂载目录作为刷新地址,所以我直接用 /
[root@lv-test ~]# xfs\_growfs /
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 39321600
# 刷新后就可以看到/目录空间已经增加了
[root@lv-test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 150G 1.1G 149G 1% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 12M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
/dev/mapper/centos-home 42G 33M 42G 1% /home
tmpfs 781M 0 781M 0% /run/user/0
[root@lv-test ~]#
扩容后信息一览和说明
- 其中就pv能看到多了一个空间罢了,其他基本看不出啥
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
[root@lv-test ~]#
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
[root@lv-test ~]#
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
[root@lv-test ~]#
- lsblk的话就能看到很多东西了,可以看到sda2下面的centos-root和sda3下面同样有一个centos-root,这2个信息是一摸一样的,别慌这是正常的,表示 centos-root是由 sda2和sda3的空间组成的一个总容量为150G【这时候可以看到sda3有100g,所以可以得知sda2中用了50g】
[root@lv-test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos-root 253:0 0 150G 0 lvm /
│ ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 41.1G 0 lvm /home
└─sda3 8:3 0 100G 0 part
└─centos-root 253:0 0 150G 0 lvm /
sdb 8:16 0 300G 0 disk
sr0 11:0 1 4.3G 0 rom
[root@lv-test ~]#
新增一块硬盘,把容量加到固定的vg和lv上
做扇区
- 做扇区的意义其实还是挺重要的,比如我现在有一个300g的新硬盘,我这次只想用100g,把100g的空间加到某个lv上,剩下的200g先不用。
然后后面200g想用的时候再随时做扇区,这样有规划的使用是不是正规的多?【其实最主要的是如果想把空间增加到不同的vg上,就必须这么做】
如果只有一个vg,那么我们直接把这300g做成一个扇区也无所谓,300g全部划到vg上。lv用多少取多少,只是只能在这一个vg上做罢了,不能跨vg使用这300g容量 - 我这呢准备用2个vg来做实验,方便更能理解vg,所以我扇区先做2个100g的,剩余100g我后面做其他实验用。
# 现在没有扇区的
[root@lv-test ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@lv-test ~]#
# 开始增加2个100g空间
[root@lv-test ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x359bff9f.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-629145599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-629145599, default 629145599): +100G
Partition 1 of type Linux and of size 100 GiB is set
Command (m for help): p
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x359bff9f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 209717247 104857600 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (209717248-629145599, default 209717248):
Using default value 209717248
Last sector, +sectors or +size{K,M,G} (209717248-629145599, default 629145599): +100G
Partition 2 of type Linux and of size 100 GiB is set
Command (m for help): p
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x359bff9f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 209717247 104857600 83 Linux
/dev/sdb2 209717248 419432447 104857600 83 Linux
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x359bff9f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 209717247 104857600 8e Linux LVM
/dev/sdb2 209717248 419432447 104857600 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@lv-test ~]#
# 可以看到已经有2个100g空间了,还剩100g
[root@lv-test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos-root 253:0 0 150G 0 lvm /
│ ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 41.1G 0 lvm /home
└─sda3 8:3 0 100G 0 part
└─centos-root 253:0 0 150G 0 lvm /
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
└─sdb2 8:18 0 100G 0 part
sr0 11:0 1 4.3G 0 rom
[root@lv-test ~]#
增加pv空间
- 现在的pv信息
注:pv实际上都是新增,而不是把空间加到某个已有vp上
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
[root@lv-test ~]#
- 现在开始吧我们上面的创建的sdb1和sdb2的100g创成pv
很简单的,都不需要命名,直接pvcreate即可
[root@lv-test ~]# lsblk | grep sdb
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
└─sdb2 8:18 0 100G 0 part
[root@lv-test ~]#
[root@lv-test ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@lv-test ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@lv-test ~]#
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 lvm2 --- 100.00g 100.00g
/dev/sdb2 lvm2 --- 100.00g 100.00g
[root@lv-test ~]# lsblk | grep sdb
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
└─sdb2 8:18 0 100G 0 part
[root@lv-test ~]#
创建vg和lv【测试用,必看】
- 注意啊,因为我系统只有一个默认的centos的vg,我现在新建一个vg,是为了后面测试说明啊,如果你已有vg和lv,跳过创建,看下面需要扩的挂载目录信息
- 因为现在只有一个系统默认vg,我新建一个vg吧
可以看到,上面创建的2个pv此时是没有绑定vg的,我在这创建一个vg绑定到/sev/sdb1
上,此时再次查看pv,可以看到/dev/sdb1
的这个pv自动给绑定上我刚创建的vg了
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 lvm2 --- 100.00g 100.00g
/dev/sdb2 lvm2 --- 100.00g 100.00g
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
[root@lv-test ~]#
[root@lv-test ~]# vgcreate vg-test /dev/sdb1
Volume group "vg-test" successfully created
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 1 0 0 wz--n- <100.00g <100.00g
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 vg-test lvm2 a-- <100.00g <100.00g
/dev/sdb2 lvm2 --- 100.00g 100.00g
[root@lv-test ~]#
- 然后我们再创建一个lv
#创建前
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 1 0 0 wz--n- <100.00g <100.00g
[root@lv-test ~]#
[root@lv-test ~]# lvcreate -l 100%free -n lv-test vg-test
Logical volume "lv-test" created.
[root@lv-test ~]#
#可以看到,最下面新增了一个lv,vg名称和上面的不一样哦
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
lv-test vg-test -wi-a----- <100.00g
[root@lv-test ~]#
- 格式化这个lv并挂载到任意目录
[root@lv-test ~]# mkfs.xfs /dev/vg-test/lv-test
meta-data=/dev/vg-test/lv-test isize=512 agcount=4, agsize=6553344 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=26213376, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@lv-test ~]#
[root@lv-test ~]# mkdir /date-test
[root@lv-test ~]# mount /dev/vg-test/lv-test /date-test/
[root@lv-test ~]#
[root@lv-test ~]# df -h |tail -n 1
/dev/mapper/vg--test-lv--test 100G 33M 100G 1% /date-test
[root@lv-test ~]#
# 模拟这个lv是在使用的,所以我们随便写点内容进去吧
[root@lv-test ~]# cd /date-test/
[root@lv-test date-test]# ls
[root@lv-test date-test]#
[root@lv-test date-test]# touch ccx{1..66}
[root@lv-test date-test]# ls
ccx1 ccx15 ccx20 ccx26 ccx31 ccx37 ccx42 ccx48 ccx53 ccx59 ccx64
ccx10 ccx16 ccx21 ccx27 ccx32 ccx38 ccx43 ccx49 ccx54 ccx6 ccx65
ccx11 ccx17 ccx22 ccx28 ccx33 ccx39 ccx44 ccx5 ccx55 ccx60 ccx66
ccx12 ccx18 ccx23 ccx29 ccx34 ccx4 ccx45 ccx50 ccx56 ccx61 ccx7
ccx13 ccx19 ccx24 ccx3 ccx35 ccx40 ccx46 ccx51 ccx57 ccx62 ccx8
ccx14 ccx2 ccx25 ccx30 ccx36 ccx41 ccx47 ccx52 ccx58 ccx63 ccx9
[root@lv-test date-test]#
- 假设我们现在需要扩的目录是
/date-test
,可以看到该目录对应的是vg--test-lv--test
,所以,最终我们需要扩的是vg–test-lv–test这个lv
[root@lv-test date-test]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos-root 253:0 0 150G 0 lvm /
│ ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 41.1G 0 lvm /home
└─sda3 8:3 0 100G 0 part
└─centos-root 253:0 0 150G 0 lvm /
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
│ └─vg--test-lv--test 253:3 0 100G 0 lvm /date-test
└─sdb2 8:18 0 100G 0 part
sr0 11:0 1 4.3G 0 rom
[root@lv-test date-test]#
增加vg空间
- 现有vg信息
[root@lv-test date-test]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 1 1 0 wz--n- <100.00g 0
[root@lv-test date-test]#
- 增加vg空间
注:增加vg的时候就需要注意了,如果有多个vg,得确定最终扩容lv所属vg是什么,如,我现在要扩的是lv-test,这个lv是属于vg-test的,所以我们需要把空间扩到vg-test上
[root@lv-test date-test]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 vg-test lvm2 a-- <100.00g 0
/dev/sdb2 lvm2 --- 100.00g 100.00g
[root@lv-test date-test]# vgextend vg-test /dev/sdb2
Volume group "vg-test" successfully extended
[root@lv-test date-test]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 2 1 0 wz--n- 199.99g <100.00g
[root@lv-test date-test]#
增加lv空间
- 因为我们需要扩容的目录是
/date-test
,现在是100G,我们扩60g吧,那么最终/date-test
为160g才对
扩容这个其实可以不用卸载的,如果版本过低,先umoun卸载挂载信息在扩也无所谓哈。
[root@lv-test date-test]# df -h | grep /date-test
/dev/mapper/vg--test-lv--test 100G 33M 100G 1% /date-test
[root@lv-test date-test]#
[root@lv-test date-test]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
lv-test vg-test -wi-ao---- <100.00g
[root@lv-test date-test]#
- 开始扩
[root@lv-test date-test]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 2 1 0 wz--n- 199.99g <100.00g
[root@lv-test date-test]# lvs | tail -n1
lv-test vg-test -wi-ao---- <100.00g
[root@lv-test date-test]#
# 不知道lv名称格式的,可以用lvdisplay 查看详细路径
[root@lv-test date-test]# lvextend -L +60G /dev/vg-test/lv-test
Size of logical volume vg-test/lv-test changed from <100.00 GiB (25599 extents) to <160.00 GiB (40959 extents).
Logical volume vg-test/lv-test successfully resized.
[root@lv-test date-test]#
[root@lv-test date-test]# lvs | tail -n1
lv-test vg-test -wi-ao---- <160.00g
[root@lv-test date-test]#
- 现在df呢,是看不到160g空间的,需要刷新以后才能看到
刷新之前呢,需要先看这个是啥格式的,如我的/date-test
是xfs格式的,那么我就需要用xfs的方式来刷新
[root@lv-test date-test]# df -Th | tail -n1
/dev/mapper/vg--test-lv--test xfs 100G 33M 100G 1% /date-test
[root@lv-test date-test]#
# xfs的刷新,ext4不能用
# 一般是用挂载目录作为刷新地址,所以我直接用 /date-test
[root@lv-test date-test]# xfs\_growfs /date-test
meta-data=/dev/mapper/vg--test-lv--test isize=512 agcount=4, agsize=6553344 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26213376, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 26213376 to 41942016
[root@lv-test date-test]#
# 完成扩容
[root@lv-test date-test]# df -Th | tail -n1
/dev/mapper/vg--test-lv--test xfs 160G 33M 160G 1% /date-test
[root@lv-test date-test]#
# 进去看看里面的内容,依然存在,扩容完成
[root@lv-test date-test]# cd /date-test/
[root@lv-test date-test]#
[root@lv-test date-test]# ls
ccx1 ccx15 ccx20 ccx26 ccx31 ccx37 ccx42 ccx48 ccx53 ccx59 ccx64
ccx10 ccx16 ccx21 ccx27 ccx32 ccx38 ccx43 ccx49 ccx54 ccx6 ccx65
ccx11 ccx17 ccx22 ccx28 ccx33 ccx39 ccx44 ccx5 ccx55 ccx60 ccx66
ccx12 ccx18 ccx23 ccx29 ccx34 ccx4 ccx45 ccx50 ccx56 ccx61 ccx7
ccx13 ccx19 ccx24 ccx3 ccx35 ccx40 ccx46 ccx51 ccx57 ccx62 ccx8
ccx14 ccx2 ccx25 ccx30 ccx36 ccx41 ccx47 ccx52 ccx58 ccx63 ccx9
[root@lv-test date-test]#
系统重装后lsblk看不到外挂盘的lv分区信息&外挂盘重装后mount挂载方发
具体处理去这篇博客了:
mount: special device /dev/vgdata/lv_ora does not exist,centos系统LV status状态为Not avaliable问题排查及处理、
疑问验证
说明
- 需要解决这个疑惑
- 这呢,我模拟了上面的环境问题,之前的sdb还剩100g,我待会给划分成sdb3,格式为linux,sdc呢,我不做扇区,直接加pv,看后面会咋样
- sdb创建一个linux格式的扇区sdb3,然后sdc我不做扇区,最终信息如下
[root@lv-test ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3):
First sector (419432448-629145599, default 419432448):
Using default value 419432448
Last sector, +sectors or +size{K,M,G} (419432448-629145599, default 629145599):
Using default value 629145599
Partition 3 of type Linux and of size 100 GiB is set
Command (m for help): p
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x359bff9f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 209717247 104857600 8e Linux LVM
/dev/sdb2 209717248 419432447 104857600 8e Linux LVM
/dev/sdb3 419432448 629145599 104856576 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@lv-test ~]#
[root@lv-test ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@lv-test ~]#
[root@lv-test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos-root 253:0 0 150G 0 lvm /
│ ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 41.1G 0 lvm /home
└─sda3 8:3 0 100G 0 part
└─centos-root 253:0 0 150G 0 lvm /
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
│ └─vg--test-lv--test 253:3 0 160G 0 lvm
├─sdb2 8:18 0 100G 0 part
│ └─vg--test-lv--test 253:3 0 160G 0 lvm
└─sdb3 8:19 0 100G 0 part
sdc 8:32 0 66G 0 disk
sr0 11:0 1 4.3G 0 rom
[root@lv-test ~]#
环境准备
- 因为遇到的环境最开始是用sda3这个linux格式的扇区创建了一个lv的100g空间,sdb无扇区的200g是后面加上去的,所以lvm2的300g是由前面2个磁盘组成。
- 所以我现在先模拟这套环境出来【sdb3是linux格式,sdc是无扇区】
[root@lv-test ~]# vgextend vg-test /dev/sdc
Volume group "vg-test" successfully extended
[root@lv-test ~]#
[root@lv-test ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
[root@lv-test ~]#
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 vg-test lvm2 a-- <100.00g 0
/dev/sdb2 vg-test lvm2 a-- <100.00g <40.00g
/dev/sdb3 lvm2 --- <100.00g <100.00g
/dev/sdc lvm2 --- 66.00g 66.00g
[root@lv-test ~]#
[root@lv-test ~]# vgreduce vg-test /dev/sdc
Removed "/dev/sdc" from volume group "vg-test"
[root@lv-test ~]#
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 vg-test lvm2 a-- <100.00g 0
/dev/sdb2 vg-test lvm2 a-- <100.00g <40.00g
/dev/sdb3 lvm2 --- <100.00g <100.00g
/dev/sdc lvm2 --- 66.00g 66.00g
[root@lv-test ~]#
[root@lv-test ~]# vgcreate vg01 /dev/sdb3
Volume group "vg01" successfully created
[root@lv-test ~]#
[root@lv-test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 2 1 0 wz--n- 199.99g <40.00g
vg01 1 0 0 wz--n- <100.00g <100.00g
[root@lv-test ~]# lvcreate -L 88G -n lvm2 vg01
Logical volume "lvm2" created.
[root@lv-test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
lv-test vg-test -wi-ao---- <160.00g
lvm2 vg01 -wi-a----- 88.00g
[root@lv-test ~]# mkfs.xfs /dev/vg01/lvm2
meta-data=/dev/vg01/lvm2 isize=512 agcount=4, agsize=5767168 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=23068672, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=11264, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@lv-test ~]#
[root@lv-test ~]# mkdir /aidmp
[root@lv-test ~]# mount /dev/vg01/lvm2 /aidmp/
[root@lv-test ~]# df -h | tail -n1
/dev/mapper/vg01-lvm2 88G 33M 88G 1% /aidmp
[root@lv-test ~]#
# 随便写点数据进去
[root@lv-test ~]# cd /aidmp/
[root@lv-test aidmp]# ls
[root@lv-test aidmp]# mkdir ccx\_hero{1..66}
[root@lv-test aidmp]# ls
ccx_hero1 ccx_hero2 ccx_hero3 ccx_hero4 ccx_hero5 ccx_hero6
ccx_hero10 ccx_hero20 ccx_hero30 ccx_hero40 ccx_hero50 ccx_hero60
ccx_hero11 ccx_hero21 ccx_hero31 ccx_hero41 ccx_hero51 ccx_hero61
ccx_hero12 ccx_hero22 ccx_hero32 ccx_hero42 ccx_hero52 ccx_hero62
ccx_hero13 ccx_hero23 ccx_hero33 ccx_hero43 ccx_hero53 ccx_hero63
ccx_hero14 ccx_hero24 ccx_hero34 ccx_hero44 ccx_hero54 ccx_hero64
ccx_hero15 ccx_hero25 ccx_hero35 ccx_hero45 ccx_hero55 ccx_hero65
ccx_hero16 ccx_hero26 ccx_hero36 ccx_hero46 ccx_hero56 ccx_hero66
ccx_hero17 ccx_hero27 ccx_hero37 ccx_hero47 ccx_hero57 ccx_hero7
ccx_hero18 ccx_hero28 ccx_hero38 ccx_hero48 ccx_hero58 ccx_hero8
ccx_hero19 ccx_hero29 ccx_hero39 ccx_hero49 ccx_hero59 ccx_hero9
[root@lv-test aidmp]#
# 然后把sdc这个无扇区盘加到vg01里下面的lvm2中
[root@lv-test aidmp]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 vg-test lvm2 a-- <100.00g 0
/dev/sdb2 vg-test lvm2 a-- <100.00g <40.00g
/dev/sdb3 vg01 lvm2 a-- <100.00g <12.00g
/dev/sdc lvm2 --- 66.00g 66.00g
[root@lv-test aidmp]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 2 1 0 wz--n- 199.99g <40.00g
vg01 1 1 0 wz--n- <100.00g <12.00g
[root@lv-test aidmp]#
[root@lv-test aidmp]# vgextend vg01 /dev/sdc
Volume group "vg01" successfully extended
[root@lv-test aidmp]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 198.99g 0
vg-test 2 1 0 wz--n- 199.99g <40.00g
vg01 2 1 0 wz--n- 165.99g 77.99g
[root@lv-test aidmp]# lvextend -L +66G /dev/vg01/lvm2
Size of logical volume vg01/lvm2 changed from 88.00 GiB (22528 extents) to 154.00 GiB (39424 extents).
Logical volume vg01/lvm2 successfully resized.
[root@lv-test aidmp]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <41.12g
root centos -wi-ao---- 150.00g
swap centos -wi-ao---- <7.88g
lv-test vg-test -wi-ao---- <160.00g
lvm2 vg01 -wi-ao---- 154.00g
[root@lv-test aidmp]#
[root@lv-test aidmp]# xfs\_growfs /aidmp/
meta-data=/dev/mapper/vg01-lvm2 isize=512 agcount=4, agsize=5767168 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=23068672, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=11264, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 23068672 to 40370176
[root@lv-test aidmp]#
[root@lv-test aidmp]# df -h | tail -n1
/dev/mapper/vg01-lvm2 154G 33M 154G 1% /aidmp
[root@lv-test aidmp]#
[root@lv-test aidmp]# ls
ccx_hero1 ccx_hero2 ccx_hero3 ccx_hero4 ccx_hero5 ccx_hero6
ccx_hero10 ccx_hero20 ccx_hero30 ccx_hero40 ccx_hero50 ccx_hero60
ccx_hero11 ccx_hero21 ccx_hero31 ccx_hero41 ccx_hero51 ccx_hero61
ccx_hero12 ccx_hero22 ccx_hero32 ccx_hero42 ccx_hero52 ccx_hero62
ccx_hero13 ccx_hero23 ccx_hero33 ccx_hero43 ccx_hero53 ccx_hero63
ccx_hero14 ccx_hero24 ccx_hero34 ccx_hero44 ccx_hero54 ccx_hero64
ccx_hero15 ccx_hero25 ccx_hero35 ccx_hero45 ccx_hero55 ccx_hero65
ccx_hero16 ccx_hero26 ccx_hero36 ccx_hero46 ccx_hero56 ccx_hero66
ccx_hero17 ccx_hero27 ccx_hero37 ccx_hero47 ccx_hero57 ccx_hero7
ccx_hero18 ccx_hero28 ccx_hero38 ccx_hero48 ccx_hero58 ccx_hero8
ccx_hero19 ccx_hero29 ccx_hero39 ccx_hero49 ccx_hero59 ccx_hero9
[root@lv-test aidmp]#
- 现在我这有了和之前生产环境中一摸一样的环境,而且可以得出结论,linux格式的扇区是可以正常做lv的,不做扇区的磁盘也是可以正常加入到已有lv中的。【只是这种方式不推荐,不正规(最后的倔强)】
[root@lv-test aidmp]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos-root 253:0 0 150G 0 lvm /
│ ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 41.1G 0 lvm /home
└─sda3 8:3 0 100G 0 part
└─centos-root 253:0 0 150G 0 lvm /
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
│ └─vg--test-lv--test 253:3 0 160G 0 lvm /date-test
├─sdb2 8:18 0 100G 0 part
│ └─vg--test-lv--test 253:3 0 160G 0 lvm /date-test
└─sdb3 8:19 0 100G 0 part
└─vg01-lvm2 253:4 0 154G 0 lvm /aidmp
sdc 8:32 0 66G 0 disk
└─vg01-lvm2 253:4 0 154G 0 lvm /aidmp
sr0 11:0 1 4.3G 0 rom
[root@lv-test aidmp]#
[root@lv-test aidmp]# fdisk -l /dev/sdb
Disk /dev/sdb: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x359bff9f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 209717247 104857600 8e Linux LVM
/dev/sdb2 209717248 419432447 104857600 8e Linux LVM
/dev/sdb3 419432448 629145599 104856576 83 Linux
[root@lv-test aidmp]# fdisk -l /dev/sdc
Disk /dev/sdc: 70.9 GB, 70866960384 bytes, 138412032 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@lv-test aidmp]#
疑问验证开始【注意看每个验证后面的总结】
- 先对硬盘做如下操作
验证1【对没有做扇区的硬盘做扩容后能不能加入到已有lv】
- 没有做扇区的硬盘,扩容以后,能不能重新加到vg里面
这种情况肯定不能做扇区的,做了扇区,之前的数据肯定没了,这个实验最后再做 - 现在环境可以看到,sdc总容量已经增加,但是pv中还是66g
[root@lv-test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos-root 253:0 0 150G 0 lvm /
│ ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
│ └─centos-home 253:3 0 41.1G 0 lvm /home
└─sda3 8:3 0 100G 0 part
└─centos-root 253:0 0 150G 0 lvm /
sdb 8:16 0 300G 0 disk
├─sdb1 8:17 0 100G 0 part
│ └─vg--test-lv--test 253:4 0 160G 0 lvm
├─sdb2 8:18 0 100G 0 part
│ └─vg--test-lv--test 253:4 0 160G 0 lvm
└─sdb3 8:19 0 100G 0 part
└─vg01-lvm2 253:2 0 154G 0 lvm
sdc 8:32 0 166G 0 disk
└─vg01-lvm2 253:2 0 154G 0 lvm
sdd 8:48 0 88G 0 disk
sr0 11:0 1 4.3G 0 rom
[root@lv-test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sda3 centos lvm2 a-- <100.00g 0
/dev/sdb1 vg-test lvm2 a-- <100.00g 0
/dev/sdb2 vg-test lvm2 a-- <100.00g <40.00g
/dev/sdb3 vg01 lvm2 a-- <100.00g 0
/dev/sdc vg01 lvm2 a-- <66.00g 11.99g
[root@lv-test ~]#
- 我先把sdc重新加vg试试,看看数据会不会丢
# 加pv报错了
[root@lv-test ~]# pvcreate /dev/sdc
Can't initialize physical volume "/dev/sdc" of volume group "vg01" without -ff
/dev/sdc: physical volume not initialized.
[root@lv-test ~]#
# 试试加vg呢,也报错了
[root@lv-test ~]# vgextend vg01 /dev/sdc
Physical volume '/dev/sdc' is already in volume group 'vg01'
Unable to add physical volume '/dev/sdc' to volume group 'vg01'
/dev/sdc: physical volume not initialized.
[root@lv-test ~]#
- 结论 没有做扇区的扩容以后无法新增到现有的vg里面。
验证2【新增硬盘空间加入已有lv会不会影响之前的数据】
- 验证这个的意义,我只是想知道,这样做会不会导致之前没有扇区的硬盘中的数据丢失。
我这用sdd的空间来做【我还是用正规流程,划扇区】
# 先划扇区
[root@lv-test ~]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf0f22ffd.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-184549375, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-184549375, default 184549375):
Using default value 184549375
Partition 1 of type Linux and of size 88 GiB is set
Command (m for help): e^H
e: unknown command
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
![img](https://img-blog.csdnimg.cn/img_convert/7c46ce09c8b6df889a15252871c8cadc.png)
![img](https://img-blog.csdnimg.cn/img_convert/65c2b9deaf5eb1da8f29e7fb0d9f969c.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
ition number (1-4, default 1):
First sector (2048-184549375, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-184549375, default 184549375):
Using default value 184549375
Partition 1 of type Linux and of size 88 GiB is set
Command (m for help): e^H
e: unknown command
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
[外链图片转存中...(img-n3qQvawm-1715888173729)]
[外链图片转存中...(img-DGKJGOYe-1715888173729)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**