Linux磁盘扩容

January 25, 2024 / Administrator / 22阅读 / 0评论/ 分类: Linux-Gun

Linux磁盘

磁盘分区

linux磁盘分区,分为2种格式:MBR和GPT

其中,MBR格式,大小必须要求小于2TB
GPT格式,大小不做限制,可以小于2TB,也可以大于2TB

创建分区的2个工具:fdisk & parted

Linux系统中有两个分区工具

  • fdisk
  • parted

二者都可以对linux的硬盘进行分区,但是二者从细节上来说,又有很大的区别,如果不加注意,有可能造成磁盘空间的浪费。

1、fdisk
(1)fdisk命令只支持msdos,分区的时候只支持小容量硬盘(<=2T),但是如果不需要分区的话,那么整块sdb硬盘,类型为msdos,那么他的大小是可以大于2T的。
(2)fdisk命令不支持gpt,所以当使用fdisk命令给gpt类型硬盘分区是会出现告警,就像下面例子中的WARNING

2、parted:

(1)支持msdos和gpt,可以支持大硬盘,也支持小硬盘。
(2)区分parted命令给msdos类型和gpt类型硬盘分区的不同:

上面说的msdos又被称为mbr

LVM:逻辑卷管理

LVM(Logical Volume Manager,逻辑卷管理器)是一种强大的磁盘管理工具,它为管理员提供了比传统分区管理更高效、更灵活的方式。

使用 lvm,用户可以创建、调整和管理逻辑卷,实现动态的磁盘空间分配和扩展。

1. 什么是 lvm?

LVM(Logical Volume Manager)是一种磁盘管理工具,它允许用户将多个物理磁盘和分区整合成一个虚拟的逻辑卷池。这种虚拟化存储的方式,使得磁盘的管理更加灵活,能够动态调整存储容量,而无需重新分区。

1.1 lvm 的主要特点
动态分配和扩展存储:可以根据需要动态扩展或缩减逻辑卷的大小。
卷组管理:多个物理磁盘可以组合成一个卷组,逻辑卷则是卷组中的一个子集。
快照功能:支持创建文件系统的快照,方便备份和恢复。
高效的空间利用:支持精细化的空间管理,最大程度提高磁盘空间的使用效率。

2. lvm 的基本组成

lvm 系统由三个主要部分组成:

物理卷(Physical Volume,PV):物理卷是 lvm 的基本存储单位,通常是磁盘分区或整个磁盘。它包含了存储的数据和元数据。
卷组(Volume Group,VG):卷组由一个或多个物理卷组成,它提供一个统一的存储池,可以在其上创建逻辑卷。
逻辑卷(Logical Volume,LV):逻辑卷是在卷组中分配出来的存储单元,类似于传统分区。它可以动态调整大小,适应不同的存储需求。

  1. 常用 lvm 命令
    lvm 提供了多种命令用于创建、管理和调整磁盘存储。以下是一些常用的 lvm 命令和操作示例:

3.1 创建物理卷
首先,使用 pvcreate 命令将磁盘或磁盘分区初始化为物理卷:

pvcreate /dev/sda1

/dev/sda1 是磁盘分区,创建物理卷后,它将变成 LVM 系统的一部分。

3.2 创建卷组
使用 vgcreate 命令将一个或多个物理卷组合成卷组:

 vgcreate vg_data /dev/sda1 /dev/sdb1

vg_data 是卷组的名称,/dev/sda1 和 /dev/sdb1 是物理卷的设备路径。

3.3 创建逻辑卷
在卷组中,使用 lvcreate 命令创建逻辑卷:

lvcreate -n lv_data -L 50G vg_data

lv_data 是逻辑卷的名称,L 50G 表示创建一个 50GB 的逻辑卷,vg_data 是逻辑卷所在的卷组。

3.4 扩展逻辑卷
逻辑卷的大小可以在创建后动态调整,使用 lvextend 命令扩展逻辑卷:

lvextend -L +20G /dev/vg_data/lv_data

L +20G 表示将 lv_data 逻辑卷扩展 20GB。
扩展逻辑卷后,需要调整文件系统的大小以匹配新的空间。

3.6 删除逻辑卷、卷组和物理卷
删除逻辑卷:

lvremove /dev/vg_data/lv_data

删除卷组:

vgremove vg_data

删除物理卷:

pvremove /dev/sda1

4.LVM的整体逻辑

1.将多个磁盘 或者 多个磁盘分区,进行格式化(xfs或者ext4),然后创建成多个物理卷

