LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
Linux中规定主分区和逻辑分区的数量之和不能大于4,最多能划分三个主分区和一个扩展分区。
主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。
因此,Linux 下面每一个硬盘总共最多有 16 个分区。
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
[root@test4 ~]# fdisk /dev/sda //对sda磁盘进行分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 2597.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): m //输出帮助信息
Command action
a toggle a bootable flag //设置启动分区
b edit bsd disklabel //编辑分区标签
c toggle the dos compatibility flag
d delete a partition //删除一个分区
l list known partition types //列出分区类型
m print this menu //输出帮助信息
n add a new partition //建立一个新的分区
o create a new empty DOS partition table //创建一个新的空白DOS分区表
p print the partition table //打印分区表
q quit without saving changes //退出不保存设置
s create a new empty Sun disklabel
t change a partition's system id //改变分区的ID
u change display/entry units //改变显示的单位
v verify the partition table //检查验证分区表
w write table to disk and exit //保存分区表
x extra functionality (experts only)
Command (m for help):n
Command action
e extended //e是扩展分区
p primary partition (1-4) //p是主分区
p
Partition number (1-4): 1 //定义分区数量 --主分区最多只能有四个
First cylinder (1-2597, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-2597, default 2597): +100M
Command (m for help): w //保存刚才的配置信息。
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: 无效的参数.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
例:划分两个500M的主分区,剩余的给扩展分区,扩展分区里面划分两个逻辑分区
[root@node3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 5G 0 disk
sr0 11:0 1 7.3G 0 rom /guangpan
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 200M 0 part /boot
└─nvme0n1p2 259:2 0 12G 0 part
├─rhel-root 253:0 0 10G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
说明关机添加的磁盘sda已经被识别
[root@node3 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x85dbdf89 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n^Hm
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1): 1
第一个扇区 (2048-10485759, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-10485759, 默认 10485759): +500M
创建了一个新分区 1,类型为“Linux”,大小为 500 MiB。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (1个主分区,0个扩展分区,3空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (2-4, 默认 2): 2
第一个扇区 (1026048-10485759, 默认 1026048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (1026048-10485759, 默认 10485759): +500M
创建了一个新分区 2,类型为“Linux”,大小为 500 MiB。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
将剩下的磁盘作为扩展分区
[root@node3 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (2个主分区,0个扩展分区,2空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):e
分区号 (3,4, 默认 3):
第一个扇区 (2050048-10485759, 默认 2050048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2050048-10485759, 默认 10485759):
创建了一个新分区 3,类型为“Extended”,大小为 4 GiB。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
再将扩展分区划分两个500M的逻辑分区
root@node3 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 5
第一个扇区 (2052096-10485759, 默认 2052096):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2052096-10485759, 默认 10485759): +500M
创建了一个新分区 5,类型为“Linux”,大小为 500 MiB。
命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 6
第一个扇区 (3078144-10485759, 默认 3078144):
上个扇区,+sectors 或 +size{K,M,G,T,P} (3078144-10485759, 默认 10485759): +500M
创建了一个新分区 6,类型为“Linux”,大小为 500 MiB。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
更改分区类型:
[root@node3 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
分区号 (1-3,5,6, 默认 6):
Hex 代码(输入 L 列出所有代码):83
已将分区“Linux swap / Solaris”的类型更改为“Linux”。
命令(输入 m 获取帮助):p
Disk /dev/sda:5 GiB,5368709120 字节,10485760 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x85dbdf89
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 2048 1026047 1024000 500M 83 Linux
/dev/sda2 1026048 2050047 1024000 500M 83 Linux
/dev/sda3 2050048 10485759 8435712 4G 5 扩展
/dev/sda5 2052096 3076095 1024000 500M 83 Linux
/dev/sda6 3078144 4102143 1024000 500M 83 Linux
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@node3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 5G 0 disk
├─sda1 8:1 0 500M 0 part
├─sda2 8:2 0 500M 0 part
├─sda3 8:3 0 1K 0 part
├─sda5 8:5 0 500M 0 part
└─sda6 8:6 0 500M 0 part
sr0 11:0 1 7.3G 0 rom /guangpan
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 200M 0 part /boot
└─nvme0n1p2 259:2 0 12G 0 part
├─rhel-root 253:0 0 10G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
创建pv:
[root@node3 ~]# pvcreate /dev/sda{1,2,5,6}
Physical volume "/dev/sda1" successfully created.
Physical volume "/dev/sda2" successfully created.
Physical volume "/dev/sda5" successfully created.
Physical volume "/dev/sda6" successfully created.
查看:
[root@node3 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rhel lvm2 a-- 12.00g 4.00m
/dev/sda1 lvm2 --- 500.00m 500.00m
/dev/sda2 lvm2 --- 500.00m 500.00m
/dev/sda5 lvm2 --- 500.00m 500.00m
/dev/sda6 lvm2 --- 500.00m 500.00m
- 物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
- 卷组(Volume Group,VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。
- 逻辑卷(Logical Volume,LV):类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。
创建vg :
直接从扩展分区中创建:
[root@node3 ~]# vgcreate myvg1 /dev/sda{1,2}
Volume group "myvg1" successfully created
[root@node3 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg1 2 0 0 wz--n- 992.00m 992.00m
rhel 1 2 0 wz--n- 12.00g 4.00m
从创建好的PV中创建vg:
[root@node3 ~]# vgextend myvg1 /dev/sda{5,6}
Volume group "myvg1" successfully extended
[root@node3 ~]# vgs myvg1
VG #PV #LV #SN Attr VSize VFree
myvg1 4 0 0 wz--n- <1.94g <1.94g
创建lv(逻辑卷):
[root@node3 ~]# lvcreate -n mylv1 -L 800M myvg1
Logical volume "mylv1" created.
[root@node3 ~]# lvs /dev/myvg1/mylv1
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv1 myvg1 -wi-a----- 800.00m
格式化:没有分区类型和唯一标识等信息,这是因为磁盘还没有格式化
[root@node3 ~]# mkfs.xfs /dev/myvg1/mylv1
meta-data=/dev/myvg1/mylv1 isize=512 agcount=4, agsize=51200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=204800, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=1566, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载:
[root@node3 ~]# tail -1 /etc/fstab
UUID=2019-10-15-13-34-03-00 /guangpan iso9660 defaults 0 0
[root@node3 ~]# mkdir /tools
[root@node3 ~]# mount -a
[root@node3 ~]# df -h | grep /tools/