8. Linux 逻辑卷管理

8. Linux 逻辑卷管理

逻辑卷基本管理

硬盘分区管理方案缺点
  • 硬盘分区空间必须使用连续空间,所以硬盘分区扩容很麻烦,特别是要扩容的分区后没有空间。
  • 使用硬盘分区创建的文件系统不同跨多个硬盘,受单个硬盘容量限制。
  • 如果硬盘损坏,则文件系统中数据也会丢失。
逻辑卷管理硬盘方案优点
  • 使用逻辑卷可以更加灵活地扩展和缩减文件系统空间。
  • 使用逻辑卷创建的文件系统可以跨多个硬盘,适合创建超大容量文件系统。
  • 使用逻辑卷可以创建镜像卷,保证数据的冗余性。即使单个硬盘损坏,文件系统中数据也会丢失。
  • 使用逻辑卷还可以创建快照,保留某一时刻数据,就像虚拟机快照一样。
逻辑卷基本概念

LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。

  • 物理卷(PV, Physical Volume),是LVM的基本存储逻辑块,通过块设备创建。块设备是指磁盘、磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID)。与基本的物理存储介质(如分区、磁盘等)相比,物理卷包含有和LVM相关的管理参数。
  • 卷组(VG, Volume Group),是一个逻辑的存储空间,由一个或多个物理卷组成。
  • 逻辑卷(LV, Logical Volume),是从卷组中创建出来的一个逻辑空间。如果把一个卷组类比为一个逻辑硬盘,那么逻辑卷则可以类比为一个硬盘分区,所以也可以在逻辑卷之上创建文件系统。

简单地说:卷组由多个物理卷组成,可以在卷组中创建多个逻辑卷,对逻辑卷创建文件系统给用户使用。

磁盘分区技术:大容量划分为小容量

raid:小容量变大容量,确保数据的冗余性

lvm:小变大 ,大变小,可以灵活的缩放空间,支持快照,支持raid功能

可以把逻辑卷想象成一个 “弹性的硬盘魔术盒”。

假设你有几个饼干盒(物理硬盘),传统方式是每个盒子里的饼干(数据)只能放在自己盒子里,盒子满了就只能换更大的盒子。

但逻辑卷就像给这些饼干盒套了个透明的大袋子:你不用管饼干具体放在哪个小盒子里,只管往大袋子里放就行。当袋子快满了,直接往旁边再塞一个新饼干盒(新增物理硬盘),大袋子会自动把新空间纳进来,里面的饼干不用动 —— 这就是逻辑卷的 “动态扩容” 能力。

而且你还能把这个大袋子分成几个小格子(逻辑分区),比如一个放零食、一个放文具,格子大小能随时调整,不用清空里面的东西。

这个 “大袋子” 就是卷组(VG),“小饼干盒” 是物理卷(PV),“小格子” 就是逻辑卷(LV)。逻辑卷让硬盘空间管理像捏橡皮泥一样灵活,再也不用被物理硬盘的固定大小捆住手脚啦~

可以把物理卷和逻辑卷的关系,想象成 “面粉” 和 “馒头” 的故事:

  • 物理卷(PV) 就像一袋袋的面粉 —— 它们是最原始的 “原材料”,是实实在在的物理硬盘(或分区),有固定的容量(比如每袋面粉 5 斤),但本身不能直接 “吃”(不能直接被系统用来存数据),需要经过加工。
  • 逻辑卷(LV) 则像用这些面粉做出来的馒头 —— 你可以根据需要,用 1 袋、2 袋甚至更多袋面粉揉成一个馒头(把多个物理卷的空间合并成一个逻辑卷),也可以把 1 袋面粉分成好几个小馒头(把一个物理卷的空间分给多个逻辑卷)。

关键的 “魔法” 在于中间的卷组(VG)—— 它就像一个大面缸,所有的物理卷(面粉袋)都要先倒进面缸里,变成一个统一的 “空间池”。然后你从面缸里按需揪出面团做馒头(逻辑卷),不用管这团面具体来自哪袋面粉。

比如:

  • 你有两袋面粉(2 块 1TB 硬盘,物理卷),倒进面缸(卷组)后,就能做出一个 2TB 的大馒头(逻辑卷),也能做两个 1TB 的小馒头。
  • 后来面粉不够了,再倒一袋新面粉(新增 1TB 硬盘,物理卷)进面缸,原来的大馒头还能 “长胖”(逻辑卷动态扩容),不用把原来的馒头扔掉重做。

