Linux 操作系统磁盘操作

一、文档介绍

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

二、名词解释

(一) 磁盘分区工具

fdisk和parted都是 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 /data
echo '/dev/sdb1 /data xfs defaults 0 0' >> /etc/fstab
mount -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 /data2
echo '/dev/sdb2 /data2 xfs defaults 0 0' >> /etc/fstab
mount -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
# 查看物理卷
pvs
pvdisplay

# 创建卷组
vgcreate myvg /dev/sdc1
# 查看卷组
vgs
vgdisplay

# 创建逻辑卷
lvcreate -n data -l +100%FREE myvg
# 查看逻辑卷
lvs
lvdisplay


# 格式化
/sbin/mkfs.xfs -f -i size=2048 "/dev/myvg/data"

# 挂载
mkdir -p /data3
echo '/dev/mapper/myvg-data /data3 xfs defaults 0 0' >> /etc/fstab
mount -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
原文链接:,转发请注明来源!