前言
基本概念
磁盘、分区、文件系统、物理卷、卷组、逻辑卷关系:
- 磁盘 → 分区 → 文件系统:磁盘被划分为分区,分区上建立文件系统以管理文件。
- 磁盘/分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统:使用LVM时,磁盘或分区转换为物理卷,加入卷组,从中创建逻辑卷,最后在逻辑卷上建立文件系统。
物理卷(PV)、卷组(VG)、逻辑卷(LV)的关系:
- 物理卷 → 卷组:多个物理卷可以组合成一个卷组,形成一个统一的存储池。
- 卷组 → 逻辑卷:卷组中的存储资源被划分为逻辑扩展,供逻辑卷使用,逻辑卷可以动态管理这些资源。
扩容
磁盘 → 分区 → 文件系统
磁盘扩容 => 分区扩容 => 文件系统扩容
磁盘/分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统
磁盘扩容 => 分区扩容 => 物理卷扩容 => 逻辑卷扩容 => 文件系统扩容
卷组在物理卷扩容后容量是自动变化的。
硬盘与分区查看
查看硬盘和分区
parted
功能:parted
是一个功能强大的磁盘分区管理工具,主要查看磁盘信息,-l
选项用于列出所有磁盘的分区信息。
用法示例
1 | sudo parted -l |
主要信息
可以结合下面的命令进行分区处理
1 | cfdisk /dev/vdb |
lsblk
lsblk
命令以树形结构列出所有可用块设备的信息,包括磁盘、分区、挂载点等,输出信息更加简洁直观。
查看所有的磁盘和分区以及是否挂载
1 | lsblk |
其中
rom
:只读存储设备,如 CD-ROM。disk
:完整的磁盘设备,如 HDD 或 SSD。part
:磁盘上的分区,独立的存储单元。lvm
:通过逻辑卷管理的存储空间,提供灵活的动态管理。
图形化查看操作分区
这个可以方便的查看指定磁盘下的分区,以及分区扩容删除等操作。
1 | cfdisk /dev/vda |
结果
挂载点空间占用
查看挂载点空间占用
1 | df -Th |
其中
-T
:显示文件系统类型。-h
:更友好显示空间大小。
分区工具查看分区信息
1 | fdisk -l |
查看硬盘label(别名)
1 | blkid |
结果
/dev/sda1: UUID=”402367d8-2b76-4080-ba33-a6f3ac1f612a” TYPE=”xfs”
/dev/sda2: UUID=”ffawvU-whvv-lrfg-Qe6R-lsCM-JVtQ-4ThqKB” TYPE=”LVM2_member”
/dev/sda3: UUID=”NiKQ5r-oXD1-eyLM-qcZp-LBQ2-bs9U-3HdmAs” TYPE=”LVM2_member”
/dev/mapper/hnjyt-root: UUID=”b9093cd3-f68b-42d5-8bcc-949f5a728f68” TYPE=”xfs”
/dev/mapper/hnjyt-swap: UUID=”d0162e04-041f-48aa-8a1e-a4ff9792e6e4” TYPE=”swap”
文件夹大小
1 | du -sh ./* |
硬盘分区
图形化操作
查看分区信息及是否挂载
1 | lsblk |
分区操作
1 | cfdisk /dev/vdb |
创建分区/更改尺寸后需要写入
才会生效。
查看硬盘和分区
1 | lsblk |
运行以下命令,为/dev/vdb1
分区创建一个文件系统。
创建xfs文件系统:
1 | mkfs -t xfs /dev/vdb1 |
创建ext4文件系统:
1 | mkfs -t ext4 /dev/vdb1 |
查看所有的文件系统
1 | blkid |
命令行操作
大于2T
全盘分1个区
(分区格式化大于2 TiB数据盘 - 云服务器 ECS - 阿里云 (aliyun.com))
查看数据盘
1 | fdisk -l |
用parted命令
按百分比分区
1 | parted /dev/vdb |
如图
重新读取分区表
1 | partprobe |
查看硬盘和分区
1 | lsblk |
运行以下命令,为/dev/vdb1
分区创建一个文件系统。
创建一个ext4文件系统。
1 | mkfs -t ext4 /dev/vdb1 |
查看新分区信息
1 | fdisk -lu /dev/vdb |
按指定大小分多个区
1 | parted /dev/vdb |
假如要分两个盘
1 | mkpart primary 0 500 |
小于2T
查看数据盘信息
1 | fdisk -l |
创建分区
1 | fdisk -u /dev/vdb |
步骤
输入
p
查看数据盘的分区情况。本示例中,数据盘没有分区。
输入
n
创建一个新分区。输入
p
选择分区类型为主分区输入分区编号,按回车键。
本示例中,仅创建一个分区,直接按回车键,采用默认值1。
输入第一个可用的扇区编号,按回车键。
本示例中,直接按回车键,采用默认值2048。
输入最后一个扇区编号,按回车键。
本示例中,仅创建一个分区,直接按回车键,采用默认值。
输入
p
查看该数据盘的规划分区情况。输入
w
开始分区,并在完成分区后退出。
查看新分区信息
1 | fdisk -lu /dev/vdb |
新分区创建文件系统
1 | mkfs -t ext4 /dev/vdb1 |
分区挂载
挂载的分区必须有文件系统
创建文件夹
1 | mkdir /data |
挂载
1 | mount /dev/vdb1 /data |
查看硬盘的剩余空间
1 | df -hl |
取消挂载
1 | umount /data |
配置/etc/fstab文件
备份etc/fstab文件:
1 | cp /etc/fstab /etc/fstab.bak |
ROOT用户
root用户可以运行以下命令直接修改/etc/fstab文件。
1 | echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /data ext4 defaults 0 0 >> /etc/fstab |
普通用户
普通用户可以手动修改/etc/fstab
文件。
运行以下命令查看新分区的UUID。
1 | sudo blkid /dev/vdb1 |
运行结果如下所示。
/dev/vdb1: UUID=”ca540a2c-b05e-4d8d-9a2a-e0dff3654823” TYPE=”ext4”
运行以下命令编辑/etc/fstab
文件。
1 | sudo vi /etc/fstab |
输入i进入编辑模式。
在/etc/fstab
文件中写入新分区信息,UUID值请修改为前面步骤中的查询结果。
1 | UUID=ca540a2c-b05e-4d8d-9a2a-e0dff3654823 /data ext4 defaults 0 0 |
按Esc键,输入:wq
,按回车键保存并退出。
查看新分区信息
运行以下命令:
1 | cat /etc/fstab |
转换分区格式
使用免交互加上 -s
1 | # 转换成mbr格式 |
硬盘扩容
物理磁盘的容量是固定的,无法通过任何软件手段直接增加其存储容量。如果需要更大的存储空间,通常需要更换为容量更大的物理磁盘。
逻辑磁盘是通过存储虚拟化技术,如 RAID(磁盘冗余阵列)、逻辑卷管理(LVM)等,可以将多个物理磁盘组合成一个逻辑磁盘。这种是可以扩容的。
磁盘扩容
=> 分区扩容
=> 文件系统扩容
经过这三个步骤才算扩容成功。
大多数现代文件系统,如 ext4、XFS、Btrfs 等,都支持在线扩容。这意味着可以在不卸载文件系统的情况下,增加其容量。
例如,使用 resize2fs
工具可以扩展 ext4 文件系统的大小,而 xfs_growfs
则用于扩展 XFS 文件系统。
阿里云官方文档:在线扩容云盘(Linux系统) - 云服务器 ECS - 阿里云 (aliyun.com)
注意
购买磁盘扩容后,要通过阿里ECS实例列表中重启才能生效。
查看分区信息
运行以下命令查看实例的云盘情况。
1 | fdisk -lu |
示例以系统盘(/dev/vda1)和数据盘(/dev/vdb1、/dev/vdc1)的三个分区为例,执行结果如下所示。
序号 | 分区 | 说明 |
---|---|---|
1 | /dev/vda1 |
系统盘,System取值Linux表示为MBR分区。 |
2 | /dev/vdb1 |
数据盘,System取值Linux表示为MBR分区。 |
3 | /dev/vdc1 |
数据盘,System取值GPT表示为GPT分区。 |
说明 如果您的查询结果中云盘容量还是40 GiB(Disk /dev/vda: 42.9 GB
),表示扩容不成功,建议您在控制台重启下本实例。
上图没有System也是GPT分区
扩容分区
通过查看云盘分区情况,在ECS实例内分区和文件系统并未扩容。此步骤介绍如何在ECS实例内部扩容云盘分区。
在ECS实例内部,安装gdisk工具。
如果您的分区为GPT格式,必须执行此步骤;如果您的分区为MBR格式,请跳过此步骤。
1 | yum install gdisk -y |
安装growpart工具。
CentOS 7及以上版本运行以下命令。
1
yum install -y cloud-utils-growpart
Debian 9及以上版本、Ubuntu14及以上版本运行以下命令。
更新软件源。
1
apt-get update
安装cloud-guest-utils。
1
apt-get install -y cloud-guest-utils
运行以下命令扩容分区。
1 | growpart /dev/vdb 1 |
此示例以扩容系统盘为例,/dev/vda
和1
之间需要空格分隔。如果需要扩容其他分区,请根据实际情况修改命令。
成功会显示新旧size,如下:
扩容文件系统
此步骤介绍如何ECS实例内部扩容分区的文件系统。
在ECS实例内部,根据查询的文件系统类型,扩容文件系统。
运行以下命令确认已有分区的文件系统类型。
1 | df -Th |
执行结果如下所示。
扩容ext*
(例如ext4)文件系统:
运行以下命令扩容文件系统。
扩容数据盘/dev/vdb1的文件系统
1 | resize2fs /dev/vdb1 |
说明/dev/vdb1
都是分区名称,您需要根据实际情况修改。
扩容xfs文件系统:
运行以下命令扩容文件系统。
1 | xfs_growfs /media/vdc |
说明 /media/vdc
为/dev/vdc1
的挂载点,您需要根据实际情况修改。
运行以下命令检查扩容后结果。
1 | df -Th |
Tips
MBR和GPT
MBR,主引导记录(Master Boot Record) ,也就是现有的硬盘分区模式。 MBR分区的标准决定了MBR只支持在2TB以下的硬盘,超过2TB的硬盘只能管理2TB ! 为解决这个大问题,微软和英特尔在EFI方案中开发了GPT分区模式。
GPT,全局唯一标识分区表(GUID Partition Table) , GUID,全局唯一标识符 (Globally Unique Identifier) 。 GPT是EFI方案的一部分,但并不依赖于EFI主板,在BIOS主板的PC中也可使用GPT分区。与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB 。
注意
MBR 分区模式最大只能支持 2TB 硬盘, 超过2T的硬盘必须使用 GPT 分区模式!
xfs和ext4
xfs文件系统
- 优点:高性能,处理大文件和目录表现佳;扩展性强,支持超大文件系统和文件;日志强大,快速恢复一致性;元数据管理高效。
- 缺点:损坏后修复难度大;空间分配保守,小文件场景磁盘利用率低;旧内核兼容性欠佳。
ext4 文件系统
- 优点:广泛支持,主流 Linux 发行版都适配;稳定性高;具备多种实用特性;小文件场景磁盘空间利用率高。
- 缺点:大文件及高并发场景性能不如 XFS;文件系统和文件大小理论上限相对小;元数据更新速度较慢。