如果你要使用一个块设备需要经过一下几个步骤:
查看磁盘信息<块设备信息>
[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 ~]#