[Linux]紅帽高級存儲功能 - Stratis與VDO

来源:https://www.cnblogs.com/Skybiubiu/archive/2022/04/13/16141200.html
-Advertisement-
Play Games

Stratis 捲管理文件系統 介紹 紅帽的 Stratis 是新一代的存儲管理解決方案,稱為捲管理文件系統。可以通過它創建文件系統及調整其大小時以動態、透明的方式來管理捲層。 Stratis 以管理物理存儲池的服務形式運行,並透明地為所創建的文件系統創建和管理捲。由於 Stratis 使用現有的存 ...


目錄

Stratis 捲管理文件系統

介紹

image-20220413143920555

紅帽的 Stratis 是新一代的存儲管理解決方案,稱為捲管理文件系統。可以通過它創建文件系統及調整其大小時以動態、透明的方式來管理捲層。

Stratis 以管理物理存儲池的服務形式運行,並透明地為所創建的文件系統創建和管理捲。由於 Stratis 使用現有的存儲驅動程式和工具,因此 Stratis 也支持當前在 lvm、xfs 和設備映射器中使用的所有高級存儲功能。Stratis 文件系統沒有固定大小,也不再預分配未使用的塊空間。

Stratis 使用存儲的元數據來識別所管理的池、捲和文件系統。因此絕不應該對 Stratis 創建的文件系統進行手動重新格式化或重新配置;只應使用 Stratis 工具和命令對它們進行管理。手動配置 Stratis 文件系統可能會導致該元數據丟失,並阻止 Stratis 識別它已創建的文件系統。您可以使用不同組的塊設備來創建多個池。在每個池中,您可以創建一個或多個文件系統。目前每個池最多可以創建 2^24 個文件系統。

img

在內部 Stratis 使用 Backstore 子系統來管理塊設備,並使用 Thinpool 子系統來管理池。Backstore 有一個數據層,負責維護塊設備磁碟上的元數據,以及檢測和糾正數據損壞。緩存層使用高性能塊設備作為數據層之上的緩存。Thinpool 子系統管理與 Stratis 文件系統關聯的精簡部署捲。該子系統使用 dm-tin設備映射器驅動程式取代 LVM 進行虛擬捲大小調整和管理。dm-thin 可以創建虛擬大小比較大,但物理大小比較小的捲, 採用 XFS 格式。當物理大小快要滿時,Stratis 會自動將其擴大。

特點

使用Stratis管理分層存儲,有以下的好處:

  • 自動精簡配置(超額分配)
  • 文件系統快照
  • 基於池的存儲管理
  • 存儲監控

Stratis相關概念:

  • blockdev:塊設備
  • pool:存儲池
  • filesystem:文件系統

對應關係:

  • 1個Pool,最多可以創建2²⁴個文件系統,自動分配大小,當總數據量接近虛擬分配的大小則自動擴容,只要存儲池物理設備充足,理論上無限擴展。

使用

  1. 安裝軟體包
[root@localhost /]# yum install -y stratis-cli stratisd
  1. 啟動服務並設置服務開機自啟
[root@localhost /]# systemctl enable --now stratisd
  1. 添加一塊SATA硬碟,創建存儲池
[root@localhost ~]# stratis pool create pool1 /dev/sdb
  1. 查看可用池列表
[root@localhost ~]# stratis pool list
Name                  Total Physical   Properties                                   UUID
pool1   5 GiB / 37.63 MiB / 4.96 GiB      ~Ca,~Cr   d45d2be9-e1ca-4700-a03f-365eda2eac34
  1. 再次添加一塊硬碟,添加這個塊設備到存儲池
[root@localhost ~]# stratis pool add-data pool1 /dev/sdc
  1. 查看池的塊設備
[root@localhost ~]# stratis blockdev list
Pool Name   Device Node   Physical Size   Tier
pool1       /dev/sdb              5 GiB   Data
pool1       /dev/sdc              5 GiB   Data

[root@localhost ~]# stratis pool list
Name                   Total Physical   Properties                                   UUID
pool1   10 GiB / 41.63 MiB / 9.96 GiB      ~Ca,~Cr   d45d2be9-e1ca-4700-a03f-365eda2eac34
  1. 為池創建動態、靈活的文件系統
[root@localhost ~]# stratis filesystem create pool1 fs1

  1. 查看文件系統
[root@localhost ~]# stratis filesystem list
Pool Name   Name   Used      Created             Device                   UUID            
pool1       fs1    546 MiB   Apr 13 2022 15:22   /dev/stratis/pool1/fs1   b28ec1f4-21ed-4d89-84f5-d8ca91ef12ce

