RHEL 8에서 계층화된 로컬 스토리지를 관리하기 위해 Stratis를 설치하는 방법
Stratis는 RHEL 8 배포와 함께 제공되는 새로운 기능 중 하나입니다. Stratis는 단순성과 향상된 유용성에 초점을 맞추는 동시에 고급 스토리지 기능에 대한 액세스를 제공하는 로컬 스토리지 관리 솔루션입니다. XFS 파일 시스템을 사용하며 다음과 같은 고급 스토리지 기능에 대한 액세스 권한을 부여합니다.
- 씬 프로비저닝
- 파일 시스템 스냅샷
- 계층화
- 풀 기반 관리
- 모니터링
기본적으로 Stratis는 하나 이상의 로컬 디스크 또는 디스크 파티션에서 생성되는 스토리지 풀입니다. Stratis는 시스템 관리자가 복잡한 스토리지 구성을 설정하고 관리하는 데 도움을 줍니다.
더 진행하기 전에, 진행하면서 마주칠 수밖에 없는 몇 가지 기술 용어를 살펴보겠습니다.
- 풀: 풀은 하나 이상의 블록 장치로 구성됩니다. 풀의 전체 크기는 블록 장치의 합계와 같습니다.
- blockdev: 짐작하셨겠지만 이는 디스크 파티션과 같은 블록 장치를 나타냅니다.
- 파일 시스템: 파일 시스템은 전체적으로 고정된 크기로 제공되지 않는 씬 프로비저닝된 레이어입니다. 파일 시스템의 실제 크기는 데이터가 추가됨에 따라 증가합니다. Stratis는 데이터 크기가 파일 시스템의 가상 크기에 가까워짐에 따라 파일 시스템의 크기를 자동으로 늘립니다.
Stratis와 함께 사용할 수 있는 블록 장치는 다음과 같습니다.
- LVM 논리 볼륨
- 루크스
- SSD(솔리드 스테이트 드라이브)
- 장치 매퍼 다중 경로
- iSCSI
- HDD(하드 디스크 드라이브)
- mdraid
- NVMe 저장 장치
Stratis의 소프트웨어 구성 요소
Stratis는 2가지 소프트웨어 유틸리티를 제공합니다.
- Stratis-cli: Stratis와 함께 제공되는 명령줄 도구입니다.
- Stratisd 데몬: 블록 디바이스를 생성 및 관리하는 데몬으로, DBUS API를 제공하는 역할을 한다.
RHEL 8에 Stratis를 설치하는 방법
Stratis가 무엇인지 살펴보고 몇 가지 용어를 정의했습니다. 이제 RHEL 8 배포판에 Stratis를 설치하고 구성해 보겠습니다(CentOS 8에서도 작동함).
RHEL 8에 Stratis 설치
RHEL 8 시스템에 Stratis를 설치하고 루트 사용자로 로그인하여 명령을 실행하는 방법을 살펴보겠습니다.
dnf install stratisd stratis-cli
설치된 패키지에 대한 자세한 정보를 찾으려면 명령을 실행하십시오.
rpm -qi stratisd stratis-cli
Stratis가 성공적으로 설치되면 명령을 실행하여 서비스를 시작합니다.
systemctl enable --now stratisd
Stratis의 상태를 확인하려면 명령어를 실행하세요.
systemctl status stratisd
Stratis 풀 생성
Stratis 풀을 생성하려면 사용 중이 아니거나 마운트되지 않은 블록 장치가 필요합니다. 또한 Stratisd 서비스가 실행 중이라고 가정합니다. 또한 사용하려는 블록 장치의 크기는 최소 1GB 이상이어야 합니다.
RHEL 8 시스템에는 4개의 추가 블록 장치가 있습니다: /dev/xvdb
, /dev/xvdc
, /dev/ xvdd
, /dev/xvde
. 블록 장치를 표시하려면 lsblk 명령을 실행하십시오.
lsblk
이러한 블록 장치에는 파티션 테이블이 있어서는 안 됩니다. 명령을 사용하여 이를 확인할 수 있습니다.
blkid -p /dev/xvdb
출력이 없으면 블록 장치에 파티션 테이블이 없다는 의미입니다. 그러나 파티션 테이블이 존재하는 경우 다음 명령을 사용하여 이를 지울 수 있습니다.
wipefs -a /<device-path>
원 블록 장치에서 Stratis 풀 생성
구문을 사용하여 단일 블록 장치에서 Stratis 풀을 생성할 수 있습니다.
stratis pool create <pool-name> <block-device>
예를 들어 /dev/xvdb
에서 풀을 생성하려면 명령을 실행하세요.
stratis pool create my_pool_1 /dev/xvdb
생성된 풀을 확인하려면 실행하세요.
stratis pool list
여러 블록 장치에서 Stratis 풀 생성
여러 장치에서 풀을 생성하려면 아래 구문을 사용하여 모든 장치를 한 줄에 나열하십시오.
stratis pool create <pool_name> device-1 device-2 device-n
/dev/xvdc
에서 풀을 생성하려면 /dev/xvdd
및 /dev/xvde
명령을 실행합니다.
stratis pool create my_pool_2 /dev/xvdc /dev/xvdd/ /dev/xvde
다시 한번 명령을 사용하여 사용 가능한 풀을 나열하십시오.
stratis pool list
이제 my_pool_1과 my_pool_2라는 2개의 풀이 있어야 합니다.
위에서 볼 수 있듯이 my_pool_2 풀이 차지하는 하드 디스크 공간은 메모리가 10GB인 하나의 블록 장치에서만 생성한 첫 번째 풀의 3배입니다.
풀에서 파일 시스템 생성
파일 시스템을 생성한 후 구문을 사용하여 풀 중 하나에서 파일 시스템을 생성할 수 있습니다.
stratis fs create <poolname> <filesystemname>
예를 들어, my_pool_1 및 my_pool_2에서 각각 filesystem-1 및 filesystem-2를 생성하려면 다음 명령을 실행합니다.
stratis fs create my_pool_1 filesystem-1
stratis fs create my_pool_2 filesystem-2
새로 생성된 파일 시스템을 보려면 명령을 실행합니다.
stratis fs list
파일 시스템 결과를 하나의 풀로 좁히려면 다음 명령을 실행합니다.
stratis fs list <poolname>
예를 들어 my_pool_2의 파일 시스템을 확인하려면 다음 명령을 실행하세요.
stratis fs list my_pool_2
이제 lsblk 명령을 실행하면 출력이 아래 샘플 출력과 다소 유사해야 합니다.
lsblk
Stratis 파일 시스템 마운트
이제 기존 파일 시스템에 액세스하기 위해 마운트하겠습니다. 먼저 마운트 지점을 만듭니다.
첫 번째 풀의 파일 시스템에 대해 다음 명령을 실행합니다.
mkdir /data
mount /stratis/my_pool_1/filesystem-1 /data
두 번째 풀의 두 번째 파일 시스템에 대해 명령을 실행합니다.
mkdir /block
mount /stratis/my_pool_2/filesystem-2 /block
현재 마운트 지점이 있는지 확인하려면 df 명령을 실행하세요.
df -Th | grep stratis
완벽한! 마운트 지점이 존재하는 것을 명확하게 볼 수 있습니다.
Stratis 파일 시스템을 지속적으로 마운트
방금 생성한 마운트 지점은 재부팅 후에도 유지되지 않습니다. 이를 지속적으로 만들려면 먼저 각 파일 시스템의 UUID를 획득하세요.
blkid -p /stratis/my_pool_1/filesystem-1
blkid -p /stratis/my_pool_2/filesystem-2
이제 표시된 대로 UUID 및 마운트 지점 옵션을 /etc/fstab에 복사하세요.
echo "UUID=c632dcf5-3e23-46c8-82b6-b06a4cc9d6a7 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
echo "UUID=b485ce80-be18-4a06-8631-925132bbfd78 /block xfs defaults 0 0" | sudo tee -a /etc/fstab
시스템이 새 구성을 등록하려면 다음 명령을 실행하십시오.
systemctl daemon-reload
구성이 예상대로 작동하는지 확인하려면 파일 시스템을 마운트합니다.
mount /data
mount /block
Stratis 파일 시스템 제거
파일 시스템을 제거하려면 먼저 표시된 대로 파일 시스템을 마운트 해제해야 합니다.
umount /mount-point
이 경우에는 다음과 같습니다.
umount /data
파일 시스템을 파괴하려면 다음 구문을 사용하십시오.
stratis filesystem destroy <poolname> <filesystem-name>
따라서 우리는 다음을 갖게 됩니다:
stratis filesystem destroy my_pool_1 filesystem-1
파일 시스템 제거를 확인하려면 명령을 실행하십시오.
stratis filesystem list my_pool_1
출력에서 my_pool_1과 관련된 파일 시스템이 삭제되었음을 분명히 알 수 있습니다.
기존 Stratis 풀에 디스크 추가
다음 명령을 사용하여 기존 풀에 디스크를 추가할 수 있습니다.
stratis pool add-data <poolname> /<devicepath>
예를 들어 my_pool_1에 추가 디스크 /dev/xvdf
를 추가하려면 다음 명령을 실행합니다.
stratis pool add-data my_pool_1 /dev/xvdf
추가 볼륨을 추가한 후 my_pool_1의 크기가 두 배로 커졌습니다.
Stratis 스냅샷 생성
스냅샷은 씬 프로비저닝된 읽기이며 특정 시점에 파일 시스템의 복사본을 씁니다.
스냅샷을 생성하려면 다음 명령어를 실행하세요.
stratis fs snapshot <poolname> <fsname> <snapshotname>
이 경우 명령은 다음과 같습니다.
stratis fs snapshot my_pool_2 filesystem-2 mysnapshot
아래 스크린샷에 표시된 대로 데이터 속성 -$ (date +%Y-%m-%d)
를 스냅샷에 추가하고 날짜 태그를 추가할 수 있습니다.
스냅샷 생성을 확인하려면 다음 명령을 실행합니다.
stratis filesystem list <poolname>
이 경우 명령은 다음과 같습니다.
stratis filesystem list my_pool_2
파일 시스템을 사용하여 이전 스냅샷으로 되돌리기
Stratis 파일 시스템을 이전에 생성된 스냅샷으로 되돌리려면 먼저 원본 파일 시스템을 마운트 해제하고 삭제하세요.
umount /stratis/<poolname>/filesystem
우리 시나리오에서는 이것이 될 것입니다.
umount /stratis/my_pool_2/filesystem-2
그런 다음 원본 파일 시스템을 사용하여 스냅샷의 복사본을 만듭니다.
stratis filesystem snapshot <poolname> filesystem-snapshot filesystem
명령은 다음과 같습니다:
stratis filesystem snapshot my_pool_2 mysnapshot-2019-10-24 block
마지막으로 스냅샷을 마운트합니다.
mount /stratis/my-pool/my-fs mount-point
Stratis 스냅샷 제거
스냅샷을 제거하려면 먼저 스냅샷을 마운트 해제합니다.
unmount /stratis/my_pool_2/mysnapshot-2019-10-24
다음으로 스냅샷을 진행하고 삭제합니다.
stratis filesystem destroy my_pool_2 mysnapshot-2019-10-24
Stratis 풀 제거
Stratis 풀을 제거하려면 아래의 간단한 단계를 따르십시오.
1. 풀에 존재하는 파일 시스템을 나열합니다.
stratis filesystem list <poolname>
2. 다음으로 풀의 모든 파일 시스템을 마운트 해제합니다.
umount /stratis//filesystem-1
umount /stratis//filesystem-2
umount /stratis//filesystem-3
3. 파일 시스템을 파괴합니다.
stratis filesystem destroy <poolname> fs-1 fs-2
4. 그리고 수영장을 없애세요.
stratis pool destroy poolname
이 경우 구문은 다음과 같습니다.
stratis pool destroy my_pool_2
풀 목록을 다시 확인할 수 있습니다.
stratis pool list
마지막으로 파일 시스템에 대한 /etc/fstab에서 항목을 제거합니다.
이제 가이드가 끝났습니다. 이 튜토리얼에서는 Stratis를 설치하고 사용하여 RHEL에서 계층화된 로컬 스토리지를 관리하는 방법을 설명합니다. 이 정보가 도움이 되셨기를 바랍니다. 한번 시도해 보고 어떻게 되었는지 알려주세요.