在 Centos 8 中使用 Stratis 管理本地存儲
Stratis是RHEL8/Centos8中提供的一個新的本地存儲管理工具,它將有助于在塊設備上創建分層存儲。在RHEL8/Centos8中,可以通過安裝兩個軟件包獲得Stratis。在RHEL7,我們有了BTRFS文件系統,Red Hat在RHEL 8中刪除了BTRFS支持,并提供了Stratis本地存儲管理系統。
為了開始使用Stratis,我們需要添加一些磁盤設備,并創建一個單獨的池,在一個Stratis池中,可以創建多個文件系統。
安裝Stratis
通過下面命令使用yum安裝stratis:
- [root@localhost ~]# yum -y install stratis*
安裝完成之后,設置開機啟用并立即啟動:
- [root@localhost ~]# systemctl enable stratisd --now
查看以下是否啟動:
列出可用磁盤
在這添加了5個2GB磁盤,使用下面命令列出磁盤:
- [root@localhost ~]# lsblk
列出現有的池和文件系統:
使用下面幾條命令列出塊設備、stratis池、文件系統:
- [root@localhost ~]# stratis blockdev list
- [root@localhost ~]# stratis pool list
- [root@localhost ~]# stratis filesystem list
創建池和文件系統
首先,我們創建“data01_pool”的池。將/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd添加到該池中:
- [root@localhost ~]# stratis pool create data01_pool /dev/sd{a..d}
- [root@localhost ~]# stratis pool list
- [root@localhost ~]# stratis blockdev list
上面命令創建"data01_pool"池、查看池、查看塊設備。
下面從“data01_pool”池中創建兩個文件系統:
- [root@localhost ~]# stratis filesystem create data01_pool user_data01
- [root@localhost ~]# stratis filesystem create data01_pool user_data02
下面命令列出創建的文件系統:
- [root@localhost ~]# stratis filesystem list
- 或者
- [root@localhost ~]# stratis fs list
上圖中列出的文件系統中,字段Device是stratis設備的位置。
掛載創建好的文件系統
一旦從池中創建了文件系統,請創建一個掛載點并掛載文件系統。默認情況下在創建文件系統時,它將使用XFS文件系統對其進行格式化。
- # 創建掛載點
- [root@localhost ~]# mkdir /user_data01
- [root@localhost ~]# mkdir /user_data02
- # 掛載文件系統
- [root@localhost ~]# mount /stratis/data01_pool/user_data01 /user_data01/
- [root@localhost ~]# mount /stratis/data01_pool/user_data02 /user_data02/
使用df -h查看掛載的情況:
- [root@localhost ~]# df -h /user_data*
- Filesystem Size Used Avail Use% Mounted on
- /dev/mapper/stratis-1-359fd7072d8349d390741a1a71f885fb-thin-fs-0657c26979ed443aa4d3a70c15606e1c 1.0T 7.2G 1017G 1% /user_data01
- /dev/mapper/stratis-1-359fd7072d8349d390741a1a71f885fb-thin-fs-b91b970f23d94eb6b2ed56f347f770d2 1.0T 7.2G 1017G 1% /user_data02
希望你已經觀察到我們沒有格式化文件系統。Stratis程序為我們解決了這一問題,并創建了XFS類型的文件系統。
同樣,由于自動精簡配置,默認情況下,它將顯示文件系統大小為1 TB,并且該大小僅是虛擬的,而不是實際的。要檢查實際大小,您將必須使用Stratis命令
使用df -hT /user*匹配出user_data01和user_data02掛載點的文件系統,可以看到他們的類型都是XFS格式。
在/etc/fstab中添加開機掛載的條目
首先需要獲取文件系統的UUID,有兩種方式:
第一種方式,是通過使用stratis fs list就可以獲取到文件系統的UUID。
- [root@localhost ~]# stratis fs list
第二種方式,使用blkid獲取塊存儲的uuid,過濾出stratis文件系統:
- [root@localhost ~]# blkid|grep stratis
下面就是將掛載信息寫入到/etc/fstab中:
- [root@localhost ~]# echo "UUID=0657c26979ed443aa4d3a70c15606e1c /user_data01 xfs defaults,x-systemd.requires=stratis.service 0 0" >> /etc/fstab
- [root@localhost ~]# echo "UUID=b91b970f23d94eb6b2ed56f347f770d2 /user_data02 xfs defaults,x-systemd.requires=stratis.service 0 0" >> /etc/fstab
檢查Stratis守護程序版本
如果需要檢查Stratis運行的守護進程版本,使用如下命令:
- [root@localhost ~]# stratis daemon version
- 2.1.0
向Stratis池中添加其他磁盤
在Stratis管理下,將新的塊設備添加到現有池非常容易。在上一篇文章《在Centos 中創建Stratis本地存儲(一)》設置中,“ data01_pool”中有4個磁盤,現在我們需要通過添加新磁盤來擴展池中的空間。使用選項add-data來添加新磁盤,下面向"data01_pool"池中添加"/dev/sde"磁盤。
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 8 GiB / 1.11 GiB / 6.89 GiB ~Ca,~Cr
- [root@localhost ~]# stratis pool add-data data01_pool /dev/sde
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 10 GiB / 1.12 GiB / 8.88 GiB ~Ca,~Cr
可以看到上圖中擴展前是8G,擴展之后變成了10G。再查看一下stratis的塊設備:
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 8 GiB / 1.11 GiB / 6.89 GiB ~Ca,~Cr
- [root@localhost ~]# stratis pool add-data data01_pool /dev/sde
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 10 GiB / 1.12 GiB / 8.88 GiB ~Ca,~Cr
重命名池和文件系統
Stratis具有在運行中重命名池或文件系統的功能,而不會影響任何正在運行的設置。下面讓我們將當前池名稱“data01_pool”重命名為“data01_pool_old”。
- [root@localhost ~]# stratis pool rename data01_pool date01_pool_old
下面我們來重命名文件系統,重命名文件系統類似于重命名池:
- [root@localhost ~]# stratis fs rename date01_pool_old user_data01 sys_data01
在Stratis中創建快照
Stratis可以對任何文件系統進行快照。讓我們對服務器中現有文件系統進行快照。下面先再user_data01中寫入一些數據:
- [root@localhost ~]# touch /user_data01/file{1..100}.txt
下面來打快照:
- [root@localhost ~]# stratis fs snapshot date01_pool_old sys_data01 sys_data01_snap
可以看到快照已生成。下面掛載/stratis/data01_pool_old/sys_data01_snap這個快照到/mnt目錄,然后查看文件是否存在。
- [root@localhost ~]# mount /stratis/date01_pool_old/sys_data01_snap /mnt/
刪除Stratis文件系統
刪除Stratis文件系統之前,需要在/etc/fstab中刪除stratis相關的那兩個文件系統條目。下面我只注釋掉,沒有刪除條目。
卸載文件系統:
- [root@localhost ~]# umount /user_data01
- [root@localhost ~]# umount /user_data02
下面就開始刪除文件系統啦:
- [root@localhost ~]# stratis fs destroy date01_pool_old sys_data01
- [root@localhost ~]# stratis fs destroy date01_pool_old user_data02
- [root@localhost ~]# stratis fs destroy date01_pool_old sys_data01_snap
- [root@localhost ~]# stratis fs destroy date01_pool_old user_data02_snap
刪除Stratis池
要刪除Stratis池,我們應該刪除在其下創建的所有文件系統。否則會提示:
- [root@localhost ~]# stratis pool destroy data01_pool_old
- Execution failure caused by:
- BUSY: filesystems remaining on pool
下面來刪除池:
- [root@localhost ~]# stratis pool destroy date01_pool_old
- [root@localhost ~]# stratis pool
- Name Total Physical Properties
總結
Stratis是RHEL8/Centos8中提供的一個新的本地存儲管理工具,它將有助于在塊設備上創建分層存儲。在RHEL8/Centos8中,可以通過安裝兩個軟件包獲得Stratis。我們已經看到了如何通過添加磁盤并重命名來管理Stratis分層存儲。
本文轉載自微信公眾號「Linux就該這么學」,可以通過以下二維碼關注。轉載本文請聯系Linux就該這么學公眾號。