所以,物理卷是 “原料仓库”,逻辑卷是 “成品包装”,卷组则是连接两者的 “加工车间”—— 逻辑卷的空间完全来自物理卷,但又突破了单块物理硬盘的容量限制,想大就大,想分就分~

创建物理卷

#创建单个pv
[root@server ~ 10:59:00]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
#创建多个pv
[root@server ~ 11:18:15]# pvcreate /dev/sd{c,d}
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.
#查看pv列表
[root@server ~ 11:18:34]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sda2  centos lvm2 a--  52.00g  4.00m
  /dev/sdb          lvm2 ---  20.00g 20.00g
  /dev/sdc          lvm2 ---  20.00g 20.00g
  /dev/sdd          lvm2 ---  20.00g 20.00g
  #查看单个pv详细信息
[root@server ~ 11:18:38]# pvdisplay /dev/sdb
  "/dev/sdb" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               EDiflh-KE4k-6q2H-uCDU-a10L-Ezfk-0D8In1
   

创建卷组

# 创建包涵单个PV的VG
[root@server ~ 11:18:56]# vgcreate vg01 /dev/sdb
  Volume group "vg01" successfully created
# 创建包涵多个PV的VG
[root@server ~ 11:19:54]# vgcreate vg02 /dev/sd{c,d}
  Volume group "vg02" successfully created
[root@server ~ 11:20:11]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--   52.00g   4.00m
  /dev/sdb   vg01   lvm2 a--  <20.00g <20.00g
  /dev/sdc   vg02   lvm2 a--  <20.00g <20.00g
  /dev/sdd   vg02   lvm2 a--  <20.00g <20.00g
 # 查看VG列表 
[root@server ~ 11:20:13]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  52.00g   4.00m
  vg01     1   0   0 wz--n- <20.00g <20.00g
  vg02     2   0   0 wz--n-  39.99g  39.99g
  # 查看单个VG详细信息
[root@server ~ 11:20:25]# vgdisplay vg02
  --- Volume group ---
  VG Name               vg02
  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               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               ybNruf-KuU0-sBsC-ykAL-cRIv-PBOx-p1hw1d
  # PE,Physical Extend,是PV的最小存储单元。
  # 在创建VG时,可通过-s选项设置。

创建逻辑卷

# 在卷组vg01中创建一个逻辑卷:名称为data01,大小为5G。
[root@server ~ 11:20:41]# lvcreate -n data01 -L 5G vg01
  Logical volume "data01" created.
 # 在卷组vg02中创建一个跨硬盘逻辑卷:名称为data02,大小为25G。
[root@server ~ 11:21:36]# lvcreate -n data02 -L 25G vg02
  Logical volume "data02" created.
  # 查看LV列表
[root@server ~ 11:21:52]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- 50.00g                                                    
  swap   centos -wi-ao----  2.00g                                                    
  data01 vg01   -wi-a-----  5.00g                                                    
  data02 vg02   -wi-a----- 25.00g                                         

逻辑卷设备名由如下三种格式:

  • /dev/vname/lvame
  • /dev/mapper/vname-lvame
  • /dev/dm-N
[root@server ~ 11:22:58]# ls -l /dev/vg02/data02 /dev/mapper/vg02-data02
lrwxrwxrwx 1 root root 7 84 11:21 /dev/mapper/vg02-data02 -> ../dm-3
lrwxrwxrwx 1 root root 7 84 11:21 /dev/vg02/data02 -> ../dm-3
# 可以看到:物理卷/dev/sdc空间已使用完,物理卷/dev/sdd空间已使用5G
[root@server ~ 11:23:36]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--   52.00g   4.00m
  /dev/sdb   vg01   lvm2 a--  <20.00g <15.00g
  /dev/sdc   vg02   lvm2 a--  <20.00g      0 
  /dev/sdd   vg02   lvm2 a--  <20.00g  14.99g
  # 可以看到逻辑卷/dev/dbapp/data01空间横跨2个硬盘
[root@server ~ 11:23:47]# lsblk /dev/sd{b..d}
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb             8:16   0  20G  0 disk 
└─vg01-data01 253:2    0   5G  0 lvm  
sdc             8:32   0  20G  0 disk 
└─vg02-data02 253:3    0  25G  0 lvm  
sdd             8:48   0  20G  0 disk 
└─vg02-data02 253:3    0  25G  0 lvm  

创建文件系统

[root@server ~ 11:24:16]# mkfs.xfs /dev/vg01/data01
meta-data=/dev/vg01/data01       isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@server ~ 11:25:23]# mkdir -p /data01
[root@server ~ 11:25:33]# mount /dev/vg01/data01 /data01

