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