如果你要使用一个块设备需要经过一下几个步骤:

查看磁盘信息<块设备信息>

[root@server1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 
sr0 11:0 1 6.6G 0 rom /mnt/is0 
nvme0n1 259:0 0 40G 0 disk 
 nvme0n1p1 259:1 0 300M 0 part /boot
nvme0n1p2 259:2 0 2G 0 part [SWAP] 
 nvme0n1p3 259:3 0 37.7G 0 part / 
nvme0n2 259:4 0 20G 0 disk

nvme0n2: 意味着: /dev/nvme02 的磁盘 大小: 20G 并且: 这个块设备没有划分分区

nvme01 : 这个块设备 有 3 个分区 nvme01p1: /dev/nmve01p1 挂载在 boot 目录下 大小 300M nvme01p2: /dev/nmve01p2 SWAP 分区 大小 2G

nvme0n1p3: /dev/nmve01p3 挂载在 / 37.7G p1+p2+p3=40G 得出的结论是: /dev/nmve01 这个快设备没有剩余空间

nvme0n2: 有足够的空间

1> 创建分区

        1~ 分区的格式有两种 1: MBR 类型

        特点: 最多有 4 个主分区 : 如果是 MBR 类型的,那么主分区信息 存在第一个扇区的 447-500 字节 64 个字节 而每个分区信息需要占用 16 个字节,所以 MBR 类型的最多 4 个主分区 但是并不意味着: MBR 类型的只能划分 4 个分区 为什么? 有一种分区叫扩展分区: 要占用一笔主分区信息空间 4 个主分区+0 扩展分区 3 个主分区+1 个扩展分区

为什么需要扩展分区呢? 是因为你要扩展分区的基础上划分逻辑分区

所以当你在划分扩展分区的时候,你应该把磁盘的所有的剩余空间全部划分 给扩展分区,如果有剩余空间没有划分给扩展分区。那么这部分空间就不能够 再使用,因为逻辑分区是再扩展分区的基础上划分出来的

所以: 只有主分区以及逻辑分区能够被格式化和挂载使用,扩展分区是不能 够被格式化和挂载的

扩展分区的目的: 就是为了能够创建大于 4 个分区,就是: 扩展分区就是为了划分逻辑分区而存在的!

分区类型:

        1>主分区

        2>扩展分区: 是不能被格式化和挂载

        3>逻辑分区:逻辑分区是在扩展分区的基础上划分的

划分分区的含义:就是定义一个分区的起始扇区和结束扇区

2:GPT类型

        没有扩展分区和逻辑分区的概念;因为GPT全是主分区;总共可以划分128个主分区

分区工具的选择:

        fdisk:如果磁盘小于2T,并且类型是MBR,可以使用fdisk

        gdisk:如果磁盘小于2T,并且类型是GPT,可以使用gdisk

        parted:不在乎大小,不在乎格式(不可反悔类型,只要操作立即生效,与fdisk和gdisk不同,parted不会先将修改写入内存等保存再写入磁盘,parted是不需要保存操作,直接写入磁盘立即生效)

分区工具具体使用:

        fdisk:

        查看磁盘信息

        

[root@server1 ~]# fdisk -l /dev/nvme0n2 -l list 
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes

         创建分区

[root@server1 ~]# fdisk /dev/nvme0n2 
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. 
Device does not contain a recognized partition table. 
Created a new DOS disklabel with disk identifier 0x1769ddab. 
Command (m for help): 
Command (m for help): n 新建分区

Partition type : 选择:创建主分区(p: primary)还是扩展分区(e: extened ) 
 p primary (0 primary, 0 extended, 4 free) 
 e extended (container for logical partitions) 
 
Select (default p): p 选择创建主分区
Partition number (1-4, default 1): 不要手工选择,默认就好 1-4 
First sector (2048-41943039, default 2048): 分区的起始扇区是多少,就是默认的
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +1G 可以不
使用扇区的位置,而采用+size 的方式:比如+100M +1G(+值就是分区的大小)。会自动的算出扇区的位置
Command (m for help): p 
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors 
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: 0x1769ddab 
Device Boot Start End Sectors Size Id Type 
/dev/nvme0n2p1 2048 2099199 2097152 1G 83 Linux 
Command (m for help): 
新建第二个分区

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 新建扩展分区: 输入 e 
Partition number (2-4, default 2): 直接 enter 
First sector (2099200-41943039, default 2099200): 不要修改直接 enter 
Last sector, +sectors or +size{K,M,G,T,P} (2099200-41943039, default 41943039): 结束
扇区位置也不要输入任何内容: 因为你要把所有的剩余空间全部丢给扩展分区
Command (m for help): p 显示分区信息
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors 
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: 0x1769ddab 
Device Boot Start End Sectors Size Id Type 
/dev/nvme0n2p1 2048 2099199 2097152 1G 83 Linux 
/dev/nvme0n2p2 2099200 41943039 39843840 19G 5 Extend 扩展分区

如果你针对你的分区,需要保存修改修改的
Command (m for help): w 写入分区信息

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

        

[root@server1 ~]# lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 
nvme0n2 259:4 0 20G 0 disk 
 vme0n2p1 259:5 0 1G 0 part 
 vme0n2p2 259:6 0 1K 0 part 记住: lsblk 显示的扩展分区大小永远 1K

         扩展分区不能直接使用,不能被格式化,也不能被挂载,那么你需要再扩展分去的基础上 划分逻辑分区

        当我们划分逻辑分区的时候,区别在哪里?

1: 原来让选择分区类型,没有分区类型可以选择了。 但是,没有分区类型可以选择的原因

        1> 分区号码使用完了,你创建了 3 个主分区和 1 个扩展分区 4

        2> 在你的分区号码没有用完的情况下,且有没有剩余空间那么也没得选

        3> 如果有分区号码,且有剩余空间就会让你选择是 p 还是 l(l logical)

2: 创建的逻辑分区没有号码可以选择:默认就是 5 开始

3: 逻辑分区起始扇区和结束扇区都在扩展分区的区间之内的!

4: 只有划分了扩展分区,才能划分逻辑分区

 如何删除分区呢?

Command (m for help): d 删除分区
Partition number (1,2,5,6, default 6): 6 选择要被删除的分区号码
Partition 6 has been deleted. 
Command (m for help): p 
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors 
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: 0x1769ddab 
Device Boot Start End Sectors Size Id Type 
/dev/nvme0n2p1 2048 2099199 2097152 1G 83 Linux 
/dev/nvme0n2p2 2099200 41943039 39843840 19G 5 Extende 
/dev/nvme0n2p5 2101248 4198399 2097152 1G 83 Linux

当你把扩展分区删除后,在扩展分区的基础上创建的逻辑分区也会被删除

Command (m for help): q 代表的是不保存

 gdisk 划分分区呢?操作和 fdisk 一样 n d w q 等

gdisk <2T 且为 GPT 类型的

注意: 如果你的磁盘原来存在 MBR 类型的分区,千万不要用 gdisk 做任何操作。

[root@server1 ~]# gdisk /dev/nvme0n2 
GPT fdisk (gdisk) version 1.0.3 
Partition table scan: 
 MBR: MBR only 
 BSD: not present 
 APM: not present 
 GPT: not present 
*************************************************************** 
Found invalid GPT and valid MBR; converting MBR to GPT format 
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by 
typing 'q' if you don't want to convert your MBR partitions 
to GPT format! 
*************************************************************** 
发现了无效的 GPT 和 有效的 MBR 转换 MBR TO GPT 
Command (? for help):
出现了上述内容(星号围起来的内容),就表示这个磁盘分区原来是MBR类型的,此处需要注意不要使用gdisk进行操作,避免出现数据丢失

如果原来是GPT格式,就选择gdisk

[root@server1 ~]# gdisk /dev/nvme0n2 
GPT fdisk (gdisk) version 1.0.3 
Partition table scan: 
 MBR: protective 
 BSD: not present 
 APM: not present 
 GPT: present 
Found valid GPT with protective MBR; using GPT.: 如果原来就是 GPT 的,那么就会直接使用 GPT 
Command (? for help): 
操作和 fdisk 类似
[root@server1 ~]# fdisk -l /dev/nvme0n2 to see what type it is
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors 
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/msdos 看此处分辨格式
Disk identifier: 9B5845BD-90CB-4183-A89D-4D923EB1B541 
Device Start End Sectors Size Type 
/dev/nvme0n2p1 2048 2099199 2097152 1G Linux filesystem 
/dev/nvme0n2p2 2099200 4196351 2097152 1G Linux filesystem 
/dev/nvme0n2p3 4196352 6293503 2097152 1G Linux filesystem 
/dev/nvme0n2p4 6293504 8390655 2097152 1G Linux filesystem 
/dev/nvme0n2p5 8390656 10487807 2097152 1G Linux filesystem 
[root@server1 ~] #

parted 是怎么用的?

1> 无惧于任何时候,不管你是 MBR 还 GPT 还是大于 2T 还是小于 2T 都行

parted 在划分分区的时候有两种模式

交互模式

[root@server1 ~]# parted /dev/nvme0n2 
GNU Parted 3.2 
Using /dev/nvme0n2 
Welcome to GNU Parted! Type 'help' to view a list of commands. 
(parted) p 在你做操作之前用 p 显示信息
Model: NVMe Device (nvme) 
Disk /dev/nvme0n2: 21.5GB 大小 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 格式重点
Disk Flags: 
Number Start End Size File system Name Flags 
 1 1049kB 1075MB 1074MB Linux filesystem 
 2 1075MB 2149MB 1074MB Linux filesystem 
 3 2149MB 3222MB 1074MB Linux filesystem 
 4 3222MB 4296MB 1074MB Linux filesystem 
 5 4296MB 5370MB 1074MB Linux filesystem 
(parted) mkpart 创建分区
Partition name? []? primary 在 gpt 模式下不重要 
File system type? [ext2]? xfs 文件系统类型不重要 
Start? 5370MB 最后一个分区的结束位置 
End? 15610MB 你的起始位置+ 你需要的空间大小
(parted) 
(parted) rm 7 删除分区
(parted) quit 退出 
注意: parted 做了就认了,没有所谓的 w 或者 q 之类的
尤其是在删除的时候,千万要小心

parted进行类型转换 

(parted) mklabel 类型转换: 千万要注意: 不要尝试 
New disk label type? msdos 
Warning: The existing disk label on /dev/nvme0n2 will be destroyed and all data on this disk will be 
lost. Do you want to continue? 
Yes/No? Yes

 使用parted进行分区的过程

(parted) 
(parted) mkpart 创建分区 
Partition type? primary/extended? primary 这个位置是重要的 
File system type? [ext2]? xfs 
Start? 1MB 起始的 
End? 1024MB 结束的大小
(parted) mkpart 
Partition type? primary/extended? extended 创建扩展分区 
Start? 1024MB 上个分区的结束位置 
End? 21.5GB 磁盘大小 
(parted) print 
Model: NVMe Device (nvme) 
Disk /dev/nvme0n2: 21.5GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags: 
 
(parted) mkpart 创建分区 
Partition type? primary/logical? logical 逻辑分区 
File system type? [ext2]? ext2 
Start? 2048MB 最好在扩展分区起始大小+1024MB 大小
End? 4096MB 
(parted) print 
Model: NVMe Device (nvme) 
Disk /dev/nvme0n2: 21.5GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags:

无交互模式

[root@server1 ~]# parted /dev/nvme0n2 mklabel gpt

[root@server1 ~]# parted /dev/nvme0n2 mkpart primary xfs 1024MB 4096MB GPT 分区传创建

[root@server1 ~]# parted /dev/nvme0n2 rm 1 删除第一个分区

[root@server1 ~]# parted /dev/nvme0n2 mklabel msdos 转换为 msdos

[root@server1 ~]# parted /dev/nvme0n2 mkpart primary xfs 1024MB 4096MB 创建 MBR 格式的主分区

[root@server1 ~]# parted /dev/nvme0n2 mkpart extended 4096MB 21.5GB 创建扩展分区

[root@server1 ~]# parted /dev/nvme0n2 mkpart logical xfs 5120MB 10G 创建逻辑分区

[root@server1 ~]# parted /dev/nvme0n2 rm 5 删除分区

2>格式化

        格式化的目的是为了形成文件系统

        在 RHEL8 中已经把 btrfs 这个类型的文件系统移除

        

nvme0n2 259:4 0 20G 0 disk 
├─nvme0n2p1 259:5 0 2.9G 0 part 
└─nvme0n2p2 259:6 0 1K 0 part 这是个扩展分区: 1K 大小 扩展分区是不能够被格式化和挂载的

只有主分区和逻辑分区才能被格式化

nvme0n2 259:4 0 20G 0 disk 
├─nvme0n2p1 259:10 0 2.9G 0 part 主分区
├─nvme0n2p2 259:11 0 1K 0 part 扩展分区
├─nvme0n2p5 259:12 0 4.8G 0 part 逻辑分区
├─nvme0n2p6 259:13 0 1.8G 0 part 逻辑分区
└─nvme0n2p7 259:14 0 1.9G 0 part 逻辑分区
[root@server1 ~]# mkfs -t xfs -f /dev/nvme0n2p1 
meta-data=/dev/nvme0n2p1 isize=512 agcount=4, agsize=187456 blks 
 = sectsz=512 attr=2, projid32bit=1 
 = crc=1 finobt=1, sparse=1, rmapbt=0 
 = reflink=1 
data = bsize=4096 blocks=749824, 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 
[root@server1 ~]#
[root@server1 ~]# mkfs -t xfs -L RHCE_LABEL /dev/nvme0n2p5 
meta-data=/dev/nvme0n2p5 isize=512 agcount=4, agsize=625024 blks 
 = sectsz=512 attr=2, projid32bit=1 
 = crc=1 finobt=1, sparse=1, rmapbt=0 
 = reflink=1 
data = bsize=2048 blocks=2500096, imaxpct=25 
 = sunit=0 swidth=0 blks 
naming =version 2 bsize=4096 ascii-ci=0, ftype=1 
log =internal log bsize=2048 blocks=5120, version=2 
 = sectsz=512 sunit=0 blks, lazy-count=1 
realtime =none extsz=4096 blocks=0, rtextents=0 
[root@server1 ~]# 
RHCE_LABEL: 你在格式化的时候可以指定标签,但是如果有多个分区在格式化的时候指定标签,标签
必须要唯一
[root@server1 ~]# mkfs -t ext4  -L RHCE_LABELEXT4 /dev/nvme0n2p7 
mke2fs 1.44.3 (10-July-2018) 
Creating filesystem with 487936 4k blocks and 1952640 inodes 
Filesystem UUID: cb480bbb-b195-474b-a99e-46a58fcc6ea1 
Superblock backups stored on blocks: 
 8232, 24696, 41160, 57624, 74088, 205800, 222264, 403368 
Allocating group tables: done 
Writing inode tables: done 
Creating journal (8192 blocks): done 
Writing superblocks and filesystem accounting information: done

3>挂载

在挂载之前需要创建挂载点

临时挂载:重启系统后就没了

        通过分区文件名来挂载

        

[root@server1 ~]# mount /dev/nvme0n2p1 /mnt/xfs 
/dev/nvme0n2p1:分区文件名
/mnt/xfs: 挂载点

        通过指定标签来挂载

        

[root@server1 ~]# mount -L RHCE_LABEL /mnt/xfs1 
-L : 你在格式化的时候指定的标签名
 /mnt/xfs:挂载点

        通过uuid来挂载

        每一个被格式化的分区都有一个唯一的 UUID,那么你在挂载的时候,可以指定 UUID 来挂载

      

[root@server1 ~]# blkid 查看 UUID 值
/dev/nvme0n1p3: UUID="3893019d-3f35-45ba-87a4-7b524a87783f" TYPE="xfs" PARTUUID="3536fd78-03" 
/dev/nvme0n1: PTUUID="3536fd78" PTTYPE="dos" 
/dev/nvme0n1p1: UUID="a1b561ee-1dbf-4cec-a273-ece41593af4f" TYPE="xfs" PARTUUID="3536fd78-01" 
/dev/nvme0n1p2: UUID="dd7bcb22-30bf-45fa-993c-223b36abae3e" TYPE="swap" PARTUUID="3536fd78-02" 
/dev/nvme0n2: PTUUID="b008dc62" PTTYPE="dos" 
/dev/nvme0n2p1: UUID="2f5c8f24-c474-4d13-88d2-093b7311699d" TYPE="xfs" PARTUUID="b008dc62-01" 
/dev/nvme0n2p5: LABEL="RHCE_LABEL" UUID="de2fd7be-e991-45a5-9ae9-0bbf6a166c8d" TYPE="xfs" PARTUUID="b008dc62-
05" 
/dev/nvme0n2p6: UUID="7260c91d-e05f-4b94-a55e-e6b0e2afaf03" TYPE="ext4" PARTUUID="b008dc62-06" 
/dev/nvme0n2p7: LABEL="RHCE_LABELEXT4" UUID="cb480bbb-b195-474b-a99e-46a58fcc6ea1" TYPE="ext4" 
PARTUUID="b008dc62-07" 
/dev/sr0: UUID="2019-04-04-08-40-23-00" LABEL="RHEL-8-0-0-BaseOS-x86_64" TYPE="iso9660" PTUUID="0da1aba4" 
PTTYPE="dos" 
[root@server1 ~]#

[root@server1 ~]# mount -U 7260c91d-e05f-4b94-a55e-e6b0e2afaf03 /mnt/ext4

-U: 指定 UUID 来进行挂载

永久挂载(开机自动挂载): 

 系统在重启之后,会自动挂载:

 需要把挂载信息写入/etc/fstab 文件

/dev/nvme0n2p1 /mnt/xfs xfs defaults 0 0 
分区文件名/标签/UUID 挂载点 分区文件系统 挂载参数比如(rw) 不备份 不检查
UUID="de2fd7be-e991-45a5-9ae9-0bbf6a166c8d" /mnt/xfs1 xfs defaults 0 0
LABEL="RHCE_LABELEXT4" /mnt/ext4 ext4 defaults 0 0

 注意: 不太建议使用分区文件名挂载: 原因 在工作的时候有可能遇到,磁盘文件名发生变化

 所以如果你通过分区文件名挂载,一旦发生变化就会有问题(系统无法开机) 推荐使用 UUID 或者 LABEL

 挂载参数: defaults use default options: rw, suid, dev, exec, auto, nouser, and async.

除非有特殊要求: 比如: 网络设备:_netdev 等 否则 defaults 就够了

 对于一个块设备的使用: 1: 分区 2 格式化 3 挂载

[root@server1 ~]# mount -a: 将/etc/fstab 文件中,还没有挂载的分区,进行挂载用来验证/etc/fstab 写 的是否有问题

管理交换分区

在我们的系统中: 当你的内存空间不够的时候,会把内存中不经常使用的数据置换到 SWAP 分区,一旦需要 使用该数据的时候,又会从 SWAP 中置换到内存中

注意: 1~ 不一定是内存空间不够用,你可以通过修改内核参数的方式设置在什么样的状态下开始写 SWAP

2~ SWAP: 不是真正意义的内存,它是由速度比内存慢硬盘分区模拟的内存空间

所以如果你想使用 SWAP:

        1.准备一个分区

[root@server1 ~]# parted /dev/nvme0n2 mkpart logical ext2 14.2GB(上一个分区的结束扇区) 16.2GB

        2.格式化为swap类型

[root@server1 ~]# mkswap /dev/nvme0n2p8

        3.查看

[root@server1 ~]# swapon -s 
Filename Type Size Used Priority 
/dev/nvme0n1p2 partition 2146300 0 -2

        4.激活swap分区并查看

[root@server1 ~]# swapon /dev/nvme0n2p8 
[root@server1 ~]# swapon -s 
Filename Type Size Used Priority 
/dev/nvme0n1p2 partition 2146300 0 -2 
/dev/nvme0n2p8 partition 1952764 0 -3 
[root@server1 ~]#

也可以通过free -m查看

[root@server1 ~]# free -m 
 total used free shared buff/cache available 
Mem: 1806 666 719 9 420 966 
Swap: 4002 0 4002

把 SWAP 信息写入 FSTAB 中

/dev/nvme0n2p8 swap swap defaults 0 0

1.想把一个 SWAP 空间删除

[root@server1 ~]# swapoff /dev/nvme0n2p8 关闭

2.从/etc/fstab 中删除

3.把分区删除

[root@server1 ~]# parted /dev/nvme0n2 rm 8

在你指定多个 SWAP 空间的时候,可以指定优先级,数字越大越优先

/dev/nvme0n2p8 swap swap pri=10 0 0

凡是写入/etc/fstab 通过 mount -a 是不会加载,需要 reboot

[root@server1 ~]# swapon -s 
Filename Type Size Used Priority 
/dev/nvme0n1p2 partition 2146300 0 -2 
/dev/nvme0n2p8 partition 1952764 0 10

LVM逻辑卷管理

1> 为什么需要 LVM

1: 使用普通分区的时候,如果分区的空间被使用完了之后,你是没有办法在线调整分区大小。创建一个更大的分区, 把数据拷贝过去

2: 有了 LVM 之后,我能够在线的调整 LVM 以及文件系统的大小!

2> 需要知道的几个概念

1: PV: phsical volume 物理卷 指的是一个物理磁盘,或者分区: 你需要把这个物理盘创建为一个 PV

2: VG : Volume group 卷组 由多个 PV 组成的逻辑盘。卷组的大小就是所有的 PV 的大小之和

3: LV : Logical Volume 逻辑卷 文件系统是创建在 LV 上的。LV 类似于一个分区

4: PE : Phsical Extend: 是 LVM 中最小的存储单位 。对于块设备而言,最小的单元是块 在一个 VG 中是由 N 多个 PE 组成的 VG=1024MB PE=4MB PE=1024MB/4MB

5: 动态调整大小: 当你创建 LV 的时候: 其实就是分配了多少个 PE 给这个 LV LV 的空间大小就是 PE*PE size 。你 LV 空间不够的时候,你就可以从 VG 中调整 PE 分配给这个 LV ,然后再扩容 LV 上的文件系统

1> 准备磁盘或者分区

如果你准备的分区: 那么你需要把分区的类型为 LVM(直接使用分区来做)

当你用 fdisk t 8 L 8e

但是如果你用 parted 做的分区 parted /dev/ss set 1 lvm on

[root@server1 ~]# parted /dev/nvme0n2 mkpart logical xfs 16.2GB 17.2GB 
 Information: You may need to update /etc/fstab. 
 [root@server1 ~]# parted /dev/nvme0n2 mkpart logical xfs 17.2GB 18.2GB 
 Information: You may need to update /etc/fstab. 
 
 [root@server1 ~]# parted /dev/nvme0n2 set 9 lvm on 
 Information: You may need to update /etc/fstab. 
 [root@server1 ~]# parted /dev/nvme0n2 set 10 lvm on 
 Information: You may need to update /etc/fstab.

2> 创建 PV 如果你使用的是物理磁盘作为 PV 那么第一步骤不用做。

创建 PV 就是把你准备的物理磁盘或者分区创建为 PV

[root@server1 ~]# pvcreate /dev/nvme0n2p9 /dev/nvme0n2p10 将你的磁盘或者分区创建为 PV 
 Physical volume "/dev/nvme0n2p9" successfully created. 
 Physical volume "/dev/nvme0n2p10" successfully created

3> PV 如何查看

        1~ pvscan 可以看到所有的 PV ,以及 PV 是否已经加入到 VG 中

[root@server1 ~]# pvscan 
 PV /dev/nvme0n2p9 lvm2 [952.00 MiB] 
 PV /dev/nvme0n2p10 lvm2 [953.00 MiB] 
 Total: 2 [1.86 GiB] / in use: 0 [0 ] / in no VG: 2 [1.86 GiB]

        2~ pvs

[root@server1 ~]# pvs 所有的 PV 以及大小以及剩余空间
 PV VG Fmt Attr PSize PFree 
 /dev/nvme0n2p10 lvm2 --- 953.00m 953.00m 
 /dev/nvme0n2p9 lvm2 --- 952.00m 952.00m

        3~ pvdisaplay 可以查看 PV 详细信息

[root@server1 ~]# pvdisplay 
 "/dev/nvme0n2p9" is a new physical volume of "952.00 MiB" 
 --- NEW Physical volume --- 
 PV Name /dev/nvme0n2p9 
 VG Name 
 PV Size 952.00 MiB 
 Allocatable NO 因为我还没有加入到 VG 中,所以我还是不能分配的分配的状态
 PE Size 0 还没有形成 PE 
 Total PE 0 
 Free PE 0

4> 创建 VG

[root@server1 ~]# vgcreate -s 4M RHCE /dev/nvme0n2p9 /dev/nvme0n2p10 
 Volume group "RHCE" successfully created 
 -s 4M 指定的 PE 的大小
 RHCE: VG 的名字
/dev/nvme0n2p9 /dev/nvme0n2p10: 把哪些 PV 加入到这个 VG 中 。一旦你创建了 VG ,那么 PV 的属性就会发生变化

5> 查看 VG 属性

[root@server1 ~]# vgs 可以查看到 VG 的基本信息: name PV LV VSIZE VFREE 
 VG #PV #LV #SN Attr VSize VFree 
 RHCE 2 0 0 wz--n- <1.86g <1.86g

[root@server1 ~]# vgscan 仅仅是能够看到 VG 的名字
 Reading all physical volumes. This may take a while... 
 Found volume group "RHCE" using metadata type lvm2 

 [root@server1 ~]# vgdisplay RHCE 能看到 VG 的详细信息
 --- Volume group --- 
 VG Name RHCE 
 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 
 Act PV 2 
 VG Size <1.86 GiB 
 PE Size 4.00 MiB 
 Total PE 475 
 Alloc PE / Size 0 / 0 
 Free PE / Size 475 / <1.86 GiB 
 VG UUID Is0L42-TffX-TBU1-t2Nw-Hy4e-e864-fJE632

6> 创建 LV 有两种方式

        1: 指定 LV 的大小

[root@server1 ~]# lvcreate -L 200MB -n test1 RHCE 
 Logical volume "test1" created. 
 -L 指定 LV 的大小 
 -n: LV 的名字
 RHCE: 你从哪个 VG 中创建的 LV 

[ root@server1 ~]# lvs 能查看到基本情况: LV 的名字 VG 的名字 Size 
 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 
 test1 RHCE -wi-a----- 200.00m 
 [root@server1 ~]# lvdisplay 
 --- Logical volume --- 
 LV Path /dev/RHCE/test1 
 LV Name test1 
 VG Name RHCE 
 LV UUID vQpi14-AJ6B-og8L-fNqU-bIaF-isse-qWebcf 
 LV Write Access read/write 
 LV Creation host, time server1.example.com, 2019-08-31 20:28:28 -0700
LV Status available 
 # open 0 
 LV Size 200.00 MiB 
 Current LE 50 
 Segments 1 
 Allocation inherit 
 Read ahead sectors auto 
 - currently set to 8192 
 Block device 253:0

        2:指定 LV 的 PE 数量

[root@server1 ~]# lvcreate -l 50 -n test2 RHCE 
-l 50 : 指定的这个 LV 含有的 PE 的数量 LV Size=PE 数量*PE 的大小
-n: LV 的名字
RHCE: 你从哪个 VG 中创建的 LV

7> LV 信息查看

        1.lvs

[root@server1 ~]# lvs 
 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 
 test1 RHCE -wi-a----- 200.00m 
 test2 RHCE -wi-a----- 200.00m

        2.lvscan

[root@server1 ~]# lvscan 
 ACTIVE '/dev/RHCE/test1' [200.00 MiB] inherit 
 ACTIVE '/dev/RHCE/test2' [200.00 MiB] inherit

        3.lvsdispaly

[root@server1 ~]# lvdisplay 
 --- Logical volume --- 
 LV Path /dev/RHCE/test1 
 LV Name test1 
 VG Name RHCE 
 LV UUID vQpi14-AJ6B-og8L-fNqU-bIaF-isse-qWebcf 
 LV Write Access read/write 
 LV Creation host, time server1.example.com, 2019-08-31 20:28:28 -0700 
 LV Status available 
 # open 0 
 LV Size 200.00 MiB 
 Current LE 50
 Segments 1 
 Allocation inherit 
 Read ahead sectors auto 
 - currently set to 8192 
 Block device 253:0

8> 格式化

不管你通过哪种方式查看 LV 信息: 有一个重要的信息:LV Path LV 的路径

LV Path                /dev/RHCE/test1

格式化的时候,或者挂载的时候都是通过指定 LV 的路径

LV : 
[root@server1 ~]# ls -l /dev/RHCE/test1 /dev/mapper/RHCE-test1 /dev/dm-0 
brw-rw----. 1 root disk 253, 0 Aug 31 20:28 /dev/dm-0 
lrwxrwxrwx. 1 root root 7 Aug 31 20:28 /dev/mapper/RHCE-test1 -> ../dm-0 
lrwxrwxrwx. 1 root root 7 Aug 31 20:28 /dev/RHCE/test1 -> ../dm-0 
[root@server1 ~]# 

[root@server1 ~]# mkfs -t xfs /dev/RHCE/test1

[root@server1 ~]# mkfs -t ext4 /dev/mapper/RHCE-test2 
mke2fs 1.44.3 (10-July-2018) 
Creating filesystem with 204800 1k blocks and 51200 inodes 
Filesystem UUID: 07a5dab1-4ea7-49c7-8187-a29314a3fdfa 
Superblock backups stored on blocks: 
 8193, 24577, 40961, 57345, 73729 
Allocating group tables: done 
Writing inode tables: done 
Creating journal (4096 blocks): done 
Writing superblocks and filesystem accounting information: done

9> 挂载 使用名字 ,路径,UUID 这三种方式都可以

[root@server1 ~]# mkdir /mnt/RHCE_test1 
[root@server1 ~]# mkdir /mnt/RHCE_test2 
vim /etc/fstab 
/dev/mapper/RHCE-test1 /mnt/RHCE_test1 xfs defaults 0 0 
 UUID="07a5dab1-4ea7-49c7-8187-a29314a3fdfa" /mnt/RHCE_test2 ext4 defaults 0 0 
/dev/RHCE/test1 这种路径方式也是可以的!

逻辑卷扩容

LVM: 最主要原因是为了实现在线扩容!

1> 确认你的 LV 属于哪个 VG 就通过路径名字就可以看出

/dev/mapper/RHCE-test1 xfs 195M 12M 183M 6% /mnt/RHCE_test1

[root@server1 ~]# lvs 
 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 
 test1 RHCE -wi-ao---- 200.00m 
 test2 RHCE -wi-ao---- 200.00m

2> 确认 VG 的容量是否足够支持你扩容!

[root@server1 ~]# vgs 
 VG #PV #LV #SN Attr VSize VFree 
 RHCE 2 2 0 wz--n- <1.86g 1.46g 
RHCE: 这个 VG 剩余 1.46G 
假如你的 LV 想扩容 2G

3> 想扩容 2G : 不够支持你扩容的情况下

[root@server1 ~]# parted -s /dev/nvme0n2 mkpart logical xfs 18.2GB 19.2GB 
 [root@server1 ~]# parted -s /dev/nvme0n2 set 11 lvm on

        1~ 创建 PV

[root@server1 ~]# pvcreate /dev/nvme0n2p11 
 Physical volume "/dev/nvme0n2p11" successfully created.

        2~ 把新建的 PV 加入到 VG

[root@server1 ~]# vgextend RHCE /dev/nvme0n2p11 
 Volume group "RHCE" successfully extended

        3~ 再扩容 LV

[root@server1 ~]# lvresize -L +1G /dev/RHCE/test1 再原来的基础上加上 1G 
 Size of logical volume RHCE/test1 changed from 200.00 MiB (50 extents) to <1.20 GiB (306 extents). 
 Logical volume RHCE/test1 successfully resized.

        4~ 扩容文件系统

文件系统大小的调整方式和你的文件系统类型有关 
xfs 
 
 [root@server1 ~]# xfs_growfs (/mnt/RHCE_test1/) 挂载点 需要指定挂载点,不能指定 LV PATH

4> 想扩容 500M : 你的 VG 剩余空间够你扩容了

1~ 扩容 LV 
 [root@server1 ~]# lvresize -L +500M /dev/RHCE/test2 
 Size of logical volume RHCE/test2 changed from 200.00 MiB (50 extents) to 700.00 MiB (175 extents). 
 Logical volume RHCE/test2 successfully resized. 
[root@server1 ~]#
2~ 扩容文件系统 
 [root@server1 ~]# resize2fs /dev/mapper/RHCE-test2 (EXT 系列的文件系统不能指定挂载点,需要指定 LV PATH) 
resize2fs 1.44.3 (10-July-2018) 
Filesystem at /dev/mapper/RHCE-test2 is mounted on /mnt/RHCE_test2; on-line resizing required 
old_desc_blocks = 2, new_desc_blocks = 6 
The filesystem on /dev/mapper/RHCE-test2 is now 716800 (1k) blocks long.

使用 LV 作为 SWAP

准备 LV 
[root@server1 ~]# lvcreate -L 500M -n swap RHCE 
 Logical volume "swap" created. 

[root@server1 ~]# mkswap /dev/RHCE/swap 
Setting up swapspace version 1, size = 500 MiB (524283904 bytes) 
no label, UUID=23a8a6ad-ad3e-451d-8279-b51ccbd74ddc 

[root@server1 ~]# swapon /dev/RHCE/swap

[root@server1 ~]# swapon -s 
Filename Type Size Used Priority 
/dev/nvme0n1p2 partition 2146300 0 -2 
/dev/nvme0n2p8 partition 1952764 0 10 
/dev/dm-2 partition 511996 0 -3 
[root@server1 ~]#