存储准备过程:
1.准备分区
2.格式化(文件系统)
3.挂载(必要的时候要写入/etc/fstab)

清理:
1.卸载(必要的时候要清理/etc/fstab)
2.直接删除分区、逻辑卷(请里vg和pv

清理

# 卸载文件系统
[root@server ~ 11:30:49]# umount /dev/vg01/data01
# 删除LV
[root@server ~ 11:44:37]# lvremove /dev/vg01/data01 /dev/vg02/data02
Do you really want to remove active logical volume vg01/data01? [y/n]: y
  Logical volume "data01" successfully removed
Do you really want to remove active logical volume vg02/data02? [y/n]: y
  Logical volume "data02" successfully removed
  # 删除VG
[root@server ~ 11:45:08]# vgremove vg01 vg02
  Volume group "vg01" successfully removed
  Volume group "vg02" successfully removed
 #删除pv
[root@server ~ 11:45:25]# pvremove /dev/sd{b..d}
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sdd" successfully wiped.

扩展和缩减卷组

环境准备
# 创建卷组
[root@server ~ 13:36:21]# vgcreate vg01 /dev/sdb
  Physical volume "/dev/sdb" successfully created.
  Volume group "vg01" successfully created
 #创建逻辑卷
[root@server ~ 13:36:44]# lvcreate -n data01 -L 10G vg01
WARNING: xfs signature detected on /dev/vg01/data01 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/vg01/data01.
  Logical volume "data01" created.

扩展卷组

如果卷组空间不足,可以通过添加新的物理卷到卷组中,以扩展卷组容量。

[root@server ~ 13:43:45]# vgextend vg01 /dev/sd{c,d}
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.
  Volume group "vg01" successfully extended

缩减卷组

如果卷组空间中有多余的物理卷或者物理卷容量小需要更换,则可以将物理卷从卷组中剔除。

删除物理卷前确保物理卷不在使用中。

# 将物理卷/dev/sdb从卷组webapp中剔除,则会报错
[root@server ~ 13:44:23]# vgreduce vg01 /dev/sdb
  Physical volume "/dev/sdb" still in use
 #将物理卷/dev/sdb中数据移动到卷组中其他物理卷
[root@server ~ 13:45:06]# pvmove /dev/sdb
  /dev/sdb: Moved: 0.16%
  /dev/sdb: Moved: 100.00%
[root@server ~ 13:45:52]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--   52.00g   4.00m
  /dev/sdb   vg01   lvm2 a--  <20.00g <20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g <10.00g
  /dev/sdd   vg01   lvm2 a--  <20.00g <20.00g
 #再次删除
[root@server ~ 13:46:22]# vgreduce vg01 /dev/sdb
  Removed "/dev/sdb" from volume group "vg01"
 #验证
[root@server ~ 13:46:41]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--   52.00g   4.00m
  /dev/sdb          lvm2 ---   20.00g  20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g <10.00g
  /dev/sdd   vg01   lvm2 a--  <20.00g <20.00g

扩展和缩减逻辑卷

扩展逻辑卷

将物理卷/dev/sdb中数据移动到卷组中其他物理卷

#逻辑卷增加2g空间
[root@server ~ 13:46:47]# lvextend -L +2G /dev/vg01/data01
  Size of logical volume vg01/data01 changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents).
  Logical volume vg01/data01 successfully resized.
[root@server ~ 13:48:17]# lvs /dev/vg01/data01
  LV     VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data01 vg01 -wi-a----- 12.00g                                                    

缩减逻辑卷

如果逻辑卷空间充足,希望将多余的空间缩减出来它用,也可以缩减逻辑卷空间。

[root@server ~ 13:48:32]# lvreduce -L -2G /dev/vg01/data01
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/data01? [y/n]: y
  Size of logical volume vg01/data01 changed from 12.00 GiB (3072 extents) to 10.00 GiB (2560 extents).
  Logical volume vg01/data01 successfully resized.
[root@server ~ 13:49:24]# lvs /dev/vg01/data01
  LV     VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data01 vg01 -wi-a----- 10.00g                                            

扩展和缩减文件系统

扩展 XFS 文件系统

XFS文件系统只支持扩展,不支持缩减

环境准备:格式化文件系统,并创建数据

[root@server ~ 13:49:27]# mkfs.xfs /dev/vg01/data01
meta-data=/dev/vg01/data01       isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@server ~ 13:57:51]# mkdir /data01 -p
[root@server ~ 13:57:58]# mount /dev/vg01/data01 /data01
[root@server ~ 13:58:17]# cp /etc/host* /data01
[root@server ~ 13:58:34]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny

扩展逻辑卷

[root@server ~ 13:58:37]# lvextend  -L 15G /dev/vg01/data01
  Size of logical volume vg01/data01 changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume vg01/data01 successfully resized.
[root@server ~ 13:59:19]# lvs /dev/vg01/data01
  LV     VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data01 vg01 -wi-ao---- 15.00g                                                 
 #扩展文件系统
[root@server ~ 13:59:32]# xfs_growfs /data01
meta-data=/dev/mapper/vg01-data01 isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 3932160
[root@server ~ 13:59:53]# df -h /data01
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-data01   15G   33M   15G    1% /data01
[root@server ~ 14:00:04]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny
# 块设备和文件系统一并扩展
[root@server ~ 13:58:37]# lvextend   -r -L 15G /dev/vg01/data01
扩展 EXT4 文件系统

EXT4文件系统即支持扩展,也支持缩减。

环境准备:格式化文件系统,并创建数据

[root@server ~ 14:00:10]# umount /data01
[root@server ~ 14:00:52]# mkfs.ext4 /dev/vg01/data01
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
983040 inodes, 3932160 blocks
196608 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
120 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

[root@server ~ 14:01:17]# mount /dev/vg01/data01 /data01
[root@server ~ 14:01:39]# df -h /data01
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-data01   15G   41M   14G    1% /data01
[root@server ~ 14:01:49]# cp /etc/host* /data01
[root@server ~ 14:02:04]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny  lost+found

扩展逻辑卷

[root@server ~ 14:02:08]# lvextend -L 30G /dev/vg01/data01
  Size of logical volume vg01/data01 changed from 15.00 GiB (3840 extents) to 30.00 GiB (7680 extents).
  Logical volume vg01/data01 successfully resized.
[root@server ~ 14:02:55]# lvs /dev/vg01/data01
  LV     VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data01 vg01 -wi-ao---- 30.00g                                                    
#扩展文件系统,也可以直接在扩展逻辑卷的后面加-r(块设备和文件系统一并扩展)
[root@server ~ 14:02:08]# lvextend  -r -L 30G /dev/vg01/data01


[root@server ~ 14:03:04]# resize2fs /dev/vg01/data01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/data01 is mounted on /data01; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/vg01/data01 is now 7864320 blocks long.

[root@server ~ 14:03:26]# df -h /dev/vg01/data01
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-data01   30G   44M   28G    1% /data01
[root@server ~ 14:03:33]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny  lost+found

缩减 EXT4 文件系统

缩减EXT4文件系统注意事项:

  • 不支持在线缩减,必须卸载后缩减。
  • 缩减后的容量,不能小于当前使用的容量。

ext4 减容流程:

  1. 卸载文件系统
  2. e2fsck 文件系统
  3. 缩减文件系统
  4. 缩减lv
  5. 挂载测试

具体操作如下:

#卸载文件系统
[root@server ~ 14:03:40]# umount /data01
# 第二步:检测文件系统
[root@server ~ 14:08:14]# e2fsck -f /dev/vg01/data01
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg01/data01: 16/1966080 files (0.0% non-contiguous), 167436/7864320 blocks
# 第三步:缩减文件系统
[root@server ~ 14:08:33]# resize2fs /dev/vg01/data01 2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg01/data01 to 524288 (4k) blocks.
The filesystem on /dev/vg01/data01 is now 524288 blocks long.
# 第四步:缩减逻辑卷
[root@server ~ 14:09:02]# lvreduce -L 2G /dev/vg01/data01
  WARNING: Reducing active logical volume to 2.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/data01? [y/n]: y
  Size of logical volume vg01/data01 changed from 30.00 GiB (7680 extents) to 2.00 GiB (512 extents).
  Logical volume vg01/data01 successfully resized.
  #挂载验证
[root@server ~ 14:09:28]# mount /dev/vg01/data01 /data01
[root@server ~ 14:09:46]# df -h /data01
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-data01  1.9G   25M  1.8G    2% /data01
[root@server ~ 14:09:54]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny  lost+found

补充说明: 如果文件系统是构建在磁盘分区上,扩展文件系统容量和缩减文件系统容量操作相同。

逻辑卷快照

我们可以使用快照记录了lv中数据,后续可以用来恢复数据。

创建快照:快照的容量不能小于lv容量

[root@server ~ 14:37:16]# lvcreate -s -n data01-snap1 -L 10G /dev/vg01/data01
  Reducing COW size 10.00 GiB down to maximum usable size 2.01 GiB.
  Logical volume "data01-snap1" created.
