Linux磁盘
磁盘分区
linux磁盘分区,分为2种格式:MBR和GPT
其中,MBR格式,大小必须要求小于2TB
GPT格式,大小不做限制,可以小于2TB,也可以大于2TB
创建分区的2个工具:fdisk & parted
Linux系统中有两个分区工具
- fdisk
- parted
二者都可以对linux的硬盘进行分区,但是二者从细节上来说,又有很大的区别,如果不加注意,有可能造成磁盘空间的浪费。
1、fdisk
(1)fdisk命令只支持msdos,分区的时候只支持小容量硬盘(<=2T),但是如果不需要分区的话,那么整块sdb硬盘,类型为msdos,那么他的大小是可以大于2T的。
(2)fdisk命令不支持gpt,所以当使用fdisk命令给gpt类型硬盘分区是会出现告警,就像下面例子中的WARNING
2、parted:
(1)支持msdos和gpt,可以支持大硬盘,也支持小硬盘。
(2)区分parted命令给msdos类型和gpt类型硬盘分区的不同:
上面说的msdos又被称为mbr
LVM:逻辑卷管理
LVM(Logical Volume Manager,逻辑卷管理器)是一种强大的磁盘管理工具,它为管理员提供了比传统分区管理更高效、更灵活的方式。
使用 lvm,用户可以创建、调整和管理逻辑卷,实现动态的磁盘空间分配和扩展。
1. 什么是 lvm?
LVM(Logical Volume Manager)是一种磁盘管理工具,它允许用户将多个物理磁盘和分区整合成一个虚拟的逻辑卷池。这种虚拟化存储的方式,使得磁盘的管理更加灵活,能够动态调整存储容量,而无需重新分区。
1.1 lvm 的主要特点
动态分配和扩展存储:可以根据需要动态扩展或缩减逻辑卷的大小。
卷组管理:多个物理磁盘可以组合成一个卷组,逻辑卷则是卷组中的一个子集。
快照功能:支持创建文件系统的快照,方便备份和恢复。
高效的空间利用:支持精细化的空间管理,最大程度提高磁盘空间的使用效率。
2. lvm 的基本组成
lvm 系统由三个主要部分组成:
物理卷(Physical Volume,PV):物理卷是 lvm 的基本存储单位,通常是磁盘分区或整个磁盘。它包含了存储的数据和元数据。
卷组(Volume Group,VG):卷组由一个或多个物理卷组成,它提供一个统一的存储池,可以在其上创建逻辑卷。
逻辑卷(Logical Volume,LV):逻辑卷是在卷组中分配出来的存储单元,类似于传统分区。它可以动态调整大小,适应不同的存储需求。
- 常用 lvm 命令
lvm 提供了多种命令用于创建、管理和调整磁盘存储。以下是一些常用的 lvm 命令和操作示例:
3.1 创建物理卷
首先,使用 pvcreate 命令将磁盘或磁盘分区初始化为物理卷:
pvcreate /dev/sda1
/dev/sda1 是磁盘分区,创建物理卷后,它将变成 LVM 系统的一部分。
3.2 创建卷组
使用 vgcreate 命令将一个或多个物理卷组合成卷组:
vgcreate vg_data /dev/sda1 /dev/sdb1
vg_data 是卷组的名称,/dev/sda1 和 /dev/sdb1 是物理卷的设备路径。
3.3 创建逻辑卷
在卷组中,使用 lvcreate 命令创建逻辑卷:
lvcreate -n lv_data -L 50G vg_data
lv_data 是逻辑卷的名称,L 50G 表示创建一个 50GB 的逻辑卷,vg_data 是逻辑卷所在的卷组。
3.4 扩展逻辑卷
逻辑卷的大小可以在创建后动态调整,使用 lvextend 命令扩展逻辑卷:
lvextend -L +20G /dev/vg_data/lv_data
L +20G 表示将 lv_data 逻辑卷扩展 20GB。
扩展逻辑卷后,需要调整文件系统的大小以匹配新的空间。
3.6 删除逻辑卷、卷组和物理卷
删除逻辑卷:
lvremove /dev/vg_data/lv_data
删除卷组:
vgremove vg_data
删除物理卷:
pvremove /dev/sda1
5. LVM 的优势与不足
5.1 优势
灵活性高:LVM 允许动态调整存储空间,可以轻松扩展或缩小磁盘分区。
高效空间利用:多个物理卷可以组合成卷组,有效提高磁盘空间的利用率。
快照功能:能够创建文件系统的快照,方便备份和恢复数据。
简化管理:比传统的分区管理方式更加简便,尤其适用于大规模的存储环境。
5.2 不足
复杂性:LVM 的学习曲线较为陡峭,初学者可能需要时间来掌握。
性能开销:由于 LVM 需要管理多个物理卷和逻辑卷,在某些情况下可能会引入一些性能开销。
恢复困难:在磁盘发生故障或逻辑卷损坏时,LVM 的恢复过程可能较为复杂。
6. 总结
LVM 是 Linux 系统中一个强大且灵活的磁盘管理工具,它允许用户根据需求动态调整磁盘分区大小、创建快照并进行高效的存储管理。对于大规模服务器或需要频繁扩展存储的环境,LVM 提供了比传统分区方式更高效的解决方案。掌握 lvm 的基本命令和高级功能,可以极大地提升系统管理员在磁盘管理方面的工作效率。
Vmware磁盘扩容
查看原系统
# 查看物理卷
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rl lvm2 a-- <18.91g 8.0
# 查看虚拟卷分组
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- <18.91g 8.00
# 查看逻辑卷
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- <14.90g
swap rl -wi-ao---- 4.00g
# 查看数据盘和分区
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 874M 0 874M 0% /dev
tmpfs tmpfs 893M 0 893M 0% /dev/shm
tmpfs tmpfs 893M 8.7M 885M 1% /run
tmpfs tmpfs 893M 0 893M 0% /sys/fs/cgroup
/dev/mapper/rl-root xfs 15G 1.9G 14G 13% /
/dev/nvme0n1p1 xfs 1014M 191M 824M 19% /boot
tmpfs tmpfs 179M 0 179M 0% /run/user/0
# 查看磁盘分区的格式,是MBR还是GPT
[root@localhost ~]# parted -l
Model: NVMe Device (nvme)
Disk /dev/nvme0n1: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 21.4GB 20.3GB primary lvm
上面的msdos,表示是分区格式是:MBR分区
逻辑卷的意思就是:D盘、E盘、F盘,所有的逻辑卷共同构成了虚拟卷。
也就是说,虚拟卷可以拆分成多个逻辑卷。
比如上面的rl虚拟卷,拆分成了以下几个逻辑卷:
- rl-root
- rl-home
- rl-swap
扩展磁盘
上面,我们能看到根目录下,原来的磁盘容量是15个G,我们想扩展到30个G。具体操作如下:
vmware扩展
关闭Vmware 的 Linux系统,这样,才能在VMWare菜单中设置。
输入你想要扩展到多少G。
上面的设置完成后,开启虚拟机
在虚拟机中的操作
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 874M 0 874M 0% /dev
tmpfs tmpfs 893M 0 893M 0% /dev/shm
tmpfs tmpfs 893M 8.7M 885M 1% /run
tmpfs tmpfs 893M 0 893M 0% /sys/fs/cgroup
/dev/mapper/rl-root xfs 15G 2.0G 13G 13% /
/dev/nvme0n1p1 xfs 1014M 191M 824M 19% /boot
tmpfs tmpfs 179M 0 179M 0% /run/user/0
通过上面的命令,可以看到,根目录还是15G,磁盘的扩容,没有立即生效。所以,需要做以下操作
# 查看硬盘信息
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 2.2G 0 rom
nvme0n1 259:0 0 35G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 18.9G 0 part
├─rl-root 253:0 0 14.9G 0 lvm /
└─rl-swap 253:1 0 4G 0 lvm [SWAP]
# 创建新的分区
fdisk /dev/nvme0n1
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.
Command (m for help): m
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
通过上面的命令提示,我们知道,想添加一个新分区,需要使用命令n
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (41756672-73400319, default 41756672):
Last sector, +sectors or +size{K,M,G,T,P} (41756672-73400319, default 73400319):
Created a new partition 3 of type 'Linux' and of size 15.1 GiB.
上面的命令,让我们选择是primary还是extend,我们选择了primary,代表主分区飞意思
然后,让我们选择分区编号,我们选了3。
然后,又让我们选择分区的开始值和结束值,都是使用默认值,直接敲击enter键即可。
接下来,输入命令w,意思是保存并退出fdisk分区工具
Command (m for help): w
The partition table has been altered.
Syncing disks.
接下来,查看硬盘信息:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 2.2G 0 rom
nvme0n1 259:0 0 35G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
├─nvme0n1p2 259:2 0 18.9G 0 part
│ ├─rl-root 253:0 0 14.9G 0 lvm /
│ └─rl-swap 253:1 0 4G 0 lvm [SWAP]
└─nvme0n1p3 259:3 0 15.1G 0 part
可以看到,编号为3的分区,已经添加上了,size是15.1G
# 分区格式化
mkfs -t xfs /dev/nvme0n1p3
# 创建物理卷
[root@localhost ~]# pvcreate /dev/nvme0n1p3
WARNING: xfs signature detected on /dev/nvme0n1p3 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/nvme0n1p3.
Physical volume "/dev/nvme0n1p3" successfully created.
# 查看物理卷
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rl lvm2 a-- <18.91g 8.00m
/dev/nvme0n1p3 lvm2 --- <15.09g <15.09g
# 扩展虚拟卷,nvme0n1p3加入到rl(这个名字从上面vgs中VG字段获取)
[root@localhost ~]# vgextend rl /dev/nvme0n1p3
Volume group "rl" successfully extended
# 查看虚拟卷[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rl 2 2 0 wz--n- 33.99g 15.09g
可以看到由原来的18.91G变成了33.99G。其中15.09G是空闲的
# 查看要扩容的文件系统的位置 ,这里是/dev/mapper/rl-root
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 874M 0 874M 0% /dev
tmpfs tmpfs 893M 0 893M 0% /dev/shm
tmpfs tmpfs 893M 8.7M 885M 1% /run
tmpfs tmpfs 893M 0 893M 0% /sys/fs/cgroup
/dev/mapper/rl-root xfs 15G 2.0G 13G 14% /
/dev/nvme0n1p1 xfs 1014M 191M 824M 19% /boot
tmpfs tmpfs 179M 0 179M 0% /run/user/0
# 这个命令的意思是:将所有的空闲大小都加入到需要扩容的/dev/mapper/rl-root逻辑卷中
[root@localhost ~]# lvextend -l +100%free /dev/mapper/rl-root
Size of logical volume rl/root changed from <14.90 GiB (3814 extents) to 29.99 GiB (7678 extents).
Logical volume rl/root successfully resized.
# 扩容,调整分区
[root@localhost ~]# xfs_growfs /dev/mapper/rl-root
meta-data=/dev/mapper/rl-root isize=512 agcount=4, agsize=976384 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=3905536, 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
data blocks changed from 3905536 to 7862272
# 查看,磁盘扩容是否成功:可以看到size已经从原来的15G,升级到现在的30G
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 874M 0 874M 0% /dev
tmpfs tmpfs 893M 0 893M 0% /dev/shm
tmpfs tmpfs 893M 8.7M 885M 1% /run
tmpfs tmpfs 893M 0 893M 0% /sys/fs/cgroup
/dev/mapper/rl-root xfs 30G 2.1G 28G 7% /
/dev/nvme0n1p1 xfs 1014M 191M 824M 19% /boot
tmpfs tmpfs 179M 0 179M 0% /run/user/0
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 2.2G 0 rom
nvme0n1 259:0 0 35G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
├─nvme0n1p2 259:2 0 18.9G 0 part
│ ├─rl-root 253:0 0 30G 0 lvm /
│ └─rl-swap 253:1 0 4G 0 lvm [SWAP]
└─nvme0n1p3 259:3 0 15.1G 0 part
└─rl-root 253:0 0 30G 0 lvm /