分享

Linux 磁盘管理,挂载分区管理,磁盘分区扩容缩容管理,详细教程

 蚂蚁家园 2022-04-22

一、Linux磁盘基本信息查看命令

df -h 查看已经在使用或挂载的磁盘信息。查看的是文件系统的大小

ubuntu@ubuntu:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                               1.9G     0  1.9G   0% /dev
tmpfs                              391M  1.5M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   19G  6.8G   11G  39% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop1                          71M   71M     0 100% /snap/lxd/21029
/dev/sda2                          976M  107M  803M  12% /boot
/dev/loop0                          62M   62M     0 100% /snap/core20/1242
/dev/loop2                          56M   56M     0 100% /snap/core18/2253
/dev/loop4                          33M   33M     0 100% /snap/snapd/12704
/dev/loop3                          56M   56M     0 100% /snap/core18/2128
/dev/loop5                          43M   43M     0 100% /snap/snapd/14066
/dev/loop6                          68M   68M     0 100% /snap/lxd/21835
tmpfs                              391M     0  391M   0% /run/user/1000
/dev/sdb2                          1.8G  5.6M  1.7G   1% /mnt

关键是重要的系统分区挂载:

/dev/mapper/ubuntu--vg-ubuntu--lv   19G  6.8G   11G  39% /
/dev/sda2                          976M  107M  803M  12% /boot

lsblk 查看所有存在的磁盘及分区(不管使用挂载是否),查看的是磁盘的大小

在此sda为默认磁盘,系统也在这块磁盘之中,操作需谨慎在谨慎,尤其是sda3分区。

ubuntu@ubuntu:~$ lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 61.9M  1 loop /snap/core20/1242
loop1                       7:1    0 70.3M  1 loop /snap/lxd/21029
loop2                       7:2    0 55.5M  1 loop /snap/core18/2253
loop3                       7:3    0 55.4M  1 loop /snap/core18/2128
loop4                       7:4    0 32.3M  1 loop /snap/snapd/12704
loop5                       7:5    0 42.2M  1 loop /snap/snapd/14066
loop6                       7:6    0 67.2M  1 loop /snap/lxd/21835
sda                         8:0    0   20G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0   19G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   19G  0 lvm  /
sdb                         8:16   0   20G  0 disk 
├─sdb1                      8:17   0   99M  0 part 
└─sdb2                      8:18   0  1.9G  0 part /mnt

lsblk -f 查看磁盘分区格式,有格式才能挂载成功。

ubuntu@ubuntu:~$ lsblk -f
NAME                      FSTYPE      LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
loop0                     squashfs                                                       0   100% /snap/core20/1242
loop1                     squashfs                                                       0   100% /snap/lxd/21029
loop2                     squashfs                                                       0   100% /snap/core18/2253
loop3                     squashfs                                                       0   100% /snap/core18/2128
loop4                     squashfs                                                       0   100% /snap/snapd/12704
loop5                     squashfs                                                       0   100% /snap/snapd/14066
loop6                     squashfs                                                       0   100% /snap/lxd/21835
sda                                                                                               
├─sda1                                                                                            
├─sda2                    ext4              d5001b8f-61a9-4256-a0b9-a80655679a94    802.7M    11% /boot
└─sda3                    LVM2_member       AHD2gO-JnY7-HtBk-fazX-yTYH-9oBh-venh4n                
  └─ubuntu--vg-ubuntu--lv ext4              e5f6d371-d930-4ff3-a798-b01e0ba04d9a     10.9G    36% /
sdb                                                                                               
├─sdb1                    ext4              ae939992-ca1f-4acc-878e-500f6ce2371b                  
└─sdb2                    ext4              e9278c58-39b8-4825-99f6-d055ca818ad0      1.7G     0% /mnt

分区无格式的,通过以下命令格式化分区格式。

#格式化/dev/sdb2为ext4格式。
sudo mkfs.ext4 /dev/sdb2
#或者
sudo mkfs -t ext4 /dev/sdb2

二、添加新硬盘直接挂载,或分区后挂载

1:直接挂载整个硬盘

添加一块新硬盘,注:是添加一块新硬盘,不是扩容硬盘。

添加后的硬盘名字信息为:sdb,sbc,sdd....以此类推。

如这里添加一块sdb,没有任何操作,是没法挂载。

