|NO.Z.00051|——————————|^^ 操作 ^^|——|Linux&高级系统.V03|——|LVM|

一、LVM 逻辑卷管理
### --- LVM 逻辑卷管理

~~~     简介
~~~     LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理。
 
### --- 最大的特点:
~~~     当感觉磁盘不够,可以动态调整磁盘空间。

### --- 工作中使用:
~~~     标准化的应该是LVM分区。系统默认是LVM分区。
 
### --- 实际正在使用的是:
~~~     逻辑卷,卷组可以扩容,逻辑卷,只要卷组里有剩余空间,逻辑卷也可以扩容。
~~~     就实现了:卷组是我们实际使用的空间。

### --- LVM支持缩减:
~~~     但是缩减是有风险的,在生产环境汇总,缩减可能导致数据丢失。
 
### --- Linux默认使用的是:
~~~     LVM分区形式装机。

### --- boot分区:
~~~     只能放在普通分区之上,而不能放在LVM分区中。若是把boot分区放在LVM中,
~~~     系统将无法正常启动。boot分区默认是sda1
### --- LVM 逻辑卷管理

### --- 物理卷(PV,Physical Volume):
~~~     就是真正的物理硬盘或分区。

### --- 卷组(VG,Volume Group):
~~~     将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,
~~~     也可以是不同硬盘上的不同分区。我们可以把卷组想象为一个逻辑硬盘。
### --- 逻辑卷(LV,Logical Volume):
~~~     卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个分区我们称作逻辑卷。
~~~     逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。

### --- 物理扩展(PE,Physical Extend):
~~~     PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中,
~~~     PE 的大小是可以配置的,默认是 4MB。PE实际上时跨分区的单位,是根据柱面来划分的。
三、建立 LVM 的步骤:
### --- 建立 LVM 的步骤:

~~~     首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
~~~     然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
~~~     接下来把物理卷整合成为卷组(VG)。
~~~     卷组就已经可以动态的调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
~~~     最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。
~~~     我们说逻辑卷可以想象成为分区,所以也需要格式化和挂载。
四、物理卷管理
### --- 硬盘分区
~~~     创建方式就是使用 fdisk 交互命令,
~~~     不过需要注意的是分区的系统 ID 不再是 Linux 默认的分区ID 号 83 了,
~~~     而要改成 LVM 的 ID 号 8e。
~~~     创建三个分区

[root@server11 ~]# fdisk /dev/sdb 
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048): 
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +25G
Command (m for help): n
Select (default p): p
Partition number (2-4, default 2): 2
First sector (52430848-209715199, default 52430848): 
Last sector, +sectors or +size{K,M,G} (52430848-209715199, default 209715199): +25G
Select (default p): p
Partition number (3,4, default 3): 3
First sector (104859648-209715199, default 104859648): 
Last sector, +sectors or +size{K,M,G} (104859648-209715199, default 209715199): +25G
Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    52430847    26214400   83  Linux
/dev/sdb2        52430848   104859647    26214400   83  Linux
/dev/sdb3       104859648   157288447    26214400   83  Linux
~~~     分区默认的ID号是83,需要把ID号调整为8e
Command (m for help): t
Partition number (1-3, default 3): 1
Hex code (type L to list all codes): 8e
Command (m for help): t
Partition number (1-3, default 3): 2
Hex code (type L to list all codes): 8e
Command (m for help): t
Partition number (1-3, default 3): 3
Hex code (type L to list all codes): 8e
Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    52430847    26214400   8e  Linux LVM
/dev/sdb2        52430848   104859647    26214400   8e  Linux LVM
/dev/sdb3       104859648   157288447    26214400   8e  Linux LVM
Command (m for help): w
[root@server11 ~]# lsblk
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0   25G  0 part 
├─sdb2   8:18   0   25G  0 part 
└─sdb3   8:19   0   25G  0 part 
[root@server11 ~]# fdisk -l
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    52430847    26214400   8e  Linux LVM
/dev/sdb2        52430848   104859647    26214400   8e  Linux LVM
/dev/sdb3       104859648   157288447    26214400   8e  Linux LVM
 
~~~     重启,直接操作显示设备繁忙

[root@server11 ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@server11 ~]# reboot
### --- 建立物理卷
~~~     建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。
~~~     如果要把整块硬盘都建立成物理卷,命令如下
~~~     在我们的使用中,是要把分区建立成为物理卷,所以执行以下命令:

