❶ 技术干货 018|云盘文件系统比较:Ext4、XFS和Btrfs
在上一篇文章中,我们探讨了如何评测云硬盘的读写性能。然而,我们通常不是直接操作裸设备,而是通过文件系统来管理和访问硬盘上的文件。朋友们常问及文件系统的选择与比较。文件系统的重要性不言而喻,仅次于Linux发行版的选择。每个文件系统在功能与性能上各有特色。
本文将聚焦于Linux中三大主流文件系统——Ext4、XFS和Btrfs,探究它们的功能特点,并基于腾讯云高性能云硬盘,进行初步性能对比。
文件系统定义了存储介质(如硬盘)上的数据存储方式和结构,以及如何访问这些数据。Unix中将一切视为文件,凸显了文件系统的重要地位。现代文件系统具备了诸如快照、子卷、校验和自检、软RAID以及透明压缩等特性,体现了技术的持续演进。
文件系统通常作为操作系统的一部分,实现在内核中。如Ext4、XFS和Btrfs等文件系统,其实现在Linux内核的`fs`目录下,实现了操作系统定义的对象和接口,如inode、dentry等。
超级块用于描述挂载文件系统的元信息,inode对象存储文件的通用信息,dentry对象存储文件路径名的链接信息。这些信息分别由文件系统实现并存储在硬盘上。当文件系统启动时,会初始化这些关键信息。
VFS作为文件系统的抽象层,为各类文件系统提供一致接口,如必须支持的POSIX兼容系统调用,使得用户态应用无需关注底层文件系统差异。通过VFS,我们甚至可以实现用户态文件系统,如通过FUSE等机制。
接下来,我们将分别介绍Ext4、XFS和Btrfs这三大文件系统。
Ext4是Linux中用途最广泛的日志文件系统,稳定版本发布于2008年。它在Ext2和Ext3的基础上,增加了日志功能,并可向前兼容。Ext4支持大文件(最大卷1EiB,最大文件16TiB),实现基于extent的数据管理,提升大文件管理的效率。它具有日志校验和功能,提高文件系统检查速度。
XFS是1993年创建的高性能64位文件系统,进入Linux内核后,被广泛支持。XFS通过B+树索引inode和数据块,优化大文件支持。它允许单卷达到8EiB的容量,最大文件8EiB,且动态分配inode,不耗尽。XFS支持并行IO操作,RAID扩展性更强。
Btrfs,全称B-Tree File System,于2007年由Oracle设计,进入Linux内核稳定发布于2013年。Btrfs支持-on-write(COW)机制,具备高容错性、可扩展性和可靠性。它支持大文件(16EiB卷和文件大小),集成卷管理,高效数据完整性检查,高性能快照,软RAID支持,透明压缩,数据去重等特性。
格式化文件系统时,使用`mkfs`命令。在云硬盘场景下,腾讯云的CBS云硬盘产品通过多副本机制保障数据可靠性、可用性,并优化并发性能。
在云服务器中,Ext4、XFS和Btrfs的性能对比如下:格式化时间Btrfs最快,读吞吐量XFS和Btrfs相近,写吞吐量线程少时总体相近,4K随机读性能XFS最高。
综合分析,选择文件系统时应考虑业务需求、数据类型、性能需求以及未来扩展性。每个文件系统都有其优势与适用场景。后续我们将深入讨论存储相关选型的具体实践。
更多信息,请关注“腾讯云服务器”微信公众号(TencentCVM)获取更多技术干货、优惠活动与交流社区。
❷ 基于腾讯云搭建自己的的Hexo博客
先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。
不然只跟着步骤过了一遍,却不知道为什么这么做。
首先看这张架构图:
腊茄
整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的 repository ,服务器再通过 git-hooks 同步网站根目录。
前提条件: 腾讯云服务器
第一部分 : 服务器环境搭建,包括安装 Git 、 Nginx 配置 、创建 git 用户 。
第二部分 : 本地 Hexo 初始化, 包括安装 NodeJS 、 hexo-cli , 生成本地静态网站
第三部分 : 使用Git自动化部署发布博客
NodeJS 安装可以参考: Linux安装NodeJS
找到以下内容
在下面添加一行
保存退出后改回权限
随后设置Git用户的密码,
切换至git用户腔局野,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
然后就可以执行ssh 命令测试是否可以免密登录
至此,Git用户添加完成
我是用的是lnmp 一键安装包,nginx安装教程一大堆,就不再叙述。主要看nginx配置。
找到nginx的配伍喊置文件,修改配置如下:
首先要安装 hexo-cli ,安装 hexo-cli 需要 root 权限,使用 sudo 运行
然后初始化Hexo程序
等执行成功以后安装两个插件, hexo-deployer-git 和 hexo-server ,这俩插件的作用分别是使用Git自动部署,和本地简单的服务器。
hexo-deployer-git帮助文档
hexo-server帮助文档
使用 hexo new <文章名称> 来新建文章,该命令会成成一个 .md 文件放置在 sources/_posts 文件夹。
编辑完毕以后, 使用 hexo g 将 .md 文件渲染成静态文件,然后启动 hexo-server :
现在便可以打开浏览器访问 http://localhost:4000 来查看我们的博客了!
创建一个裸仓库,裸仓库就是只保存 git 信息的 Repository , 首先切换到 git 用户确保 git 用户拥有仓库所有权
一定要加 --bare ,这样才是一个裸库。
在这里我们使用的是 post-receive 这个钩子,当git有收发的时候就会调用这个钩子。 在 ~/blog.git 裸库的 hooks 文件夹中,
新建 post-receive 文件。
保存后,要赋予这个文件可执行权限
然后打开 _config.yml , 找到 deploy
保存后,尝试将我们刚才写的"hello hexo"部署到服务器
访问服务器地址,就可以看到我们写的文章"Hello hexo",以后写文章只需要:
博客就更新咯!~
使用 Git Hook 自动部署 Hexo 到个人 VPS
Hexo 文档