Linux 学习笔记(磁盘管理)

93 阅读6分钟

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