ubuntu@ubuntu:~$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 61.9M  1 loop /snap/core20/1242
loop1                       7:1    0 70.3M  1 loop /snap/lxd/21029
loop2                       7:2    0 55.5M  1 loop /snap/core18/2253
loop3                       7:3    0 55.4M  1 loop /snap/core18/2128
loop4                       7:4    0 32.3M  1 loop /snap/snapd/12704
loop5                       7:5    0 42.2M  1 loop /snap/snapd/14066
loop6                       7:6    0 67.2M  1 loop /snap/lxd/21835
sda                         8:0    0   20G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0   19G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   19G  0 lvm  /
sdb                         8:16   0   20G  0 disk 

格式化,挂载。

#格式化硬盘
sudo mkfs.ext4 /dev/sdb
#挂载硬盘
sudo mount /dev/sdb /mnt/
#查看挂载信息
df -h
ubuntu@ubuntu:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                               1.9G     0  1.9G   0% /dev
tmpfs                              391M  1.5M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   19G  6.8G   11G  39% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop1                          71M   71M     0 100% /snap/lxd/21029
/dev/sda2                          976M  107M  803M  12% /boot
/dev/loop0                          62M   62M     0 100% /snap/core20/1242
/dev/loop2                          56M   56M     0 100% /snap/core18/2253
/dev/loop4                          33M   33M     0 100% /snap/snapd/12704
/dev/loop3                          56M   56M     0 100% /snap/core18/2128
/dev/loop5                          43M   43M     0 100% /snap/snapd/14066
/dev/loop6                          68M   68M     0 100% /snap/lxd/21835
tmpfs                              391M     0  391M   0% /run/user/1000
/dev/sdb                            20G   45M   19G   1% /mnt

最简单的方式,挂载成功,完成。

2:硬盘分区后挂载分区

注:分区前,确保此硬盘没有重要数据,或者数据已备份。

先取消挂载,取消挂载后再分区。不取消挂载,也可以分区,但是一旦分区保存完成,此硬盘格式为无格式状态,虽然你还可以在原来挂载目录操作,但机器重启后,挂载自动取消,无法在挂载整个硬盘上去,原整个硬盘数据也全部没有了。分区也只有硬盘取消挂载的情况下,格式化分区才能生效,同时才能挂载上去。

sudo umount /mnt/

分区命令为 fdisk fdisk -l 可查看所有已分区

#对sdb硬盘分区
sudo fdisk /dev/sdb

相关操作参数输入:

#输入m查看命令操作
Command (m for help): m
#输入n添加新分区
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
#输入P,类型主分区,只能4个主分区,扩展分区一般作用多为创建逻辑分区。扩展分区无法直接被使用的。
Select (default p): p
#主分区号码,默认即可,从1到4的顺序
Partition number (1-4, default 1): 
#分区开始扇区,默认2048,不要小于2048,否则有些功能异常,不支持2048以下
First sector (2048-41943039, default 2048): 2048
#接受扇区,即多大空间的分区,自己换算,这里20000000大概为9.5G左右。
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): 20000000

Created a new partition 1 of type 'Linux' and of size 9.5 GiB.
#w保存分区
Command (m for help): w
The partition table has been altered.
Syncing disks.
#p打印显示已存在分区
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfc5ea7ec

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        2048 20000000 19997953  9.5G 83 Linux
#q退出

有些系统需要重启生效,可以不重启生效的命令

#更新内核分区表
sudo partprobe

分区后的名称,以此类推为sdb1,sdb2,sdb3,sdb4.......

格式化,挂载分区

sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 /mnt/

分区挂载完成,可以操作写入数据了

3:注意事项(扩展)

注:请不要在分区下(如sdb1,sdb2),在创建子分区。虽然创建出来分区有名称类似sdb2p1,sdb2p2,sdb2p3,sdb2p4的名称,保存也成功,但是系统不识别sudo fdisk -l,或者lsblk,都查看不到,没有生效。唯一的作用就是将此分区,格式变成无格式状态,需重新格式化挂载。数据也完了。

本人曾经小白失败经历分享:

一次查看硬盘,觉得sda(主硬盘,系统分区都在这里)下面分区挺大的,尤其是sda3,如下:

sda                         8:0    0   500G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0   499G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   499G  0 lvm  /

觉得可以从sda3中在分区出来一点空间挂载, sudo fdisk /dev/sda3 然后一顿操作。

重启后,玩完,进不了系统,因为ubuntu--vg-ubuntu--lv根目录 / 被分区后,无法识别了,只能格式化此分区。如果格式化此分区,数据也全没了,关键还进不去系统了。当时一身冷汗,还好此服务器没部署服务。所以重装系统了。