[root@localhost ~]# blkid /dev/stratis/pool1/fs1
/dev/stratis/pool1/fs1: UUID="b28ec1f4-21ed-4d89-84f5-d8ca91ef12ce" TYPE="xfs"
  1. 掛載文件系統

這裡的 x-systemd.requires=stratisd.service,是通過 systemd 來確保 stratisd.service(Stratis服務的守護進程)啟動,再掛載這個文件系統,否則電腦將無法開機。

[root@localhost ~]# vim /etc/fstab
...
UUID=b28ec1f4-21ed-4d89-84f5-d8ca91ef12ce /dir1 xfs     defaults,x-systemd.requires=stratisd.service    0 0

[root@localhost ~]# mount -a

[root@localhost ~]# df -hT
Filesystem                                                                                      Type      Size  Used Avail Use% Mounted on
...
/dev/mapper/stratis-1-d45d2be9e1ca4700a03f365eda2eac34-thin-fs-b28ec1f421ed4d8984f5d8ca91ef12ce xfs       1.0T  7.2G 1017G   1% /dir1
  1. 創建文件測試
[root@localhost ~]# echo hello world > /dir1/file1
  1. 創建快照
[root@localhost ~]# stratis filesystem snapshot pool1 fs1 snap1

[root@localhost ~]# stratis filesystem list
Pool Name   Name    Used      Created             Device                     UUID         
pool1       fs1     546 MiB   Apr 13 2022 15:22   /dev/stratis/pool1/fs1     b28ec1f4-21ed-4d89-84f5-d8ca91ef12ce
pool1       snap1   546 MiB   Apr 13 2022 15:31   /dev/stratis/pool1/snap1   6dafb135-a4f8-49a8-a757-0c78cb430fb2

[root@localhost ~]# rm -rf /dir1/file1 

[root@localhost ~]# mount /dev/stratis/pool1/snap1 /dir2

[root@localhost ~]# cat /dir2/file1

VDO 虛擬數據優化器

介紹

LVM只能解決容量的問題,但不具備數據壓縮的能力。

VDO(Virtual Data Optimize):虛擬數據優化器,通過壓縮或刪除存儲設備上的數據來優化空間,VDO層放置在現有塊存儲設備上層,例如RAID設備或本地磁碟的頂部。

特點

  • kvdo:用於控制數據壓縮
  • uds:用於重覆數據刪除

vdo不僅能對數據進行壓縮,還能對重覆的數據進行優化。

Linux下依賴vdo.service服務,否則是不能使用vdo的

使用

  1. 安裝軟體包(預設已安裝)
[root@localhost ~]# yum install -y vdo
  1. 創建VDO捲
[root@localhost ~]# vdo create --name=vdo1 --device=/dev/sdb --vdoLogicalSize=10G
Creating VDO vdo1
      The VDO volume can address 6 GB in 3 data slabs, each 2 GB.
      It can grow to address at most 16 TB of physical storage in 8192 slabs.
      If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 0 volume is ready at /dev/mapper/vdo1
  1. 查看VDO捲的屬性與狀態
[root@localhost ~]# vdo status --name=vdo1
VDO status:
  Date: '2022-04-13 16:34:12+08:00'
  Node: localhost.localdomain
Kernel module:
  Loaded: true
  Name: kvdo
  Version information:
    kvdo version: 6.2.2.117
Configuration:
  File: /etc/vdoconf.yml
  Last modified: '2022-04-13 16:33:40'
VDOs:
  vdo1:
    Acknowledgement threads: 1
    Activate: enabled
    Bio rotation interval: 64
    Bio submission threads: 4
    Block map cache size: 128M
    Block map period: 16380
    Block size: 4096
    CPU-work threads: 2
    Compression: enabled
    Configured write policy: auto
    Deduplication: enabled
    Device mapper status: 0 20971520 vdo /dev/sdb normal - online online 1049638 2621440
    Emulate 512 byte: disabled
    Hash zone threads: 1
    Index checkpoint frequency: 0
    Index memory setting: 0.25
    Index parallel factor: 0
    Index sparse: disabled
    Index status: online
    Logical size: 10G
    Logical threads: 1
    Max discard size: 4K
    Physical size: 10G
    Physical threads: 1
    Slab size: 2G
    Storage device: /dev/sdb
    UUID: VDO-59a6cb34-0ba6-4e3d-81b8-967710ca668f
    VDO statistics: not available
  1. 顯示VDO捲列表