2.将多个物理卷,构建成一个卷组--- rl

3.根据需要,创建多个逻辑卷,这多个逻辑卷是构建在第2步的卷组基础上的,比如(rl-root、rl-swap、rl-home)。也就是说,逻辑卷本身只关注,使用卷组即可,不需要关注实际存储到哪个磁盘中

4.如果磁盘不够了,我们可以直接将新的磁盘,创建为新的物理卷,加入之前的卷组中,这样,在逻辑卷层面,就可以直接利用扩大后的卷组即可,就不需要关注加新磁盘的问题。

5. LVM 的优势与不足

5.1 优势
灵活性高:LVM 允许动态调整存储空间,可以轻松扩展或缩小磁盘分区。
高效空间利用:多个物理卷可以组合成卷组,有效提高磁盘空间的利用率。
快照功能:能够创建文件系统的快照,方便备份和恢复数据。
简化管理:比传统的分区管理方式更加简便,尤其适用于大规模的存储环境。
5.2 不足
复杂性:LVM 的学习曲线较为陡峭,初学者可能需要时间来掌握。
性能开销:由于 LVM 需要管理多个物理卷和逻辑卷,在某些情况下可能会引入一些性能开销。
恢复困难:在磁盘发生故障或逻辑卷损坏时,LVM 的恢复过程可能较为复杂。
6. 总结
LVM 是 Linux 系统中一个强大且灵活的磁盘管理工具,它允许用户根据需求动态调整磁盘分区大小、创建快照并进行高效的存储管理。对于大规模服务器或需要频繁扩展存储的环境,LVM 提供了比传统分区方式更高效的解决方案。掌握 lvm 的基本命令和高级功能,可以极大地提升系统管理员在磁盘管理方面的工作效率。

Vmware磁盘扩容

查看原系统

# 查看物理卷 

[root@localhost ~]# pvs
  PV             VG Fmt  Attr PSize   PFree
 /dev/nvme0n1p2 rl lvm2 a--  <18.91g 8.0


# 查看卷组

[root@localhost ~]# vgs
  VG #PV #LV #SN Attr   VSize   VFree
  rl   1   2   0 wz--n- <18.91g 8.00



# 查看逻辑卷
[root@localhost ~]# lvs
  LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rl -wi-ao---- <14.90g                              
  swap rl -wi-ao----   4.00g

# 查看数据盘和分区
[root@localhost ~]# df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  874M     0  874M   0% /dev
tmpfs               tmpfs     893M     0  893M   0% /dev/shm
tmpfs               tmpfs     893M  8.7M  885M   1% /run
tmpfs               tmpfs     893M     0  893M   0% /sys/fs/cgroup
/dev/mapper/rl-root xfs        15G  1.9G   14G  13% /
/dev/nvme0n1p1      xfs      1014M  191M  824M  19% /boot
tmpfs               tmpfs     179M     0  179M   0% /run/user/0


# 查看磁盘分区的格式,是MBR还是GPT

[root@localhost ~]# parted -l
Model: NVMe Device (nvme)
Disk /dev/nvme0n1: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  xfs          boot
 2      1075MB  21.4GB  20.3GB  primary               lvm




上面的msdos,表示是分区格式是:MBR分区

常见的,服务器上有3块磁盘,这3块磁盘,分别格式化,再变成物理卷。

接下来,这3个物理卷,再共同构成一个卷组---rl

最后,基于卷组rl,创建了几个逻辑卷,如下:

  • rl-root
  • rl-home
  • rl-swap

扩展磁盘

上面,我们能看到根目录下,原来的磁盘容量是15个G,我们想扩展到30个G。具体操作如下:

vmware扩展

关闭Vmware 的 Linux系统,这样,才能在VMWare菜单中设置。

输入你想要扩展到多少G。

上面的设置完成后,开启虚拟机

在虚拟机中的操作

[root@localhost ~]# df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  874M     0  874M   0% /dev
tmpfs               tmpfs     893M     0  893M   0% /dev/shm
tmpfs               tmpfs     893M  8.7M  885M   1% /run
tmpfs               tmpfs     893M     0  893M   0% /sys/fs/cgroup
/dev/mapper/rl-root xfs        15G  2.0G   13G  13% /
/dev/nvme0n1p1      xfs      1014M  191M  824M  19% /boot
tmpfs               tmpfs     179M     0  179M   0% /run/user/0

通过上面的命令,可以看到,根目录还是15G,磁盘的扩容,没有立即生效。所以,需要做以下操作