这次经历注意两点:

  • 1:不要轻易操作sda主硬盘下的分区。
  • 2:不要在分区下,在创建子分区

三、扩展分区与逻辑分区

分区的时候有主分区(primary)和扩展分区(extended),主分区都知道,那扩展分区什么时候用呢?

主分区只能存在4个,无法再创建了,如果想创建多于4个主分区,这时候就需要创建扩展分区,通过扩展分区创建逻辑分区就可以使用了,和主分区使用没啥区别。注:extended无法直接使用,不可格式化,不可挂载,必须创建逻辑分区后才能使用。扩展分区下可创建多个逻辑分区。

创建扩展分区和逻辑分区

#分区
sudo fdisk /dev/sdb

创建扩展分区,Partition type选择e即可,其他步骤一致。

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

Created a new partition 2 of type 'Extended' and of size 4.8 GiB.
#p查看扩展分区sdb2完成。
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfc5ea7ec

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1           2048 20000000 19997953  9.5G 83 Linux
/dev/sdb2       20000768 30000000  9999233  4.8G  5 Extended

创建逻辑分区,Partition type选择这时只有p和l选择,选择l(逻辑分区),其他步骤一致

Command (m for help): n
Partition type
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l

Adding logical partition 5
First sector (20002816-30000000, default 20002816): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (20002816-30000000, default 30000000): 

Created a new partition 5 of type 'Linux' and of size 4.8 GiB.
#p查看逻辑分区sdb5完成。
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfc5ea7ec

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1           2048 20000000 19997953  9.5G 83 Linux
/dev/sdb2       20000768 30000000  9999233  4.8G  5 Extended
/dev/sdb5       20002816 30000000  9997185  4.8G 83 Linux

扩展分区默认sdb5开始命名,表示在4个主分区以后。逻辑分区好后,可以格式化挂载了。

sudo mkfs.ext4 /dev/sdb5
sudo mount /dev/sdb5 /mnt/
df -h

查看结果如下,挂载成功,可以使用了。

sdb                         8:16   0   20G  0 disk 
├─sdb1                      8:17   0  9.5G  0 part 
├─sdb2                      8:18   0    1K  0 part 
└─sdb5                      8:21   0  4.8G  0 part /mnt

四、标准分区扩容(非LVM)

在同一块硬盘下的标准扩容,相对比较简单。步骤为删除需要扩容的分区编号,重新分区编号,重新挂载即可。

这里以sdb1为例,已挂载至/mysql路径,总共有20G,还有将近10G空闲,将空闲的分配给sdb1。

sdb                         8:16   0   20G  0 disk 
└─sdb1                      8:17   0  9.8G  0 part /mysql

为了测试数据完整性,在sdb1创建一个文件test.txt,

cd /mysql/
sudo vim test.txt

内容为test,mysql,12345678。

ubuntu@ubuntu:/$ cat /mysql/test.txt
test,mysql,12345678

取消挂载

sudo umount /mysql

重新分区

sudo fdisk /dev/sdb

删除分区,再重新分区

#删除分区,选择所要扩展分区的编号,这里只有1个,默认删除第一个sdb1.
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
#重新分区
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
#选择主分区
Select (default p): p
#编号1,还是原来的sdb1.
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 

#结束大小不要小于原来的大小,否则容易造成数据改变或丢失,原来时10G,这里改为大概15G
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): 30780000

Created a new partition 1 of type 'Linux' and of size 14.7 GiB.
Partition #1 contains a ext4 signature.

#按 N 保留 xfs 签名,移除的话分区的 UUID 会变更。
Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

扩容完成,注:不需要重新格式化,否则数据丢失,直接挂载使用即可。

挂载查看原来数据是否还在,原来数据还在,没有改变。至于为什么,涉及到磁盘的构成,有柱面,扇区,簇,编号之类的,有兴趣自己可以研究。

ubuntu@ubuntu:/$ sudo mount /dev/sdb1 /mysql/
ubuntu@ubuntu:/mysql$ cat mysql/test.txt 
test,mysql,12345678

lsblk查看大小,sdb1由原来的10G左右,扩容为15G左右。扩容完成

sdb                         8:16   0   20G  0 disk 
└─sdb1                      8:17   0 14.7G  0 part /mysql

五、系统根分区(LVM)扩容

主要扩容系统根分区。如以下的系统的sda3,ubuntu--vg-ubuntu--lv根分区。

