Liunx磁盘管理(下)

中篇:https://blog.csdn.net/Lzcsfg/article/details/138355036

一.逻辑卷

逻辑卷(Logical Volume)是逻辑卷管理 (LVM) 中的一个概念,它为 Linux 系统中的存储管理提供了更大的灵活性和可扩展性。LVM 允许你将物理存储设备(如硬盘、分区)组合成一个或多个卷组,然后在这些卷组上创建逻辑卷。逻辑卷的好处是,你可以灵活地调整其大小、进行快照、添加或删除存储设备,而无需重建文件系统或损坏数据。

以下是关于逻辑卷的一些关键概念和操作:

  • 物理卷 (PV, Physical Volume):

    这是 LVM 中的最小存储单位。物理卷可以是整个硬盘、硬盘分区、RAID 设备等。

  • 卷组 (VG, Volume Group):

    这是由一个或多个物理卷组成的集合。一个卷组可以包含多个逻辑卷。

  • 逻辑卷 (LV, Logical Volume):

    这是在卷组上创建的抽象存储单元,可以看作是一个虚拟分区。逻辑卷可以用于创建文件系统,格式化为 ext4、XFS 等,甚至可以用于交换空间。

二.使用LVM 管理存储

bash 复制代码
#使用LVM相关命令前需下载对应的包管理工具(centos7)
yum install lvm2 -y

1.制作与查看物理卷

创建物理卷

bash 复制代码
#将物理设备 /dev/sdb 创建为一个物理卷(PV)
pvcreate /dev/sdb

查看物理卷命令pvs

bash 复制代码
#pvs 命令用于显示系统中物理卷的相关信息。
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   20.00g 20.00g


输出解释:
PV (Physical Volume):
列出了物理卷的名称或路径。
VG (Volume Group):
显示物理卷所属的卷组。这里,/dev/sda2 属于卷组 centos,而 /dev/sdb 没有分配给任何卷组。
Fmt (Format):
指示物理卷的格式。在这里,都是 lvm2,表示使用了 LVM2 格式。
Attr (Attributes):
显示物理卷的属性。a-- 表示物理卷是活动状态,--- 表示该物理卷未被激活或未被分配给任何卷组。
PSize (Physical Size):
指示物理卷的总大小。<19.00g 意味着约 19 GB,20.00g 意味着整整 20 GB。
PFree (Physical Free):
指示物理卷中未分配的空间。在这个例子中,/dev/sda2 已全部分配,没有剩余空间,而 /dev/sdb 上还有 20 GB 的未分配空间。

*如果 PFree 不为 0,表示卷组中还有未分配的空间,可以用来创建新的逻辑卷或扩展现有逻辑卷。

查看物理卷命令pvscan