#  查看硬盘信息
[root@localhost ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1  2.2G  0 rom  
nvme0n1     259:0    0   35G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0 18.9G  0 part 
  ├─rl-root 253:0    0 14.9G  0 lvm  /
  └─rl-swap 253:1    0    4G  0 lvm  [SWAP]

# 创建新的分区

fdisk /dev/nvme0n1




Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


通过上面的命令提示,我们知道,想添加一个新分区,需要使用命令 n



Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (41756672-73400319, default 41756672): 
Last sector, +sectors or +size{K,M,G,T,P} (41756672-73400319, default 73400319): 

Created a new partition 3 of type 'Linux' and of size 15.1 GiB.


上面的命令,让我们选择是primary还是extend,我们选择了primary,代表主分区飞意思

然后,让我们选择分区编号,我们选了3。

然后,又让我们选择分区的开始值和结束值,都是使用默认值,直接敲击enter键即可。

接下来,输入命令w,意思是保存并退出fdisk分区工具

Command (m for help): w
The partition table has been altered.
Syncing disks.

接下来,查看硬盘信息:

[root@localhost ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1  2.2G  0 rom  
nvme0n1     259:0    0   35G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
├─nvme0n1p2 259:2    0 18.9G  0 part 
│ ├─rl-root 253:0    0 14.9G  0 lvm  /
│ └─rl-swap 253:1    0    4G  0 lvm  [SWAP]
└─nvme0n1p3 259:3    0 15.1G  0 part 

可以看到,编号为3的分区,已经添加上了,size是15.1G

# 分区格式化
mkfs -t xfs /dev/nvme0n1p3


# 创建物理卷
[root@localhost ~]# pvcreate /dev/nvme0n1p3
WARNING: xfs signature detected on /dev/nvme0n1p3 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/nvme0n1p3.
  Physical volume "/dev/nvme0n1p3" successfully created.


# 查看物理卷
[root@localhost ~]# pvs
  PV             VG Fmt  Attr PSize   PFree  
  /dev/nvme0n1p2 rl lvm2 a--  <18.91g   8.00m
  /dev/nvme0n1p3    lvm2 ---  <15.09g <15.09g


# 扩展卷组,nvme0n1p3加入到rl(这个名字从上面vgs中VG字段获取)

[root@localhost ~]# vgextend rl /dev/nvme0n1p3
  Volume group "rl" successfully extended

# 查看卷组[root@localhost ~]# vgs
  VG #PV #LV #SN Attr   VSize  VFree 
  rl   2   2   0 wz--n- 33.99g 15.09g


可以看到由原来的18.91G变成了33.99G。其中15.09G是空闲的

# 查看要扩容的文件系统的位置 ,这里是/dev/mapper/rl-root

[root@localhost ~]# df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  874M     0  874M   0% /dev
tmpfs               tmpfs     893M     0  893M   0% /dev/shm
tmpfs               tmpfs     893M  8.7M  885M   1% /run
tmpfs               tmpfs     893M     0  893M   0% /sys/fs/cgroup
/dev/mapper/rl-root xfs        15G  2.0G   13G  14% /
/dev/nvme0n1p1      xfs      1014M  191M  824M  19% /boot
tmpfs               tmpfs     179M     0  179M   0% /run/user/0


# 这个命令的意思是:将所有的空闲大小都加入到需要扩容的/dev/mapper/rl-root逻辑卷中

[root@localhost ~]# lvextend -l +100%free /dev/mapper/rl-root
  Size of logical volume rl/root changed from <14.90 GiB (3814 extents) to 29.99 GiB (7678 extents).
  Logical volume rl/root successfully resized.




# 扩容,调整分区
[root@localhost ~]# xfs_growfs /dev/mapper/rl-root
meta-data=/dev/mapper/rl-root    isize=512    agcount=4, agsize=976384 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=3905536, 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
data blocks changed from 3905536 to 7862272





# 查看,磁盘扩容是否成功:可以看到size已经从原来的15G,升级到现在的30G

[root@localhost ~]# df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  874M     0  874M   0% /dev
tmpfs               tmpfs     893M     0  893M   0% /dev/shm
tmpfs               tmpfs     893M  8.7M  885M   1% /run
tmpfs               tmpfs     893M     0  893M   0% /sys/fs/cgroup
/dev/mapper/rl-root xfs        30G  2.1G   28G   7% /
/dev/nvme0n1p1      xfs      1014M  191M  824M  19% /boot
tmpfs               tmpfs     179M     0  179M   0% /run/user/0


[root@localhost ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1  2.2G  0 rom  
nvme0n1     259:0    0   35G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
├─nvme0n1p2 259:2    0 18.9G  0 part 
│ ├─rl-root 253:0    0   30G  0 lvm  /
│ └─rl-swap 253:1    0    4G  0 lvm  [SWAP]
└─nvme0n1p3 259:3    0 15.1G  0 part 
  └─rl-root 253:0    0   30G  0 lvm  /


Debian中缩小home空间,增加/空间

缩小home空间

1.查看现有文件系统信息

root@debian:/opt/OpenJdk/Jdk17# df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
udev                        devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                       tmpfs     389M 1004K  388M   1% /run
/dev/mapper/debian--vg-root ext4      7.5G  1.3G  5.9G  18% /
tmpfs                       tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                       tmpfs     5.0M     0  5.0M   0% /run/lock
/dev/sda1                   ext2      470M   49M  397M  11% /boot
/dev/mapper/debian--vg-var  ext4      2.8G  275M  2.4G  11% /var
/dev/mapper/debian--vg-home ext4       27G   44K   26G   1% /home
/dev/mapper/debian--vg-tmp  ext4      551M   52K  510M   1% /tmp
tmpfs                       tmpfs     389M     0  389M   0% /run/user/0

通过上面的信息,我们知道 /dev/mapper/debian--vg-home逻辑卷,是挂载在/home目录下

2.卸载home

umount /home

3.在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态

e2fsck -f /dev/mapper/debian--vg-home

4.reduce the filesystem size

# 语法:resize2fs [现有逻辑卷名] [新的文件系统大小]


resize2fs /dev/mapper/debian--vg-home 4G

5.reduce the volume size

# 语法: lvreduce [新的 LVM 大小] [现有逻辑卷名称]

lvreduce -L 5G /dev/mapper/debian--vg-home

6.extend the filesystem to use the entire volume.

This is done by passing only the volume to resize2fs because if the "size parameter is not specified, it will default to the size of the partition".

resize2fs /dev/mapper/debian--vg-home

7.重新挂载

mount /dev/mapper/debian--vg-home /home

8.查看挂载后,文件系统的情况

root@debian:~# df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
udev                        devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                       tmpfs     389M  1.1M  388M   1% /run
/dev/mapper/debian--vg-root ext4      7.5G  1.3G  5.9G  18% /
tmpfs                       tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                       tmpfs     5.0M     0  5.0M   0% /run/lock
/dev/sda1                   ext2      470M   49M  397M  11% /boot
/dev/mapper/debian--vg-var  ext4      2.8G  275M  2.4G  11% /var
/dev/mapper/debian--vg-tmp  ext4      551M   52K  510M   1% /tmp
tmpfs                       tmpfs     389M     0  389M   0% /run/user/0
/dev/mapper/debian--vg-home ext4      4.8G   44K  4.5G   1% /home

扩展/空间

先扩展逻辑卷的物理边界,再调整文件系统

  1. lvextend 扩展逻辑卷的物理边界
    • lvextend -L [+]# /PATH/TO/LV_NAME 指定扩展后的容量,+表示在目前容量上直接增加#容量,如果#前面没有+,表示扩展后的容量为#
    • lvextend -l +100%FREE /PATH/TO/LV_NAME 把所有空余容量进行分配
  2. resize2fs 调整逻辑卷的文件系统
    • resize2fs /PATH/TO/LV # 调整文件系统到#,该值不能超过物理边界
    • resize2fs -p /PATH/TO/LV -p 表示打印已完成的百分比进度条
lvextend -l +100%free /dev/mapper/debian--vg-root
resize2fs -p /dev/mapper/debian--vg-root

检查扩容后的文件系统:

root@debian:~# df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
udev                        devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                       tmpfs     389M  1.1M  388M   1% /run
/dev/mapper/debian--vg-root ext4       30G  1.3G   28G   5% /
tmpfs                       tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                       tmpfs     5.0M     0  5.0M   0% /run/lock
/dev/sda1                   ext2      470M   49M  397M  11% /boot
/dev/mapper/debian--vg-var  ext4      2.8G  275M  2.4G  11% /var
/dev/mapper/debian--vg-tmp  ext4      551M   52K  510M   1% /tmp
tmpfs                       tmpfs     389M     0  389M   0% /run/user/0
/dev/mapper/debian--vg-home ext4      4.8G   44K  4.5G   1% /home

文章作者:Administrator

文章链接:http://localhost:8090//archives/1706152577505

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!


评论