需谨慎操作,涉及到系统相关磁盘分区。

sda                         8:0    0   20G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0   19G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   19G  0 lvm  /

1:物理卷,卷组,逻辑卷

扩展之前。需要了解的三个概率:物理卷,卷组,逻辑卷。引入这个概念,可以解除物理隔离的限制。

  • 物理卷:Physical volume 简称 PV

物理卷在逻辑卷管理器中属于最底层的,任何的逻辑卷和卷组都必需依靠物理卷来建立,物理卷可以是一个完整的硬盘,也可以是硬盘中的某一个分区。

  • 卷组 - Volume group 简称 VG

卷组是建立在物理卷之上,一个卷组中可以包含一个或者多个物理卷。

  • 逻辑卷 - Logical volume 简称 LV

逻辑卷类似于非 LVM 系统中的硬盘分区,在逻辑卷之上可以建立文件系统 (比如 /home 或者 /usr 等)。

加上还有其他元素(有兴趣自己深究),一起构成LVM(Logical Volume Manager)逻辑卷管理。

Linux 磁盘管理,挂载分区管理,磁盘分区扩容缩容管理,详细教程

总结:多个磁盘/分区/raid-->多个物理卷PV-->合成卷组VG-->从VG划分出逻辑卷LV-->格式化LV,挂载使用。

功能

PV管理命令

VG管理命令

LV管理命令

scan 扫描

pvscan

vgscan

lvscan

create 创建

pvcreate

vgcreate

vcreate

display 显示

pvdisplay

vgdisplay

lvdisplay

remove 移除

pvremove

vgremove

lvremove

extend 扩展

vgextend

lvextend

reduce 减少

vgreduce

lvreduc

举个通俗例子:多个磁盘/分区就是多袋小麦,创建物理卷(PV)就是分别磨成面粉,合成卷组(VG)就是把面粉和成一大团面团,逻辑卷(LV)就是分出去的一个个小坨小面团分别做包子饺子之类其他功能的。想要扩容给小面团(LV),就需要从大面条(VG)里面取出来补。需要扩容的根分区就是那一坨小面团。

2:同一块硬盘扩容根分区

如下:总磁盘30G大小,根分区20G,有10G空闲需要分配给ubuntu--vg-ubuntu--lv根分区。

sda                         8:0    0   30G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0   19G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   19G  0 lvm  /

从根分区的逻辑卷管理(lvm)的名称可以看出,已存在的卷组(VG)为ubuntu--vg,和逻辑卷(LV)为ubuntu--lv,所有想要扩容,只要增加卷组(VG)的空间,然后分配给逻辑卷(LV)即可。

2.1:查看卷组(VG)和逻辑卷(LV)信息

也可以自行查看存在的卷组(VG)和逻辑卷(LV)。

#查看卷组,Free PE 为空闲可分配的空间。
ubuntu@ubuntu:~$ sudo vgdisplay 
[sudo] password for ubuntu: 
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  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               Gvpatz-SSYp-qfrV-5AGf-BXAD-aVC7-XZlewX
#查看逻辑卷  
ubuntu@ubuntu:~$ sudo lvdisplay 
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                XND7LS-kWJL-LISf-HmrN-eK7S-X8ea-2Lazo7
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2021-11-27 09:39:38 +0000
  LV Status              available
  # open                 1
  LV Size                <19.00 GiB
  Current LE             4863
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

2.2:创建分配分区(获取小麦原材料)

为了给增加卷组(VG)的空闲可用空间,先创建一个分区,将剩下的分配给分区。

sudo fdisk /dev/sda

n分区,全部默认回车即可,记住主分区为4,即sda4。

Command (m for help): n
Partition number (4-128, default 4): 
First sector (41940992-62914526, default 41940992): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (41940992-62914526, default 62914526): 

Created a new partition 4 of type 'Linux filesystem' and of size 10 GiB.

Command (m for help): p
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0EC75B7E-5AD4-4971-B452-57826F74E4FD

Device        Start      End  Sectors Size Type
/dev/sda1      2048     4095     2048   1M BIOS boot
/dev/sda2      4096  2101247  2097152   1G Linux filesystem
/dev/sda3   2101248 41940991 39839744  19G Linux filesystem
/dev/sda4  41940992 62914526 20973535  10G Linux filesystem

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

2.3:创建物理卷PV(磨成面粉)

sudo pvcreate /dev/sda4

显示如下:

