一,整理下Linux标准文件系统分区

分区格式分为MBR和DPT两种格式,

MBR的初始化硬盘在建立完成前三个主分区后,会将剩下的空间划分成为拓展分区,然后在拓展分区里面划分出一部分作为逻辑分区,主分区+逻辑分区数量最多是4,且MBR单分区大小不超过2T

GPT的初始化硬盘最多可以达到1024个主分区+拓展分区,GPT单分区最大18E

实验采用VMware虚机进行,首先先挂载一块新的硬盘

[root@localhost ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
sr0            11:0    1 1024M  0 rom  
nvme0n1       259:0    0  100G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   99G  0 part 
  ├─rhel-root 253:0    0 61.2G  0 lvm  /
  ├─rhel-swap 253:1    0  7.9G  0 lvm  [SWAP]
  └─rhel-home 253:2    0 29.9G  0 lvm  /home

其中sda为新添加硬盘,我们如果想使用这块硬盘,必须通过分区->格式化->挂载后才可以使用

 一共两种方式(MBR和GPT)

如果采用MBR的方式进行分区,就是用fdisk命令

如果采用GPT的方式进行分区,就是采用gdisk命令

手工创建分区(效率比较低)磁盘中是扇区个数定义大小,一个扇区是512b

[root@localhost ~]# fdisk /dev/sda

欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x038626de 的新 DOS 磁盘标签。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): 1
第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2g

创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

[root@localhost ~]# fdisk -l /dev/sda1

设备       启动  起点    末尾    扇区 大小 Id 类型
/dev/sda1        2048 4196351 4194304   2G 83 Linux

 现在分区已经建立完成,然后对该分区进行格式化处理,我们将分区格式化为ext4格式

[root@localhost ~]# mkfs.ext4 /dev/sda1
mke2fs 1.45.6 (20-Mar-2020)
创建含有 524288 个块(每块 4k)和 131072 个inode的文件系统
文件系统UUID:ce168cf8-211f-474a-b210-bbe6bb905928
超级块的备份存储于下列块: 
	32768, 98304, 163840, 229376, 294912

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成

新建挂载点,挂载该分区(临时挂载)

[root@localhost /]# mkdir /test
[root@localhost /]# mount /dev/sda1 /test

持续性挂载,需要将挂载信息写入/etc/fstab这个文件中

[root@localhost /]# vim /etc/fstab
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=36484481-6acc-4c2c-bb87-97eb57f91329 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-home   /home                   xfs     defaults        0 0
/dev/mapper/rhel-swap   none                    swap    defaults        0 0
/dev/sda1 /test ext4 defaults 0 0

这个文件中第一列是文件系统所在路径

第二列是文件系统挂载点

第三列是文件系统类型

第四列是挂载参数

第五列和第六列分别写0就可以

编辑完成后使用mount -a来使系统安装/etc/fstab文件来挂载系统,使用df -Th查看挂载信息

[root@localhost /]# df -Th
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                 tmpfs     3.8G     0  3.8G    0% /dev/shm
tmpfs                 tmpfs     3.8G   17M  3.8G    1% /run
tmpfs                 tmpfs     3.8G     0  3.8G    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        62G  2.3G   59G    4% /
/dev/nvme0n1p1        xfs      1014M  252M  763M   25% /boot
/dev/mapper/rhel-home xfs        30G  246M   30G    1% /home
tmpfs                 tmpfs     775M     0  775M    0% /run/user/0
/dev/sda1             ext4      2.0G  6.0M  1.8G    1% /test

添加完成

二,逻辑卷

1,建立新的逻辑卷

①简述

之前使用分区都是通过添加磁盘,分区,格式化然后挂载后使用,直接使用fdisk这种分区方式的话,这种分区叫做Linux的标准分区。

Linux的标准分区格式化成文件系统后,一旦空间使用完是无法扩容的(这种情况下只能将数据备份,换一块更大的硬盘,再将数据恢复回去,效率低)。

以上问题促使了逻辑卷的诞生

逻辑卷的工作原理是,将硬盘空间放入pv(物理卷),从pv划分出vg(卷组),再从vg划分出lv(逻辑卷),将lv进行格式化写入文件系统,然后挂载。

其中每个节点都可以扩容,且vg和lv不限制个数,这就解决了标准分区带来的无法扩容的问题

②.新建两个2G分区并划入新的pv(物理卷)里面

[root@localhost /]# fdisk /dev/sda -l | grep /dev/sda
Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
/dev/sda1          2048  4196351 4194304   2G 83 Linux
/dev/sda2       4196352  8390655 4194304   2G 83 Linux
/dev/sda3       8390656 12584959 4194304   2G 83 Linux

可以看到/dev/sda2和/dev/sda3就是新建立的分区

③.将这两个分区添加到pv中

