❶ 技術干貨 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 文檔