ubuntu@ubuntu:~$ sudo pvcreate /dev/sda4 
  Physical volume "/dev/sda4" successfully created.

注意:老的Linux在创建PV时,需要将分区类型改为Linux

LVM(8e)。但新的系统已经非常智能,即使默认的Linux分区(83),也可以创建PV。具体过程是fdisk 过程中,选择参数

l:查看所有分区类型代码,及 t:修改分区类型代码,选择代码8e类型即可。

2.4:添加到卷组VG中(大面团)

将物理卷PV添加到卷组VG中(面粉加到大面团中),卷组VG这里已有,上面查询得知名称为ubuntu-vg

sudo vgextend ubuntu-vg /dev/sda4

显示如下:

ubuntu@ubuntu:~$ sudo vgextend ubuntu-vg /dev/sda4
Volume group "ubuntu-vg" successfully extended

再次查看卷组VG,Free PE / Size 已经有了10G的空闲空间可分配了。

ubuntu@ubuntu:~$ sudo vgdisplay 
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               28.99 GiB
  PE Size               4.00 MiB
  Total PE              7422
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               Gvpatz-SSYp-qfrV-5AGf-BXAD-aVC7-XZlewX

2.5:分配空间给逻辑卷根LV(小面团)

从卷组VG分配空间给逻辑卷根LV目录(从大面团取出可用的给需要的小面团),上面可查询可知,LV名称为ubuntu-lv,扩容命令及参数参考如下:

#分配10G ,-L指定逻辑卷的大小,单位为“kKmMgGtT”字节
sudo lvextend -L +10G /dev/ubuntu-vg/ubuntu-lv
#或者100%空闲分配, -l指定逻辑卷的大小(LE数)
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
#或者逻辑卷扩展至30G
sudo lvextend -L 30G /dev/ubuntu-vg/ubuntu-lv
   
#以上都可以加上参数-r ,将逻辑卷的文件系统扩展(如:房子建好了,需要装修,不需要指定大小)    

刚开始不够10G,多少有点误差,所有分配9.9G就可以了。显示successfully成功,显示如下:

ubuntu@ubuntu:~$ sudo lvextend -L +10G /dev/ubuntu-vg/ubuntu-lv
  Insufficient free space: 2560 extents needed, but only 2559 available