[root@localhost /]# pvcreate /dev/sda2
  Physical volume "/dev/sda2" successfully created.
[root@localhost /]# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.
[root@localhost /]# pvs
  PV             VG   Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 rhel lvm2 a--  <99.00g    0 
  /dev/sda2           lvm2 ---    2.00g 2.00g
  /dev/sda3           lvm2 ---    2.00g 2.00g

④.新建vg卷组,名字是vg1,使用sda2分区

[root@localhost /]# vgcreate vg1 /dev/sda2
  Volume group "vg1" successfully created
[root@localhost /]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree 
  rhel   1   3   0 wz--n- <99.00g     0 
  vg1    1   0   0 wz--n-  <2.00g <2.00g

⑤.拓展vg1这个卷组,将sda3也加入

[root@localhost /]# vgextend vg1 /dev/sda3
  Volume group "vg1" successfully extended
[root@localhost /]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  rhel   1   3   0 wz--n- <99.00g    0 
  vg1    2   0   0 wz--n-   3.99g 3.99g
[root@localhost /]# vgdisplay #查看vg的详细信息
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  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               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1022 / 3.99 GiB
  VG UUID               O2qxpA-cDZC-1xuS-vHGd-Z9QV-6u08-aptxrA
   

⑥.在vg1中建立lv,name=lv1  大小是2g

[root@localhost /]# lvcreate -n lv1 -L 2g vg1 #-n指定lv名称 -L指定lv的大小
  Logical volume "lv1" created.
[root@localhost /]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home rhel -wi-ao----  29.89g                                                    
  root rhel -wi-ao---- <61.23g                                                    
  swap rhel -wi-ao----  <7.88g                                                    
  lv1  vg1  -wi-a-----   2.00g    

⑦.格式化lv1 ,文件系统为ext4

[root@localhost /]# mkfs.ext4 /dev/vg1/lv1

⑧.新建目录,挂载lv1

[root@localhost /]# mount /dev/vg1/lv1 /lvtest/
[root@localhost /]# df -Th
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                 tmpfs     3.8G     0  3.8G    0% /dev/shm
tmpfs                 tmpfs     3.8G   17M  3.8G    1% /run
tmpfs                 tmpfs     3.8G     0  3.8G    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        62G  2.3G   59G    4% /
/dev/nvme0n1p1        xfs      1014M  252M  763M   25% /boot
/dev/mapper/rhel-home xfs        30G  246M   30G    1% /home
tmpfs                 tmpfs     775M     0  775M    0% /run/user/0
/dev/sda1             ext4      2.0G  6.0M  1.8G    1% /test
/dev/mapper/vg1-lv1   ext4      2.0G  6.0M  1.8G    1% /lvtest

新建逻辑卷完成

二,扩容逻辑卷

①当vg容量充足时,直接增加lv的容量

[root@localhost /]# lvextend /dev/vg1/lv1 -L 3g
  Size of logical volume vg1/lv1 changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
  Logical volume vg1/lv1 successfully resized.
[root@localhost /]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home rhel -wi-ao----  29.89g                                                    
  root rhel -wi-ao---- <61.23g                                                    
  swap rhel -wi-ao----  <7.88g                                                    
  lv1  vg1  -wi-ao----   3.00g                                                    
[root@localhost /]# df -Th
文件系统              类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1   ext4      2.0G  6.0M  1.8G    1% /lvtest

②添加了lv1的大小但是挂载的文件系统还没有发生改变,是因为还没有格式化,现进行格式化

[root@localhost /]# resize2fs /dev/vg1/lv1
resize2fs 1.45.6 (20-Mar-2020)
/dev/vg1/lv1 上的文件系统已被挂载于 /lvtest;需要进行在线调整大小

old_desc_blocks = 1, new_desc_blocks = 1
/dev/vg1/lv1 上的文件系统现在为 786432 个块(每块 4k)。

[root@localhost /]# df -Th
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                 tmpfs     3.8G     0  3.8G    0% /dev/shm
tmpfs                 tmpfs     3.8G   17M  3.8G    1% /run
tmpfs                 tmpfs     3.8G     0  3.8G    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        62G  2.3G   59G    4% /
/dev/nvme0n1p1        xfs      1014M  252M  763M   25% /boot
/dev/mapper/rhel-home xfs        30G  246M   30G    1% /home
tmpfs                 tmpfs     775M     0  775M    0% /run/user/0
/dev/sda1             ext4      2.0G  6.0M  1.8G    1% /test
/dev/mapper/vg1-lv1   ext4      2.9G  6.0M  2.8G    1% /lvtest

可以看到lv1已经变为大小3G,操作完成,

临时挂载,如果要变成持续性挂载,需要将配置写入/etc/fstab文件中。

Logo

更多推荐