[root@server11 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@server11 ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
[root@server11 ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.
 
### --- 查看物理卷
~~~     我们可以看到在我的系统中,/dev/sdb5-7 这三个分区是物理卷。
~~~     最后一行的意思是:总共 3 个物理卷[大小] / 使用了 0 个卷[大小] / 空闲 3 个卷[大小]。
~~~     第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:

[root@server11 ~]# pvscan
  PV /dev/sdb3                      lvm2 [25.00 GiB]
  PV /dev/sdb1                      lvm2 [25.00 GiB]
  PV /dev/sdb2                      lvm2 [25.00 GiB]
  Total: 3 [75.00 GiB] / in use: 0 [0   ] / in no VG: 3 [75.00 GiB]
[root@server11 ~]#  pvdisplay
  "/dev/sdb3" is a new physical volume of "25.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3                           // PV 名
  VG Name                                                   // 属于的 VG 名,还没有分配,所以空白
  PV Size               25.00 GiB                           // PV 的大小
  Allocatable           NO                                  // 是否已经分配
  PE Size               0                                   // PE 大小,因为还没有分配,所以 PE 大小也没有指定
  Total PE              0                                   // PE 总数
  Free PE               0                                   // 空闲 PE 数
  Allocated PE          0                                   // 可分配的 PE 数 
  PV UUID               xEopxI-3cXY-tCg2-kHL9-FcSP-qhR1-DNcg6c
   
  "/dev/sdb1" is a new physical volume of "25.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               25.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               YA43lC-Ku1D-zMq0-XM72-e3b8-1eUD-9lXjSo
   
  "/dev/sdb2" is a new physical volume of "25.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               25.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               TFt5oo-zgZX-Er1a-Mxoz-knmI-GdEe-2nwKLN
 
### --- 删除物理卷:此环境不删除

[root@localhost ~]# pvremove /dev/sdb7
五、卷组管理
### --- 建立卷组
~~~     选项:
~~~     -s PE 大小:指定 PE 的大小,单位可以是 MB,GB,TB 等。如果不写默认 PE 大小事 4MB
~~~     我们又三个物理卷/dev/sdb5-7,我们先把/dev/sdb5 和/dev/sdb6 加入卷组,
~~~     留着/dev/sdb7 一会实验调整卷组大小,命令如下:

[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
[root@server11 ~]# vgcreate  scvg /dev/sdb1 /dev/sdb2
  Volume group "scvg" successfully created
### --- 查看卷组
~~~     查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,
~~~     而 vgdisplay 则是查看卷组的详细状态的。命令如下:

[root@server11 ~]# vgscan
  Reading volume groups from cache.
  Found volume group "scvg" using metadata type lvm2
~~~     scvg 的卷组确实存在

[root@server11 ~]# vgdisplay
  --- Volume group ---
  VG Name               scvg                                    // 卷组名
  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                                      // PE 大小
  Act PV                2                                      // PE 总数
  VG Size               49.99 GiB                              // 已用 PE 数量/大小
  PE Size               4.00 MiB                               // 空闲 PE 数量/大小
  Total PE              12798
  Alloc PE / Size       0 / 0   
  Free  PE / Size       12798 / 49.99 GiB
  VG UUID               sBxwdY-vqhF-rGTz-6MkL-r8uq-S9lT-R4oN5A
### --- 增加卷组容量
[root@server11 ~]# vgextend scvg /dev/sdb3
  Volume group "scvg" successfully extended
 
~~~     把/dev/sdb7 物理卷也加入 scvg 卷组
[root@server11 ~]# vgdisplay
  VG Size               <74.99 GiB                             // 卷组容量增加
  PE Size               4.00 MiB
  Total PE              19197                                  // PE 总数增加
  Alloc PE / Size       0 / 0   
  Free  PE / Size       19197 / <74.99 GiB
  VG UUID               sBxwdY-vqhF-rGTz-6MkL-r8uq-S9lT-R4oN5A
### --- ——>实验环境,生产环境不操作<——
### --- 减小卷组容量(理论上可以缩减容量,但是不建议操作)
~~~     在卷组中删除/dev/sdb7 物理卷
[root@server11 ~]# vgreduce scvg /dev/sdb3
Removed "/dev/sdb7" from volume group "scvg"
 
~~~     删除所有的未使用物理卷
[root@server11 ~]# vgreduce -a
### --- 删除卷组
~~~     卷组删除之后,才能删除删除物理卷。还要注意的是 scvg 卷组还没有添加任何的逻辑卷,
~~~     那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。还记得我刚说的吗?
~~~     删除就是安装的反过程,每一步都不能跳过。

[root@server11 ~]# vgremove scvg
Volume group "scvg" successfully removed
六、逻辑卷管理
### --- 建立逻辑卷
~~~     选项:
~~~     -L 容量:指定逻辑卷大小,单位 MB,GB,TB 等
~~~     -l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
~~~     -n 逻辑卷名:指定逻辑卷名
~~~     那我们就建立一个 1.5GB 的 userlv 逻辑卷吧,建立命令如下:

[root@server11 ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
[root@localhost ~]# lvcreate -L 1.5G -n userlv scvg
Logical volume "userlv" created
~~~     在 scvg 卷组中建立 1.5GB 的 userlv 逻辑卷
~~~     建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。格式化和挂载命令和操作普通
~~~     分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的 userlv的设备文件名就是“/dev/scvg/userlv”,具体命令如下:
[root@localhost ~]# mkfs -t ext4 /dev/scvg/userlv
 
~~~     格式化
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/userlv /disklvm/
~~~     建立挂载点,并挂载

[root@localhost ~]# mount
~~~     …省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4 (rw)
~~~     已经挂载了
~~~     当然如果需要开机自动挂载,也要修改/etc/fstab 文件。
### --- 查看逻辑卷
~~~     同样的查看命令是两个,第一个命令 lvscan 只能看到系统中是否拥有逻辑卷,命令如下:

[root@localhost ~]# lvscan
ACTIVE      '/dev/scvg/userlv' [1.50 GiB] inherit
~~~     能够看到激活的逻辑卷,大小事 1.5GB
~~~     第二个命令是 lvdisplay 可以看到逻辑卷的详细信息,命令如下:

[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path        /dev/scvg/userlv                             // 逻辑卷设备文件名
LV Name         userlv                                      // 逻辑卷名
VG Name        scvg                                         // 所属的卷组名
LV UUID        2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access    read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status       available
~~~     open        1
LV Size        1.50 GiB                                     // 逻辑卷大小
Current LE      192
Segments       2
Allocation      inherit
Read ahead sectors  auto
- currently set to  256
Block device     253:0
### --- 调整逻辑卷大小
~~~     选项:
~~~     -L 容量:安装容量调整大小,单位 KB,GB,TB 等。使用+代表增加空间,-号代表减少空间。
~~~     如果直接写容量,代表设定逻辑卷大小为指定大小。-l 个数:按照 PE 个数调整逻辑卷大小
~~~     我们先在/disklvm 中建立点文件,一会调整完大小,我们看看数据是否会丢失:

[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
[root@localhost ~]# cd /disklvm/
[root@localhost disklvm]# touch testf
[root@localhost disklvm]# mkdir testd
[root@localhost disklvm]# ls
lost+found testd testf
~~~     我们刚刚的 userlv 的大小事 1.5GB,我们的 scvg 中还有 1.5GB 的空闲空间,
~~~     那么增加我们的userlv 逻辑卷的大小到 2.5GB 吧:

[root@localhost disklvm]# lvresize -L 2.5G /dev/scvg/userlv
Extending logical volume userlv to 2.50 GiB
Logical volume userlv successfully resized
~~~     增加 userlv 逻辑卷的大小到 2.5GB
~~~     当然命令也可以这样写 [root@localhost disklvm]# lvresize -L +1G /dev/scvg/userlv

[root@localhost disklvm]# lvdisplay
--- Logical volume ---
LV Path        /dev/scvg/userlv
LV Name             userlv
VG Name        scvg
LV UUID        2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access    read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status       available
# open        1
LV Size        2.50 GiB                                     // 大小改变了
Current LE      320
Segments        3
Allocation      inherit
Read ahead sectors  auto
- currently set to  256
Block device     253:0
~~~     逻辑卷的大小已经改变了,但是好像有些问题啊:
~~~     怎么/disklvm 分区的大小还是 1.5GB 啊?刚刚只是逻辑卷的大小改变了,
~~~     如果需要让分区使用这个新逻辑卷,我们还要使用 resize2fs 命令来调整分区的大小。
~~~     不过这里就体现了 LVM 的优势,我们不需要卸载分区,直接就能调整分区的大小。

[root@localhost disklvm]# df -h /disklvm/
~~~     文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 1.5G 35M 1.4G 3% /disklvm
~~~     resize2fs 命令如下:
~~~     选项:
~~~     -f:强制调整
~~~     设备文件名:指定调整哪个分区的大小
~~~     调整的大小:指定把分区调整到多大,要加 M,G 等单位。如果不加大小,会使用整个分区
~~~     那么我们已经把逻辑卷调整到了 2.5GB,这时我们就需要把整个逻辑卷都加入/disklvm 分区,命令如下:

[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
[root@localhost ~]# resize2fs /dev/scvg/userlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on /disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
~~~     已经调整了分区大小
[root@localhost ~]# df -h /disklvm/
 
~~~     文件系统  容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 2.5G 35M 2.4G 2% /disklvm
~~~     分区大小已经是 2.5GB 了
~~~     而且数据并没有丢失
 
[root@localhost ~]# ls /disklvm/
lost+found testd testf
### --- 删除逻辑卷

[root@localhost ~]# lvremove 逻辑卷设备文件名
~~~     我们删除 userlv 这个逻辑卷,记得删除时要先卸载。命令如下:

[root@localhost ~]# umount /dev/scvg/userlv
[root@localhost ~]# lvremove /dev/scvg/userlv

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(87)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示