ubuntu@ubuntu:~$ sudo lvextend -L +9.9G /dev/ubuntu-vg/ubuntu-lv
  Rounding size to boundary between physical extents: 9.90 GiB.
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <19.00 GiB (4863 extents) to <28.90 GiB (7398 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

2.6:resize2fs重新计算磁盘大小

执行之后并不会立马生效需要执行,需要重新计算磁盘大小。这时候只能查看lsblk磁盘已增大,但是df -h里面文件系统没有变化,所以需要操作这一步生效。

resize2fs命令是用来增大或者收缩未加载的“ext2/ext3/ext4”文件系统的大小。

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

显示如下成功:

ubuntu@ubuntu:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv 
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 7575552 (4k) blocks long.

2.7:查看磁盘大小

df -h或者lsblk可查看,已经扩容成功为30G.

df -h
/dev/mapper/ubuntu--vg-ubuntu--lv   29G  6.8G   21G  26% /

lsblk
sda                         8:0    0   30G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
├─sda3                      8:3    0   19G  0 part 
│ └─ubuntu--vg-ubuntu--lv 253:0    0 28.9G  0 lvm  /
└─sda4                      8:4    0   10G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0 28.9G  0 lvm  /

3:添加硬盘扩容根分区

3.1:添加新硬盘sdb

lsblk查看已显示磁盘

sdb                         8:16   0   20G  0 disk 

3.2:创建物理卷PV

你可以分区后创建物理卷,也可以整块硬盘创建物理卷PV,这里直接将整块创建PV,将所有空间给系统根分区扩容。

sudo pvcreate /dev/sdb

下面步骤与上面添加类似

3.3:添加到卷组VG

sudo vgextend ubuntu-vg /dev/sdb
#查看free PE时候添加成功。
sudo vgdisplay

3.4:分配空间给逻辑卷根LV

sudo lvextend -L +10G /dev/ubuntu-vg/ubuntu-lv

3.5:重新计算磁盘,分配给系统文件

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

3.6:查看磁盘大小

df -h 和 lsblk 查看大小

ubuntu@ubuntu:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                               1.9G     0  1.9G   0% /dev
tmpfs                              391M  1.5M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   39G  6.9G   30G  19% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0                          56M   56M     0 100% /snap/core18/2128
/dev/loop2                          71M   71M     0 100% /snap/lxd/21029
/dev/loop1                          62M   62M     0 100% /snap/core20/1242
/dev/sda2                          976M  107M  803M  12% /boot
/dev/loop3                          43M   43M     0 100% /snap/snapd/14066
/dev/loop4                          68M   68M     0 100% /snap/lxd/21835
/dev/loop5                          56M   56M     0 100% /snap/core18/2253
/dev/loop6                          33M   33M     0 100% /snap/snapd/12704
tmpfs                              391M     0  391M   0% /run/user/1000
ubuntu@ubuntu:~$ lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 55.4M  1 loop /snap/core18/2128
loop1                       7:1    0 61.9M  1 loop /snap/core20/1242
loop2                       7:2    0 70.3M  1 loop /snap/lxd/21029
loop3                       7:3    0 42.2M  1 loop /snap/snapd/14066
loop4                       7:4    0 67.2M  1 loop /snap/lxd/21835
loop5                       7:5    0 55.5M  1 loop /snap/core18/2253
loop6                       7:6    0 32.3M  1 loop /snap/snapd/12704
sda                         8:0    0   30G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
├─sda3                      8:3    0   19G  0 part 
│ └─ubuntu--vg-ubuntu--lv 253:0    0   39G  0 lvm  /
└─sda4                      8:4    0   10G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   39G  0 lvm  /
sdb                         8:16   0   20G  0 disk 
└─ubuntu--vg-ubuntu--lv   253:0    0   39G  0 lvm  /

六、缩减LVM空间

重要事情说三遍:

正式环境,非必要情况或者不熟悉的情况下,请勿操作,宁愿空着,也别冒险

正式环境,非必要情况或者不熟悉的情况下,请勿操作,宁愿空着,也别冒险

正式环境,非必要情况或者不熟悉的情况下,请勿操作,宁愿空着,也别冒险

xfs类型不可以直接缩减,只扩不减。如果是ext2,ext3,ext4可以在线缩减,如果xfs盘要缩小就要删除后重新添加

1:非系统根分区LVM缩容

四步,这里以名称为 lv 为例子,这里是缩减至多少大小,不是缩减了多少。

1、取消挂载

系统根分区无法在线取消挂载,所以这时请勿对系统根分区执行任何缩容操作

系统根分区无法在线取消挂载,所以这时请勿对系统根分区执行任何缩容操作

系统根分区无法在线取消挂载,所以这时请勿对系统根分区执行任何缩容操作

umount /lv/ #取消挂载目录

2、e2fsck检查修复磁盘完整性

e2fsck -f /dev/vg0/lv0

3、缩小系统文件空间,即df -h查看的空间

不取消挂载,这步会报错,注:一定先减文件系统,再减逻辑卷

resize2fs /dev/vg0/lv0 10G

4、缩小磁盘空间,即lsblk查看的空间

不执行上面的操作,直接执行这步,虽然成功,但是会操作数据丢失,系统无法启动。

lvreduce -L 10G /dev/vg0/lv0

5、重新挂载

mount -a

最后查看lvs空间

lvs

扩展:

加上参数-r 可以一步到位,即将上面的3和4步骤一起执行。

lvreduce命令使用-L选项减少空间,-r选项减少文件系统空间,实现动态调整(这是ext4文件系统)

lvreduce -L 10G -r /dev/vg0/lv0

2:系统根分区LVM缩容

跟上面步骤一致,唯一的区别是没法在线取消挂载,所以需要进入救援模式(单用户模式)

救援模式分两种,一种是正常启动系统进入,另一种是加载镜像是进入。

缩容系统根分区必须是挂载镜像时的救援模式才可以操作。

1、正常启动系统进入救援模式

启动按shift键,出现选择系统界面,按e。找到以单词 linux 开头的行,并在该行的末尾添加以下内容(要到达末尾,只需按下 CTRL+e 或使用 END 键或左右箭头键):

systemd.unit=rescue.target
Linux 磁盘管理,挂载分区管理,磁盘分区扩容缩容管理,详细教程

添加完成后,只需按下 CTRL+x 或 F10 即可继续启动救援模式。几秒钟后,你将以 root 用户身份进入救援模式(单用户模式)

2、挂载iso或者启动盘进入救援模式

系统不同,进入也不同,本人ubuntu20.04,没有找到合适的方式,其他的系统自行研究

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多