首页 运维 linux运维 如何处理文件系统和快照空间大小不一致

如何处理文件系统和快照空间大小不一致

Sep 29, 2018 pm 03:38 PM
linux

本文在介绍如何处理文件系统和快照空间大小不一致的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。

为什么文件系统和快照空间大小不一致?

有用户咨询,在ECS实例内删除文件后再打快照,发现快照容量并没有变小。出现该现象的原因与快照原理、以及文件系统与磁盘、快照的关系有关,即,只要被写过数据的存储块(Block),即使在磁盘中的相关文件已经被删除,数据块仍会被记录到快照中,所以出现快照比磁盘占用空间大的现象。文件系统中所谓删除只是在需要删除的文件头部做个标记,让用户知道这块空间可以利用了,但并不会减少磁盘本身的空间占用。

为什么文件系统和快照空间大小不一致?

用户在实例内部看到的是磁盘 (EBS),在磁盘分区上创建的是文件系统 (File System)。文件系统负责管理磁盘空间,其操作最终均转化为磁盘的 I/O 请求。EBS 会记录 Block(指磁盘的逻辑块地址被块存储划分为相同大小的块)状态,按需将脏数据拷贝到 OSS,这就是打快照的过程。

以下原因可能会造成文件系统的空间与快照大小不一致:

文件系统本身的元数据会占用磁盘空间。

创建文件系统过程会写大量 Block。特别的,Windows 的慢速格式化会写脏大量 Block,而使用快速格式化可以减少写Block 的数量。

文件系统为了减小开销,删除文件只是在内部做个标记,而 EBS 不感知这个删除指令,Block 仍然是已分配状态,所以仍会把这部分也做到快照里,导致快照比文件系统大。

Virtio-block 和 Xen 的 Block-front 等模块不支持 TRIM 指令(一种IO指令,提示LBA上的某段数据不再使用,可以被删除),因而磁盘无法感知数据可以被删除。

创建快照原理

创建快照原理如下图所示。

说明:

将磁盘 LBA(逻辑块地址) 划分为 Block,未分配过的称为空块,图中白色小方框表示。

只要 Block 被写过(已分配,将不再是空块),就将参与计量。

磁盘第一个快照是全量,空块不拷贝。

磁盘后续快照是增量快照,拷贝自上一个快照以来的增量脏数据,因此同一个 Block 在不同快照中可能会出现多个版本(图中用不同颜色来表示)。

微信截图_20180929153521.png

快照计量方法

如上图所示,快照记录空间共有 11 个 Block,比磁盘 T2 中的 9 个 Block 还要多出 2 个。

对单块磁盘的所有快照整体计量。

只对已分配的 Block 进行计量。不同时间点相同版本 Block 只统计一次。

不同版本的 Block 占用 N 倍空间。

删除快照的原理

删除快照的原理如下图所示。

说明:

离线分析已删除快照的所有 Block,删除其中未被其他快照引用的数据。

删除 S1 之后,剩下的快照一共有 10 个 Block(包含 S0 的 6 个、S1 产生的 2 个脏数据、S2 的 2 个。),而不是 8 个 Block(S0 的 6 个、S2 的 2 个)。

微信截图_20180929153531.png

“数据写入操作”的准确定义

首先澄清一个概念,对底层分布式存储系统而言,“数据写入操作”不仅仅意味着用户写入的业务数据,也包括格式化磁盘等一系列I/O操作。

用户在拿到磁盘后,必须要先格式化才能正常使用。格式化的本质是建立文件系统的过程。一个分区或磁盘在作为文件系统使用前,需要初始化,并将数据结构记录到磁盘上,这个过程就叫建立文件系统。

因此,在磁盘上建立文件系统,也就意味着对磁盘有数据写入操作。不同的文件系统,在格式化时写入的文件大小也不尽相同,具体如下:

Windows系统格式化,分为快速和正常格式化:

快速格式化只是给分区分配文件系统,并重写目录表;

正常格式化不但会进行上述工作,还会对分区逐扇区进行扫描以确定和标记坏扇区;

因此正常格式化操作,会填充磁盘空块,相当于把磁盘全盘写了一遍。在此种情况下,第一个全量快照的大小会近似于磁盘容量。而快速格式化占用的实际空间则相对较少。

Linux系统格式化,也同样是建立文件系统的过程。因此刚刚格式化完毕的磁盘,在用户没有写入业务数据的时候,第一个快照也会有一定的容量大小,具体要看不同的文件系统格式而定。

以上是如何处理文件系统和快照空间大小不一致的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

centos和ubuntu的区别 centos和ubuntu的区别 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的关键差异在于:起源(CentOS 源自 Red Hat,面向企业;Ubuntu 源自 Debian,面向个人)、包管理(CentOS 使用 yum,注重稳定;Ubuntu 使用 apt,更新频率高)、支持周期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社区支持(CentOS 侧重稳定,Ubuntu 提供广泛教程和文档)、用途(CentOS 偏向服务器,Ubuntu 适用于服务器和桌面),其他差异包括安装精简度(CentOS 精

Centos停止维护2024 Centos停止维护2024 Apr 14, 2025 pm 08:39 PM

CentOS将于2024年停止维护,原因是其上游发行版RHEL 8已停止维护。该停更将影响CentOS 8系统,使其无法继续接收更新。用户应规划迁移,建议选项包括CentOS Stream、AlmaLinux和Rocky Linux,以保持系统安全和稳定。

centos如何安装 centos如何安装 Apr 14, 2025 pm 09:03 PM

CentOS 安装步骤:下载 ISO 映像并刻录可引导媒体;启动并选择安装源;选择语言和键盘布局;配置网络;分区硬盘;设置系统时钟;创建 root 用户;选择软件包;开始安装;安装完成后重启并从硬盘启动。

CentOS上GitLab的备份方法有哪些 CentOS上GitLab的备份方法有哪些 Apr 14, 2025 pm 05:33 PM

CentOS系统下GitLab的备份与恢复策略为了保障数据安全和可恢复性,CentOS上的GitLab提供了多种备份方法。本文将详细介绍几种常见的备份方法、配置参数以及恢复流程,帮助您建立完善的GitLab备份与恢复策略。一、手动备份利用gitlab-rakegitlab:backup:create命令即可执行手动备份。此命令会备份GitLab仓库、数据库、用户、用户组、密钥和权限等关键信息。默认备份文件存储于/var/opt/gitlab/backups目录,您可通过修改/etc/gitlab

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

centos怎么挂载硬盘 centos怎么挂载硬盘 Apr 14, 2025 pm 08:15 PM

CentOS硬盘挂载分为以下步骤:确定硬盘设备名(/dev/sdX);创建挂载点(建议使用/mnt/newdisk);执行mount命令(mount /dev/sdX1 /mnt/newdisk);编辑/etc/fstab文件添加永久挂载配置;卸载设备使用umount命令,确保没有进程使用设备。

centos停止维护后怎么办 centos停止维护后怎么办 Apr 14, 2025 pm 08:48 PM

CentOS 停止维护后,用户可以采取以下措施应对:选择兼容发行版:如 AlmaLinux、Rocky Linux、CentOS Stream。迁移到商业发行版:如 Red Hat Enterprise Linux、Oracle Linux。升级到 CentOS 9 Stream:滚动发行版,提供最新技术。选择其他 Linux 发行版:如 Ubuntu、Debian。评估容器、虚拟机或云平台等其他选项。

See all articles