[root@server ~ 14:43:23]# umount /dev/vg01/data01
# 卸载原始卷,挂载快照
[root@server ~ 14:46:59]# mount /dev/vg01/data01-snap1 /data01
# 查看数据
[root@server ~ 14:49:17]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny  lost+found
# 创建新数据
[root@server ~ 14:50:27]# echo hello world > /data01/hello.txt
[root@server ~ 14:50:37]# cat /data01/hello.txt
hello world

raid逻辑卷

清理数据

[root@server ~ 14:50:45]# umount /data01
[root@server ~ 14:51:42]# lvremove /dev/vg01/data01*
Do you really want to remove active origin logical volume vg01/data01 with 1 snapshot(s)? [y/n]: y
  Logical volume "data01-snap1" successfully removed
  Logical volume "data01" successfully removed
[root@server ~ 14:52:29]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--   52.00g   4.00m
  /dev/sdb          lvm2 ---   20.00g  20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g <20.00g
  /dev/sdd   vg01   lvm2 a--  <20.00g <20.00g

准备环境

[root@server ~ 14:53:15]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--   52.00g   4.00m
  /dev/sdb          lvm2 ---   20.00g  20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g <20.00g
  /dev/sdd   vg01   lvm2 a--  <20.00g <20.00g
[root@server ~ 14:55:19]# lvcreate --type raid1 -n data01 -L 15G vg01WARNING: ext4 signature detected on /dev/vg01/data01_rmeta_0 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vg01/data01_rmeta_0.
  Logical volume "data01" created.
[root@server ~ 14:56:05]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--   52.00g  4.00m
  /dev/sdb          lvm2 ---   20.00g 20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g  4.99g
  /dev/sdd   vg01   lvm2 a--  <20.00g  4.99g
[root@server ~ 14:56:10]# mkfs.xfs /dev/vg01/data01
meta-data=/dev/vg01/data01       isize=512    agcount=4, agsize=983040 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3932160, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@server ~ 14:56:43]# mount /dev/vg01/data01 /data01
[root@server ~ 14:57:17]# cp /etc/ho* /data01
[root@server ~ 14:57:25]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--   52.00g  4.00m
  /dev/sdb          lvm2 ---   20.00g 20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g  4.99g
  /dev/sdd   vg01   lvm2 a--  <20.00g  4.99g
  
  #模拟故障
[root@server ~ 14:58:16]# dd if=/dev/zero of=/dev/sdd bs=1M count=256记录了256+0 的读入
记录了256+0 的写出
268435456字节(268 MB)已复制,0.157327 秒,1.7 GB/秒
[root@server ~ 14:58:56]# pvs
  WARNING: Device for PV RAkicq-fGf0-q3wZ-nOVz-mN6n-NWna-pkHhmj not found or rejected by a filter.
  Couldn't find device with uuid RAkicq-fGf0-q3wZ-nOVz-mN6n-NWna-pkHhmj.
  WARNING: Couldn't find all devices for LV vg01/data01_rimage_1 while checking used and assumed devices.
  WARNING: Couldn't find all devices for LV vg01/data01_rmeta_1 while checking used and assumed devices.
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--   52.00g  4.00m
  /dev/sdb          lvm2 ---   20.00g 20.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g  4.99g
  [unknown]  vg01   lvm2 a-m  <20.00g  4.99g
  
  #文件系统仍可以正常访问
[root@server ~ 14:58:59]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@server ~ 14:59:12]# umount /data01
[root@server ~ 14:59:32]# mount /dev/vg01/data01 /data01
[root@server ~ 14:59:42]# ls /data01
host.conf  hostname  hosts  hosts.allow  hosts.deny

修复raid

#删除丢失的物理卷
[root@server ~ 14:59:52]# vgreduce --removemissing vg01 --force
[root@server ~ 15:07:07]# vgextend vg01 /dev/sdd
  Physical volume "/dev/sdd" successfully created.
  Volume group "vg01" successfully extended
[root@server ~ 15:08:11]# lvconvert --repair vg01/data01
  WARNING: Not using lvmetad because of repair.
Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
  WARNING: Disabling lvmetad cache for repair command.
  Faulty devices in vg01/data01 successfully replaced.
[root@server ~ 15:08:42]# pvs |grep vg01
  WARNING: Not using lvmetad because a repair command was run.
  /dev/sdc   vg01   lvm2 a--  <20.00g  4.99g
  /dev/sdd   vg01   lvm2 a--  <20.00g  4.99g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值