CentOS磁盘挂载

硬件信息

查看硬盘和分区

1
lsblk

image-20200805130602702

查看空间使用情况

1
df -h

image-20200805130656254

分区工具查看分区信息

1
fdisk -l

查看分区

1
cfdisk /dev/vdb

结果

查看硬盘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
free -h

查看CPU核心数

1
cat /proc/cpuinfo| grep "cpu cores"| uniq

硬盘分区与挂载

硬盘分区

大于2T

全盘分1个区

(分区格式化大于2 TiB数据盘 - 云服务器 ECS - 阿里云 (aliyun.com))

查看数据盘

1
fdisk -l

用parted命令

按百分比分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
parted /dev/vdb

# 用gpt格式
mklabel gpt

# 设置为一个主分区,大小为整个磁盘
# 注意输入的大小不能超过硬盘的大小
mkpart primary 1 100%

# 运行以下命令,检查分区是否对齐
align-check optimal 1

# 显示设置的分区大小
print

# 退出parted程序
quit

如图

parted分区

重新读取分区表

1
partprobe

查看硬盘和分区

1
lsblk

运行以下命令,为/dev/vdb1分区创建一个文件系统。

创建一个ext4文件系统。

1
mkfs -t ext4 /dev/vdb1

查看新分区信息

1
fdisk -lu /dev/vdb

按指定大小分多个区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
parted /dev/vdb

# 用gpt格式
mklabel gpt

# 设置单位为GB
unit GB

# 设置为一个主分区,大小为537GB,开始是0,结束是537
# 注意输入的大小不能超过硬盘的大小
mkpart primary 0 537

# 运行以下命令,检查分区是否对齐
align-check optimal 1

# 显示设置的分区大小
print

# 退出parted程序
quit

假如要分两个盘

1
2
mkpart primary 0 500
mkpart primary 500 537

小于2T

查看数据盘信息

1
fdisk -l

创建分区

1
fdisk -u /dev/vdb

步骤

  1. 输入p查看数据盘的分区情况。

    本示例中,数据盘没有分区。

  2. 输入n创建一个新分区。

  3. 输入p选择分区类型为主分区

  4. 输入分区编号,按回车键。

    本示例中,仅创建一个分区,直接按回车键,采用默认值1。

  5. 输入第一个可用的扇区编号,按回车键。

    本示例中,直接按回车键,采用默认值2048。

  6. 输入最后一个扇区编号,按回车键。

    本示例中,仅创建一个分区,直接按回车键,采用默认值。

  7. 输入p查看该数据盘的规划分区情况。

  8. 输入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
2
3
4
5
# 转换成mbr格式
parted /dev/vdb mklabel msdos -s

# 转化成gpt格式
parted /dev/vdb mklabel gpt -s

硬盘扩容

阿里云官方文档:在线扩容云盘(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),表示扩容不成功,建议您在控制台重启下本实例。

image-20220108085717759

上图没有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/vda1之间需要空格分隔。如果需要扩容其他分区,请根据实际情况修改命令。

成功会显示新旧size,如下:

image-20210603190647466

扩容文件系统

此步骤介绍如何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

Ext4

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:

  1. 与 Ext3 兼容。 执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化硬盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。
  2. 更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。
  3. 无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。
  4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。
  5. 多块分配。 当写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。
  6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入硬盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。
  7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。
  8. 日志校验。 日志是最常用的部分,也极易导致硬盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。
  9. “无日志”(No Journaling)模式。 日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
  10. 在线碎片整理。 尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。
  11. inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。
  12. 持久预分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内硬盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。
  13. 默认启用 barrier。 硬盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入硬盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入硬盘,才能写 barrier 之后的数据。(可通过 “mount -o barrier=0” 命令禁用该特性。)

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 分区模式!