[root@localhost ~]# vdo list
vdo1
  1. 停止和啟動VDO捲
[root@localhost ~]# vdo stop -n vdo1
Stopping VDO vdo1

[root@localhost ~]# vdo start -n vdo1
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 1 volume is ready at /dev/mapper/vdo1

  1. 查看VDO捲上是否啟用了壓縮(Compression)和重覆數據(Deduplication)刪除功能
[root@localhost ~]# vdo status --name=vdo1 | grep Dedu
    Deduplication: enabled


[root@localhost ~]# vdo status --name=vdo1 | grep Com
    Compression: enabled
  1. 格式化VDO捲
[root@localhost ~]# mkfs.xfs -K /dev/mapper/vdo1
meta-data=/dev/mapper/vdo1       isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
  1. 檢查設備事件處理是否完成
[root@localhost ~]# udevadm settle
  1. 創建掛載點,設置開機自動掛載
[root@localhost ~]# mkdir /mnt/vdo1

[root@localhost ~]# blkid | grep vdo1
/dev/mapper/vdo1: UUID="b4373f24-2c29-4893-bce3-fb608025107d" TYPE="xfs"

[root@localhost ~]# vim /etc/fstab
...
UUID=b4373f24-2c29-4893-bce3-fb608025107d /mnt/vdo1 xfs defaults,x-systemd.requires=vdo.service 0 0

[root@localhost ~]# mount /mnt/vdo1/

  1. 查看捲初始信息
[root@localhost /]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo1         10.0G      4.0G      6.0G  40%           N/A
  1. 準備一個大文件用於測試
[root@localhost /]# dd if=/dev/urandom of=/root/testfile1 bs=1M count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB, 300 MiB) copied, 12.8609 s, 24.5 MB/s

[root@localhost /]# ls -lh /root/testfile1 
-rw-r--r--. 1 root root 300M Apr 13 17:06 /root/testfile1
  1. 把文件複製到VDO捲掛載目錄
[root@localhost /]# cp /root/testfile1 /mnt/vdo1/testfile1.1
[root@localhost /]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo1         10.0G      4.3G      5.7G  42%            3%
  1. 重覆多次操作觀察Used與Saving%的變化
[root@localhost /]# cp /root/testfile1 /mnt/vdo1/testfile1.2
[root@localhost /]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo1         10.0G      4.3G      5.7G  43%           48%

[root@localhost /]# cp /root/testfile1 /mnt/vdo1/testfile1.3
[root@localhost /]# vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo1         10.0G      4.3G      5.7G  43%           65%

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • unity 編輯器擴展簡單入門 通過使用編輯器擴展,我們可以對一些機械的操作實現自動化,而不用使用額外的環境,將工具與開發環境融為一體;並且,編輯器擴展也提供GUI庫,來實現可視化操作;編輯器擴展甚至也可以“補充”IDE缺失的一些內容,讓IDE更加人性化。 主要內容 MenuItem無界面操作 視窗 ...
  • VBScript是Visual Basic Script的簡稱,即 Visual Basic 腳本語言,有時也被縮寫為VBS。 ...
  • 1. 前言 上一篇文章我們瞭解了bombardier,並知道了bombardier.yml與開源項目bombardier的關係,接下來的文章我們瞭解一下wrk、wrk2,並對比一下它們與bombardier的關係 2. 認識wrk wrk是一種現代 HTTP 基準測試工具,能夠在單個多核 CPU 上 ...
  • 1.舉例 為了方便加深理解,我準備先講解一個例子來映襯出CLS的主要作用。 每個國家在成立之後肯定會於他國之間建立外交關係從而進行一些貿易往來,剛開始可能只會存在與一兩個國家達成了合作,所以只會與少數的國家進行貿易往來。在進行貿易往來前為了溝通順暢,國家之間交流的語言必須要一致,這個時候通常的方式是 ...
  • 本文對Metalama中的切麵進行簡介及以WPF中的 INotifyPropertyChanged 為例,展示如何利用Metalama簡化INotifyPropertyChanged 的實現 ...
  • 1.OrDefault 方法的預設值 Enumerable.FirstOrDefault 方法返回一個序列的第一個元素,如果沒有找到,則返回一個預設值。在 .NET 6 中,你可以覆蓋該方法的預設值。同樣,你還可以覆蓋 SingleOrDefault 和 LastOrDefault 方法的預設值。 ...
  • bat文件是dos下的批處理文件。批處理文件是無格式的文本文件,它包含一條或多條命令。它的文件擴展名為 .bat 或 .cmd。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...