Linux 磁盘管理
基础概念
磁盘
磁盘是指物理存储设备,如硬盘驱动器(HDD)和固态驱动器(SSD)。磁盘可以用来存储数据和各类文件系统。
分区
分区是磁盘上的一个逻辑部分,可以格式化并持有一个文件系统。一个物理磁盘可以被分成多个分区。
LVM
LVM 是逻辑卷管理的缩写,它是一种用于现代 Linux 操作系统的高级磁盘管理技术。LVM 允许管理员更灵活地使用磁盘存储空间。可以创建、调整大小、删除逻辑卷,而无需关心这些卷在物理设备上的具体位置。
有以下特点:
1. 动态调整大小:LVM 允许在运行时动态调整文件系统的大小,可以在不中断服务的情况下增加或减小存储空间。
2. 快照支持:可以创建文件系统的快照,即特定时间点上的数据拷贝。
物理卷
物理卷(PV)是 LVM 中的一个概念。它可以是分区、整个磁盘或者磁盘的一部分。多个物理卷可以组合成一个卷组。
卷组
一个或多个物理卷组成一个卷组。卷组作为资源池,提供空间给逻辑卷使用。
逻辑卷
在卷组内部,逻辑卷是用户直接使用的存储单元。可以在逻辑卷上创建文件系统,挂载他们,并像使用物理分区那样使用他们。
和分区的区别:
1. 分区是磁盘的物理分段,即磁盘被分成的几部分。而逻辑卷是通过软件来管理和优化物理存储空间的一种方法,它实际上并不直接对应磁盘上的物理段。
2. 分区的大小和位置一旦确定,要修改通常需要重新格式化、进行复杂的分区操作,这可能会导致数据丢失。而逻辑卷提供了更高的灵活性。允许管理员动态调整大小、合并/迁移存储,而不丢失数据。
3. 逻辑卷可以横跨多个物理设备和存储空间。
EXT4 和 XFS
EXT4 和 XFS 是两种广泛使用的 Linux 文件系统。用于存储和管理磁盘上的文件。但它们在应用场景上有些区别:
1. EXT4 在电源故障或系统崩溃后提供良好的一致性和恢复保障,XFS 在这块是不太友好的。
2. XFS 在处理大型文件和并行 IO 操作方面通常表现更优。而 EXT4 在处理大量小文件时候非常高效。
3. EXT4 适合桌面和服务器应用。XFS 适合需要高性能和大规模存储的企业应用。
这里值得一提的是:我们日常使用的 CentOS 是 XFS 的文件系统,Ubuntu 是 EXT4 文件系统。
实践环节,这里以 CentOS 系统为例
在分区上创建物理卷形成卷组,之后创建逻辑卷进行挂载
列出设备的信息,包括磁盘、分区、逻辑卷、光驱等。
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 900G 92G 809G 11% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 16M 16G 1% /dev/shm
tmpfs 16G 107M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda7 4.0G 180M 3.9G 5% /boot
/dev/mapper/centos-home 350G 81G 269G 24% /home
/dev/mapper/centos-var 350G 13G 338G 4% /var
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 100M 0 part
├─sda2 8:2 0 16M 0 part
├─sda3 8:3 0 38.5G 0 part
├─sda4 8:4 0 200G 0 part
├─sda5 8:5 0 571M 0 part
├─sda6 8:6 0 2M 0 part
├─sda7 8:7 0 4G 0 part /boot
└─sda8 8:8 0 1.6T 0 part
├─centos-root 253:0 0 900G 0 lvm /
├─centos-swap 253:1 0 16G 0 lvm [SWAP]
├─centos-home 253:2 0 350G 0 lvm /home
└─centos-var 253:3 0 350G 0 lvm /var
sdb 8:0 0 1.0T 0 disk
可以看到有一块 1.0T 的 sdb 空闲。接下来在 sdb 上创建分区 sdb1。
[root@localhost ~]# fdisk /dev/sdb
# 输入 n 创建分区,依照提示选择分区起始位置、大小等,一路回车即可。最后输入 s 保存退出。
再次查看设备的信息:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 100M 0 part
├─sda2 8:2 0 16M 0 part
├─sda3 8:3 0 38.5G 0 part
├─sda4 8:4 0 200G 0 part
├─sda5 8:5 0 571M 0 part
├─sda6 8:6 0 2M 0 part
├─sda7 8:7 0 4G 0 part /boot
└─sda8 8:8 0 1.6T 0 part
├─centos-root 253:0 0 900G 0 lvm /
├─centos-swap 253:1 0 16G 0 lvm [SWAP]
├─centos-home 253:2 0 350G 0 lvm /home
└─centos-var 253:3 0 350G 0 lvm /var
sdb 9:0 0 1.0T 0 disk
├─sdb1 9:1 0 1.0T 0 part
发现多了块 sdb1 的分区,这时候将从 sdb1 创建物理卷:
[root@localhost ~]# pvcreate /dev/sdb1
WARNING: ntfs signature detected on /dev/sdb1 at offset 3. Wipe it? [y/n]: y Wiping ntfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
将刚创建的物理卷加入到现有的卷组里:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 4 0 wz--n- <1.58t 4.00m
[root@localhost ~]# vgextend centos /dev/sdb1
Volume group "centos" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 4 0 wz--n- <2.58t 4.00m
可以看到卷组多了 1 个 T 的空间,这时候将新增的空间加到逻辑卷里:
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 350.00g
root centos -wi-ao---- 900.00g
swap centos -wi-ao---- 16.00g
var centos -wi-ao---- 350.00g
# 给 home 新增 200G
[root@localhost ~]# lvextend -L +200G /dev/centos/home
Size of logical volume centos/home changed from 350.00 GiB to 550.00 GiB.
Logical volume centos/home successfully resized.
# 剩余的空间分配给 root,也就是 / 挂载点
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from 900.00 GiB to 1724.00 GiB.
Logical volume centos/root successfully resized.
# 增加了逻辑卷大小之后,需要告诉操作系统去认识到这个变更,需要通过 xfs_growfs 扩展现有的 XFS 文件系统尺寸
[root@localhost ~]# xfs_growfs /dev/centos/home
[root@localhost ~]# xfs_growfs /dev/centos/root
这时候 df -h 看一下:
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 1724G 92G 1632G 5% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 16M 16G 1% /dev/shm
tmpfs 16G 107M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda7 4.0G 180M 3.9G 5% /boot
/dev/mapper/centos-home 550G 81G 469G 14% /home
/dev/mapper/centos-var 350G 13G 338G 4% /var