复制代码
#pvscan 是一个 LVM 命令,用于扫描系统中的物理卷,列出所有已识别的物理卷及其相关信息。
[root@localhost ~]# pvscan
  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]
  PV /dev/sdb                       lvm2 [20.00 GiB]
  Total: 2 [<39.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [20.00 GiB]

输出解释:
Total:
表示物理卷的总数和总容量。这里是两个物理卷,合计约 39 GB。
in use:
显示已分配给卷组的物理卷数量和容量。这里显示一个物理卷 (19 GB)。
in no VG:
显示没有分配给任何卷组的物理卷及其容量。这里是 1 个物理卷 (20 GB)。

查看物理卷命令pvdisplay

复制代码
#pvdisplay 命令显示了物理卷的详细信息,包括它们的卷组、大小、可分配状态和其他属性。
[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               4wm0hN-R1oK-oZMf-yqui-clNU-9CFn-2bRWFs
   
  "/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               lKsemI-Q8mV-lgQb-1eqI-45D0-tqAF-g9Ds7z

输出解释:
第一部分(/dev/sda2)
PV Name:物理卷的名称,显示为 /dev/sda2。
VG Name:卷组的名称,显示为 centos。
PV Size:物理卷的总大小,约 19 GB。
Not usable:不可用空间,约 3.00 MiB。这可能是由于系统中的元数据等原因。
Allocatable:显示该物理卷是否可以分配,这里是 yes,但已全部分配完毕。
PE Size:物理扩展(Physical Extent)的大小,4.00 MiB。
Total PE:总的物理扩展数量,4863。
Free PE:可用的物理扩展,0。
Allocated PE:已分配的物理扩展,4863。
PV UUID:物理卷的唯一标识符。
第二部分(/dev/sdb)
PV Name:物理卷的名称,显示为 /dev/sdb。
VG Name:卷组的名称,这里为空,表明该物理卷没有分配给任何卷组。
PV Size:物理卷的总大小,20.00 GiB。
Allocatable:显示该物理卷是否可分配,这里是 NO。可能是因为它还没有加入任何卷组。
PE Size:这里是 0,说明没有被配置。
Total PE、Free PE、Allocated PE:都为 0,表明物理卷没有加入卷组。
PV UUID:物理卷的唯一标识符。

2.制作与查看卷组

创建卷组

bash 复制代码
#创建了一个名为 xiyangyang 的卷组,并且物理卷 /dev/sdb 是这个卷组的成员。
vgcreate xiyangyang /dev/sdb

查看卷组命令vgs

bash 复制代码
#vgs 命令显示系统中的卷组信息,包括卷组中物理卷、逻辑卷、快照的数量,卷组的大小、可用空间等。
[root@localhost ~]# vgs
  VG         #PV #LV #SN Attr   VSize   VFree  
  centos       1   2   0 wz--n- <19.00g      0 
  xiyangyang   1   0   0 wz--n- <20.00g <20.00g

输出解释
VG (Volume Group):
显示卷组的名称,输出中有 centos 和 xiyangyang 两个卷组。
#PV (Number of Physical Volumes):
这是卷组中物理卷的数量。centos 有 1 个物理卷,xiyangyang 也有 1 个。
#LV (Number of Logical Volumes):
表示卷组中逻辑卷的数量。centos 有 2 个逻辑卷,而 xiyangyang 还没有创建任何逻辑卷。
#SN (Number of Snapshots):
这是卷组中的快照数量。在这个输出中,两个卷组都没有快照。
Attr (Attributes):
这是卷组的属性。wz--n- 表示卷组是写入启用 (w)、已激活 (z)、没有快照 (-n-)。
VSize (Volume Size):
显示卷组的总大小。<19.00g 表示 centos 的大小约为 19 GB,而 xiyangyang 的大小是 20 GB。
VFree (Volume Free Space):
指示卷组中未分配的空间。centos 没有剩余空间,而 xiyangyang 有 20 GB 的可用空间。

查看卷组命令vgscan

bash 复制代码
#vgscan 命令用于扫描系统中的卷组,并找到所有可用的卷组。它通常用于初始化 LVM 配置或确保卷组已正确识别。
[root@localhost ~]# vgscan
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "xiyangyang" using metadata type lvm2

输出解释
Reading volume groups from cache:
这是指 LVM 正在从缓存中读取卷组信息,这有助于加快扫描速度。
Found volume group "centos" using metadata type lvm2:
表示找到了卷组 "centos",且它使用的是 LVM2 的元数据类型。
Found volume group "xiyangyang" using metadata type lvm2:
表示找到了卷组 "xiyangyang",它也使用了 LVM2 的元数据。

查看卷组命令vgdisplay

bash 复制代码
#vgdisplay 命令用于显示卷组的详细信息,包括卷组的大小、属性、物理卷、逻辑卷等。
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               b9ctMD-kI3l-Azac-ofR2-ZNvO-Xu50-uct77x
   
  --- Volume group ---
  VG Name               xiyangyang
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <20.00 GiB
  PE Size               4.00 MiB
  Total PE              5119
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5119 / <20.00 GiB
  VG UUID               nENBur-4t0X-OMp1-SAac-wxer-Qvdm-Ehn9Dw

输出解释:
centos 卷组
VG Name:这是卷组的名称,显示为 centos。
VG Access:显示卷组的访问权限,这里是 read/write,表示卷组可以读写。
VG Status:显示卷组的状态,resizable 表示卷组可以调整大小。
Cur LV / Open LV:表示当前逻辑卷的数量和正在使用的逻辑卷数量。centos 有 2 个逻辑卷,并且都处于打开状态。
Cur PV / Act PV:显示当前物理卷的数量和活动的物理卷数量。centos 有 1 个物理卷。
VG Size:显示卷组的总大小,约 19 GB。
PE Size:物理扩展(Physical Extent)的大小,这里是 4.00 MiB。
Total PE:总的物理扩展数量,4863。
Alloc PE / Size:已分配的物理扩展数量和对应的大小。centos 的所有物理扩展都已分配。
Free PE / Size:未分配的物理扩展数量和对应的大小,centos 没有未分配的空间。
xiyangyang 卷组
VG Name:这是卷组的名称,显示为 xiyangyang。
VG Access:显示卷组的访问权限,也是 read/write。
VG Status:显示卷组的状态,resizable。
Cur LV / Open LV:xiyangyang 尚未创建逻辑卷。
Cur PV / Act PV:xiyangyang 只有 1 个物理卷。
VG Size:显示卷组的总大小,约 20 GB。
PE Size:物理扩展的大小,4.00 MiB。
Total PE:总的物理扩展数量,5119。
Alloc PE / Size:xiyangyang 尚未分配任何物理扩展。
Free PE / Size:显示未分配的物理扩展和对应的大小,整个卷组的 20 GB 都未分配。

3.制作与查看逻辑卷

创建逻辑卷

bash 复制代码
#创建逻辑卷lvcreate -L  <大小> -n <逻辑卷名称> <卷组>

#在卷组 xiyangyang 中创建一个名为 xian 的逻辑卷,并指定该逻辑卷的大小为 10 GB。
lvcreate -L 10G -n xian  xiyangyang
#这个创建语法表示分配卷组中所有剩余的可用空间给新建的逻辑卷
lvcreate -l +100%FREE -n xian1 xiyangyang

#这个表示命令用于在指定的卷组 xiyangyang 中创建一个名为 xian2 的逻辑卷,并且指定其大小为 2256 个物理扩展 (PE)。
#物理扩展(PE)✖ 4 就等于实际大小,这里默认1PE等于4,是个单位
lvcreate -l +2256 -n xian2 xiyangyang

查看逻辑卷命令lvs

bash 复制代码
#lvs 命令用于显示系统中的逻辑卷信息,包括逻辑卷的名称、所属卷组、属性、大小等。
[root@localhost ~]# lvs
  LV    VG         Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  centos     -wi-ao---- <17.00g                                                    
  swap  centos     -wi-ao----   2.00g                                                    
  xian  xiyangyang -wi-a-----  10.00g                                                    
  xian1 xiyangyang -wi-a----- <10.00g    

输出解释
LV (Logical Volume):
这是逻辑卷的名称。这里列出了四个逻辑卷:root、swap、xian 和 xian1。
VG (Volume Group):
显示逻辑卷所属的卷组。root 和 swap 属于 centos 卷组,而 xian 和 xian1 属于 xiyangyang 卷组。
Attr (Attributes):
这是逻辑卷的属性,解释如下:
-wi-a----- 表示逻辑卷处于写入/读取状态(w),独立的(-),没有镜像(-),被激活(a)。
其他属性位未使用(-----)。
LSize (Logical Size):
显示逻辑卷的大小。<17.00g 表示大小约为 17 GB,10.00g 表示 10 GB,<10.00g 表示接近 10 GB。
其他字段:
Pool、Origin、Data%、Meta%、Move、Log、Cpy%Sync、Convert 在这个输出中没有显式使用。这些字段用于高级 LVM 功能,如精简池、快照、数据同步等。

查看逻辑卷命令lvscan

bash 复制代码
#lvscan 命令用于扫描系统中的逻辑卷,显示所有逻辑卷的状态、大小、名称和其他信息。
[root@localhost ~]# lvscan
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<17.00 GiB] inherit
  ACTIVE            '/dev/xiyangyang/xian' [10.00 GiB] inherit
  ACTIVE            '/dev/xiyangyang/xian1' [<10.00 GiB] inherit

输出解释
ACTIVE:
表示逻辑卷处于活动状态,已被激活。逻辑卷必须激活后才能使用。
逻辑卷路径:
显示逻辑卷的完整路径,包含卷组名称和逻辑卷名称。这里列出了四个逻辑卷:
/dev/centos/swap:这是 centos 卷组中的交换空间逻辑卷,大小为 2.00 GiB。
/dev/centos/root:这是 centos 卷组中的根文件系统逻辑卷,大小接近 17.00 GiB。
/dev/xiyangyang/xian:这是 xiyangyang 卷组中的逻辑卷,大小为 10.00 GiB。
/dev/xiyangyang/xian1:同样属于 xiyangyang 卷组,大小接近 10.00 GiB。
大小:
显示逻辑卷的大小。这里显示了每个逻辑卷的大小,如 2.00 GiB、10.00 GiB 等。
属性:
inherit 表示逻辑卷继承卷组的属性。

查看逻辑卷命令lvdisplay

bash 复制代码
#lvdisplay 命令用于显示逻辑卷的详细信息,包括逻辑卷的路径、卷组、UUID、大小、状态等。
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                wZicUM-z8A4-INWI-OrW4-AzVT-HWgL-umIEhd
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-04-30 23:31:50 +0800
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                Z4fNXw-8BCq-GQ1q-HbcF-d7dQ-lSUZ-4TcBcK
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-04-30 23:31:50 +0800
  LV Status              available
  # open                 1
  LV Size                <17.00 GiB
  Current LE             4351
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/xiyangyang/xian
  LV Name                xian
  VG Name                xiyangyang
  LV UUID                oir4Ry-ktK1-Mrg1-6csm-dTwx-eWEI-AbLsKt
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2024-05-06 11:44:19 +0800
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/xiyangyang/xian1
  LV Name                xian1
  VG Name                xiyangyang
  LV UUID                lYoR2I-RdI3-cBZ1-X4G1-mKh3-0UtA-icr0fo
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2024-05-06 11:46:39 +0800
  LV Status              available
  # open                 0
  LV Size                <10.00 GiB
  Current LE             2559
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3


输出解释
LV Path:
这是逻辑卷的路径。这里显示了四个逻辑卷的路径,分别为 /dev/centos/swap、/dev/centos/root、/dev/xiyangyang/xian、/dev/xiyangyang/xian1。
LV Name:
显示逻辑卷的名称。这里对应的逻辑卷名称分别是 swap、root、xian 和 xian1。
VG Name:
显示逻辑卷所属的卷组。centos 是前两个逻辑卷的卷组,xiyangyang 是后两个逻辑卷的卷组。
LV UUID:
每个逻辑卷都有唯一的 UUID,用于在系统中唯一标识它。
LV Write Access:
显示逻辑卷的访问权限,read/write 表示可以读写。
LV Status:
表示逻辑卷的状态。available 表示逻辑卷可用。
LV Size:
显示逻辑卷的大小。例如,2.00 GiB 表示 2 GB,<17.00 GiB 表示接近 17 GB。
Current LE:
这是逻辑卷的物理扩展 (PE) 数量。
Segments:
显示逻辑卷的段数。这里所有逻辑卷都有一个段。
Read ahead sectors:
这是逻辑卷的读取提前量,在这个例子中是自动设置的 8192。
Block device:
这是逻辑卷的块设备号,253:3。

4.制作文件系统

在 Linux 系统中,当使用 LVM 时,逻辑卷相当于虚拟分区,因此无需进一步的分区步骤。逻辑卷创建后,可以立即在其上创建文件系统。这意味着不需要像传统硬盘分区那样使用 fdisk 或 parted 创建分区。

在创建逻辑卷那一步时,我实际创建拉两个逻辑卷xian 和xian1进行演示。

格式化逻辑卷

bash 复制代码
#xian逻辑卷创建文件系统为xfs
mkfs.xfs /dev/xiyangyang/xian
#xian1逻辑卷创建文件系统为ext4
mkfs.ext4 /dev/xiyangyang/xian1

5.挂载逻辑卷

挂载的方法有三种,具体可以看磁盘管理(中) ,这里我采用配置到/etc/fstab文件中。

创建挂载点的文件夹

bash 复制代码
#创建挂载点的文件夹,一个叫lv1  另一个叫lv2
mkdir /mnt/lv{1..2}

查看块设备信息

bash 复制代码
[root@localhost ~]# 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 
  ├─centos-root    253:0    0   17G  0 lvm  /
  └─centos-swap    253:1    0    2G  0 lvm  [SWAP]
sdb                  8:16   0   20G  0 disk 
├─xiyangyang-xian  253:2    0   10G  0 lvm  
└─xiyangyang-xian1 253:3    0   10G  0 lvm  
sdc                  8:32   0   20G  0 disk 
├─sdc1               8:33   0    5G  0 part /mnt/dire1
└─sdc2               8:34   0   15G  0 part /mnt/dire2
sdd                  8:48   0   20G  0 disk 
sde                  8:64   0   20G  0 disk 
sr0                 11:0    1  973M  0 rom  

#这里可以看到sdb硬盘的两个逻辑卷xian和xian1

挂载

bash 复制代码
#给/etc/fstab文件添加命令信息
echo "/dev/xiyangyang/xian /mnt/lv1 xfs defaults 0 0" >> /etc/fstab
echo "/dev/xiyangyang/xian1 /mnt/lv2 ext4 defaults 0 0" >> /etc/fstab

#检查是否出错并使其生效,没有任何提示代表正确
mount -a

再次使用lsblk命令就可以看到挂载成功拉。

三.LVM逻辑卷扩容

LVM (逻辑卷管理) 提供了灵活的存储管理方式,允许动态扩展逻辑卷的大小,而无需重新分区或重建文件系统。要扩展 LVM 逻辑卷,通常需要几个步骤,包括扩展逻辑卷和调整文件系统大小。

扩展 LVM 逻辑卷

要扩展逻辑卷,需要确保卷组中有足够的可用空间。如果没有足够的空间,可以先将新的物理卷添加到卷组。

查看卷组的可用空间

在扩展逻辑卷之前,查看卷组中是否有可用空间。

bash 复制代码
vgdisplay <卷组名>

#查看xiyangyang卷组是否有可用空间
[root@localhost ~]# vgdisplay xiyangyang
  --- Volume group ---
  VG Name               xiyangyang
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <20.00 GiB
  PE Size               4.00 MiB
  Total PE              5119
  Alloc PE / Size       5119 / <20.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               nENBur-4t0X-OMp1-SAac-wxer-Qvdm-Ehn9Dw

#在其中的信息可以看出剩余空间为0
#*注意:如果逻辑卷所在的卷组有空间直接扩容就ok了!*

新增硬盘创建成物理卷

bash 复制代码
#新加拉一块硬盘,将这块盘制作成物理卷,我新加的这块叫sdd,使用lsblk查看
pvcreate /dev/sdd

给卷组添加物理卷

在添加物理卷时使用 lvdisplay 查看逻辑卷的详细信息,确保逻辑卷的状态是 available。

bash 复制代码
#给xiyangyang卷组添加物理卷
vgextend xiyangyang /dev/sdd

#使用vgs可以看到,vgextend 命令表明已将新的物理卷 /dev/sdd 添加
#到卷组 xiyangyang,这使得卷组的总大小变成了近 40 GB,并且
#有约 20 GB 的可用空间。
[root@localhost ~]# vgs
  VG         #PV #LV #SN Attr   VSize   VFree  
  centos       1   2   0 wz--n- <19.00g      0 
  xiyangyang   2   2   0 wz--n-  39.99g <20.00g

在成功扩展卷组后,下一步是扩展逻辑卷。

扩展逻辑卷

要扩展逻辑卷,使用 lvextend 命令。在扩展逻辑卷之前,请确保逻辑卷没有被挂载,或者如果挂载了,要注意在扩展后调整文件系统大小。这里上面的演示步骤已经挂载拉,接下来扩容要注意是调整文件系统的大小。

bash 复制代码
#如下是两个扩容方式的命令,上面的学习中我在xiyangyang卷组中有xian和xian1两个逻辑卷
#现在我要将xian逻辑卷扩容,我使用下述第一个命令来扩容10G大小。

#扩展特定大小:如果要将逻辑卷扩展一定大小,例如增加 10 GB,您可以使用以下命令:
lvextend -L +10G /dev/xiyangyang/xian

#扩展到所有可用空间:如果要将逻辑卷扩展到卷组中所有可用空间,可以使用以下命令:
lvextend -l +100%FREE /dev/xiyangyang/xian

调整文件系统

  • XFS 文件系统必须在挂载状态下扩展。因为 XFS
    依赖其内置机制来处理扩展操作,扩展时,系统会调整相关的元数据和内部结构请确保逻辑卷已经挂载,使用 xfs_growfs 命令调整文件系统。
  • ext4文件系统可以在挂载状态和卸载状态下扩展,但通常在未挂载状态下进行更安全。如果文件系统在挂载状态下扩展,可能需要重启相关服务以确保文件系统正常工作。ext4使用resize2fs命令。

xian逻辑卷我在上方步骤使用的是xfs文件系统,因此下方我使用xfs_growfs命令。

bash 复制代码
xfs_growfs /dev/xiyangyang/xian

这里使用lsblk和df -Th就可以查看其容量就已经扩容好拉。

四.LVM逻辑卷缩容

文件系统是否支持缩容(即缩小文件系统的大小)取决于文件系统的设计和内部结构。以下是一些常见文件系统及其是否支持缩容的说明:

  • 支持缩容的文件系统:

ext4:支持缩容。使用 resize2fs 可以缩小 ext4 文件系统。

ext3/ext2:与 ext4 类似,支持缩容。

  • 不支持缩容的文件系统:

XFS:不支持缩容。一旦创建了 XFS 文件系统,其大小无法缩小。

ZFS:ZFS 也不支持缩容。其设计是自适应扩展的。

btrfs:虽然 btrfs 在某些特定条件下可以缩容,但在生产环境中不建议尝试,因为这可能导致数据损坏。

重要提示:在进行任何磁盘操作前,请务必备份重要数据。操作错误可能导致数据丢失。

缩容步骤

因此下述演示学习我依照上方的步骤去创建拉一个ext4文件系统的逻辑卷,该卷有20G容量,现将其缩小至10G。

1.备份数据:这是最重要的一步。请确保您已经备份了逻辑卷中的所有重要数据。

2.卸载逻辑卷:为了确保操作的安全性与可行性,先将逻辑卷卸载。

配置拉/etc/fstab和/etc/rc.d/rc.local文件的挂载需要先删除里面的挂载命令信息再执行一下这条卸载命令

bash 复制代码
umount /dev/xiyangyang/xian

3.检查文件系统:在缩小逻辑卷之前,先检查文件系统是否有错误。

bash 复制代码
e2fsck -f /dev/xiyangyang/xian

4.缩小文件系统:缩小文件系统时,确保缩小的尺寸不会小于文件系统当前实际占用的空间。

bash 复制代码
#将逻辑卷中的文件系统缩小到10GB。
resize2fs /dev/xiyangyang/xian 10G

5.缩小逻辑卷:现在可以缩小逻辑卷。确保您缩小的尺寸不小于上一步中的文件系统尺寸。

bash 复制代码
#将逻辑卷缩小到10GB
lvreduce -L 10G /dev/xiyangyang/xian
#然后有个提示让你是否确认,输入y回车即可

6.重挂载(/etc/fstab)

bash 复制代码
echo "/dev/xiyangyang/xian /mnt/lv1 ext4 defaults 0 0" >> /etc/fstab
bash 复制代码
mount -a

五.交换分区

交换分区管理 Swap---也叫虚拟内存,在Linux和其他类Unix操作系统中是用来作为内存的备用资源。当系统的物理内存不足时,操作系统会将不活跃的数据从内存移动到交换分区,从而释放内存用于更重要的任务。这种机制可以帮助系统在内存有限v的情况下继续运行,而不至于崩溃。

在Linux中,交换可以有两种形式:

  • 交换分区(Swap Partition):
    这是一种专用的磁盘分区,整个分区都用于交换用途。在系统安装时,通常会设置一个交换分区。
  • 交换文件(SwapFile):
    这是一个位于普通文件系统中的文件,但其用途与交换分区相同。交换文件通常用于已经没有多余分区但需要增加交换空间的情况。

swap分区大小设置规则

在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。

内存小于4GB时,推荐不少于2GB的swap空间;

内存4GB~16GB,推荐不少于4GB的swap空间;

内存16GB~64GB,推荐不少于8GB的swap空间;

内存64GB~256GB,推荐不少于16GB的swap空间。

查看当前交换分区

bash 复制代码
free -m

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3770         230        3416          11         124        3355
Swap:          2047           0        2047

[root@localhost ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	0	-2

交换分区

bash 复制代码
[root@localhost ~]# fdisk /dev/sde       #将磁盘sde用来做交换分区
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x10d45376 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n          #创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p                   #扩展分区
分区号 (1-4,默认 1):                   #使用默认,直接回车
起始 扇区 (2048-41943039,默认为 2048):  #使用默认,直接回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):                             #使用默认,直接回车
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
            #这里我用拉sde的全部,也就是20G当作一个区拉

命令(输入 m 获取帮助):w         #保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# 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 
  ├─centos-root    253:0    0   17G  0 lvm  /
  └─centos-swap    253:1    0    2G  0 lvm  [SWAP]
sdb                  8:16   0   20G  0 disk 
├─xiyangyang-xian  253:2    0   20G  0 lvm  /mnt/lv1
└─xiyangyang-xian1 253:3    0   10G  0 lvm  /mnt/lv2
sdc                  8:32   0   20G  0 disk 
sdd                  8:48   0   20G  0 disk 
├─sdd1               8:49   0    5G  0 part 
└─xiyangyang-xian  253:2    0   20G  0 lvm  /mnt/lv1
sde                  8:64   0   20G  0 disk 
└─sde1               8:65   0   20G  0 part 
sr0                 11:0    1  973M  0 rom  
[root@localhost ~]# partprobe /dev/sdd   #刷新分区表
[root@localhost ~]# mkswap /dev/sde1     #格式化交换分区
正在设置交换空间版本 1,大小 = 20970492 KiB
无标签,UUID=df92a7a8-576f-46e1-8b8a-f840f97b0fdb
[root@localhost ~]# echo " UUID="df92a7a8-576f-46e1-8b8a-f840f97b0fdb" swap swap defaults  0 0" >> /etc/fstab 
  
#配置/etc/fstab文件 加入拉配置信息,这里用UUID值也可以配置

[root@localhost ~]# swapon -a    #激活swap分区(读取/etc/fstab)
[root@localhost ~]# swapon -s    #查看当前系统上已激活的交换分区或交换文件

文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	0	-2
/dev/sde1                              	partition	20970492	0	-3

#这里已经成功拉!
扩展:swapoff /dev/sde1  #关闭swap分区|  swapoff <分区名或路径>
	 swapoff -a 是一个用于停用系统上所有已激活交换分区和交换文件的命令。

交换文件

bash 复制代码
[root@localhost ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512    

#这个命令会创建一个大小为 512 MB 的文件 swap2.img,其中全部内容为零。#这个文件可以用来作为交换文件

记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,1.90825 秒,281 MB/秒
[root@localhost ~]# mkswap /swap2.img
正在设置交换空间版本 1,大小 = 524284 KiB
无标签,UUID=5a5fc05d-cac2-489e-bdcb-3fa6a85da4b1
[root@localhost ~]# chmod 600 /swap2.img

#为了安全起见,交换文件应该只有 root 用户可读写

[root@localhost ~]# blkid /swap2.img   #查看/swap2.img的UUID
/swap2.img: UUID="5a5fc05d-cac2-489e-bdcb-3fa6a85da4b1" TYPE="swap" 
[root@localhost ~]# echo "UUID="5a5fc05d-cac2-489e-bdcb-3fa6a85da4b1" swap swap defaults  0 0" >> /etc/fstab 
#配置/etc/fstab文件 加入拉配置信息,这里用/etc/fstab的UUID值也可以配置

[root@localhost ~]# swapon -a    #激活swap分区(读取/etc/fstab)
[root@localhost ~]# swapon -s    # #查看当前系统上已激活的交换分区或交换文件
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	0	-2
/dev/sde1                              	partition	20970492	0	-3
/swap2.img                             	file	524284	0	-4

#OK,到这就完成拉!

六.磁盘阵列

磁盘阵列(RAID,Redundant Array of Independent Disks)是一种将多个物理磁盘组合在一起形成一个逻辑单元的方法,以提高数据的冗余性、性能或两者兼而有之。RAID 的主要目的是提供数据冗余和容错能力,或者通过并行处理提高性能。下面是关于磁盘阵列的概述,包括不同级别的 RAID 和它们的特征:

常见的 RAID 级别(理论要记熟)

  • RAID 0(条带化,Striping):

将数据均匀分布在多个磁盘上,提供最高的读写性能,但没有冗余。如果一个磁盘损坏,整个阵列的数据都可能丢失。

  • RAID 1(镜像,Mirroring):

数据在两个磁盘上完全复制,提供了高冗余性和容错能力。如果一个磁盘损坏,数据仍然可以从另一个磁盘中恢复。但存储效率低,只能利用一半的总磁盘空间。

  • RAID 5:

使用奇偶校验技术,提供了较好的冗余性和存储效率。奇偶校验块分布在所有磁盘上。至少需要三个磁盘。如果一个磁盘损坏,数据仍然可以恢复;但是,如果同时损坏两个磁盘,则数据会丢失。

  • RAID 6:

类似于 RAID 5,但使用两个奇偶校验块,因此可以容忍两个磁盘的故障。适用于需要更高冗余性的环境,但写入性能可能略低于 RAID 5。

  • RAID 10(RAID 1+0):

将 RAID 0 的性能和 RAID 1 的冗余性结合在一起。需要至少四个磁盘。数据在一组磁盘上进行镜像,然后再在镜像组间进行条带化。提供高性能和高冗余性,但存储效率较低。

  • 其他 RAID 级别

RAID 2、3、4:这些较少使用的 RAID 级别有其特定的奇偶校验和数据分布方式。

RAID 50、60:这些是 RAID 5 和 RAID 6 的组合形式,适用于更大规模的存储环境。

RAID 的应用

  • 数据冗余:RAID 在服务器和存储系统中广泛应用,用于确保数据的高可用性和容错能力。 性能优化:RAID 0 和 RAID 10
  • 提供了高性能,适合需要快速读写的环境,如数据库或高性能计算。 数据恢复:RAID
  • 允许在磁盘故障后恢复数据,但不应被视为数据备份的替代品。RAID 提供冗余,但仍然需要定期备份。

注意事项

  • 备份:即使使用 RAID,也要定期备份数据,因为 RAID 无法防止数据被意外删除或损坏。
  • RAID 控制器:硬件 RAID 和软件 RAID 的选择会影响性能和灵活性。硬件 RAID 通常具有更好的性能,但可能需要特定的 RAID 控制器;软件 RAID 更灵活,使用系统内置的功能实现 RAID。
  • 故障恢复:RAID 的容错能力不同,数据恢复的过程和时间也不同。在选择 RAID 级别时,请考虑您的业务需求和数据恢复策略。
相关推荐
jimy12 小时前
安卓里运行Linux
linux·运维·服务器
爱凤的小光3 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
耗同学一米八4 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S5 小时前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_890443025 小时前
Linux 基础IO
linux·c语言
智慧地球(AI·Earth)6 小时前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
老王熬夜敲代码7 小时前
解决IP不够用的问题
linux·网络·笔记
zly35007 小时前
linux查看正在运行的nginx的当前工作目录(webroot)
linux·运维·nginx
QT 小鲜肉7 小时前
【Linux命令大全】001.文件管理之file命令(实操篇)
linux·运维·前端·网络·chrome·笔记
问道飞鱼8 小时前
【Linux知识】Linux 虚拟机磁盘扩缩容操作指南(按文件系统分类)
linux·运维·服务器·磁盘扩缩容