Linux磁盘操作完全解析:从入门到精通

发表时间: 2024-12-08 00:37

一、文档介绍

本文档描述 Linux 操作系统下多种场景下的磁盘操作情况。

二、名词解释

(一) 磁盘分区工具

fdiskparted都是 Linux 系统中用于磁盘分区的工具。

两者的区别是:

  • fdisk主要支持 MBR 分区表,MBR分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区。
  • parted支持 MBR 分区表 和 GPT 分区表,GPT分区表可以支持更大的硬盘容量和更多的分区数量。

(二) 逻辑卷管理器

LVM(Logical Volume Manager)逻辑卷管理器,是一种高级磁盘管理工具,可以帮忙用户对存储卷进行灵活的管理。使用LVM可以方便的扩展、缩小、移动逻辑卷,从而更好地利用存储资源。LVM通过将物理卷(Physical Volume)、卷组(Volume Group)、逻辑卷(Logical Volume)进行组合,形成一个灵活的存储管理系统。

三、磁盘操作

(一) 查看磁盘信息

1. 查看系统中所有磁盘和分区信息

fdisk -l

2. 查看系统中所有块设备

lsblk

3. 查看系统中所有块设备的标识信息

blkid

(二) 标准磁盘管理

1. 新增一块磁盘

例如:新增磁盘为/dev/sdb

# 查看磁盘fdisk -l# 分区fdisk /dev/sdb## (1) n 创建新分区## (2) p 选择主分区## (3) 填写分区号,回车选择默认## (4) 填写起始和结束扇区(不选择,表示剩余所有扇区,即所有剩余容量)## (5) p 查看现有分区## (6) w 写入磁盘# 格式化/sbin/mkfs.xfs -f -i size=2048 "/dev/sdb1"# 挂载mkdir -p /dataecho '/dev/sdb1 /data xfs defaults 0 0' >> /etc/fstabmount -a

注意:在未执行w写入磁盘之前,都可进行更改。

2. 在原有磁盘上扩容,创建新分区

此操作与新增磁盘的操作一样,区别在于是使用新分区进行

# 查看磁盘fdisk -l# 分区fdisk /dev/sdb## (1) n 创建新分区## (2) p 选择主分区## (3) 填写分区号,回车选择默认## (4) 填写起始和结束扇区(不选择,表示剩余所有扇区,即所有剩余容量)## (5) p 查看现有分区## (6) w 写入磁盘# 格式化/sbin/mkfs.xfs -f -i size=2048 "/dev/sdb2"# 挂载mkdir -p /data2echo '/dev/sdb2 /data2 xfs defaults 0 0' >> /etc/fstabmount -a

3. 在原有磁盘上扩容,扩容旧分区

上述示例中,/dev/sdb2(即/data2)只分配了 1G 空间,本例中需要对/dev/sdb2进行扩容。

注意:1. 本方法需要修改分区表,存在一定危险性,在操作前记得进行数据备份。

2. 本方法只适用于最后一个分区,特别是因为MBR分区表达到4个,无法继续创建分区的情况。


# 查看扩容目录数据ls -alh /data2/

# 取消挂载目录umount /data2# 查看磁盘,记住需要删除分区的起始和结束扇区fdisk -l# 分区fdisk /dev/sdb## (1) p 查看现有分区## (2) d 删除最后一个分区号## (3) p 查看现有分区## 此时只是逻辑删除,未执行w写入磁盘,数据仍然存在,误操作的话CTRL+C退出即可## (4) n 创建新分区## (5) p 选择主分区## (6) 填写分区号,回车选择默认## (7) 填写起始扇区## 重要:确认默认扇区号是否与删除前的一致。## 重要:一致的话,按回车## 重要:不一致的话,需要填写为删除前记录的起始扇区号## (8) 填写结束扇区(不选择,表示剩余所有扇区,即所有剩余容量)## (9) p 查看现有分区## (10) w 写入磁盘# 不重启重载分区partprobe# 挂载磁盘mount -a

此时发现磁盘仍然显示为原有大小,需要进行磁盘重载

  • 如果原有磁盘格式化格式为:xfs,执行命令:xfs_growfs /dev/sdb2
  • 如果原有磁盘格式化格式为:ext4,执行命令:resize2fs /dev/sdb2

(三) LVM

LVM通过分区进行卷管理,所以分区创建部分,可参考标准磁盘管理部分内容。

1. 新增一块磁盘,创建新逻辑卷

例如:新分区为/dev/sdc1

# 创建物理卷pvcreate /dev/sdc1# 查看物理卷pvspvdisplay# 创建卷组vgcreate myvg /dev/sdc1# 查看卷组vgsvgdisplay# 创建逻辑卷lvcreate -n data -l +100%FREE myvg# 查看逻辑卷lvslvdisplay# 格式化/sbin/mkfs.xfs -f -i size=2048 "/dev/myvg/data"# 挂载mkdir -p /data3echo '/dev/mapper/myvg-data /data3 xfs defaults 0 0' >> /etc/fstabmount -a

2. 新增一块磁盘,扩容旧逻辑卷

例如:新分区为/dev/sdd1

# 创建物理卷pvcreate /dev/sdd1# 创建卷组vgextend myvg /dev/sdd1# 扩容逻辑卷lvextend -l +100%FREE /dev/myvg/data

此时发现磁盘仍然显示为原有大小,需要进行磁盘重载

  • 如果原有磁盘格式化格式为:xfs,执行命令:xfs_growfs /dev/myvg/data
  • 如果原有磁盘格式化格式为:ext4,执行命令:resize2fs /dev/myvg/data