파일 시스템 관리


Red Hat Enterprise Linux 10

파일 시스템 생성, 수정 및 관리

Red Hat Customer Content Services

초록

Red Hat Enterprise Linux는 다양한 파일 시스템을 지원합니다. 각 유형의 파일 시스템은 다양한 문제를 해결하고 애플리케이션별로 사용됩니다. 주요 차이점 및 고려 사항에 대한 정보를 사용하여 특정 애플리케이션 요구 사항에 따라 적절한 파일 시스템을 선택하고 배포합니다.
지원되는 파일 시스템에는 로컬 디스크 파일 시스템 XFS 및 ext4, 네트워크 및 클라이언트 및 클라이언트 및 서버 파일 시스템 NFS 및 SMB가 포함됩니다. 할당량을 사용하여 스토리지 공간을 생성, 마운트, 백업, 복원, 점검 및 복구와 같은 파일 시스템으로 여러 작업을 수행할 수 있습니다.

1장. 사용 가능한 파일 시스템 개요

애플리케이션에 적합한 파일 시스템을 선택하는 것은 사용 가능한 많은 옵션과 관련된 절충으로 인해 중요한 결정입니다.

다음 섹션에서는 Red Hat Enterprise Linux 10에 기본적으로 포함된 파일 시스템과 애플리케이션에 가장 적합한 파일 시스템에 대한 권장 사항에 대해 설명합니다.

1.1. 파일 시스템 유형

Red Hat Enterprise Linux 10은 다양한 파일 시스템(FS)을 지원합니다. 다양한 유형의 파일 시스템은 다양한 종류의 문제를 해결하며 애플리케이션별로 사용됩니다. 가장 일반적인 수준에서 사용 가능한 파일 시스템을 다음과 같은 주요 유형으로 그룹화할 수 있습니다.

Expand
표 1.1. 파일 시스템 유형 및 사용 사례
유형파일 시스템속성 및 사용 사례

디스크 또는 로컬 FS

XFS

XFS는 RHEL의 기본 파일 시스템입니다. Red Hat은 성능에 대한 호환성 또는 코너 사례와 같은 구체적인 이유가 없는 한 XFS를 로컬 파일 시스템으로 배포하는 것이 좋습니다.

ext4

ext4는 이전 ext2 및 ext3 파일 시스템에서 진화한 Linux의 이점을 제공합니다. 대부분의 경우 성능에서 XFS를 경쟁합니다. ext4 파일 시스템 및 파일 크기에 대한 지원 제한은 XFS의 지원 한도보다 낮습니다.

네트워크 또는 클라이언트 및 서버 FS

NFS

NFS를 사용하여 동일한 네트워크의 여러 시스템 간에 파일을 공유합니다.

SMB

Microsoft Windows 시스템에서 파일 공유에 SMB를 사용합니다.

volume-managing FS

Stratis

Stratis는 XFS 및 LVM의 조합에 구축된 볼륨 관리자입니다. Stratis의 목적은 Btrfs 및 ZFS와 같은 볼륨 관리 파일 시스템에서 제공하는 기능을 에뮬레이션하는 것입니다. 이 스택을 수동으로 빌드할 수는 있지만 Stratis는 구성 복잡성을 줄이고 모범 사례를 구현하며 오류 정보를 통합합니다.

1.2. 로컬 파일 시스템

로컬 파일 시스템은 로컬 서버에서 실행되고 스토리지에 직접 연결된 파일 시스템입니다.

예를 들어 로컬 파일 시스템은 내부 SATA 또는 SAS 디스크에 대한 유일한 선택이며 서버에 로컬 드라이브가 있는 내부 하드웨어 RAID 컨트롤러가 있는 경우 사용됩니다. 로컬 파일 시스템은 SAN에서 내보낸 장치를 공유하지 않을 때 SAN에 연결된 스토리지에 사용되는 가장 일반적인 파일 시스템이기도 합니다.

모든 로컬 파일 시스템은 POSIX와 호환되며 read(), write() 및 seek()와 같은 잘 정의된 시스템 호출 집합을 지원합니다.

파일 시스템 선택을 고려할 때 파일 시스템이 얼마나 커야 하는지, 어떤 고유 기능이 있어야 하는지, 워크로드에서 수행하는 방법에 따라 파일 시스템을 선택합니다.

사용 가능한 로컬 파일 시스템
  • XFS
  • ext4

1.3. XFS 파일 시스템

XFS는 단일 호스트에서 매우 큰 파일 및 파일 시스템을 지원하는 확장성이 뛰어나고 강력한 고성능 저널링 파일 시스템입니다. 이는 Red Hat Enterprise Linux 10의 기본 파일 시스템입니다. XFS는 원래 SGI 초반에서 개발되었으며 매우 큰 서버 및 스토리지 어레이에서 오랫동안 실행되고 있습니다.

XFS의 기능은 다음과 같습니다.

신뢰성
  • 메타데이터 저널링: 시스템을 다시 시작하고 파일 시스템을 다시 마운트할 때 재생할 수 있는 파일 시스템 작업 기록을 유지하여 시스템 충돌 후 파일 시스템 무결성을 보장합니다.
  • 광범위한 런타임 메타데이터 일관성 검사
  • 확장 가능한 빠른 복구 유틸리티
  • 할당량 저널링. 이로 인해 충돌 후 긴 할당량 일관성 점검이 필요하지 않습니다.
확장 및 성능
  • 지원되는 파일 시스템 크기 최대 1024TiB
  • 다수의 동시 작업을 지원하는 기능
  • 사용 가능한 공간 관리의 확장성을 위한 B-트리 인덱싱
  • 정교한 메타데이터 읽기 알고리즘
  • 스트리밍 비디오 워크로드에 대한 최적화
할당 체계
  • 범위 기반 할당
  • 스트라이프 인식 할당 정책
  • 지연된 할당
  • 공간 사전 할당
  • 동적으로 할당된 inode
기타 기능
  • reflink 기반 파일 복사
  • 긴밀하게 통합된 백업 및 복원 유틸리티
  • 온라인 조각 모음
  • 온라인 파일 시스템 확장
  • 포괄적인 진단 기능
  • 확장 속성(xattr). 이를 통해 시스템은 파일당 여러 개의 추가 이름/값 쌍을 연결할 수 있습니다.
  • 프로젝트 또는 디렉터리 할당량. 이렇게 하면 디렉터리 트리에 대한 할당량 제한이 허용됩니다.
  • 하위 타임 스탬프
성능 특성

XFS는 엔터프라이즈 워크로드가 있는 대규모 시스템에서 높은 성능을 제공합니다. 대규모 시스템은 비교적 많은 CPU 수, 여러 HBA 및 외부 디스크 어레이에 대한 연결이 있는 시스템입니다. XFS는 다중 스레드 병렬 I/O 워크로드가 있는 소규모 시스템에서도 잘 작동합니다.

XFS는 소규모 시스템에서 비교할 수 있지만 확장성 및 대규모 데이터 세트에 더 중점을 두고 있습니다.

1.4. ext4 파일 시스템

ext4 파일 시스템은 ext 파일 시스템 제품군의 4세대입니다.

ext4 드라이버는 ext2 및 ext3 파일 시스템을 읽고 쓸 수 있지만 ext4 파일 시스템 형식은 ext2 및 ext3 드라이버와 호환되지 않습니다.

ext4는 다음과 같은 몇 가지 새롭고 향상된 기능을 추가합니다.

  • 지원되는 파일 시스템 크기 최대 50TiB
  • 범위 기반 메타데이터
  • 지연된 할당
  • 저널 체크섬
  • 대규모 스토리지 지원

범위 기반 메타데이터 및 지연된 할당 기능은 파일 시스템에서 사용된 공간을 추적하는 보다 작고 효율적인 방법을 제공합니다. 이러한 기능을 통해 파일 시스템 성능이 향상되고 메타데이터에서 사용하는 공간을 줄일 수 있습니다. 지연된 할당을 사용하면 데이터가 디스크에 플러시될 때까지 파일 시스템이 새로 작성된 사용자 데이터에 대한 영구 위치를 연기할 수 있습니다. 이렇게 하면 더 크고 연속적인 할당을 허용할 수 있으므로 성능이 향상되어 파일 시스템이 훨씬 더 나은 정보로 결정을 내릴 수 있습니다.

ext4에서 fsck 유틸리티를 사용하는 파일 시스템 복구 시간은 ext2 및 ext3보다 훨씬 빠릅니다. 일부 파일 시스템 복구에는 최대 6배의 성능 향상이 입증되었습니다.

1.5. XFS 및 ext4 비교

XFS는 RHEL의 기본 파일 시스템입니다. 이 섹션에서는 XFS 및 ext4의 사용과 기능을 비교합니다.

메타데이터 오류 동작
ext4에서는 파일 시스템에 메타데이터 오류가 발생할 때 동작을 구성할 수 있습니다. 기본 동작은 작업을 계속하는 것입니다. XFS는 복구할 수 없는 메타데이터 오류가 발생하면 파일 시스템을 종료하고 EFSCORRUPTED 오류를 반환합니다. XFS는 구성 가능한 오류 처리도 지원합니다. 자세한 내용은 XFS에서 구성 가능한 오류 처리를 참조하십시오.
할당량

ext4에서는 파일 시스템을 생성할 때 기존 파일 시스템에서 할당량을 활성화할 수 있습니다. 그런 다음 마운트 옵션을 사용하여 할당량 시행을 구성할 수 있습니다.

XFS 할당량은 다시 마운트할 수 있는 옵션이 아닙니다. 초기 마운트에서 할당량을 활성화해야 합니다.

XFS 파일 시스템에서 quotacheck 명령을 실행하면 적용되지 않습니다. 할당량 회계를 처음 활성화하면 XFS는 할당량을 자동으로 확인합니다.

파일 시스템 크기 조정
XFS에는 파일 시스템의 크기를 줄이는 유틸리티가 없습니다. XFS 파일 시스템의 크기만 늘릴 수 있습니다. 반대로 ext4는 파일 시스템의 크기를 확장 및 축소하는 기능을 모두 지원하지만 축소는 오프라인 작업일 뿐입니다.
inode 번호

ext4 파일 시스템은 2 이상의 inode를 지원하지 않습니다.

XFS는 동적 inode 할당을 지원합니다. XFS 파일 시스템에서 사용할 수 있는 공간의 양은 전체 파일 시스템 공간의 백분율로 계산됩니다. 시스템이 inode가 실행되지 않도록 하려면 파일 시스템에 여유 공간이 남아 있는 경우 관리자는 파일 시스템을 생성한 후 이 백분율을 조정할 수 있습니다.

특정 애플리케이션은 XFS 파일 시스템에서 232 보다 큰 inode 번호를 올바르게 처리할 수 없습니다. 이러한 애플리케이션에서는 EOVERFLOW 반환 값을 사용하여 32비트 stat 호출이 실패할 수 있습니다. inode 수는 다음 조건에서 232 를 초과합니다.

  • 파일 시스템은 256바이트 inode가 있는 1TiB보다 큽니다.
  • 파일 시스템은 512바이트 inode가 있는 2TiB보다 큽니다.

애플리케이션이 대규모 inode 번호로 실패하는 경우 -o inode32 옵션으로 XFS 파일 시스템을 마운트하여 232 미만의 inode 번호를 적용합니다. inode32 를 사용하면 64비트 숫자로 이미 할당된 inode에는 영향을 미치지 않습니다.

중요

특정 환경에 필요한 경우가 아니면 inode32 옵션을 사용하지 마십시오. inode32 옵션은 할당 동작을 변경합니다. 그 결과 더 낮은 디스크 블록에 inode를 할당할 수 있는 공간이 없는 경우 ENOSPC 오류가 발생할 수 있습니다.

1.6. 로컬 파일 시스템 선택

애플리케이션 요구 사항을 충족하는 파일 시스템을 선택하려면 파일 시스템을 배포할 대상 시스템을 이해해야 합니다. 일반적으로 ext4에 대한 특정 사용 사례가 없는 경우 XFS를 사용합니다.

XFS
대규모 배포의 경우 특히 대규모 파일(MB 단위) 및 높은 I/O 동시성을 처리할 때 XFS를 사용합니다. XFS는 대역폭이 200MB/s보다 크고 IOPS가 1000개 이상인 환경에서 최적의 성능을 발휘합니다. 그러나 ext4에 비해 메타데이터 작업에 더 많은 CPU 리소스를 사용하고 파일 시스템 축소를 지원하지 않습니다.
ext4
I/O 대역폭이 제한된 소규모 시스템 또는 환경의 경우 ext4가 더 적합할 수 있습니다. 처리량이 낮은 I/O 워크로드 및 환경에서 더 나은 성능을 제공합니다. ext4는 오프라인 축소 기능도 지원하므로 파일 시스템의 크기를 조정해야 합니다.

대상 서버 및 스토리지 시스템에 애플리케이션의 성능을 벤치마킹하여 선택한 파일 시스템이 성능 및 확장성 요구 사항을 충족하는지 확인합니다.

Expand
표 1.2. 파일 시스템에 대한 적절한 사용 사례 요약
시나리오권장되는 파일 시스템

특수 사용 사례 없음

XFS

대규모 서버

XFS

대규모 스토리지 장치

XFS

대용량 파일

XFS

다중 스레드 I/O

XFS

단일 스레드 I/O

XFS, ext4

제한된 I/O 기능 (1000 IOPS 미만)

XFS, ext4

제한된 대역폭 (200MB/s 미만)

XFS, ext4

CPU 바인딩된 워크로드

XFS, ext4

오프라인 축소 지원

XFS, ext4

1.7. 네트워크 파일 시스템

클라이언트/서버 파일 시스템이라고도 하는 네트워크 파일 시스템을 사용하면 클라이언트 시스템이 공유 서버에 저장된 파일에 액세스할 수 있습니다. 이를 통해 여러 시스템의 여러 사용자가 파일 및 스토리지 리소스를 공유할 수 있습니다.

이러한 파일 시스템은 파일 시스템 집합을 하나 이상의 클라이언트로 내보내는 하나 이상의 서버에서 빌드됩니다. 클라이언트 노드는 기본 블록 스토리지에 액세스할 수 없지만 더 나은 액세스 제어를 허용하는 프로토콜을 사용하여 스토리지와 상호 작용합니다.

사용 가능한 네트워크 파일 시스템
  • RHEL 고객을 위한 가장 일반적인 클라이언트/서버 파일 시스템은 NFS 파일 시스템입니다. RHEL은 네트워크를 통해 로컬 파일 시스템을 내보낼 NFS 서버 구성 요소와 이러한 파일 시스템을 가져오는 NFS 클라이언트를 모두 제공합니다.
  • RHEL에는 Windows 상호 운용성을 위해 널리 사용되는 Microsoft SMB 파일 서버를 지원하는 CIFS 클라이언트도 포함되어 있습니다. 사용자 공간 Samba 서버는 Windows 클라이언트에 RHEL 서버의 Microsoft SMB 서비스를 제공합니다.

1.8. 공유 스토리지 파일 시스템

클러스터 파일 시스템이라고도 하는 공유 스토리지 파일 시스템은 클러스터의 각 서버가 로컬 SAN(Storage Area Network)을 통해 공유 블록 장치에 직접 액세스할 수 있도록 합니다.

네트워크 파일 시스템과 비교
클라이언트/서버 파일 시스템과 마찬가지로 공유 스토리지 파일 시스템은 클러스터의 모든 멤버인 서버 집합에서 작동합니다. 그러나 NFS와 달리 단일 서버는 다른 멤버에게 데이터 또는 메타데이터에 대한 액세스를 제공하지 않습니다. 클러스터의 각 멤버는 동일한 스토리지 장치( 공유 스토리지)에 직접 액세스하고 모든 클러스터 멤버 노드는 동일한 파일 집합에 액세스할 수 있습니다.
동시성

캐시 일관성은 데이터 일관성과 무결성을 보장하기 위해 클러스터형 파일 시스템의 핵심입니다. 클러스터 내의 모든 노드에 표시되는 모든 파일의 단일 버전이 있어야 합니다. 파일 시스템은 클러스터의 멤버가 동시에 동일한 스토리지 블록을 업데이트하고 데이터 손상을 유발하도록 해야 합니다. 이를 위해 공유 스토리지 파일 시스템은 클러스터 전체 잠금 메커니즘을 사용하여 스토리지에 대한 액세스를 동시성 제어 메커니즘으로 중재합니다. 예를 들어 새 파일을 만들거나 여러 서버에서 열린 파일에 쓰기 전에 서버의 파일 시스템 구성 요소가 올바른 잠금을 가져와야 합니다.

클러스터 파일 시스템의 요구 사항은 Apache 웹 서버와 같이 고가용성 서비스를 제공하는 것입니다. 클러스터의 모든 구성원은 공유 디스크 파일 시스템에 저장된 데이터에 대한 완전히 일관된 보기를 볼 수 있으며 모든 업데이트는 잠금 메커니즘에 의해 올바르게 중재됩니다.

성능 특성

공유 디스크 파일 시스템은 잠금 오버헤드의 계산 비용으로 인해 동일한 시스템에서 실행되는 로컬 파일 시스템뿐만 아니라 항상 수행하는 것은 아닙니다. 공유 디스크 파일 시스템은 각 노드가 다른 노드와 공유되지 않거나 노드 집합에서 거의 독점적으로 읽기 전용 방식으로 파일 집합을 공유하는 특정 파일 세트에 거의 독점적으로 쓰는 워크로드와 잘 작동합니다. 이로 인해 최소 노드 간 캐시 무효화가 발생하고 성능을 극대화할 수 있습니다.

공유 디스크 파일 시스템을 설정하는 것은 복잡하며 공유 디스크 파일 시스템에서 제대로 작동하도록 애플리케이션을 튜닝하는 것은 어려울 수 있습니다.

1.9. 네트워크 및 공유 스토리지 파일 시스템 중에서 선택

네트워크와 공유 스토리지 파일 시스템 중에서 선택할 때 다음 사항을 고려하십시오.

  • NFS 기반 네트워크 파일 시스템은 NFS 서버를 제공하는 환경에서 매우 일반적이고 널리 사용되고 있습니다.
  • 네트워크 파일 시스템은 Infiniband 또는 10 Gigabit 이더넷과 같은 매우 고성능 네트워킹 기술을 사용하여 배포할 수 있습니다. 즉, 스토리지에 원시 대역폭을 얻으려면 공유 스토리지 파일 시스템으로 전환해서는 안 됩니다. 액세스 속도가 중요한 경우 NFS를 사용하여 XFS와 같은 로컬 파일 시스템을 내보냅니다.
  • 공유 스토리지 파일 시스템은 쉽게 설정하거나 유지 관리할 수 없으므로 필요한 가용성을 로컬 또는 네트워크 파일 시스템으로 제공할 수 없는 경우에만 배포해야 합니다.
  • 클러스터형 환경의 공유 스토리지 파일 시스템을 사용하면 고가용성 서비스의 재배치와 관련된 일반적인 장애 조치 시나리오 중에 수행해야 하는 마운트 해제 및 마운트에 필요한 단계를 제거하여 다운타임을 줄일 수 있습니다.

공유 스토리지 파일 시스템에 대한 특정 사용 사례가 없는 한 네트워크 파일 시스템을 사용하는 것이 좋습니다. 최소 가동 중지 시간과 엄격한 서비스 수준 요구 사항이 있는 고가용성 서비스를 제공해야 하는 배포에는 주로 공유 스토리지 파일 시스템을 사용합니다.

1.10. 볼륨 관리 파일 시스템

볼륨 관리 파일 시스템은 단순성 및 스택 내 최적화를 위해 전체 스토리지 스택을 통합합니다.

사용 가능한 볼륨 관리 파일 시스템
  • Red Hat Enterprise Linux 10은 Stratis 볼륨 관리자를 제공합니다. Stratis는 파일 시스템 계층에 XFS를 사용하여 LVM, 장치 매퍼 및 기타 구성 요소와 통합합니다.

Stratis는 Red Hat Enterprise Linux 8.0에서 처음 릴리스되었습니다. Red Hat은 더 이상 사용되지 않는 Btrfs를 사용할 때 생성되는 격차를 채우는 것이 중요합니다. Stratis 1.0은 사용자의 복잡성을 숨기는 동시에 중요한 스토리지 관리 작업을 수행할 수 있는 직관적인 명령줄 기반 볼륨 관리자입니다.

  • 볼륨 관리
  • 풀 생성
  • 씬 스토리지 풀
  • 스냅샷
  • 자동화된 읽기 캐시

Stratis는 강력한 기능을 제공하지만 현재 Btrfs 또는 ZFS와 비교할 수 있는 특정 기능이 없습니다. 특히 CRC는 자기 회복을 위해 지원하지 않습니다.

2장. RHEL 시스템 역할을 사용하여 로컬 스토리지 관리

Ansible을 사용하여 LVM 및 로컬 파일 시스템(FS)을 관리하려면 RHEL 10에서 사용할 수 있는 RHEL 시스템 역할 중 하나인 스토리지 역할을 사용할 수 있습니다.

스토리지 역할을 사용하면 RHEL 7.7부터 여러 시스템 및 모든 RHEL 버전에서 디스크 및 논리 볼륨에서 파일 시스템 관리를 자동화할 수 있습니다.

RHEL 시스템 역할 및 적용 방법에 대한 자세한 내용은 RHEL 시스템 역할 소개를 참조하십시오.

예제 Ansible 플레이북은 storage 역할을 사용하여 기본 매개 변수를 사용하여 블록 장치에 XFS 파일 시스템을 생성합니다. /dev/sdb 장치 또는 마운트 지점 디렉터리의 파일 시스템이 없으면 플레이북에서 해당 시스템을 생성합니다.

참고

스토리지 역할은 파티션되지 않은 전체 디스크 또는 LV(논리 볼륨)에서만 파일 시스템을 생성할 수 있습니다. 파티션에 파일 시스템을 만들 수 없습니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Create an XFS file system on a block device
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_volumes:
              - name: barefs
                type: disk
                disks:
                  - sdb
                fs_type: xfs

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    이름: barefs
    볼륨 이름(예의barefs )은 현재 임의의 상태입니다. 스토리지 역할은 disks 특성에 나열된 디스크 장치로 볼륨을 식별합니다.
    fs_type: <file_system>
    기본 파일 시스템 XFS를 사용하려면 fs_type 매개변수를 생략할 수 있습니다.
    disks: <list_of_disks_and_volumes>
    디스크 및 LV 이름의 YAML 목록입니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

예제 Ansible 플레이북은 storage 역할을 사용하여 기존 파일 시스템을 영구적으로 마운트합니다. 이를 통해 /etc/fstab 파일에 적절한 항목을 추가하여 파일 시스템을 즉시 사용할 수 있고 영구적으로 마운트할 수 있습니다. 이렇게 하면 재부팅 시 파일 시스템을 마운트 상태로 유지할 수 있습니다. /dev/sdb 장치 또는 마운트 지점 디렉터리의 파일 시스템이 없으면 플레이북에서 해당 시스템을 생성합니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Persistently mount a file system
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_safe_mode: false
    
            storage_volumes:
              - name: barefs
                type: disk
                disks:
                  - sdb
                fs_type: xfs
                mount_point: /mnt/data
                mount_user: somebody
                mount_group: somegroup
                mount_mode: "0755"

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

스토리지 역할을 사용하여 다음 작업을 수행합니다.

  • 여러 디스크로 구성된 볼륨 그룹에 LVM 논리 볼륨을 만들려면 다음을 수행합니다.
  • LVM에서 기존 파일 시스템의 크기를 조정하려면 다음을 수행합니다.
  • 풀의 총 크기의 백분율로 LVM 볼륨 크기를 표현하려면

볼륨 그룹이 없으면 역할이 생성됩니다. 논리 볼륨이 볼륨 그룹에 있는 경우 크기가 플레이북에 지정된 것과 일치하지 않으면 크기가 조정됩니다.

논리 볼륨을 줄이는 경우 데이터 손실을 방지하기 위해 논리 볼륨의 파일 시스템이 축소되는 논리 볼륨의 공간을 사용하지 않도록 해야 합니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Create logical volume
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_safe_mode: false
    
            storage_pools:
              - name: myvg
                disks:
                  - sda
                  - sdb
                  - sdc
                volumes:
                  - name: mylv
                    size: 2G
                    fs_type: ext4
                    mount_point: /mnt/data

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    size: <size>
    단위(예: GiB) 또는 백분율(예: 60 %)을 사용하여 크기를 지정해야 합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • 지정된 볼륨이 요청된 크기로 생성되거나 크기가 조정되었는지 확인합니다.

    # ansible managed-node-01.example.com -m command -a 'lvs myvg'

2.4. 스토리지 RHEL 시스템 역할을 사용하여 온라인 블록 삭제 활성화

온라인 블록 삭제 옵션으로 XFS 파일 시스템을 마운트하여 사용되지 않는 블록을 자동으로 삭제할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Enable online block discard
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_volumes:
              - name: barefs
                type: disk
                disks:
                  - /dev/sdb
                fs_type: xfs
                mount_point: /mnt/data
                mount_options: discard

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • 온라인 블록 삭제 옵션이 활성화되어 있는지 확인합니다.

    # ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'

예제 Ansible 플레이북은 storage 역할을 사용하여 파일 시스템을 생성하고 마운트합니다. 이를 통해 /etc/fstab 파일에 적절한 항목을 추가하여 파일 시스템을 즉시 사용할 수 있고 영구적으로 마운트할 수 있습니다. 이렇게 하면 재부팅 시 파일 시스템을 마운트 상태로 유지할 수 있습니다. /dev/sdb 장치 또는 마운트 지점 디렉터리의 파일 시스템이 없으면 플레이북에서 해당 시스템을 생성합니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        -name: Create and mount a file system
        ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
        vars:
          storage_safe_mode: false
    
          storage_volumes:
            - name: barefs
              type: disk
              disks:
                - sdb
              fs_type: ext4
              fs_label: label-name
              mount_point: /mnt/data

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    disks: <list_of_devices>
    역할이 볼륨을 생성할 때 사용하는 장치 이름의 YAML 목록입니다.
    fs_type: <file_system>
    역할이 볼륨에 설정해야 하는 파일 시스템을 지정합니다. xfs,ext3,ext4,swap 또는 포맷되지 않음을 선택할 수 있습니다.
    label-name: <file_system_label>
    선택 사항: 파일 시스템의 레이블을 설정합니다.
    mount_point: < directory>
    선택 사항: 볼륨을 자동으로 마운트해야 하는 경우 mount_point 변수를 볼륨을 마운트해야 하는 디렉터리로 설정합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

2.6. 스토리지 RHEL 시스템 역할을 사용하여 RAID 볼륨 구성

스토리지 시스템 역할을 사용하면 Red Hat Ansible Automation Platform 및 Ansible-Core를 사용하여 RHEL에서 RAID 볼륨을 구성할 수 있습니다. 요구 사항에 맞게 RAID 볼륨을 구성하는 매개 변수를 사용하여 Ansible 플레이북을 생성합니다.

주의

장치 이름은 예를 들어 시스템에 새 디스크를 추가할 때 특정 상황에서 변경될 수 있습니다. 따라서 데이터 손실을 방지하려면 플레이북에서 영구 이름 지정 속성을 사용합니다. 영구 이름 지정 속성에 대한 자세한 내용은 영구 이름 지정 특성을 참조하십시오.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Create a RAID on sdd, sde, sdf, and sdg
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_safe_mode: false
            storage_volumes:
              - name: data
                type: raid
                disks: [sdd, sde, sdf, sdg]
                raid_level: raid0
                raid_chunk_size: 32 KiB
                mount_point: /mnt/data
                state: present

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • 배열이 올바르게 생성되었는지 확인합니다.

    # ansible managed-node-01.example.com -m command -a 'mdadm --detail /dev/md/data'

2.7. 스토리지 RHEL 시스템 역할을 사용하여 RAID에서 LVM 볼륨 그룹 구성

스토리지 시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL에서 RAID로 LVM 풀을 구성할 수 있습니다. 사용 가능한 매개 변수로 Ansible 플레이북을 설정하여 RAID로 LVM 풀을 구성할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure LVM pool with RAID
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_safe_mode: false
            storage_pools:
              - name: my_pool
                type: lvm
                disks: [sdh, sdi]
                raid_level: raid1
                volumes:
                  - name: my_volume
                    size: "1 GiB"
                    mount_point: "/mnt/app/shared"
                    fs_type: xfs
                    state: present

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

    참고

    storage_pool 수준에서 raid_level 을 설정하면 먼저 MD RAID 배열이 생성되고 그 위에 LVM 볼륨 그룹이 생성됩니다.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • 풀이 RAID에 있는지 확인합니다.

    # ansible managed-node-01.example.com -m command -a 'lsblk'

스토리지 시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL에서 RAID LVM 볼륨의 스트라이프 크기를 구성할 수 있습니다. 사용 가능한 매개 변수로 Ansible 플레이북을 설정하여 RAID로 LVM 풀을 구성할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure stripe size for RAID LVM volumes
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_safe_mode: false
            storage_pools:
              - name: my_pool
                type: lvm
                disks: [sdh, sdi]
                volumes:
                  - name: my_volume
                    size: "1 GiB"
                    mount_point: "/mnt/app/shared"
                    fs_type: xfs
                    raid_level: raid0
                    raid_stripe_size: "256 KiB"
                    state: present

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

    참고

    볼륨 수준에서 raid_level 을 설정하면 LVM RAID 논리 볼륨이 생성됩니다.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • 스트라이프 크기가 필요한 크기로 설정되어 있는지 확인합니다.

    # ansible managed-node-01.example.com -m command -a 'lvs -o+stripesize /dev/my_pool/my_volume'

2.9. 스토리지 RHEL 시스템 역할을 사용하여 LVM-VDO 볼륨 구성

스토리지 RHEL 시스템 역할을 사용하여 활성화된 압축 및 중복 제거로 LVM(LVM-VDO)에서 VDO 볼륨을 생성할 수 있습니다.

참고

스토리지 시스템 역할은 LVM-VDO를 사용하므로 풀당 하나의 볼륨만 생성할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Create LVM-VDO volume under volume group 'myvg'
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_pools:
              - name: myvg
                disks:
                  - /dev/sdb
                volumes:
                  - name: mylv1
                    compression: true
                    deduplication: true
                    vdo_pool_size: 10 GiB
                    size: 30 GiB
                    mount_point: /mnt/app/shared

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    vdo_pool_size: <size>
    볼륨이 장치에서 사용하는 실제 크기입니다. 사용자가 읽을 수 있는 형식으로 크기를 지정할 수 있습니다(예: 10GiB). 단위를 지정하지 않으면 기본값은 바이트입니다.
    size: <size>
    VDO 볼륨의 가상 크기입니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • 압축 및 중복 제거의 현재 상태를 확인합니다.

    $ ansible managed-node-01.example.com -m command -a 'lvs -o+vdo_compression,vdo_compression_state,vdo_deduplication,vdo_index_state'
      LV       VG      Attr       LSize   Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert VDOCompression VDOCompressionState VDODeduplication VDOIndexState
      mylv1   myvg   vwi-a-v---   3.00t vpool0                                                         enabled              online          enabled        online

2.10. 스토리지 RHEL 시스템 역할을 사용하여 LUKS2 암호화된 볼륨 생성

storage 역할을 사용하여 Ansible 플레이북을 실행하여 LUKS로 암호화된 볼륨을 생성하고 구성할 수 있습니다.

사전 요구 사항

프로세스

  1. 중요한 변수를 암호화된 파일에 저장합니다.

    1. 자격 증명 모음을 생성합니다.

      $ ansible-vault create ~/vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
    2. ansible-vault create 명령이 편집기를 열고 < key > : < value > 형식으로 중요한 데이터를 입력합니다.

      luks_password: <password>
    3. 변경 사항을 저장하고 편집기를 종료합니다. Ansible은 자격 증명 모음의 데이터를 암호화합니다.
  2. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      vars_files:
        - ~/vault.yml
      tasks:
        - name: Create and configure a volume encrypted with LUKS
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_volumes:
              - name: barefs
                type: disk
                disks:
                  - sdb
                fs_type: xfs
                fs_label: <label>
                mount_point: /mnt/data
                encryption: true
                encryption_password: "{{ luks_password }}"
                encryption_cipher: <cipher>
                encryption_key_size: <key_size>
                encryption_luks_version: luks2

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    encryption_cipher: < cipher>
    LUKS 암호를 지정합니다. 가능한 값은 twofish-xts-plain64,serpent-xts-plain64aes-xts-plain64 (기본값)입니다.
    encryption_key_size: <key_size>
    LUKS 키 크기를 지정합니다. 기본값은 512 비트입니다.
    encryption_luks_version: luks2
    LUKS 버전을 지정합니다. 기본값은 luks2 입니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  3. 플레이북 구문을 확인합니다.

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  4. Playbook을 실행합니다.

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

검증

  • 생성된 LUKS 암호화된 볼륨을 확인합니다.

    # ansible managed-node-01.example.com -m command -a 'cryptsetup luksDump /dev/sdb'
    
    LUKS header information
    Version: 2
    Epoch: 3
    Metadata area: 16384 [bytes]
    Keyslots area: 16744448 [bytes]
    UUID: bdf6463f-6b3f-4e55-a0a6-1a66f0152a46
    Label: (no label)
    Subsystem: (no subsystem)
    Flags: (no flags)
    
    Data segments:
    0: crypt
    offset: 16777216 [bytes]
    length: (whole device)
    cipher: aes-cbc-essiv:sha256
    sector: 512 [bytes]
    
    Keyslots:
    0: luks2
    Key: 256 bits
    Priority: normal
    Cipher: aes-cbc-essiv:sha256
    Cipher key: 256 bits

2.11. 스토리지 RHEL 시스템 역할을 사용하여 공유 LVM 장치 생성

여러 시스템이 동일한 스토리지에 동시에 액세스하도록 하려면 스토리지 RHEL 시스템 역할을 사용하여 공유 LVM 장치를 생성할 수 있습니다.

이는 다음과 같은 주요 이점을 가져올 수 있습니다.

  • 리소스 공유
  • 스토리지 리소스 관리의 유연성
  • 스토리지 관리 작업 간소화

사전 요구 사항

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      become: true
      tasks:
        - name: Create shared LVM device
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_pools:
              - name: vg1
                disks: /dev/vdb
                type: lvm
                shared: true
                state: present
                volumes:
                  - name: lv1
                    size: 4g
                    mount_point: /opt/test1
                    fs_type: gfs2
            storage_safe_mode: false
            storage_use_partitions: true

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

2.12. 스토리지 RHEL 시스템 역할을 사용하여 물리 볼륨 크기 조정

스토리지 시스템 역할을 사용하면 호스트 외부에서 기본 스토리지 또는 디스크의 크기를 조정한 후 LVM 물리 볼륨의 크기를 조정할 수 있습니다. 예를 들어 가상 디스크의 크기가 증가하여 기존 LVM에서 추가 공간을 사용하려고 합니다.

사전 요구 사항

  • 컨트롤 노드 및 관리형 노드를 준비했습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • 기본 블록 스토리지의 크기가 변경되었습니다.

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Resize LVM PV size
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_pools:
               - name: myvg
                 disks: ["sdf"]
                 type: lvm
                 grow_to_fill: true

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    grow_to_fill

    True 역할은 디스크의 새 용량을 사용하도록 스토리지 볼륨을 자동으로 확장합니다.

    False 역할은 기본 디스크가 증가한 경우에도 스토리지 볼륨을 현재 크기로 남겨 둡니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  1. grow_to_fill 설정이 예상대로 작동하는지 확인합니다. 테스트 PV 및 VG를 준비합니다.

    # pvcreate /dev/sdf
    # vgcreate myvg /dev/sdf
  2. 초기 물리 볼륨 크기를 확인하고 기록합니다.

    # pvs
  3. 플레이북을 편집하여 grow_to_fill: false 를 설정하고 플레이북을 실행합니다.
  4. 볼륨 크기를 확인하고 변경되지 않았는지 확인합니다.
  5. 플레이북을 편집하여 grow_to_fill: true 를 설정하고 플레이북을 다시 실행합니다.
  6. 볼륨 크기를 확인하고 확장되었는지 확인합니다.

3장. 웹 콘솔을 사용하여 파티션 관리

웹 콘솔을 사용하여 RHEL 10에서 파일 시스템을 관리할 수 있습니다.

3.1. 웹 콘솔에서 파일 시스템으로 포맷된 파티션 표시

웹 콘솔의 Storage 섹션에는 Filesystems 테이블에서 사용 가능한 모든 파일 시스템이 표시됩니다.

파일 시스템으로 포맷된 파티션 목록 외에도 이 페이지를 사용하여 새 스토리지를 생성할 수도 있습니다.

사전 요구 사항

  • cockpit-storaged 패키지가 시스템에 설치됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지 탭을 클릭합니다.

    스토리지 표에서 파일 시스템, ID, 유형, 위치, 크기 및 각 파티션에서 사용할 수 있는 공간을 사용하여 포맷된 모든 파티션을 확인할 수 있습니다.

    Image displaying the Storage table available in the cockpit Storage tab.

    오른쪽 상단에 있는 드롭다운 메뉴를 사용하여 새 로컬 또는 네트워크 스토리지를 생성할 수도 있습니다.

    Image displaying the drop-down menu available in the Storage table.

3.2. 웹 콘솔에서 파티션 생성

새 파티션을 만들려면 다음을 수행합니다.

  • 기존 파티션 테이블 사용
  • 파티션 만들기

사전 요구 사항

  • cockpit-storaged 패키지가 시스템에 설치됩니다.
  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • 시스템에 연결된 포맷되지 않은 볼륨은 Storage 탭의 Storage 테이블에 표시됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지 탭을 클릭합니다.
  3. 스토리지 테이블에서 파티션할 장치를 클릭하여 해당 장치의 페이지 및 옵션을 엽니다.
  4. 장치 페이지에서 메뉴 버튼을 클릭하고 파티션 테이블 만들기 를 선택합니다.
  5. Cryo stat 디스크 대화 상자에서 다음을 선택합니다.

    1. 파티션:

      • 모든 시스템 및 장치와 호환 (MBR)
      • 최신 시스템 및 하드 디스크와 호환 > 2TB (GPT)
      • 파티셔닝 없음
    2. 덮어쓰기:

      • RHEL 웹 콘솔에서 0으로 전체 디스크를 다시 작성하려면 0이 포함된 기존 데이터 덮어쓰기 확인란을 선택합니다. 이 옵션은 프로그램이 전체 디스크를 통과해야 하지만 더 안전합니다. 디스크에 데이터가 포함되어 있고 덮어써야 하는 경우 이 옵션을 사용합니다.

        제로가 0인 기존 데이터를 덮어쓰 지 않은 경우 RHEL 웹 콘솔은 디스크 헤더만 다시 작성합니다. 이렇게 하면 포맷 속도가 증가합니다.

  6. Cryostat 클릭합니다.
  7. 생성한 파티션 테이블 옆에 있는 Cryostat 메뉴 버튼을 클릭합니다. 기본적으로 Free space 로 이름이 지정됩니다.
  8. 파티션 생성을 클릭합니다.
  9. 파티션 만들기 대화 상자에서 파일 시스템의 이름을 입력합니다.
  10. 마운트 지점을 추가합니다.
  11. 유형 드롭다운 메뉴에서 파일 시스템을 선택합니다.

    • XFS 파일 시스템은 대규모 논리 볼륨을 지원하며 중단 없이 물리적 드라이브를 온라인 상태로 전환하며 기존 파일 시스템을 확장합니다. 다른 강력한 기본 설정이 없는 경우 이 파일 시스템을 선택한 상태로 두십시오.
    • ext4 파일 시스템은 다음을 지원합니다.

      • 논리 볼륨
      • 중단 없이 온라인 물리적 드라이브 전환
      • 파일 시스템 확장
      • 파일 시스템 축소

    추가 옵션은 LUKS(Linux Unified Key Setup)에서 수행하는 파티션 암호화를 활성화하여 암호를 사용하여 볼륨을 암호화하는 것입니다.

  12. 생성할 볼륨의 크기를 입력합니다.
  13. RHEL 웹 콘솔에서 0으로 전체 디스크를 다시 작성하려면 0이 포함된 기존 데이터 덮어쓰기 확인란을 선택합니다. 이 옵션은 프로그램이 전체 디스크를 통과해야 하지만 더 안전합니다. 디스크에 데이터가 포함되어 있고 덮어써야 하는 경우 이 옵션을 사용합니다.

    제로가 0인 기존 데이터를 덮어쓰 지 않은 경우 RHEL 웹 콘솔은 디스크 헤더만 다시 작성합니다. 이렇게 하면 포맷 속도가 증가합니다.

  14. 볼륨을 암호화하려면 암호화 드롭다운 메뉴에서 암호화 유형을 선택합니다.

    볼륨을 암호화하지 않으려면 암호화 없음 을 선택합니다.

  15. 부팅 시 드롭다운 메뉴에서 볼륨을 마운트할 시기를 선택합니다.
  16. 마운트 옵션 섹션의 경우:

    1. 볼륨을 읽기 전용 논리 볼륨으로 마운트하려면 마운트 읽기 전용 확인란을 선택합니다.
    2. 사용자 지정 마운트 옵션 확인란을 선택하고 기본 마운트 옵션을 변경하려면 마운트 옵션을 추가합니다.
  17. 파티션을 만듭니다.

    • 파티션을 만들고 마운트하려면 만들기 및 마운트 버튼을 클릭합니다.
    • 파티션을 만들려면 Create only 버튼을 클릭합니다.

      볼륨 크기 및 선택한 포맷 옵션에 따라 포맷 지정에 몇 분이 걸릴 수 있습니다.

검증

  • 파티션이 성공적으로 추가되었는지 확인하려면 Storage 탭으로 전환하고 Storage 테이블을 확인하고 새 파티션이 나열되어 있는지 확인합니다.

3.3. 웹 콘솔에서 파티션 삭제

웹 콘솔 인터페이스에서 파티션을 제거할 수 있습니다.

사전 요구 사항

  • cockpit-storaged 패키지가 시스템에 설치됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지 탭을 클릭합니다.
  3. 파티션을 삭제할 장치를 클릭합니다.
  4. 장치 페이지 및 GPT 파티션 섹션에서 삭제하려는 파티션 옆에 있는 메뉴 버튼을 클릭합니다.
  5. 드롭다운 메뉴에서 삭제 를 선택합니다.

    RHEL 웹 콘솔은 현재 파티션을 사용하는 모든 프로세스를 종료하고 삭제하기 전에 파티션을 마운트 해제합니다.

검증

  • 파티션이 성공적으로 제거되었는지 확인하려면 Storage 탭으로 전환하고 Storage 테이블을 확인합니다.

4장. NFS 공유 마운트

시스템 관리자는 시스템에 원격 NFS 공유를 마운트하여 공유 데이터에 액세스할 수 있습니다.

4.1. NFS 클라이언트에 필요한 서비스

Red Hat Enterprise Linux는 커널 모듈과 사용자 공간 프로세스를 결합하여 NFS 파일 공유에 대한 액세스를 제공합니다. nfs-utils 패키지는 사용자 공간 프로세스를 위한 프로그램 파일을 제공합니다. nfs-utils 패키지를 설치하여 NFS 클라이언트 기능을 활성화합니다. NFS 클라이언트에서 사용하는 주요 서비스는 다음과 같습니다.

Expand
표 4.1. NFS 클라이언트에 필요한 서비스
서비스 이름NFS 버전설명

nfsidmap

4

NFSv4 이름(< user@domain> )과 로컬 사용자및 그룹 ID 형식 간 NFSv4 클라이언트 매핑에서 서비스를 제공하는 프로그램입니다. rpc.idmapd 가 NFSv4 서버를 대신하여 제공하는 유사한 기능을 제공합니다. 차이점은 rpc.idmapd 가 데몬이지만 nfsidmap 은 커널 요청-키 메커니즘을 통해 온디맨드로 호출된다는 것입니다. nfsidmap/etc/idmapd.conf/etc/request-key.d/id_resolver.conf 의 구성 파일을 사용합니다. 대부분의 경우 기본값이 충분하며 이러한 구성 파일을 수정할 필요가 없습니다.

rpc.statd

3

네트워크 상태 모니터 프로토콜을 구현하는 데몬입니다. rpc.statd 의 두 가지 주요 기능:

  • 로컬 잠금 프로세스(Network Lock Manager 프로토콜을 구현하는 커널 데몬)의 요청을 수신 대기하여 네트워크 피어를 모니터링합니다(NFS 클라이언트의 경우 rpc.statd 는 NFS 서버를 모니터링하고 있음).
  • 원격 피어(부팅된 NFS 서버)에서 재부팅된 재부팅 알림을 수신 대기하고 해당 서버에서 가진 모든 잠금을 회수할 수 있도록 잠김으로 전달합니다.

/etc/nfs.conf 파일의 [statd] 섹션을 사용하여 rpc.statd 를 구성합니다.

rpc-statd.service

3

rpc.statd 데몬을 시작하는 systemd 장치 파일입니다. mount.nfs 프로그램은 NFSv3를 사용하여 원격 파일 시스템을 처음 마운트할 때 rpc-statd.service ( /usr/sbin/start-statd 쉘 스크립트를 통해)를 자동으로 시작하므로 수동으로 서비스를 활성화하거나 시작할 필요가 없습니다. 그러나 방화벽 뒤에서 실행되도록 NFSv3 클라이언트를 구성하는 경우 일반적으로 rpc-statd.service 를 다시 시작해야 합니다.

sm-notify

3

로컬 시스템이 재부팅될 때마다 rpc.statd 에서 모니터링하는 원격 피어에 재부팅 알림을 전송하는 도우미 프로그램입니다. NFS 클라이언트의 경우 sm-notify 는 NFS 서버에 재부팅 알림을 전송하므로 해당 서버에서 클라이언트에서 보유한 모든 잠금을 삭제할 수 있습니다.

rpc-statd-notify.service

3

sm-notify 를 트리거하는 systemd 장치입니다. 시스템 부팅 시 자동으로 실행되므로 서비스를 수동으로 활성화하거나 시작할 필요가 없습니다.

rpc.gssd

3, 4

커널을 대신하여 작동하는 데몬은 원격 피어와 함께 GSS(Generic Security Services) 컨텍스트를 설정합니다(일반적으로 NFS 클라이언트에서 NFS 서버로 시작되지만 NFSv4 콜백의 경우 NFS 서버에서 NFS 클라이언트로 시작됨). 이 프로세스는 Kerberos V5를 사용하여 NFS를 보호하는 데 필요합니다. rpc.gssd 프로그램은 /etc/nfs.conf 파일의 [gssd] 섹션을 통해 구성됩니다.

rpc-gssd.service

3, 4

rpc.gssd 데몬을 시작하는 systemd 장치 파일입니다. /etc/krb5.keytab 파일이 시스템에 있는 경우 서비스가 시스템 부팅 시 자동으로 시작되므로 이 서비스를 수동으로 활성화하거나 시작할 필요가 없습니다.

4.2. 방화벽 뒤에서 실행되도록 NFSv3 클라이언트 준비

NFS 서버는 클라이언트에 파일 잠금 및 서버 상태를 알립니다. 클라이언트에 대한 연결을 다시 설정하려면 클라이언트의 방화벽에서 관련 포트를 열어야 합니다.

프로세스

  1. 기본적으로 NFSv3 RPC 서비스는 임의의 포트를 사용합니다. 방화벽 구성을 활성화하려면 /etc/nfs.conf 파일에서 고정 포트 번호를 구성합니다.

    1. [lockd] 섹션에서 nlockmgr RPC 서비스의 고정 포트 번호를 설정합니다. 예를 들면 다음과 같습니다.

      port=5555

      이 설정을 사용하면 서비스는 UDP 및 TCP 프로토콜 모두에 이 포트 번호를 자동으로 사용합니다.

    2. [statd] 섹션에서 rpc.statd 서비스의 고정 포트 번호를 설정합니다. 예를 들면 다음과 같습니다.

      port=6666

      이 설정을 사용하면 서비스는 UDP 및 TCP 프로토콜 모두에 이 포트 번호를 자동으로 사용합니다.

  2. firewalld 에서 관련 포트를 엽니다.

    # firewall-cmd --permanent --add-service=rpc-bind
    # firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp}
    # firewall-cmd --reload
  3. rpc-statd 서비스를 다시 시작합니다.

    # systemctl restart rpc-statd nfs-server

4.3. 방화벽 뒤에서 실행되도록 NFSv4 클라이언트 준비

NFS 서버는 클라이언트에 파일 잠금 및 서버 상태를 알립니다. 클라이언트에 대한 연결을 다시 설정하려면 클라이언트의 방화벽에서 관련 포트를 열어야 합니다.

참고

NFS v4.1 이상에서는 콜백에 기존 클라이언트 포트를 사용하므로 콜백 포트를 별도로 설정할 수 없습니다. 자세한 내용은 NFS4 클라이언트 콜백 포트를 특정 포트로 설정하는 방법 을 참조하십시오.

사전 요구 사항

  • 서버는 NFS 4 프로토콜을 사용합니다.

프로세스

  • firewalld 에서 관련 포트를 엽니다.

    # firewall-cmd --permanent --add-port=<callback_port>/tcp
    # firewall-cmd --reload

4.4. 수동으로 NFS 공유 마운트

부팅 시 NFS 공유를 자동으로 마운트할 필요가 없는 경우 수동으로 마운트할 수 있습니다.

주의

NFS 클라이언트에 동일한 짧은 호스트 이름이 있는 경우 NFSv4 클라이언트 의 충돌과 갑작스러운 만료가 발생할 수 있습니다. NFSv4 클라이언트 의 예기치 않은 만료를 방지하려면 사용 중인 시스템에 따라 NFS 클라이언트에 고유한 호스트 이름을 사용하거나 각 컨테이너에서 식별자를 구성해야 합니다. 자세한 내용은 여러 NFS 클라이언트에서 동일한 호스트 이름을 사용하므로 Red Hat Knowledgebase 솔루션 NFSv4 clientid가 갑자기 만료되었습니다.

프로세스

  • 다음 명령을 사용하여 NFS 공유를 클라이언트에 마운트합니다.

    # mount <nfs_server_ip_or_hostname>:/<exported_share> <mount point>

    예를 들어 server.example.com NFS 서버의 /nfs/projects 공유를 /mnt 로 마운트하려면 다음을 입력합니다.

    # mount server.example.com:/nfs/projects/ /mnt/

검증

  • NFS 공유에 액세스할 수 있는 권한이 있는 사용자로 마운트된 공유의 콘텐츠를 표시합니다.

    $ ls -l /mnt/

4.5. 시스템이 부팅될 때 자동으로 NFS 공유 마운트

시스템 부팅 중에 NFS 공유를 자동으로 마운트하면 NFS 서버에서 호스팅되는 /home 디렉터리와 같은 중앙 집중식 데이터에 중요한 서비스가 의존하여 시스템이 시작되는 시점부터 원활하고 중단없는 액세스가 가능합니다.

자세한 내용은 시스템의 fstab(5) 도움말 페이지를 참조하십시오.

프로세스

  1. /etc/fstab 파일을 편집하고 마운트하려는 공유 행을 추가합니다.

    <nfs_server_ip_or_hostname>:/<exported_share>     <mount point>    nfs    default   0 0

    예를 들어 server.example.com NFS 서버의 /nfs/projects 공유를 /home 에 마운트하려면 다음을 입력합니다.

    server.example.com:/nfs/projects    	/home        nfs 	defaults    	0 0
  2. 공유를 마운트합니다.

    # mount /home

검증

  • NFS 공유에 액세스할 수 있는 권한이 있는 사용자로 마운트된 공유의 콘텐츠를 표시합니다.

    $ ls -l /home/

4.6. 웹 콘솔에서 NFS 마운트 연결

NFS를 사용하여 원격 디렉터리를 파일 시스템에 연결합니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • cockpit-storaged 패키지가 시스템에 설치됩니다.
  • NFS 서버 이름 또는 IP 주소입니다.
  • 원격 서버의 디렉터리 경로입니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 테이블에서 메뉴 버튼을 클릭합니다.
  4. 드롭다운 메뉴에서 새 NFS 마운트 를 선택합니다.

    Image displaying the available options in the Storage table drop-down menu. The New NFS mount options is highlighted.

  5. 새 NFS 마운트 대화 상자에서 원격 서버의 서버 또는 IP 주소를 입력합니다.
  6. 서버 경로 필드에 마운트할 디렉터리의 경로를 입력합니다.
  7. 로컬 마운트 지점 필드에 NFS를 마운트하려는 로컬 시스템의 디렉터리 경로를 입력합니다.
  8. 마운트 옵션 확인란 목록에서 NFS를 마운트하는 방법을 선택합니다. 요구 사항에 따라 여러 옵션을 선택할 수 있습니다.

    • 로컬 시스템을 재시작한 후에도 디렉터리에 연결할 수 있도록 하려면 부팅 시 마운트 확인란을 선택합니다.
    • NFS 콘텐츠를 변경하지 않으려면 마운트 읽기 전용 상자를 선택합니다.
    • 사용자 지정 마운트 옵션 상자를 선택하고 기본 마운트 옵션을 변경하려면 마운트 옵션을 추가합니다.

      New NFS mount dialog box

  9. 추가 를 클릭합니다.

검증

  • 마운트된 디렉터리를 열고 콘텐츠에 액세스할 수 있는지 확인합니다.

4.7. 웹 콘솔에서 NFS 마운트 옵션 사용자 정의

기존 NFS 마운트를 편집하고 사용자 지정 마운트 옵션을 추가합니다.

사용자 지정 마운트 옵션은 시간 초과 제한 변경 또는 인증 구성과 같은 NFS 마운트의 연결 또는 변경 매개 변수를 해결하는 데 도움이 될 수 있습니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • cockpit-storaged 패키지가 시스템에 설치됩니다.
  • NFS 마운트가 시스템에 추가됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 테이블에서 조정할 NFS 마운트를 클릭합니다.
  4. 원격 디렉터리가 마운트된 경우 마운트 해제를 클릭합니다.

    사용자 지정 마운트 옵션 구성 중에 디렉터리를 마운트 해제해야 합니다. 그렇지 않으면 웹 콘솔에서 구성을 저장하지 않고 오류가 발생합니다.

  5. 편집을 클릭합니다.
  6. NFS 마운트 대화 상자에서 사용자 지정 마운트 옵션 을 선택합니다.
  7. 쉼표로 구분된 마운트 옵션을 입력합니다. 예를 들면 다음과 같습니다.

    • nfsvers=4: NFS 프로토콜 버전 번호
    • soft: NFS 요청 시간 초과 후 복구 유형
    • sec=krb5: NFS 서버의 파일은 Kerberos 인증을 통해 보호할 수 있습니다. NFS 클라이언트와 서버 모두 Kerberos 인증을 지원해야 합니다.

    NFS 마운트 옵션의 전체 목록은 명령줄에서 man nfs 를 입력합니다.

  8. 적용을 클릭합니다.
  9. Mount 를 클릭합니다.

검증

  • 마운트된 디렉터리를 열고 콘텐츠에 액세스할 수 있는지 확인합니다.

NFS 서버가 Kerberos를 사용하며 Red Hat Enterprise Linux IdM(Identity Management) 도메인에 등록된 경우 클라이언트가 도메인의 멤버여야만 공유를 마운트할 수 있습니다. 이를 통해 사용자와 그룹을 중앙에서 관리하고 인증, 무결성 보호 및 트래픽 암호화에 Kerberos를 사용할 수 있습니다.

사전 요구 사항

  • NFS 클라이언트는 Red Hat Enterprise Linux IdM(Identity Management) 도메인에 등록되어 있습니다.
  • 내보낸 NFS 공유는 Kerberos를 사용합니다.
  • g ss 보안 컨텍스트 설정을 제공하는 RPC.gssd 서비스. 자세한 내용은 시스템의 rpc.gssd(8) 매뉴얼 페이지를 참조하십시오.

프로세스

  1. IdM 관리자로 kerberos 티켓을 받습니다.

    # kinit admin
  2. 호스트 주체를 검색하여 /etc/krb5.keytab 파일에 저장합니다.

    # ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_client.idm.example.com -k /etc/krb5.keytab

    IdM 도메인에 호스트 를 결합하면 IdM에서 호스트 주체가 자동으로 생성되었습니다.

  3. 선택 사항: /etc/krb5.keytab 파일에서 주체를 표시합니다.

    # klist -k /etc/krb5.keytab
    Keytab name: FILE:/etc/krb5.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM
       6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM
       6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM
       6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM
  4. ipa-client-automount 유틸리티를 사용하여 IdM ID의 매핑을 구성합니다.

    # ipa-client-automount
    Searching for IPA server...
    IPA server: DNS discovery
    Location: default
    Continue to configure the system with these values? [no]: yes
    Configured /etc/idmapd.conf
    Restarting sssd, waiting for it to become available.
    Started autofs
  5. 내보낸 NFS 공유를 마운트합니다. 예를 들면 다음과 같습니다.

    # mount -o sec=krb5i server.idm.example.com:/nfs/projects/ /mnt/

    -o sec 옵션은 Kerberos 보안 방법을 지정합니다.

검증

  1. 마운트된 공유에 쓸 권한이 있는 IdM 사용자로 로그인합니다.
  2. Kerberos 티켓을 받습니다.

    $ kinit
  3. 공유에 파일을 생성합니다. 예를 들면 다음과 같습니다.

    $ touch /mnt/test.txt
  4. 디렉터리를 나열하여 파일이 생성되었는지 확인합니다.

    $ ls -l /mnt/test.txt
    -rw-r--r--. 1 admin users 0 Feb 15 11:54 /mnt/test.txt

NFS 서버에서 호스팅되는 홈 디렉터리가 있는 시스템에서 GNOME을 사용하는 경우 dconf 데이터베이스의 키 파일 백엔드를 변경해야 합니다. 그렇지 않으면 dconf 가 제대로 작동하지 않을 수 있습니다.

이 변경 사항은 dconf 가 홈 디렉터리에 저장된 사용자 설정 및 구성을 관리하는 방식을 변경하기 때문에 호스트의 모든 사용자에게 영향을 미칩니다.

프로세스

  1. /etc/dconf/profile/user 파일의 시작 부분에 다음 행을 추가합니다. 파일이 없는 경우 파일을 생성합니다.

    service-db:keyfile/user

    이 설정을 사용하면 dconf 에서 키 파일 백엔드를 폴링하여 업데이트가 수행되었는지 여부를 확인하므로 설정이 즉시 업데이트되지 않을 수 있습니다.

  2. 변경 사항은 사용자가 로그아웃 및 로그인할 때 적용됩니다.

4.10. TLS 지원을 사용하여 NFS 서버 구성

RPCSEC_GSS 프로토콜이 없으면 NFS 트래픽은 기본적으로 암호화되지 않습니다. Red Hat Enterprise Linux 10부터 TLS를 사용하여 NFS를 구성할 수 있으므로 기본적으로 NFS 트래픽을 암호화할 수 있습니다.

사전 요구 사항

  • NFSv4 서버를 구성했습니다. 자세한 내용은 NFSv4 전용 서버 구성을 참조하십시오.
  • CA(인증 기관) 인증서가 있습니다.
  • ktls-utils 패키지를 설치했습니다.

프로세스

  1. 개인 키 및 CSR(인증서 서명 요청)을 만듭니다.

    # openssl req -new -newkey rsa:4096 -noenc \
    -keyout /etc/pki/tls/private/server.example.com.key \
    -out /etc/pki/tls/private/server.example.com.csr \
    -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \
    -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1"
    중요

    CN(일반 이름) 및 DNS는 호스트 이름과 일치해야 합니다. IP는 호스트의 IP와 일치해야 합니다.

  2. /etc/pki/tls/private/server.example.com.csr 파일을 CA로 전송하고 서버 인증서를 요청합니다. 수신된 CA 인증서와 서버 인증서를 호스트에 저장합니다.
  3. CA 인증서를 시스템의 신뢰 저장소로 가져옵니다.

    # cp ca.crt /etc/pki/ca-trust/source/anchors
    # update-ca-trust
  4. 서버 인증서를 /etc/pki/tls/certs/ 디렉터리로 이동합니다.

    # mv server.example.com.crt /etc/pki/tls/certs/
  5. 개인 키 및 인증서에서 SELinux 컨텍스트가 올바른지 확인합니다.

    # restorecon -Rv /etc/pki/tls/certs/
  6. /etc/tlshd.conf 파일의 [authenticate.server] 섹션에 서버 인증서와 개인 키를 추가합니다.

    x509.certificate= /etc/pki/tls/certs/server.example.com.crt
    x509.private_key= /etc/pki/tls/private/server.example.com.key

    x509.truststore 매개변수를 설정하지 않은 상태로 둡니다.

  7. tlshd 서비스를 활성화하고 시작합니다.

    # systemctl enable --now tlshd.service

4.11. TLS 지원을 사용하여 NFS 클라이언트 구성

서버가 TLS 암호화를 사용하여 NFS를 지원하는 경우 적절하게 클라이언트를 구성하고 xprtsec=tls 매개변수를 사용하여 TLS 지원과 함께 마운트할 수 있습니다.

사전 요구 사항

프로세스

  1. CA(인증 기관) 인증서를 시스템의 신뢰 저장소로 가져옵니다.

    # cp ca.crt /etc/pki/ca-trust/source/anchors
    # update-ca-trust
  2. tlshd 서비스를 활성화하고 시작합니다.

    # systemctl enable --now tlshd.service
  3. TLS 암호화를 사용하여 NFS 공유를 마운트합니다.

    # mount -o xprtsec=tls server.example.com:/nfs/projects/ /mnt/

검증

  • 클라이언트가 TLS 지원을 사용하여 NFS 공유를 성공적으로 마운트했는지 확인합니다.

    # journalctl -u tlshd
    …
    Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful

4.12. 상호 TLS 지원을 사용하여 NFS 클라이언트 구성

서버가 TLS 암호화를 사용하여 NFS를 지원하는 경우 TLS 프로토콜을 사용하여 NFS 서버와 클라이언트를 구성하여 서로 인증할 수 있습니다.

사전 요구 사항

프로세스

  1. 개인 키 및 CSR(인증서 서명 요청)을 만듭니다.

    # openssl req -new -newkey rsa:4096 -noenc \
    -keyout /etc/pki/tls/private/client.example.com.key \
    -out /etc/pki/tls/private/client.example.com.csr \
    -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \
    -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
    중요

    CN(일반 이름) 및 DNS는 호스트 이름과 일치해야 합니다. IP는 호스트의 IP와 일치해야 합니다.

  2. /etc/pki/tls/private/client.example.com.csr 파일을 CA(인증 기관)로 전송하고 클라이언트 인증서를 요청합니다. 수신된 CA 인증서와 클라이언트 인증서를 호스트에 저장합니다.
  3. CA 인증서를 시스템의 신뢰 저장소로 가져옵니다.

    # cp ca.crt /etc/pki/ca-trust/source/anchors
    # update-ca-trust
  4. 클라이언트 인증서를 /etc/pki/tls/certs/ 디렉터리로 이동합니다.

    # mv client.example.com.crt /etc/pki/tls/certs/
  5. 개인 키 및 인증서에서 SELinux 컨텍스트가 올바른지 확인합니다.

    # restorecon -Rv /etc/pki/tls/certs/
  6. /etc/tlshd.conf 파일의 [authenticate.client] 섹션에 클라이언트 인증서 및 개인 키를 추가합니다.

    x509.certificate= /etc/pki/tls/certs/client.example.com.crt
    x509.private_key= /etc/pki/tls/private/client.example.com.key

    x509.truststore 매개변수를 설정하지 않은 상태로 둡니다.

  7. tlshd 서비스를 활성화하고 시작합니다.

    # systemctl enable --now tlshd.service
  8. TLS 암호화를 사용하여 NFS 공유를 마운트합니다.

    # mount -o xprtsec=mtls server.example.com:/nfs/projects/ /mnt/

검증

  • 클라이언트가 TLS 지원을 사용하여 NFS 공유를 성공적으로 마운트했는지 확인합니다.

    # journalctl -u tlshd
    …
    Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful

4.13. 자주 사용되는 NFS 마운트 옵션

다음은 NFS 공유를 마운트할 때 일반적으로 사용되는 옵션입니다. 마운트 명령, /etc/fstab 설정, Cryostat 자동 매퍼와 함께 이러한 옵션을 사용할 수 있습니다.

lookupcache=mode
커널이 지정된 마운트 지점에 대한 디렉터리 항목의 캐시를 관리하는 방법을 지정합니다. 모드에 유효한 인수는 모두,none 또는 positive 입니다.
nfsvers=version

사용할 NFS 프로토콜 버전을 지정합니다. 여기서 version은 3,4,4.0,4.1 또는 4.2 입니다. 이 기능은 여러 NFS 서버를 실행하는 호스트에 사용하거나 더 낮은 버전으로 마운트 재시도를 비활성화하는 데 유용합니다. 버전이 지정되지 않은 경우 클라이언트는 먼저 버전 4.2 를 시도한 다음 서버에서 지원하는 버전을 찾을 때까지 협상합니다.

옵션은 nfs vers 와 동일하며 호환성을 위해 이 릴리스에 포함되어 있습니다.

noacl
모든 ACL 처리를 끕니다. 이는 최근 ACL 기술과 호환되지 않는 이전 Red Hat Enterprise Linux 버전과 연결할 때 필요할 수 있습니다.
NOLOCK
파일 잠금을 비활성화합니다. 매우 오래된 NFS 서버에 연결할 때 이 설정이 필요할 수 있습니다.
noexec
마운트된 파일 시스템에서 바이너리 실행을 방지합니다. 이 기능은 시스템이 호환되지 않는 바이너리를 포함하는 Linux 이외의 파일 시스템을 마운트하는 경우 유용합니다.
nosuid
set-user-identifierset-group-identifier 비트를 비활성화합니다. 이렇게 하면 원격 사용자가 setuid 프로그램을 실행하여 더 높은 권한을 얻을 수 없습니다.
retrans=num
NFS 클라이언트가 추가 복구 작업을 시도하기 전에 요청을 재시도하는 횟수입니다. 재전송 옵션을 지정하지 않으면 NFS 클라이언트는 각 UDP 요청을 세 번 시도하고 각 TCP 요청을 두 번 시도합니다.
timeo=num
NFS 클라이언트가 NFS 요청을 재시도하기 전에 응답을 기다리는 초의 10초의 시간입니다. TCP를 통한 NFS의 경우 기본 timeo 값은 600(60초)입니다. NFS 클라이언트는 선형 백오프를 수행합니다. 각 재전송 후 시간 초과는 최대 600초까지 늘어납니다.
port=num
NFS 서버 포트의 숫자 값을 지정합니다. NFSv3의 경우 num이 0 (기본값) 또는 지정되지 않은 경우 마운트에서 원격 호스트에서 rpcbind 서비스를 쿼리하여 사용할 포트 번호를 쿼리합니다. NFSv4의 경우 num이 0 인 경우 mount는 rpcbind 서비스를 쿼리하지만 지정하지 않으면 표준 NFS 포트 번호가 대신 사용되며 원격 rpcbind 는 더 이상 확인되지 않습니다.
rsize=numwsize=num

이러한 옵션은 단일 NFS 읽기 또는 쓰기 작업에서 전송할 최대 바이트 수를 설정합니다.

rsizewsize 에 대한 고정된 기본값은 없습니다. 기본적으로 NFS는 서버와 클라이언트 모두 지원하는 가능한 가장 큰 값을 사용합니다. Red Hat Enterprise Linux 10에서 클라이언트 및 서버 최대값은 1,048,576바이트입니다. 자세한 내용은 Red Hat 지식베이스 솔루션에서 NFS 마운트를 사용하는 rsize 및 wsize의 기본 값과 최대값을 참조하십시오. .

sec=옵션

마운트된 내보내기의 파일에 액세스하는 데 사용할 보안 옵션입니다. options 값은 콜론으로 구분된 하나 이상의 보안 옵션으로 이루어진 목록입니다.

기본적으로 클라이언트는 클라이언트와 서버가 모두 지원하는 보안 옵션을 찾습니다. 서버가 선택한 옵션을 지원하지 않으면 마운트 작업이 실패합니다.

사용 가능한 옵션:

  • sec=sys 는 로컬 UNIX UID 및 GID를 사용합니다. 이는 AUTH_SYS 를 사용하여 NFS 작업을 인증합니다.
  • sec=krb5 는 로컬 UNIX UID 및 GID 대신 Kerberos V5를 사용하여 사용자를 인증합니다.
  • sec=krb5i 는 사용자 인증에 Kerberos V5를 사용하고 데이터 변조를 방지하기 위해 보안 체크섬을 사용하여 NFS 작업의 무결성 검사를 수행합니다.
  • sec=krb5p 는 사용자 인증, 무결성 검사에 Kerberos V5를 사용하고 NFS 트래픽을 암호화하여 트래픽 스니핑을 방지합니다. 이는 가장 안전한 설정이지만 성능 오버헤드가 가장 많습니다.

자세한 내용은 시스템의 mount(8)nfs(5) 도움말 페이지를 참조하십시오.

4.14. NFS 콘텐츠 클라이언트 측 캐싱 활성화

FS-Cache는 파일 시스템이 네트워크를 통해 검색한 데이터를 가져와서 로컬 디스크에 캐시하는 데 사용할 수 있는 클라이언트의 영구 로컬 캐시입니다. 이는 네트워크 트래픽을 최소화하는 데 도움이 됩니다.

4.14.1. NFS 캐싱의 작동 방식

다음 다이어그램은 FS-Cache 작동 방식에 대한 높은 수준의 그림입니다.

FS-Cache 개요

FS-Cache는 시스템의 사용자와 관리자에게 최대한 투명하게 설계되었습니다. FS-Cache를 사용하면 과도하게 마운트된 파일 시스템을 만들지 않고도 서버의 파일 시스템이 클라이언트의 로컬 캐시와 직접 상호 작용할 수 있습니다. NFS를 사용하면 마운트 옵션이 FS-cache가 활성화된 NFS 공유를 마운트하도록 클라이언트에 지시합니다. 마운트 지점을 사용하면 커널 모듈 cachefiles 에 대한 자동 업로드가 발생합니다. cachefilesd 데몬은 커널 모듈과 통신하여 캐시를 구현합니다.

FS-Cache는 네트워크를 통해 작동하는 파일 시스템의 기본 작업을 변경하지 않습니다. 이는 파일 시스템에 데이터를 캐시할 수 있는 영구적인 위치를 제공하기만 하면 됩니다. 예를 들어, 클라이언트는 FS-Cache가 활성화되어 있는지 여부에 관계없이 NFS 공유를 계속 마운트할 수 있습니다. 또한 캐시된 NFS는(개인적으로 또는 집합적으로) 캐시에 맞지 않는 파일을 처리할 수 있으므로 파일을 부분적으로 캐시하고 미리 읽을 필요가 없습니다. FS-Cache는 클라이언트 파일 시스템 드라이버에서 캐시에서 발생하는 모든 I/O 오류도 숨깁니다.

캐싱 서비스를 제공하기 위해 FS-Cache에는 cachefiles 서비스인 캐시 백엔드가 필요합니다. FS-Cache에는bmap(블록 매핑) 및 확장 속성을 캐시 백엔드로 지원하는 마운트된 블록 기반 파일 시스템이 필요합니다.

  • XFS
  • ext3
  • ext4

FS-Cache는 네트워크 또는 기타를 통해 파일 시스템을 임의로 캐시할 수 없습니다. FS-Cache는 FS-Cache, 데이터 스토리지 또는 검색, 메타데이터 설정 및 유효성 검사를 허용하도록 공유 파일 시스템의 드라이버를 변경해야 합니다. FS-Cache는 지속성을 지원하기 위해 캐시된 파일 시스템의 키 및 일관성 데이터를 인덱싱 해야 합니다. 즉, 파일 시스템 개체를 캐시하기 위해 인덱싱 키, 캐시 오브젝트가 여전히 유효한지 여부를 확인하기 위해 일관성 데이터가 있어야 합니다.

FS-Cache를 사용하는 것은 다양한 요인 간의 타협입니다. FS-Cache를 사용하여 NFS 트래픽을 캐시하는 경우 클라이언트가 느려질 수 있지만 네트워크 대역폭을 사용하지 않고 로컬에서 읽기 요청을 충족하여 네트워크 및 서버 로드를 크게 줄일 수 있습니다.

4.14.2. cachefilesd 서비스 설치 및 구성

Red Hat Enterprise Linux는 cachefiles 캐싱 백엔드만 제공합니다. cachefilesd 서비스는 cachefiles 를 시작하고 관리합니다. /etc/cachefilesd.conf 파일은 cachefiles 가 캐싱 서비스를 제공하는 방법을 제어합니다.

사전 요구 사항

  • /var/cache/fscache/ 디렉터리에 마운트된 파일 시스템은 ext3,ext4 또는 xfs 입니다.
  • /var/cache/fscache/ 아래에 마운트된 파일 시스템은 확장 속성을 사용합니다. 이는 RHEL 8 이상에서 파일 시스템을 생성한 경우 기본값입니다.

프로세스

  1. cachefilesd 패키지를 설치합니다.

    # dnf install cachefilesd
  2. cachefilesd 서비스를 활성화하고 시작합니다.

    # systemctl enable --now cachefilesd

검증

  1. 캐시를 사용하려면 fsc 옵션으로 NFS 공유를 마운트합니다.

    1. 일시적으로 공유를 마운트하려면 다음을 입력합니다.

      # mount -o fsc server.example.com:/nfs/projects/ /mnt/
    2. 공유를 영구적으로 마운트하려면 /etc/fstab 파일의 항목에 fsc 옵션을 추가합니다.

      <nfs_server_ip_or_hostname>:/<exported_share>     <mount point>    nfs fsc 0 0
  2. FS-cache 통계를 표시합니다.

    # cat /proc/fs/fscache/stats

    자세한 내용은 다음을 참조하십시오.

    • /usr/share/doc/cachefilesd/README 파일
    • kernel- doc 패키지에서 제공하는 /usr/share/doc/kernel-doc-<kernel_version>/Documentation/filesystems/caching/fscache.rst

4.14.3. NFS 캐시 공유

캐시는 영구적이므로 캐시의 데이터 블록은 다음 네 가지 키 시퀀스로 인덱싱됩니다.

  • 수준 1: 서버 세부 정보
  • 수준 2: 일부 마운트 옵션, 보안 유형; FSID; uniquifier 문자열
  • 레벨 3: 파일 처리
  • 수준 4: 파일의 페이지 번호

수퍼 블록 간의 일관성 관리 문제를 방지하기 위해 데이터를 캐시하는 데 필요한 모든 NFS 수퍼 블록에는 고유한 수준 2 키가 있습니다. 일반적으로 동일한 소스 볼륨과 옵션이 있는 두 NFS 마운트는 수퍼 블록을 공유하므로 해당 볼륨 내에 다른 디렉터리를 마운트하더라도 캐싱을 공유합니다.

예 4.1. NFS 캐시 공유:

다음 두 마운트는 특히 NFS 서버의 동일한 파티션에서 가져온 경우와 동일한 마운트 옵션을 가지므로 수퍼 블록을 공유할 수 있습니다.

# mount -o fsc home0:/nfs/projects /projects
# mount -o fsc home0:/nfs/home /home/

마운트 옵션이 다른 경우 수퍼 블록을 공유하지 않습니다.

# mount -o fsc,rsize=8192 home0:/nfs/projects /projects
# mount -o fsc,rsize=65536 home0:/nfs/home /home/
참고

사용자는 서로 다른 통신 또는 프로토콜 매개 변수를 갖는 수퍼 블록 간에 캐시를 공유할 수 없습니다. 예를 들어 NFSv4.0과 NFSv3 간에 캐시를 공유하거나 NFSv4.1과 NFSv4.2 간에 캐시를 공유할 수 없습니다. 또한 읽기 크기(rsize)와 같은 매개 변수를 설정하면 다른 수퍼 블록을 강제 수행하므로 캐시 공유를 방지합니다.

4.14.4. NFS 캐시 제한 사항

NFS에는 몇 가지 캐시 제한 사항이 있습니다.

  • 직접 I/O를 위해 공유 파일 시스템에서 파일을 열면 캐시가 자동으로 무시됩니다. 이 유형의 액세스는 서버에 직접 액세스해야 하기 때문입니다.
  • 직접 I/O에 대한 공유 파일 시스템에서 파일을 열거나 파일의 캐시된 복사본을 플러시합니다. FS-Cache는 더 이상 직접 I/O 또는 쓰기용으로 열 때까지 파일을 다시 캐시하지 않습니다.
  • 또한 이 FS-Cache 릴리스는 일반 NFS 파일만 캐시합니다. FS-Cache는 디렉토리, 심볼릭 링크, 장치 파일, FIFO 및 소켓을 캐시하지 않습니다.

4.14.5. 캐시 조각 작동 방식

cachefilesd 서비스는 공유 파일 시스템의 원격 데이터를 캐싱하여 로컬 디스크의 여유 공간으로 작동합니다. 이로 인해 사용 가능한 모든 여유 공간을 사용할 수 있으므로 디스크에 루트 파티션도 포함된 경우 문제가 발생할 수 있습니다. 이를 제어하기 위해 cachefilesd 는 캐시에서 이전 오브젝트(예: less-recently accessed objects)를 삭제하여 특정 양의 사용 가능한 공간을 유지하려고 합니다. 이 동작을 캐시 조각이라고 합니다.

캐시 조각은 블록의 백분율과 기본 파일 시스템에서 사용할 수 있는 파일의 백분율을 기반으로 수행됩니다. /etc/cachefilesd.conf 에는 6개의 제한을 제어하는 설정이 있습니다.

Brun N% (블록 백분율), frun N% (파일 백분율)
사용 가능한 공간의 양과 캐시의 사용 가능한 파일 수가 이 두 제한 이상으로 증가하면 컬링이 꺼집니다.
bcull N% (블록 백분율), fcull N% (파일 백분율)
사용 가능한 공간의 양 또는 캐시의 파일 수가 이러한 제한 중 하나에 속하는 경우 조각이 시작됩니다.
bstop N% (블록 백분율), fstop N% (파일 백분율)
사용 가능한 공간의 양 또는 캐시에서 사용 가능한 파일 수가 이러한 제한 중 하나에 속하는 경우 이러한 제한보다 높은 항목을 다시 발생시킬 때까지 디스크 공간 또는 파일을 추가로 할당할 수 없습니다.

각 설정의 기본값은 다음과 같습니다.

  • Brun/frun: 10%
  • bcull/fcull: 7%
  • bstop/fstop: 3%

이러한 설정을 구성할 때 다음 사항이 충족되어야 합니다.

  • 0 Cryostat bstop < bcull < brun < 100
  • 0 fSTOP < fcull < frun < 100

이는 사용 가능한 공간과 사용 가능한 파일의 백분율이며 df 프로그램에서 표시하는 백분율을 100에서 뺀 것으로 표시되지 않습니다.

중요

culling은 bxxx 와 fxxx 쌍 모두에 동시에 따라 달라지며 사용자는 개별적으로 처리 할 수 ​​없습니다.

5장. SMB 공유 마운트

SMB(Server Message Block) 프로토콜은 파일 공유 및 공유 프린터와 같은 서버의 리소스에 액세스하는 데 사용되는 애플리케이션 계층 네트워크 프로토콜을 구현합니다.

참고

SMB의 컨텍스트에서는 SMB의 방언인 CIFS(Common Internet File System) 프로토콜에 대한 언급을 찾을 수 있습니다. SMB 및 CIFS 프로토콜이 지원되며 SMB 및 CIFS 공유와 관련된 커널 모듈과 유틸리티는 모두 cifs 이름을 사용합니다.

cifs-utils 패키지는 다음에 대한 유틸리티를 제공합니다.

  • SMB 및 CIFS 공유 마운트
  • 커널 인증 키에서 NTLM(NT LAN Manager) 인증 정보 관리
  • SMB 및 CIFS 공유의 보안 설명자에 ACL(액세스 제어 목록) 설정 및 표시
  • 마운트된 SMB 공유의 세션 ID, 암호화/해제 키, SMB별 파일 및 할당량 정보 표시

5.1. 지원되는 SMB 프로토콜 버전

cifs.ko 커널 모듈은 다음 SMB 프로토콜 버전을 지원합니다.

  • SMB 1

    주의

    SMB1 프로토콜은 알려진 보안 문제로 인해 더 이상 사용되지 않으며 사설 네트워크에서만 안전하게 사용할 수 있습니다. SMB1이 여전히 지원되는 옵션으로 제공되는 주요 이유는 현재 UNIX 확장을 지원하는 유일한 SMB 프로토콜 버전이기 때문입니다. SMB에서 UNIX 확장을 사용할 필요가 없는 경우 SMB2 이상을 사용하는 것이 좋습니다.

  • SMB 2.0
  • SMB 2.1
  • SMB 3.0
  • SMB 3.1.1
참고

프로토콜 버전에 따라 일부 SMB 기능이 구현되는 것은 아닙니다.

5.2. UNIX 확장 지원

Samba는 SMB 프로토콜에서 CAP_UNIX 기능 비트를 사용하여 UNIX 확장 기능을 제공합니다. 이러한 확장은 cifs.ko 커널 모듈에서도 지원됩니다. 그러나 Samba와 커널 모듈은 모두 SMB 1 프로토콜에서만 UNIX 확장을 지원합니다.

사전 요구 사항

  • cifs-utils 패키지가 설치되어 있습니다.

프로세스

  1. /etc/samba/smb.conf 파일의 [global] 섹션에서 server min protocol 매개 변수를 NT1 로 설정합니다.
  2. mount 명령에 -o vers=1.0 옵션을 제공하여 SMB 1 프로토콜을 사용하여 공유를 마운트합니다. 예를 들면 다음과 같습니다.

    # mount -t cifs -o vers=1.0,username=<user_name> //<server_name>/<share_name> /mnt/

    기본적으로 커널 모듈은 SMB 2 또는 서버에서 지원하는 최신 프로토콜 버전을 사용합니다. mount 명령에 -o vers=1.0 옵션을 전달하면 커널 모듈에서 UNIX 확장을 사용하는 데 필요한 SMB 1 프로토콜을 사용해야 합니다.

검증

  • 마운트된 공유의 옵션을 표시합니다.

    # mount
    ...
    //<server_name>/<share_name> on /mnt type cifs (...,unix,...)

    마운트 옵션 목록에 unix 항목이 표시되면 UNIX 확장이 활성화됩니다.

5.3. 수동으로 SMB 공유 마운트

SMB 공유만 일시적으로 마운트해야 하는 경우 mount 유틸리티를 사용하여 수동으로 마운트할 수 있습니다.

참고

시스템을 재부팅할 때 수동으로 마운트된 공유는 자동으로 마운트되지 않습니다. 시스템이 부팅될 때 Red Hat Enterprise Linux가 자동으로 공유를 마운트하도록 구성하려면 시스템이 부팅 될 때 SMB 공유 마운트를 자동으로 참조하십시오.

사전 요구 사항

  • cifs-utils 패키지가 설치되어 있습니다.

프로세스

  • -t cifs 매개변수와 함께 마운트 유틸리티를 사용하여 SMB 공유를 마운트합니다.

    # mount -t cifs -o username=<user_name> //<server_name>/<share_name> /mnt/
    Password for <user_name>@//<server_name>/<share_name>:  password

    -o 매개변수에서는 공유를 마운트하는 데 사용되는 옵션을 지정할 수 있습니다. 자세한 내용은 mount.cifs(8) 도움말 페이지의 OPTIONS 섹션 및 자주 사용되는 SMB 마운트 옵션을 참조하십시오.

예 5.1. 암호화된 SMB 3.0 연결을 사용하여 공유 마운트

암호화된 SMB 3.0 연결을 통해 /mnt/ 디렉터리에 \\server\example\ 공유를 DOMAIN\Administrator 사용자로 마운트하려면 다음을 수행합니다.

# mount -t cifs -o username=DOMAIN\Administrator,seal,vers=3.0 //server/example /mnt/
Password for DOMAIN\Administrator@//server_name/share_name:  password

검증

  • 마운트된 공유의 콘텐츠를 나열합니다.

    # ls -l /mnt/
    total 4
    drwxr-xr-x.  2 root root 8748 Dec  4 16:27 test.txt
    drwxr-xr-x. 17 root root 4096 Dec  4 07:43 Demo-Directory

5.4. 시스템이 부팅될 때 자동으로 SMB 공유 마운트

서버에 마운트된 SMB 공유에 대한 액세스가 영구적으로 필요한 경우 부팅 시 공유를 자동으로 마운트합니다.

사전 요구 사항

  • cifs-utils 패키지가 설치되어 있습니다.

프로세스

  1. 공유 항목을 /etc/fstab 파일에 추가합니다. 예를 들면 다음과 같습니다.

    //<server_name>/<share_name>  /mnt  cifs  credentials=/root/smb.cred  0 0
    중요

    시스템이 자동으로 공유를 마운트하도록 활성화하려면 사용자 이름, 암호 및 도메인 이름을 인증 정보 파일에 저장해야 합니다. 자세한 내용은 smb 공유에 인증할 자격 증명 파일 생성 을 참조하십시오.

    /etc/fstab 행의 네 번째 필드에서 자격 증명 파일의 경로와 같은 마운트 옵션을 지정합니다. 자세한 내용은 mount.cifs(8) 도움말 페이지의 OPTIONS 섹션 및 자주 사용되는 SMB 마운트 옵션을 참조하십시오.

검증

  • 마운트 지점을 지정하여 공유를 마운트합니다.

    # mount /mnt/

5.5. SMB 공유에 인증할 자격 증명 파일 만들기

부팅 시 공유를 자동으로 마운트하는 경우와 같은 특정 상황에서는 사용자 이름과 암호를 입력하지 않고 공유를 마운트해야 합니다. 이를 구현하려면 자격 증명 파일을 생성합니다.

사전 요구 사항

  • cifs-utils 패키지가 설치되어 있습니다.

프로세스

  1. /root/smb.cred 와 같은 파일을 생성하고 해당 파일에 사용자 이름, 암호 및 도메인 이름을 지정합니다.

    username=user_name
    password=password
    domain=domain_name
  2. 소유자가 파일에 액세스할 수 있도록 권한을 설정합니다.

    # chown user_name /root/smb.cred
    # chmod 600 /root/smb.cred

이제 credentials=file_name 마운트 옵션을 마운트 유틸리티에 전달하거나 /etc/fstab 파일에서 사용자 이름과 암호를 입력하라는 메시지가 표시되지 않고 공유를 마운트할 수 있습니다.

5.6. 다중 사용자 SMB 마운트 수행

공유를 마운트하기 위해 제공한 인증 정보에 따라 기본적으로 마운트 지점에 대한 액세스 권한이 결정됩니다. 예를 들어 공유를 마운트할 때 DOMAIN\example 사용자를 사용하는 경우 작업을 수행하는 로컬 사용자에 관계없이 공유의 모든 작업이 이 사용자로 실행됩니다.

그러나 특정 상황에서는 시스템이 부팅될 때 관리자가 공유를 자동으로 마운트하려고 하지만 사용자는 자체 자격 증명을 사용하여 공유 콘텐츠에 대한 작업을 수행해야 합니다. multiuser 마운트 옵션을 사용하면 이 시나리오를 구성할 수 있습니다.

중요

다중 사용자 마운트 옵션을 사용하려면 인증 정보 파일을 사용하여 krb5 또는 ntlmssp 옵션과 같이 비대화형 방식으로 인증 정보를 제공하는 기능을 지원하는 보안 유형으로 sec 마운트 옵션을 추가로 설정해야 합니다. 자세한 내용은 사용자로 공유 액세스를 참조하십시오.

root 사용자는 multiuser 옵션과 공유 콘텐츠에 대한 최소 액세스 권한이 있는 계정을 사용하여 공유를 마운트합니다. 그런 다음 일반 사용자는 cifscreds 유틸리티를 사용하여 현재 세션의 커널 인증 키에 사용자 이름과 암호를 제공할 수 있습니다. 사용자가 마운트된 공유의 콘텐츠에 액세스하면 커널은 처음에 공유를 마운트하는 데 사용되는 커널 인증 키 대신 커널 인증 키의 자격 증명을 사용합니다.

이 기능을 사용하는 것은 다음 단계로 구성됩니다.

5.6.1. 사전 요구 사항

  • cifs-utils 패키지가 설치되어 있습니다.

5.6.2. multiuser 옵션을 사용하여 공유 마운트

사용자가 고유한 자격 증명을 사용하여 공유에 액세스하려면 제한된 권한이 있는 계정을 사용하여 공유를 root 사용자로 마운트합니다.

시스템이 부팅될 때 multiuser 옵션을 사용하여 공유를 자동으로 마운트하려면 아래 절차를 따르십시오.

프로세스

  1. /etc/fstab 파일에 공유 항목을 만듭니다. 예를 들면 다음과 같습니다.

    //server_name/share_name  /mnt  cifs  multiuser,sec=ntlmssp,credentials=/root/smb.cred  0 0
  2. 공유를 마운트합니다.

    # mount /mnt/

    시스템이 부팅될 때 공유를 자동으로 마운트하지 않으려면 -o multiuser,sec=security_typemount 명령에 전달하여 수동으로 마운트합니다. SMB 공유를 수동으로 마운트하는 방법에 대한 자세한 내용은 SMB 공유 수동 마운트를 참조하십시오.

5.6.3. multiuser 옵션을 사용하여 SMB 공유가 마운트되었는지 확인

multiuser 옵션을 사용하여 공유가 마운트되었는지 확인하려면 마운트 옵션을 표시합니다.

프로세스

  • 마운트 옵션을 표시합니다.

    # mount
    ...
    //server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...)

    마운트 옵션 목록에 다중 사용자 항목이 표시되면 기능이 활성화됩니다.

5.6.4. 사용자로 공유에 액세스

SMB 공유가 multiuser 옵션을 사용하여 마운트된 경우 사용자는 서버에 대한 자격 증명을 커널 인증 키에 제공할 수 있습니다.

# cifscreds add -u SMB_user_name server_name
Password: password

사용자가 마운트된 SMB 공유가 포함된 디렉터리에서 작업을 수행하는 경우 서버는 공유를 마운트할 때 처음 사용한 대신 이 사용자에 대한 파일 시스템 권한을 적용합니다.

참고

여러 사용자가 동시에 마운트된 공유에서 자체 자격 증명을 사용하여 작업을 수행할 수 있습니다.

5.7. 자주 사용되는 SMB 마운트 옵션

SMB 공유를 마운트할 때 마운트 옵션은 다음을 결정합니다.

  • 서버에 대한 연결을 설정하는 방법. 예를 들어 서버에 연결할 때 사용되는 SMB 프로토콜 버전은 무엇입니까.
  • 공유를 로컬 파일 시스템에 마운트하는 방법. 예를 들어 시스템이 원격 파일 및 디렉터리 권한을 재정의하여 여러 로컬 사용자가 서버의 콘텐츠에 액세스할 수 있도록 하는 경우입니다.

/etc/fstab 파일의 네 번째 필드 또는 mount 명령의 -o 매개 변수에 여러 옵션을 설정하려면 쉼표로 구분합니다. 예를 들어 multiuser 옵션을 사용하여 공유 마운트를 참조하십시오.

다음 목록은 자주 사용되는 마운트 옵션을 제공합니다.

Expand
옵션설명

credentials=file_name

자격 증명 파일의 경로를 설정합니다. smb 공유에 인증할 자격 증명 파일 생성 을 참조하십시오.

dir_mode=mode

서버가 CIFS UNIX 확장을 지원하지 않는 경우 디렉터리 모드를 설정합니다.

file_mode=mode

서버가 CIFS UNIX 확장을 지원하지 않는 경우 파일 모드를 설정합니다.

password=password

SMB 서버를 인증하는 데 사용되는 암호를 설정합니다. 또는 credentials 옵션을 사용하여 자격 증명 파일을 지정합니다.

seal

SMB 3.0 또는 이후 프로토콜 버전을 사용하여 연결에 대한 암호화 지원을 활성화합니다. 따라서 3.0 이상으로 설정된 vers 마운트 옵션과 함께 seal 을 사용하십시오. SMB 공유 수동 마운트의 예를 참조하십시오.

sec=security_mode

NTLMv2 암호 해시 및 활성화된 패킷 서명을 활성화하려면 ntlmsspi 와 같은 보안 모드를 설정합니다. 지원되는 값 목록은 시스템의 mount.cifs(8) 도움말 페이지에 있는 옵션 설명을 참조하십시오.

서버가 ntlmv2 보안 모드를 지원하지 않는 경우 기본값인 sec=ntlmssp 를 사용합니다.

보안상의 이유로 비보안 ntlm 보안 모드를 사용하지 마십시오.

username=user_name

SMB 서버를 인증하는 데 사용되는 사용자 이름을 설정합니다. 또는 credentials 옵션을 사용하여 자격 증명 파일을 지정합니다.

vers=SMB_protocol_version

서버와의 통신에 사용되는 SMB 프로토콜 버전을 설정합니다.

전체 목록은 시스템의 mount.cifs(8) 도움말 페이지의 OPTIONS 섹션을 참조하십시오.

6장. 영구 이름 지정 속성 개요

시스템 관리자는 영구 이름 지정 속성을 사용하여 스토리지 볼륨을 참조하여 여러 시스템 부팅 시 안정적인 스토리지 설정을 빌드해야 합니다.

6.1. 비영구 이름 지정 속성의 단점

Red Hat Enterprise Linux는 스토리지 장치를 식별하는 다양한 방법을 제공합니다. 특히 드라이브를 설치하거나 다시 포맷할 때 잘못된 장치에 실수로 액세스하는 것을 방지하기 위해 올바른 옵션을 사용하여 각 장치를 식별하는 것이 중요합니다.

일반적으로 스토리지 장치를 참조하기 위해 /dev/sd(major number)(마이너 번호) 형식의 비영구 이름이 사용됩니다. 메이저 및 마이너 번호 범위 및 관련 sd 이름은 감지될 때 각 장치에 할당됩니다. 즉, 장치 탐지 순서가 변경되면 메이저 및 마이너 번호 범위와 연결된 sd 이름 간의 연관이 변경될 수 있습니다.

이러한 순서 변경은 다음과 같은 상황에서 발생할 수 있습니다.

  • 시스템 부팅 프로세스의 병렬화는 시스템 부팅마다 다른 순서로 스토리지 장치를 감지합니다.
  • 디스크가 SCSI 컨트롤러의 전원을 켜거나 응답하지 않습니다. 이렇게 하면 일반 장치 프로브에서 탐지되지 않습니다. 시스템에 액세스할 수 없으며 후속 장치에는 연결된 sd 이름이 아래로 전환되는 등 메이저 및 마이너 번호 범위가 있습니다. 예를 들어 일반적으로 sdb 라고 하는 디스크가 탐지되지 않으면 일반적으로 sdc 라고 하는 디스크가 sdb 로 표시됩니다.
  • SCSI 컨트롤러(호스트 버스 어댑터 또는 HBA)가 초기화되지 않아 해당 HBA에 연결된 모든 디스크가 감지되지 않습니다. 이후에 프로브된 HBA에 연결된 모든 디스크에는 서로 다른 주요 및 마이너 번호 범위와 연결된 sd 이름이 할당됩니다.
  • 시스템에 다른 유형의 HBA가 있는 경우 드라이버 초기화 순서가 변경됩니다. 이로 인해 해당 HBA에 연결된 디스크가 다른 순서로 감지됩니다. 이는 HBA가 시스템의 다른 PCI 슬롯으로 이동되는 경우에도 발생할 수 있습니다.
  • 예를 들어 스토리지 어레이 또는 중간 스위치로 인해 파이버 채널, iSCSI 또는 FCoE 어댑터가 있는 시스템에 연결된 디스크에는 스토리지 장치를 프로브할 때 액세스할 수 없습니다. 이 문제는 정전 후 시스템이 재부팅되면 시스템을 부팅하는 데 걸리는 것보다 스토리지 어레이가 온라인 상태가 되는 데 걸리는 시간이 걸리는 경우 시스템이 재부팅될 때 발생할 수 있습니다. 일부 파이버 채널 드라이버는 WWPN 매핑에 영구 SCSI 대상 ID를 지정하는 메커니즘을 지원하지만 주요 및 마이너 번호 및 관련 sd 이름은 예약되는 것은 아닙니다. 이는 일관된 SCSI 대상 ID 번호만 제공합니다.

이러한 이유로 /etc/fstab 파일과 같은 장치를 참조할 때 메이저 및 마이너 번호 범위 또는 관련 sd 이름을 사용하는 것이 바람직하지 않습니다. 잘못된 장치가 마운트될 가능성이 있으며 데이터 손상이 발생할 수 있습니다.

그러나 장치에서 오류를 보고하는 경우와 같이 다른 메커니즘이 사용되는 경우에도 sd 이름을 계속 참조할 필요가 있습니다. 이는 Linux 커널에서 장치와 관련된 커널 메시지에서 sd 이름(및 SCSI 호스트/채널/대상/LUN 튜플)을 사용하기 때문입니다.

6.2. 파일 시스템 및 장치 식별자

파일 시스템 식별자는 파일 시스템 자체에 연결되지만 장치 식별자는 물리적 블록 장치에 연결됩니다. 적절한 스토리지 관리를 위해서는 차이점을 이해하는 것이 중요합니다.

파일 시스템 식별자

파일 시스템 식별자는 블록 장치에서 생성된 특정 파일 시스템에 연결됩니다. 식별자는 파일 시스템의 일부로도 저장됩니다. 파일 시스템을 다른 장치에 복사하는 경우에도 동일한 파일 시스템 식별자를 전달합니다. 그러나 mkfs 유틸리티로 포맷하여 장치를 다시 작성하는 경우 장치는 특성을 손실됩니다.

파일 시스템 식별자는 다음과 같습니다.

  • 고유 식별자(UUID)
  • 레이블

장치 식별자

장치 식별자는 블록 장치(예: 디스크 또는 파티션)에 연결됩니다. mkfs 유틸리티로 포맷하여 장치를 다시 작성하는 경우 장치는 파일 시스템에 저장되지 않기 때문에 속성을 유지합니다.

장치 식별자는 다음과 같습니다.

  • WWID(World Wide Identifier)
  • 파티션 UUID
  • 일련번호

권장 사항

  • 논리 볼륨과 같은 일부 파일 시스템은 여러 장치에 걸쳐 있습니다. Red Hat은 장치 식별자가 아닌 파일 시스템 식별자를 사용하여 이러한 파일 시스템에 액세스하는 것이 좋습니다.

6.3. /dev/disk/의 udev 메커니즘에서 관리하는 장치 이름

udev 메커니즘은 Linux의 모든 유형의 장치에 사용되며 스토리지 장치에만 국한되지는 않습니다. /dev/disk/ 디렉터리에 다양한 종류의 영구 이름 지정 속성을 제공합니다. 스토리지 장치의 경우 Red Hat Enterprise Linux에는 /dev/disk/ 디렉터리에 심볼릭 링크를 생성하는 udev 규칙이 포함되어 있습니다. 이를 통해 다음을 통해 스토리지 장치를 참조할 수 있습니다.

  • 내용
  • 고유 식별자
  • 일련 번호입니다.

udev 이름 지정 속성은 영구적이지만 시스템 재부팅 시 자체적으로 변경되지 않으므로 일부 속성도 구성할 수 있습니다.

6.3.1. 파일 시스템 식별자

/dev/disk/by-uuid/의 UUID 속성

이 디렉터리의 항목은 장치에 저장된 콘텐츠(즉, 데이터)의 고유 식별자 (UUID)로 스토리지 장치를 참조하는 심볼릭 이름을 제공합니다. 예를 들면 다음과 같습니다.

/dev/disk/by-uuid/3e6be9de-8139-11d1-9106-a43f08d823a6

UUID를 사용하여 다음 구문을 사용하여 /etc/fstab 파일의 장치를 참조할 수 있습니다.

UUID=3e6be9de-8139-11d1-9106-a43f08d823a6

파일 시스템을 생성할 때 UUID 속성을 구성할 수 있으며 나중에 변경할 수도 있습니다.

/dev/disk/by-label/의 Label 속성

이 디렉터리의 항목은 장치에 저장된 콘텐츠(즉, 데이터)의 레이블 로 스토리지 장치를 참조하는 심볼릭 이름을 제공합니다. 예를 들면 다음과 같습니다.

/dev/disk/by-label/Boot

레이블을 사용하여 다음 구문을 사용하여 /etc/fstab 파일의 장치를 참조할 수 있습니다.

LABEL=Boot

파일 시스템을 생성할 때 Label 속성을 구성할 수 있으며 나중에 나중에 변경할 수도 있습니다.

6.3.2. 장치 식별자

/dev/disk/by-id/의 WWID 속성

WWID(World Wide Identifier)는 SCSI 표준에 모든 SCSI 장치에서 필요한 영구적인 시스템 독립적인 식별자 입니다. WWID 식별자는 모든 스토리지 장치에 대해 고유하게 보장되며 장치에 액세스하는 데 사용되는 경로와 독립적입니다. 식별자는 장치의 속성이지만 장치의 콘텐츠(즉, 데이터)에 저장되지 않습니다.

이 식별자는 장치 ID를 추출하기 위해 SCSI I case를 발행하여 (페이지 0x83페이지) 또는 단위 일련 번호(페이지 0x80)를 검색할 수 있습니다.

Red Hat Enterprise Linux는 WWID 기반 장치 이름에서 해당 시스템의 현재 /dev/sd 이름으로 적절한 매핑을 자동으로 유지 관리합니다. 애플리케이션은 /dev/disk/by-id/ 이름을 사용하여 장치의 경로가 변경되어 다른 시스템의 장치에 액세스하는 경우에도 디스크의 데이터를 참조할 수 있습니다.

참고

NVMe 장치를 사용하는 경우 장치의 일련 번호가 선행 공백을 가진 경우 일부 공급 업체의 이름 지정 변경을 디스크에 실행할 수 있습니다.

WWID 매핑의 예:

Expand
WWID 심볼릭 링크비영구 장치참고

/dev/disk/by-id/scsi-3600508b400105e210000900000490000

/dev/sda

페이지 0x83 식별자가 있는 장치

/dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6

/dev/sdb

페이지 0x80 식별자가 있는 장치

/dev/disk/by-id/ata-SAMSUNG_MZNLN256HMHQ-000L7_S2WDNX0J336519-part3

/dev/sdc3

디스크 파티션

시스템에서 제공하는 이러한 영구 이름 외에도 udev 규칙을 사용하여 스토리지의 WWID에 매핑된 고유한 영구 이름을 구현할 수도 있습니다.

/dev/disk/by-partuuid의 Partition UUID 속성

Partition UUID( CryostatUUID) 속성은 GPT 파티션 테이블에 정의된 대로 파티션을 식별합니다.

파티션 UUID 매핑의 예:

Expand
CryostatUUID 심볼릭 링크비영구 장치

/dev/disk/by-partuuid/4cd1448a-01

/dev/sda1

/dev/disk/by-partuuid/4cd1448a-02

/dev/sda2

/dev/disk/by-partuuid/4cd1448a-03

/dev/sda3

/dev/disk/by-path/의 Path 속성

이 속성은 장치에 액세스하는 데 사용되는 하드웨어 경로에서 스토리지 장치를 참조하는 심볼릭 이름을 제공합니다.

하드웨어 경로의 일부(예: PCI ID, 대상 포트 또는 LUN 번호)의 일부가 변경되면 Path 속성이 실패합니다. 따라서 Path 속성은 신뢰할 수 없습니다. 그러나 Path 속성은 다음 시나리오 중 하나에서 유용할 수 있습니다.

  • 나중에 교체할 디스크를 식별해야 합니다.
  • 특정 위치의 디스크에 스토리지 서비스를 설치할 계획입니다.

6.4. DM Multipath를 사용한 World Wide Identifier

WWID(World Wide Identifier)와 비영구 장치 이름 간에 매핑하도록 DM(Device Mapper) Multipath를 구성할 수 있습니다.

시스템에서 장치로 여러 경로가 있는 경우 DM Multipath는 WWID를 사용하여 이를 탐지합니다. 그런 다음 DM Multipath는 /dev/mapper/wwid 디렉터리에 단일 "pseudo-device"를 제공합니다(예: /dev/mapper/3600508b400105df70000e00000ac0000 ).

multipath -l 명령은 비영구 식별자에 대한 매핑을 표시합니다.

  • 호스트:채널:대상:LUN
  • /dev/sd 이름
  • 메이저:마이너 번호

예 6.1. 다중 경로 구성의 WWID 매핑

multipath -l 명령의 출력 예:

3600508b400105df70000e00000ac0000 dm-2 vendor,product
[size=20G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
 \_ 5:0:1:1 sdc 8:32  [active][undef]
 \_ 6:0:1:1 sdg 8:96  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 5:0:0:1 sdb 8:16  [active][undef]
 \_ 6:0:0:1 sdf 8:80  [active][undef]

DM Multipath는 각 WWID 기반 장치 이름의 적절한 매핑을 시스템의 해당 /dev/sd 이름에 자동으로 유지합니다. 이러한 이름은 경로 변경 시 지속되며 다른 시스템에서 장치에 액세스할 때 일관되게 유지됩니다.

DM Multipath의 user_friendly_names 기능을 사용하면 WWID가 /dev/mapper/mpathN 형식의 이름에 매핑됩니다. 기본적으로 이 매핑은 /etc/multipath/bindings 파일에서 유지됩니다. 이러한 mpath 이름은 해당 파일이 유지되는 한 지속됩니다.

중요

user_friendly_names 를 사용하는 경우 클러스터에서 일관된 이름을 얻으려면 추가 단계가 필요합니다.

6.5. udev 장치 이름 지정 규칙의 제한

다음은 udev 이름 지정 규칙의 몇 가지 제한 사항입니다.

  • udev 메커니즘은 udev 규칙이 udev 이벤트에 대해 처리되는 경우 스토리지 장치를 쿼리하는 기능에 의존할 수 있기 때문에 쿼리가 수행되는 시점에 장치에 액세스하지 못할 수 있습니다. 장치가 서버 섀시에 없는 경우 파이버 채널, iSCSI 또는 FCoE 스토리지 장치에서 발생할 가능성이 더 높습니다.
  • 커널은 언제든지 udev 이벤트를 보내 규칙이 처리되고 장치에 액세스할 수 없는 경우 /dev/disk/by-*/ 링크가 제거될 수 있습니다.
  • udev 이벤트가 생성되는 시기와 다수의 장치가 감지되는 경우와 같이 처리되는 시점과 사용자 공간 udevd 서비스는 각각에 대한 규칙을 처리하는 데 약간의 시간이 걸릴 수 있습니다. 이로 인해 커널이 장치를 감지할 때와 /dev/disk/by-*/ 이름을 사용할 수 있는 시점 사이에 지연이 발생할 수 있습니다.
  • 규칙에 의해 호출된 blkid 와 같은 외부 프로그램은 짧은 기간 동안 장치를 열어 다른 용도로는 장치를 액세스할 수 없게 만들 수 있습니다.
  • /dev/disk/의 udev 메커니즘에서 관리하는 장치 이름은 주요 릴리스 간에 변경될 수 있으므로 링크를 업데이트해야 합니다.

6.6. 영구 이름 지정 속성 나열

비영구 스토리지 장치의 영구 이름 지정 속성을 확인할 수 있습니다.

프로세스

  • UUID 및 라벨 속성을 나열하려면 lsblk 유틸리티를 사용합니다.

    $ lsblk --fs storage-device

    예를 들어 파일 시스템의 UUID 레이블을 확인합니다.

    $ lsblk --fs /dev/sda1
    
    NAME FSTYPE LABEL UUID                                 MOUNTPOINT
    sda1 xfs    Boot  afa5d5e3-9050-48c3-acc1-bb30095f3dc4 /boot
  • CryostatUUID 속성을 나열하려면 --output + CryostatUUID 옵션과 함께 lsblk 유틸리티를 사용합니다.

    $ lsblk --output +PARTUUID

    예를 들어 파티션의 CryostatUUID 특성을 확인합니다.

    $ lsblk --output +PARTUUID /dev/sda1
    
    NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT PARTUUID
    sda1   8:1    0  512M  0 part /boot      4cd1448a-01
  • WWID 특성을 나열하려면 /dev/disk/by-id/ 디렉터리에 있는 심볼릭 링크의 대상을 검사합니다.

    예를 들어 시스템의 모든 스토리지 장치의 WWID를 확인합니다.

    $ file /dev/disk/by-id/*
    
    /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001
    symbolic link to ../../sda
    /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part1
    symbolic link to ../../sda1
    /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part2
    symbolic link to ../../sda2
    /dev/disk/by-id/dm-name-rhel_rhel8-root
    symbolic link to ../../dm-0
    /dev/disk/by-id/dm-name-rhel_rhel8-swap
    symbolic link to ../../dm-1
    /dev/disk/by-id/dm-uuid-LVM-QIWtEHtXGobe5bewlIUDivKOz5ofkgFhP0RMFsNyySVihqEl2cWWbR7MjXJolD6g
    symbolic link to ../../dm-1
    /dev/disk/by-id/dm-uuid-LVM-QIWtEHtXGobe5bewlIUDivKOz5ofkgFhXqH2M45hD2H9nAf2qfWSrlRLhzfMyOKd
    symbolic link to ../../dm-0
    /dev/disk/by-id/lvm-pv-uuid-atlr2Y-vuMo-ueoH-CpMG-4JuH-AhEF-wu4QQm
    symbolic link to ../../sda2

6.7. 영구 이름 지정 속성 수정

파일 시스템의 UUID 또는 레이블 영구 이름 지정 속성을 변경할 수 있습니다.

참고

udev 속성 변경은 백그라운드에서 수행되며 시간이 오래 걸릴 수 있습니다. udevadm settle 명령은 변경 사항이 완전히 등록될 때까지 대기하여 다음 명령이 새 속성을 올바르게 사용할 수 있도록 합니다.

다음 명령에서는 다음을 수행합니다.

  • new-uuid 를 설정할 UUID(예: 1cdfbc07-1c90-4984-b5ec-f61943f5ea50 )로 바꿉니다. uuidgen 명령을 사용하여 UUID를 생성할 수 있습니다.
  • new-label 을 레이블로 바꿉니다(예: backup_data ).

사전 요구 사항

  • XFS 파일 시스템의 속성을 수정하는 경우 먼저 마운트 해제합니다.

프로세스

  • XFS 파일 시스템의 UUID 또는 라벨 속성을 변경하려면 xfs_admin 유틸리티를 사용합니다.

    # xfs_admin -U new-uuid -L new-label storage-device
    # udevadm settle
  • ext4,ext3 또는 ext2 파일 시스템의 UUID 또는 레이블 속성을 변경하려면 tune2fs 유틸리티를 사용합니다.

    # tune2fs -U new-uuid -L new-label storage-device
    # udevadm settle
  • 스왑 볼륨의 UUID 또는 라벨 속성을 변경하려면 swaplabel 유틸리티를 사용합니다.

    # swaplabel --uuid new-uuid --label new-label swap-device
    # udevadm settle

7장. parted가 있는 파티션 작업

parted 는 디스크 파티션을 조작하는 프로그램입니다. MS-DOS 및 GPT를 포함한 여러 파티션 테이블 형식을 지원합니다. 새 운영 체제의 공간을 생성하고, 디스크 사용량을 재구성하고, 데이터를 새 하드 디스크에 복사하는 데 유용합니다.

7.1. parted로 파티션 테이블 보기

블록 장치의 파티션 테이블을 표시하여 파티션 레이아웃 및 개별 파티션에 대한 세부 정보를 확인합니다. parted 유틸리티를 사용하여 블록 장치의 파티션 테이블을 볼 수 있습니다. 자세한 내용은 시스템의 parted(8) 매뉴얼 페이지를 참조하십시오.

프로세스

  1. parted 유틸리티를 시작합니다. 예를 들어 다음 출력에는 /dev/sda 장치가 나열됩니다.

    # parted /dev/sda
  2. 파티션 테이블을 확인합니다.

    (parted) print
    
    Model: ATA SAMSUNG MZNLN256 (scsi)
    Disk /dev/sda: 256GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:
    
    Number  Start   End     Size    Type      File system  Flags
     1      1049kB  269MB   268MB   primary   xfs          boot
     2      269MB   34.6GB  34.4GB  primary
     3      34.6GB  45.4GB  10.7GB  primary
     4      45.4GB  256GB   211GB   extended
     5      45.4GB  256GB   211GB   logical
  3. 선택 사항: 다음을 검사하려는 장치로 전환합니다.

    (parted) select block-device

출력 명령 출력에 대한 자세한 설명은 다음을 참조하십시오.

모델: ATA SAMSUNG MZNLN256 (scsi)
디스크 유형, 제조업체, 모델 번호 및 인터페이스입니다.
디스크 /dev/sda: 256GB
블록 장치의 파일 경로 및 스토리지 용량입니다.
파티션 테이블: msdos
디스크 레이블 유형입니다.
숫자
파티션 번호입니다. 예를 들어, 마이너 번호가 1인 파티션은 /dev/sda1 에 해당합니다.
시작종료
파티션이 시작되고 끝나는 장치의 위치입니다.
유형
유효한 유형은 metadata, free, primary, extended, logical입니다.
파일 시스템
파일 시스템 유형입니다. 장치의 파일 시스템 필드에 값이 표시되지 않으면 해당 파일 시스템 유형을 알 수 없습니다. parted 유틸리티는 암호화된 장치의 파일 시스템을 인식할 수 없습니다.
플래그
파티션에 설정된 플래그를 나열합니다. 가장 일반적으로 사용되는 플래그는 boot,root,swap,hidden,raid,lvm 또는 lba 입니다. 전체 플래그 목록은 시스템의 parted(8) 도움말 페이지를 참조하십시오.

7.2. parted를 사용하여 디스크에 파티션 테이블 만들기

parted 유틸리티를 사용하여 파티션 테이블로 블록 장치를 보다 쉽게 포맷합니다. 자세한 내용은 시스템의 parted(8) 매뉴얼 페이지를 참조하십시오.

주의

파티션 테이블을 사용하여 블록 장치를 포맷하면 장치에 저장된 모든 데이터가 삭제됩니다.

프로세스

  1. 대화형 파트링 쉘 시작합니다.

    # parted block-device
  2. 장치에 파티션 테이블이 이미 있는지 확인합니다.

    (parted) print

    장치에 파티션이 이미 포함된 경우 다음 단계에서 삭제됩니다.

  3. 새 파티션 테이블을 만듭니다.

    (parted) mklabel table-type
    • table-type 을 의도한 파티션 테이블 유형으로 바꿉니다.

      • MBR MSDOS
      • GPT를 위한 GPT

        예를 들어 디스크에 GPT 테이블을 만들려면 다음을 사용합니다.

        (parted) mklabel gpt

        이 명령을 입력한 후 변경 사항이 적용됩니다.

  4. 파티션 테이블을 보고 해당 테이블이 생성되었는지 확인합니다.

    (parted) print
  5. parted 쉘을 종료합니다.

    (parted) quit

7.3. parted로 파티션 생성

시스템 관리자는 parted 유틸리티를 사용하여 디스크에 새 파티션을 만들 수 있습니다. 자세한 내용은 시스템의 parted(8) 매뉴얼 페이지를 참조하십시오.

참고

필요한 파티션은 스왑,/boot/, / (root) 입니다.

사전 요구 사항

  • 디스크의 파티션 테이블.
  • 만들 파티션이 2TiB보다 크면 GUID 파티션 테이블(GPT) 으로 디스크를 포맷합니다.

프로세스

  1. parted 유틸리티를 시작합니다.

    # parted block-device
  2. 현재 파티션 테이블을 보고 사용 가능한 공간이 충분한지 확인합니다.

    (parted) print
    • 여유 공간이 충분하지 않은 경우 파티션 크기를 조정합니다.
    • 파티션 테이블에서 다음을 확인합니다.

      • 새 파티션의 시작 및 끝점입니다.
      • MBR에서 파티션 유형은 무엇입니까.
  3. 새 파티션을 만듭니다.

    MS-DOS의 경우:

    (parted) mkpart part-type fs-type start end

    GPT의 경우:

    (parted) mkpart part-name fs-type start end
    • part-type기본,논리 또는 확장으로 바꿉니다. 이는 MBR 파티션 테이블에만 적용됩니다.
    • name 을 임의의 파티션 이름으로 바꿉니다. 이는 GPT 파티션 테이블에 필요합니다.
    • fs-typexfs,ext2,ext3,ext4,fat16,fat32,hfs +, linux-swap,ntfs 또는 reiserfs 로 바꿉니다. fs-type 매개변수는 선택 사항입니다. parted 유틸리티는 파티션에 파일 시스템을 생성하지 않습니다.
    • startend 를 파티션의 시작 및 종료 지점을 결정하는 크기로 교체하여 디스크 시작부터 계산됩니다. 512MiB,20GiB 또는 1.5TiB 와 같은 size 접미사를 사용할 수 있습니다. 기본 크기는 메가바이트 단위입니다.

    예를 들어, MBR 테이블에 1024MiB에서 2048MiB까지 기본 파티션을 만들려면 다음을 사용합니다.

    (parted) mkpart primary 1024MiB 2048MiB

    명령을 입력한 후 변경 사항이 적용됩니다.

  4. 파티션 테이블을 보고 생성된 파티션이 올바른 파티션 유형, 파일 시스템 유형 및 크기가 있는 파티션 테이블에 있는지 확인합니다.

    (parted) print
  5. parted 쉘을 종료합니다.

    (parted) quit
  6. 커널이 새 파티션을 인식하는지 확인합니다.

    # cat /proc/partitions

7.4. parted로 파티션 제거

parted 유틸리티를 사용하여 디스크 파티션을 제거하여 디스크 공간을 확보할 수 있습니다. 자세한 내용은 시스템의 parted(8) 매뉴얼 페이지를 참조하십시오.

프로세스

  1. 대화형 파트링 쉘 시작합니다.

    # parted block-device
    • block-device 를 파티션을 제거하려는 장치 경로로 교체합니다(예: /dev/sda ).
  2. 현재 파티션 테이블을 보고 제거할 파티션의 마이너 번호를 확인합니다.

    (parted) print
  3. 파티션을 제거합니다.

    (parted) rm partition-number
    • 파티션 번호를 제거하려는 파티션 번호로 바꿉니다.

    이 명령을 입력하는 즉시 변경 사항이 적용됩니다.

  4. 파티션 테이블에서 파티션을 제거했는지 확인합니다.

    (parted) print
  5. parted 쉘을 종료합니다.

    (parted) quit
  6. 커널이 파티션이 제거되었는지 확인합니다.

    # cat /proc/partitions
  7. /etc/fstab 파일이 있는 경우 해당 파티션을 제거합니다. 제거된 파티션을 선언하는 행을 찾아 파일에서 제거합니다.
  8. 시스템이 새 /etc/fstab 구성을 등록하도록 마운트 단위를 다시 생성합니다.

    # systemctl daemon-reload
    중요

    /proc/cmdline 에 언급된 파티션을 제거하거나 LVM의 일부인 경우 논리 볼륨 구성 및 관리 및 시스템의 dracut(8)grubby(8) 도움말 페이지를 참조하십시오.

7.5. parted로 파티션 크기 조정

parted 유틸리티를 사용하여 사용하지 않는 디스크 공간을 사용하도록 파티션을 확장하거나 다른 용도로 용량을 사용하도록 파티션을 줄입니다. 자세한 내용은 시스템의 parted(8) 매뉴얼 페이지를 참조하십시오.

사전 요구 사항

  • 파티션을 축소하기 전에 데이터를 백업합니다.
  • 만들 파티션이 2TiB보다 크면 GUID 파티션 테이블(GPT) 으로 디스크를 포맷합니다.
  • 파티션을 축소하려면 먼저 파일 시스템을 축소하여 크기가 조정된 파티션보다 크지 않도록 합니다.
참고

XFS는 축소를 지원하지 않습니다.

프로세스

  1. parted 유틸리티를 시작합니다.

    # parted block-device
  2. 현재 파티션 테이블을 확인합니다.

    (parted) print

    파티션 테이블에서 다음을 확인합니다.

    • 파티션의 작은 수입니다.
    • 크기 조정 후 기존 파티션의 위치와 새 종료 지점입니다.

      중요

      파티션 크기를 조정할 때 파티션의 끝과 다음 파티션의 시작 부분 또는 마지막 파티션인 경우 디스크 끝 사이에 할당되지 않은 공간이 충분히 있는지 확인합니다. 공간이 충분하지 않으면 parted 에서 오류를 반환합니다. 그러나 파티션 중복을 방지하기 위해 크기를 조정하기 전에 사용 가능한 공간을 확인하는 것이 가장 좋습니다.

  3. 파티션 크기를 조정합니다.

    (parted) resizepart 1 2GiB
    • 1 을 크기 조정하려는 파티션의 마이너 번호로 바꿉니다.
    • 2 를 디스크 시작부터 계산한 크기가 조정된 파티션의 새 끝 지점을 결정하는 크기로 바꿉니다. 512MiB,20GiB 또는 1.5TiB 와 같은 size 접미사를 사용할 수 있습니다. 기본 크기는 메가바이트 단위입니다.
  4. 파티션 테이블을 보고 크기가 올바른 파티션 테이블에 있는지 확인합니다.

    (parted) print
  5. parted 쉘을 종료합니다.

    (parted) quit
  6. 커널이 새 파티션을 등록하는지 확인합니다.

    # cat /proc/partitions
  7. 선택 사항: 파티션을 확장한 경우 파일 시스템도 확장합니다.

8장. 디스크를 다시 분할하는 전략

대부분의 RHEL 시스템은 논리 볼륨 관리자를 사용하여 스토리지 공간을 관리합니다. 그러나 파티션 테이블을 조작하는 것은 장치 수준에서 발생하는 스토리지 공간을 관리하는 기본적이고 낮은 수준의 방법으로 유지됩니다. parted, Cryostat또는 기타 그래픽 툴을 사용하여 디스크 파티션 작업을 수행할 수 있습니다.

디스크를 다시 분할하는 방법은 여러 가지가 있습니다. 여기에는 다음이 포함됩니다.

  • 파티션되지 않은 여유 공간을 사용할 수 있습니다.
  • 사용되지 않는 파티션을 사용할 수 있습니다.
  • 적극적으로 사용되는 파티션의 여유 공간을 사용할 수 있습니다.
참고

다음 예제에서는 파티션 기술에 대한 일반적인 개요를 제공합니다. 이는 명확성을 위해 간소화되며 일반적인 Red Hat Enterprise Linux 설치 중에 정확한 파티션 레이아웃을 반영하지 않습니다.

8.1. 파티션되지 않은 여유 공간 사용

이미 정의되어 있고 전체 하드 디스크에 포함되지 않은 파티션은 정의된 파티션의 일부가 아닌 할당되지 않은 공간을 남겨 둡니다.

사용되지 않는 하드 디스크도 이 범주에 속합니다. 유일한 차이점은 모든 공간이 정의된 파티션의 일부가 아니라는 것입니다.

새 디스크에서 사용되지 않는 공간에서 필요한 파티션을 만들 수 있습니다. 대부분의 사전 설치된 운영 체제는 디스크 드라이브의 사용 가능한 모든 공간을 차지하도록 구성됩니다.

8.2. 사용되지 않는 파티션의 공간 사용

사용되지 않는 파티션에 할당된 공간을 사용하려면 파티션을 삭제한 다음 대신 적절한 Linux 파티션을 만듭니다. 또는 설치 프로세스 중에 사용되지 않는 파티션을 삭제하고 수동으로 새 파티션을 만듭니다.

8.3. 활성 파티션의 여유 공간 사용

이 프로세스는 이미 사용 중인 활성 파티션에 필요한 사용 가능한 공간이 포함되어 있으므로 관리하기 어려울 수 있습니다. 대부분의 경우 사전 설치된 소프트웨어를 사용하는 컴퓨터의 하드 디스크에는 운영 체제 및 데이터를 보유하는 하나의 큰 파티션이 포함됩니다.

주의

OS(운영 체제)가 포함된 활성 파티션의 크기를 조정하거나 수정하려는 경우 OS를 손실하거나 OS를 부팅할 수 없게 만들 위험이 있습니다. 따라서 경우에 따라 OS를 다시 설치해야 할 수 있습니다. 계속하기 전에 시스템에 복구 또는 설치 미디어가 포함되어 있는지 확인합니다.

사용 가능한 여유 공간의 사용을 최적화하려면 파괴적 또는 파괴적이지 않은 다시 분할 방법을 사용할 수 있습니다.

8.3.1. 파괴적인 재파티션

파괴적인 재 분할은 하드 드라이브의 파티션을 제거하고 그 자리에 새 파티션을 만듭니다. 이 방법으로 전체 콘텐츠가 삭제되므로 원래 파티션에서 필요한 데이터를 백업하십시오.

기존 운영 체제에서 새 파티션을 만든 후 다음을 수행할 수 있습니다.

  • 소프트웨어를 다시 설치합니다.
  • 데이터를 복원합니다.
주의

이 방법은 원래 파티션에 이전에 저장된 모든 데이터를 삭제합니다.

8.3.2. 비 파괴적 재파티션

파괴되지 않은 다시 분할하는 파티션은 데이터 손실없이 파티션 크기를 조정합니다. 이 방법은 신뢰할 수 있지만 대규모 드라이브에서 처리 시간이 오래 걸립니다.

다음은 비분명적 재파티션을 시작하는 데 도움이 될 수 있는 방법 목록입니다.

  • 기존 데이터 재구성

일부 데이터의 스토리지 위치는 필요한 크기로 파티션 크기를 조정할 수 있도록 변경할 수 없습니다. 궁극적으로 파괴적인 재파티션 프로세스가 필요합니다. 기존 파티션 내에서 데이터를 재구성하면 필요에 따라 파티션의 크기를 조정하여 추가 파티션을 위해 공간을 만들거나 사용 가능한 공간을 극대화하는 데 도움이 될 수 있습니다.

데이터 손실을 방지하려면 데이터 마이그레이션 프로세스를 계속하기 전에 백업을 생성합니다.

  • 기존 파티션의 크기 조정

기존 파티션의 크기를 조정하면 사용되지 않은 공간을 확보할 수 있습니다. 소프트웨어 크기 조정에 따라 결과가 다를 수 있습니다. 대부분의 경우 원래 파티션과 동일한 유형의 포맷되지 않은 새 파티션을 만들 수 있습니다.

크기 조정 후 수행하는 단계는 사용하는 소프트웨어에 따라 달라질 수 있습니다. 다음 예에서 모범 사례는 새 Cryostat(디스크 운영 체제) 파티션을 삭제하고 대신 Linux 파티션을 생성하는 것입니다. 크기 조정 프로세스를 시작하기 전에 디스크에 가장 적합한 항목을 확인합니다.

참고

파티션 크기 조정 및 생성은 사용자가 사용하고 있는 도구(예: parted, GParted)에 따라 다를 수 있습니다. 특정 지침은 툴 설명서를 참조하십시오.

  • 선택 사항: 새 파티션 생성

소프트웨어 크기 조정의 일부 부분은 Linux 기반 시스템을 지원합니다. 이러한 경우 크기 조정 후 새로 생성된 파티션을 삭제할 필요가 없습니다. 나중에 새 파티션을 만드는 것은 사용하는 소프트웨어에 따라 다릅니다.

9장. XFS 시작하기

XFS 파일 시스템을 생성하고 유지 관리하는 방법에 대한 개요입니다.

9.1. XFS 파일 시스템

XFS는 단일 호스트에서 매우 큰 파일 및 파일 시스템을 지원하는 확장성이 뛰어나고 강력한 고성능 저널링 파일 시스템입니다. 이는 Red Hat Enterprise Linux 10의 기본 파일 시스템입니다. XFS는 원래 SGI 초반에서 개발되었으며 매우 큰 서버 및 스토리지 어레이에서 오랫동안 실행되고 있습니다.

XFS의 기능은 다음과 같습니다.

신뢰성
  • 메타데이터 저널링: 시스템을 다시 시작하고 파일 시스템을 다시 마운트할 때 재생할 수 있는 파일 시스템 작업 기록을 유지하여 시스템 충돌 후 파일 시스템 무결성을 보장합니다.
  • 광범위한 런타임 메타데이터 일관성 검사
  • 확장 가능한 빠른 복구 유틸리티
  • 할당량 저널링. 이로 인해 충돌 후 긴 할당량 일관성 점검이 필요하지 않습니다.
확장 및 성능
  • 지원되는 파일 시스템 크기 최대 1024TiB
  • 다수의 동시 작업을 지원하는 기능
  • 사용 가능한 공간 관리의 확장성을 위한 B-트리 인덱싱
  • 정교한 메타데이터 읽기 알고리즘
  • 스트리밍 비디오 워크로드에 대한 최적화
할당 체계
  • 범위 기반 할당
  • 스트라이프 인식 할당 정책
  • 지연된 할당
  • 공간 사전 할당
  • 동적으로 할당된 inode
기타 기능
  • reflink 기반 파일 복사
  • 긴밀하게 통합된 백업 및 복원 유틸리티
  • 온라인 조각 모음
  • 온라인 파일 시스템 확장
  • 포괄적인 진단 기능
  • 확장 속성(xattr). 이를 통해 시스템은 파일당 여러 개의 추가 이름/값 쌍을 연결할 수 있습니다.
  • 프로젝트 또는 디렉터리 할당량. 이렇게 하면 디렉터리 트리에 대한 할당량 제한이 허용됩니다.
  • 하위 타임 스탬프
성능 특성

XFS는 엔터프라이즈 워크로드가 있는 대규모 시스템에서 높은 성능을 제공합니다. 대규모 시스템은 비교적 많은 CPU 수, 여러 HBA 및 외부 디스크 어레이에 대한 연결이 있는 시스템입니다. XFS는 다중 스레드 병렬 I/O 워크로드가 있는 소규모 시스템에서도 잘 작동합니다.

XFS는 소규모 시스템에서 비교할 수 있지만 확장성 및 대규모 데이터 세트에 더 중점을 두고 있습니다.

9.2. ext4 및 XFS와 함께 사용되는 툴 비교

이 섹션에서는 ext4 및 XFS 파일 시스템에서 일반적인 작업을 수행하는 데 사용할 툴을 비교합니다.

Expand
Taskext4XFS

파일 시스템 생성

mkfs.ext4

mkfs.xfs

파일 시스템 검사

e2fsck

xfs_repair

파일 시스템 크기 조정

resize2fs

xfs_growfs

파일 시스템의 이미지 저장

e2image

xfs_metadumpxfs_mdrestore

파일 시스템 레이블 또는 튜닝

tune2fs

xfs_admin

파일 시스템 백업

tarrsync

xfsdumpxfsrestore

할당량 관리

할당량

xfs_quota

파일 매핑

filefrag

filefrag

참고

네트워크를 통한 백업에 대한 전체 클라이언트-서버 솔루션을 사용하려면 RHEL 9에서 사용할 수 있는 bacula 백업 유틸리티를 사용할 수 있습니다. Bacula에 대한 자세한 내용은 Bacula 백업 솔루션을 참조하십시오.

10장. XFS 파일 시스템 생성

시스템 관리자는 블록 장치에 XFS 파일 시스템을 생성하여 파일과 디렉터리를 저장할 수 있습니다.

10.1. mkfs.xfs를 사용하여 XFS 파일 시스템 생성

다음 절차에서는 블록 장치에서 XFS 파일 시스템을 생성하는 방법을 설명합니다.

프로세스

  1. 파일 시스템을 생성하려면 다음을 수행합니다.

    • 장치가 일반 파티션, LVM 볼륨, MD 볼륨, 디스크 또는 유사한 장치인 경우 다음 명령을 사용합니다.

      # mkfs.xfs block-device
      • 블록 장치를 블록 장치의 경로로 바꿉니다. 예를 들어 /dev/sdb1,/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 또는 /dev/my-volgroup/my-lv.
      • 일반적으로 기본 옵션은 일반적인 사용에 가장 적합합니다.
      • 기존 파일 시스템을 포함하는 블록 장치에서 mkfs.xfs 를 사용하는 경우 -f 옵션을 추가하여 해당 파일 시스템을 덮어씁니다.
    • 하드웨어 RAID 장치에서 파일 시스템을 생성하려면 시스템이 장치의 스트라이프를 올바르게 감지하는지 확인합니다.

      • 스트라이프 정보가 올바르면 추가 옵션이 필요하지 않습니다. 파일 시스템을 생성합니다.

        # mkfs.xfs block-device
      • 정보가 잘못된 경우 -d 옵션의 susw 매개변수를 사용하여 수동으로 스트라이프를 지정합니다. su 매개 변수는 RAID 청크 크기를 지정하고 sw 매개 변수는 RAID 장치의 데이터 디스크 수를 지정합니다.

        예를 들면 다음과 같습니다.

        # mkfs.xfs -d su=64k,sw=4 /dev/sda3
  2. 다음 명령을 사용하여 시스템이 새 장치 노드를 등록할 때까지 기다립니다.

    # udevadm settle

    자세한 내용은 시스템의 mkfs.xfs(8) 매뉴얼 페이지를 참조하십시오.

11장. XFS 파일 시스템 백업

시스템 관리자는 xfsdump 를 사용하여 XFS 파일 시스템을 파일 또는 동영상으로 백업할 수 있습니다. 이는 간단한 백업 메커니즘을 제공합니다.

11.1. XFS 백업의 기능

이 섹션에서는 xfsdump 유틸리티를 사용하여 XFS 파일 시스템을 백업하는 주요 개념과 기능에 대해 설명합니다.

xfsdump 유틸리티를 사용하여 다음을 수행할 수 있습니다.

  • 일반 파일 이미지에 백업을 수행합니다.

    하나의 백업만 일반 파일에 쓸 수 있습니다.

  • 드라이브 드라이브에 백업을 수행합니다.

    xfsdump 유틸리티를 사용하면 동일한 포맷에 여러 백업을 작성할 수 있습니다. 백업은 여러 개의 테두리에 걸쳐 있을 수 있습니다.

    단일 테이크 장치에 여러 파일 시스템을 백업하려면 XFS 백업이 이미 포함된 DVD에 백업을 작성하기만 하면 됩니다. 그러면 새 백업이 이전 백업에 추가됩니다. 기본적으로 xfsdump 는 기존 백업을 덮어쓰지 않습니다.

  • 증분 백업을 생성합니다.

    xfsdump 유틸리티는 덤프 수준을 사용하여 다른 백업과 관련된 기본 백업을 결정합니다. 0에서 9 사이의 숫자는 덤프 수준을 늘리는 것을 나타냅니다. 증분 백업은 하위 수준의 마지막 덤프 이후 변경된 파일만 백업합니다.

    • 전체 백업을 수행하려면 파일 시스템에서 수준 0 덤프를 수행합니다.
    • 수준 1 덤프는 전체 백업 후 첫 번째 증분 백업입니다. 다음 증분 백업은 마지막 수준 1 덤프 이후 변경된 파일만 백업하는 수준 2로, 최대 수준 9로 백업됩니다.
  • 크기, 하위 트리 또는 inode 플래그를 사용하여 백업에서 파일을 제외하여 필터링합니다.

자세한 내용은 시스템의 xfsdump(8) 매뉴얼 페이지를 참조하십시오.

11.2. xfsdump를 사용하여 XFS 파일 시스템 백업

다음 절차에서는 XFS 파일 시스템의 콘텐츠를 파일 또는 보관으로 백업하는 방법을 설명합니다.

사전 요구 사항

  • 백업할 수 있는 XFS 파일 시스템입니다.
  • 다른 파일 시스템 또는 백업을 저장할 수 있는 드라이브입니다.

프로세스

  • 다음 명령을 사용하여 XFS 파일 시스템을 백업합니다.

    # xfsdump -l level [-L label] \ -f backup-destination path-to-xfs-filesystem
    • level 을 백업의 덤프 수준으로 바꿉니다. 0 을 사용하여 전체 백업 또는 1 ~9 를 수행하여 연속 증분 백업을 수행합니다.
    • backup-destination 을 백업을 저장하려는 경로로 교체합니다. 대상은 일반 파일, 보관 드라이브 또는 원격 가상 장치일 수 있습니다. 예를 들어 파일의 경우 /backup-files/Data.xfsdump 또는 포맷 드라이브의 경우 /dev/st0 입니다.
    • path-to-xfs-filesystem 을 백업하려는 XFS 파일 시스템의 마운트 지점으로 교체합니다. 예를 들면 /mnt/data/ 입니다. 파일 시스템을 마운트해야 합니다.
    • 여러 파일 시스템을 백업하고 단일 테이크 장치에 저장할 때 복원 시 이를 보다 쉽게 식별할 수 있도록 -L 레이블 옵션을 사용하여 각 백업에 세션 레이블을 추가합니다. 레이블을 백업의 이름으로 바꿉니다(예: backup_data ).

      예를 들어 /boot//data/ 디렉터리에 마운트된 XFS 파일 시스템의 콘텐츠를 백업하고 /backup-files/ 디렉터리에 파일로 저장하려면 다음을 수행합니다.

      # xfsdump -l 0 -f /backup-files/boot.xfsdump /boot
      # xfsdump -l 0 -f /backup-files/data.xfsdump /data
  • 단일 보관 장치에서 여러 파일 시스템을 백업하려면 -L 레이블 옵션을 사용하여 각 백업에 세션 레이블을 추가합니다.

    # xfsdump -l 0 -L "backup_boot" -f /dev/st0 /boot
    # xfsdump -l 0 -L "backup_data" -f /dev/st0 /data

    자세한 내용은 시스템의 xfsdump(8) 매뉴얼 페이지를 참조하십시오.

12장. 백업에서 XFS 파일 시스템 복원

시스템 관리자는 xfsrestore 유틸리티를 사용하여 xfsdump 유틸리티로 생성된 XFS 백업을 복원하고 파일 또는 동영상에 저장할 수 있습니다.

12.1. 백업에서 XFS를 복원하는 기능

xfsrestore 유틸리티는 xfsdump 에서 생성한 백업에서 파일 시스템을 복원합니다. xfsrestore 유틸리티에는 다음 두 가지 모드가 있습니다.

  • 간단한 모드를 사용하면 수준 0 덤프에서 전체 파일 시스템을 복원할 수 있습니다. 이는 기본값 모드입니다.
  • 누적 모드를 사용하면 파일 시스템을 증분 백업, 즉 수준 1에서 수준 9로 복원할 수 있습니다.

고유한 세션 ID 또는 세션 레이블 은 각 백업을 식별합니다. 여러 백업이 포함된 스냅샷에서 백업을 복원하려면 해당 세션 ID 또는 레이블이 필요합니다.

백업에서 특정 파일을 추출, 추가 또는 삭제하려면 xfsrestore 대화형 모드를 입력합니다. 대화형 모드는 백업 파일을 조작하는 명령 세트를 제공합니다.

자세한 내용은 시스템의 xfsrestore(8) 도움말 페이지를 참조하십시오.

12.2. xfsrestore를 사용하여 백업에서 XFS 파일 시스템 복원

다음 절차에서는 파일 또는 DVD 백업에서 XFS 파일 시스템의 콘텐츠를 복원하는 방법을 설명합니다.

사전 요구 사항

프로세스

  • 백업을 복원하기 위한 명령은 전체 백업 또는 증분 백업에서 복원하는지 여부에 따라 달라집니다.

    # xfsrestore [-r] [-S session-id] [-L session-label] [-i] -f backup-location restoration-path
    • 백업 위치를 백업 위치로 교체합니다. 이는 일반 파일, 보관 드라이브 또는 원격 보행 장치일 수 있습니다. 예를 들어 파일의 경우 /backup-files/Data.xfsdump 또는 포맷 드라이브의 경우 /dev/st0 입니다.
    • restore -path 를 파일 시스템을 복원할 디렉터리의 경로로 바꿉니다. 예를 들면 /mnt/data/ 입니다.
    • 증분(레벨 1에서 수준 9) 백업에서 파일 시스템을 복원하려면 -r 옵션을 추가합니다.
    • 여러 백업이 포함된 DVD 장치에서 백업을 복원하려면 -S 또는 -L 옵션을 사용하여 백업을 지정합니다.

      S 옵션을 사용하면 세션 ID로 백업을 선택할 수 있지만 -L 옵션을 사용하면 세션 레이블로 선택할 수 있습니다. 세션 ID 및 세션 레이블을 가져오려면 xfsrestore -I 명령을 사용합니다.

      session-id 를 백업의 세션 ID로 바꿉니다. 예를 들어 b74a3586-e52e-4a4a-8775-c3334fa8ea2c. session-label 을 백업의 session 레이블로 바꿉니다. 예를 들면 my_backup_session_label 입니다.

    • xfsrestore 를 대화형으로 사용하려면 -i 옵션을 사용합니다.

      대화형 대화 상자는 xfsrestore 가 지정된 장치 읽기를 완료한 후 시작됩니다. 대화형 xfsrestore 쉘에서 사용할 수 있는 명령에는 cd,ls,add,delete, extract 가 있습니다. 전체 명령 목록은 help 명령을 사용합니다.

예 12.1. 여러 XFS 파일 시스템 복원

  • XFS 백업 파일을 복원하고 콘텐츠를 /mnt/ 아래의 디렉터리에 저장하려면 다음을 수행합니다.

    # xfsrestore -f /backup-files/boot.xfsdump /mnt/boot/
    # xfsrestore -f /backup-files/data.xfsdump /mnt/data/
  • 여러 백업이 포함된 스트라이프 장치에서 복원하려면 세션 레이블 또는 세션 ID로 각 백업을 지정합니다.

    # xfsrestore -L "backup_boot" -f /dev/st0 /mnt/boot/
    # xfsrestore -S "45e9af35-efd2-4244-87bc-4762e476cbab" \ -f /dev/st0 /mnt/data/

자세한 내용은 시스템의 xfsrestore(8) 도움말 페이지를 참조하십시오.

12.3. VLAN에서 XFS 백업을 복원할 때 정보 메시지

여러 파일 시스템에서 백업이 있는 백업에서 백업을 복원하는 경우 xfsrestore 유틸리티에서 메시지를 발행할 수 있습니다. 요청된 백업의 일치 항목이 있는지의 여부를 xfsrestore 가 순차적으로 테두르의 각 백업을 검사할 때 알 수 있습니다. 예를 들면 다음과 같습니다.

xfsrestore: preparing drive
xfsrestore: examining media file 0
xfsrestore: inventory session uuid (8590224e-3c93-469c-a311-fc8f23029b2a) does not match the media header's session uuid (7eda9f86-f1e9-4dfd-b1d4-c50467912408)
xfsrestore: examining media file 1
xfsrestore: inventory session uuid (8590224e-3c93-469c-a311-fc8f23029b2a) does not match the media header's session uuid (7eda9f86-f1e9-4dfd-b1d4-c50467912408)
[...]

정보 메시지는 일치하는 백업이 발견될 때까지 계속 표시됩니다.

13장. XFS 파일 시스템의 크기 증가

시스템 관리자는 XFS 파일 시스템의 크기를 늘리면 더 큰 스토리지 용량을 완전히 사용할 수 있습니다. 그러나 현재 XFS 파일 시스템의 크기를 줄일 수 없습니다.

중요

매우 작은 크기에서 훨씬 큰 크기로 파일 시스템을 늘리면 많은 할당 그룹이 생성되어 성능 문제가 발생할 수 있습니다. 가장 좋은 방법은 크기가 원래 크기보다 최대 10배까지 증가합니다.

13.1. xfs_growfs를 사용하여 XFS 파일 시스템의 크기 증가

다음 절차에서는 xfs_growfs 유틸리티를 사용하여 XFS 파일 시스템을 확장하는 방법을 설명합니다.

사전 요구 사항

  • 기본 블록 장치가 나중에 크기 조정 파일 시스템을 유지하기에 적절한 크기인지 확인합니다. 영향을 받는 블록 장치에 적절한 크기 조정 방법을 사용합니다.
  • XFS 파일 시스템을 마운트합니다.

프로세스

  • XFS 파일 시스템이 마운트되는 동안 xfs_growfs 유틸리티를 사용하여 크기를 늘립니다.

    # xfs_growfs file-system -D new-size
    • file-system 을 XFS 파일 시스템의 마운트 지점으로 바꿉니다.
    • D 옵션을 사용하여 new-size 를 파일 시스템 블록 수에 지정된 파일 시스템의 새로운 크기로 바꿉니다.

      지정된 XFS 파일 시스템의 kB에서 블록 크기를 찾으려면 xfs_info 유틸리티를 사용합니다.

      # xfs_info block-device
      
      ...
      data     =              bsize=4096
      ...
    • -D 옵션이 없으면 xfs_growfs 는 파일 시스템을 기본 장치에서 지원하는 최대 크기로 늘립니다.

      자세한 내용은 시스템의 xfs_growfs(8) 도움말 페이지를 참조하십시오.

14장. XFS 오류 동작 구성

XFS 파일 시스템이 다른 I/O 오류가 발생하면 작동하는 방법을 구성할 수 있습니다.

14.1. XFS에서 구성 가능한 오류 처리

XFS 파일 시스템은 I/O 작업 중에 오류가 발생하면 다음 방법 중 하나로 응답합니다.

  • XFS는 작업이 성공하거나 XFS가 설정 제한에 도달할 때까지 I/O 작업을 반복적으로 재시도합니다.

    제한은 최대 재시도 횟수 또는 재시도 횟수를 기반으로 합니다.

  • XFS는 오류를 영구적으로 간주하고 파일 시스템에서 작업을 중지합니다.

XFS가 다음 오류 조건에 대응하는 방법을 구성할 수 있습니다.

EIO
읽기 또는 쓰기 중 오류 발생
ENOSPC
장치에 남아 있는 공간이 없습니다
ENODEV
장치를 찾을 수 없음

XFS가 오류를 영구적으로 간주할 때까지 최대 재시도 횟수와 최대 시간(초)을 설정할 수 있습니다. XFS는 제한 중 하나에 도달하면 작업 재시도를 중지합니다.

파일 시스템을 마운트 해제할 때 다른 구성과 관계없이 즉시 재시도 횟수를 취소하도록 XFS를 구성할 수도 있습니다. 이 구성을 사용하면 영구 오류에도 불구하고 마운트 해제 작업을 성공적으로 수행할 수 있습니다.

기본 동작

각 XFS 오류 조건의 기본 동작은 오류 컨텍스트에 따라 다릅니다. ENODEV 와 같은 일부 XFS 오류는 재시도 횟수에 관계없이 치명적이고 복구할 수 없는 것으로 간주됩니다. 기본 재시도 제한은 0입니다.

14.2. 특정 및 정의되지 않은 XFS 오류 조건에 대한 구성 파일

다음 디렉터리는 다양한 오류 조건에 대한 XFS 오류 동작을 제어하는 구성 파일을 저장합니다.

/sys/fs/xfs/device/error/metadata/EIO/
EIO 오류 조건의 경우
/sys/fs/xfs/device/error/metadata/ENODEV/
ENODEV 오류 조건의 경우
/sys/fs/xfs/device/error/metadata/ENOSPC/
ENOSPC 오류 조건의 경우
/sys/fs/xfs/device/error/default/
정의되지 않은 다른 모든 오류 조건에 대한 일반적인 구성

각 디렉터리에는 재시도 제한을 구성하기 위한 다음 구성 파일이 포함되어 있습니다.

max_retries
XFS가 작업을 재시도하는 최대 횟수를 제어합니다.
retry_timeout_seconds
XFS가 작업 재시도를 중지한 후 시간 제한을 초 단위로 지정합니다.

14.3. 특정 조건에 대해 XFS 동작 설정

다음 절차에서는 XFS가 특정 오류 조건에 대응하는 방법을 구성합니다.

프로세스

  • 최대 재시도 횟수, 재시도 시간 제한 또는 둘 다 설정합니다.

    • 최대 재시도 횟수를 설정하려면 원하는 수를 max_retries 파일에 작성합니다.

      # echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries
    • 시간 제한을 설정하려면 retry_timeout_seconds 파일에 원하는 시간(초)을 작성합니다.

      # echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_second

    value 는 -1과 C 부호 있는 정수 유형의 가능한 최대 값 사이의 숫자입니다. 64비트 Linux에서 2147483647입니다.

    두 제한 모두에서 값 -1 은 연속 재시도에 사용되며 0 은 즉시 중지됩니다.

    device/dev/ 디렉터리에 있는 것과 같이 장치 이름입니다(예: sda ).

14.4. 정의되지 않은 조건에 대해 XFS 동작 설정

이 절차에서는 XFS가 정의되지 않은 모든 오류 조건에 대응하는 방법을 구성하여 공통 구성을 공유합니다.

프로세스

  • 최대 재시도 횟수, 재시도 시간 제한 또는 둘 다 설정합니다.

    • 최대 재시도 횟수를 설정하려면 원하는 수를 max_retries 파일에 작성합니다.

      # echo value > /sys/fs/xfs/device/error/metadata/default/max_retries
    • 시간 제한을 설정하려면 retry_timeout_seconds 파일에 원하는 시간(초)을 작성합니다.

      # echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds

    value 는 -1과 C 부호 있는 정수 유형의 가능한 최대 값 사이의 숫자입니다. 64비트 Linux에서 2147483647입니다.

    두 제한 모두에서 값 -1 은 연속 재시도에 사용되며 0 은 즉시 중지됩니다.

    device/dev/ 디렉터리에 있는 것과 같이 장치 이름입니다(예: sda ).

14.5. XFS 마운트 해제 동작 설정

다음 절차에서는 파일 시스템을 마운트 해제할 때 XFS가 오류 조건에 대응하는 방법을 구성합니다.

파일 시스템에서 fail_at_unmount 옵션을 설정하면 마운트 해제 중에 다른 모든 오류 구성을 재정의하고 I/O 작업을 재시도하지 않고 즉시 파일 시스템을 마운트 해제합니다. 이렇게 하면 영구 오류의 경우에도 마운트 해제 작업이 성공할 수 있습니다.

주의

마운트 해제 프로세스가 해당 파일 시스템의 sysfs 인터페이스에서 구성 파일을 제거하므로 마운트 해제 프로세스가 시작된 후에는 fail_at_unmount 값을 변경할 수 없습니다. 파일 시스템의 마운트 해제를 시작하기 전에 마운트 해제 동작을 구성해야 합니다.

프로세스

  • fail_at_unmount 옵션을 활성화하거나 비활성화합니다.

    • 파일 시스템을 마운트 해제할 때 모든 작업을 취소하려면 옵션을 활성화합니다.

      # echo 1 > /sys/fs/xfs/device/error/fail_at_unmount
    • 파일 시스템을 마운트 해제할 때 max_retriesretry_timeout_seconds 재시도 제한을 유지하려면 옵션을 비활성화합니다.

      # echo 0 > /sys/fs/xfs/device/error/fail_at_unmount

    device/dev/ 디렉터리에 있는 것과 같이 장치 이름입니다(예: sda ).

15장. PCP를 사용한 XFS의 성능 분석

XFS PMDA는 pcp 패키지의 일부로 제공되며 설치 중에 기본적으로 활성화됩니다. PCP(Performance Co- Cryostat)에서 XFS 파일 시스템의 성능 지표 데이터를 수집하는 데 사용됩니다.

PCP를 사용하여 XFS 파일 시스템의 성능을 분석할 수 있습니다.

15.1. 수동으로 XFS PMDA 설치

XFS PMDA가 pcp 구성 출력에 나열되지 않은 경우 PMDA 에이전트를 수동으로 설치합니다.

이 절차에서는 PMDA 에이전트를 수동으로 설치하는 방법을 설명합니다.

사전 요구 사항

프로세스

  1. xfs 디렉터리로 이동합니다.

    # cd /var/lib/pcp/pmdas/xfs/
  2. 수동으로 XFS PMDA를 설치합니다.

    xfs]# ./Install
    Updating the Performance Metrics Name Space (PMNS) ...
    Terminate PMDA if already installed ...
    Updating the PMCD control file, and notifying PMCD ...
    Check xfs metrics have appeared ... 387 metrics and 387 values

검증

  • pmcd 프로세스가 호스트에서 실행 중이고 XFS PMDA가 구성에 활성화된 것으로 나열되어 있는지 확인합니다.

    # pcp
    
    Performance Co-Pilot configuration on workstation:
    
    platform: Linux workstation 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64
    hardware: 12 cpus, 2 disks, 1 node, 36023MB RAM
    timezone: CEST-2
    services: pmcd
    pmcd: Version 4.3.0-1, 8 agents
    pmda: root pmcd proc xfs linux mmv kvm jbd2

    자세한 내용은 시스템의 pmcd(1) 매뉴얼 페이지를 참조하십시오.

15.2. pminfo를 사용하여 XFS 성능 메트릭 검사

PCP를 사용하면 XFS PMDA에서 마운트된 XFS 파일 시스템 각각에 대해 특정 XFS 메트릭을 보고할 수 있습니다. 이렇게 하면 마운트된 특정 파일 시스템 문제를 쉽게 파악하고 성능을 평가할 수 있습니다.

pminfo 명령은 마운트된 각 XFS 파일 시스템에 대해 장치별 XFS 지표를 제공합니다.

다음 절차에서는 XFS PMDA에서 제공하는 사용 가능한 모든 메트릭 목록을 표시합니다.

사전 요구 사항

프로세스

  • XFS PMDA에서 제공하는 사용 가능한 모든 메트릭 목록을 표시합니다.

    # pminfo xfs
  • 개별 메트릭에 대한 정보를 표시합니다. 다음 예제에서는 pminfo 툴을 사용하여 특정 XFS 읽기쓰기 지표를 검사합니다.

    • xfs.write_bytes 메트릭에 대한 간단한 설명을 표시합니다.

      # pminfo --oneline xfs.write_bytes
      
      xfs.write_bytes [number of bytes written in XFS file system write operations]
    • xfs.read_bytes 메트릭에 대한 자세한 설명을 표시합니다.

      # pminfo --helptext xfs.read_bytes
      
      xfs.read_bytes
      Help:
      This is the number of bytes read via read(2) system calls to files in
      XFS file systems. It can be used in conjunction with the read_calls
      count to calculate the average size of the read operations to file in
      XFS file systems.
    • xfs.read_bytes 메트릭의 현재 성능 값을 가져옵니다.

      # pminfo --fetch xfs.read_bytes
      
      xfs.read_bytes
          value 4891346238
    • pminfo 를 사용하여 장치별 XFS 메트릭을 가져옵니다.

      # pminfo --fetch --oneline xfs.perdev.read xfs.perdev.write
      
      xfs.perdev.read [number of XFS file system read operations]
      inst [0 or "loop1"] value 0
      inst [0 or "loop2"] value 0
      
      xfs.perdev.write [number of XFS file system write operations]
      inst [0 or "loop1"] value 86
      inst [0 or "loop2"] value 0

      자세한 내용은 시스템의 pminfo(1) 매뉴얼 페이지를 참조하십시오.

15.3. pmstore를 사용하여 XFS 성능 지표 재설정

PCP를 사용하면 특히 지표가 xfs.control.reset 메트릭과 같은 제어 변수 역할을 하는 경우 특정 메트릭의 값을 수정할 수 있습니다. 지표 값을 수정하려면 pmstore 툴을 사용합니다.

다음 절차에서는 pmstore 툴을 사용하여 XFS 지표를 재설정하는 방법을 설명합니다.

사전 요구 사항

프로세스

  1. 메트릭 값을 표시합니다.

    $ pminfo -f xfs.write
    
    xfs.write
        value 325262
  2. 모든 XFS 지표를 재설정합니다.

    # pmstore xfs.control.reset 1
    
    xfs.control.reset old value=0 new value=1

검증

  • 메트릭을 재설정한 후 정보를 확인합니다.

    $ pminfo --fetch xfs.write
    
    xfs.write
        value 0

    자세한 내용은 시스템의 pmstore(1)pminfo(1) 매뉴얼 페이지를 참조하십시오.

15.4. XFS의 PCP 지표 그룹

다음 표에서는 XFS에 사용 가능한 PCP 지표 그룹에 대해 설명합니다.

Expand
표 15.1. XFS의 지표 그룹

메트릭 그룹

제공된 지표

xfs.*

읽기 및 쓰기 작업 수, 읽기 및 쓰기 바이트 수를 포함한 일반 XFS 메트릭입니다. inode가 플러시되는 횟수, 클러스터형 및 클러스터 실패 횟수에 대한 카운터와 함께

XFS.allocs.*

xfs.alloc_btree.*

파일 시스템에서 오브젝트 할당에 대한 메트릭 범위, 범위 및 블록 생성/해제 수를 포함합니다. 할당 트리 조회 및 btree에서 레코드 생성 및 삭제 확장과 비교합니다.

xfs.block_map.*

xfs.bmap_btree.*

메트릭에는 블록 맵 읽기/쓰기 및 블록 삭제 수, 삽입, 삭제 및 조회에 대한 범위 목록 작업이 포함됩니다. 또한 작업 카운터는 블록맵에서 비교, 조회, 삽입 및 삭제 작업을 수행합니다.

xfs.dir_ops.*

XFS 파일 시스템의 디렉터리 작업을 대상으로 생성, 항목 삭제, "getdent" 작업 수에 대한 카운터입니다.

xfs.transactions.*

메타 데이터 트랜잭션 수에 대한 카운터에는 빈 트랜잭션 수와 함께 동기 및 비동기 트랜잭션 수에 대한 수가 포함됩니다.

xfs.inode_ops.*

운영 체제가 inode 캐시에서 XFS inode를 찾는 횟수와 다른 결과를 나타내는 카운터입니다. 이러한 개수 캐시 적중, 캐시 누락 등입니다.

xfs.log.*

xfs.log_tail.*

XFS 파일 sytems를 통한 로그 버퍼 쓰기 수에 대한 카운터에는 디스크에 기록된 블록 수가 포함됩니다. 로그 플러시 및 고정 횟수도 메트릭입니다.

xfs.xstrat.*

XFS 플러시 deamon에서 플러시한 파일 데이터의 바이트 수와 연속 및 디스크의 연속되지 않은 공간에 플러시된 버퍼 수에 대한 카운터를 계산합니다.

xfs.attr.*

모든 XFS 파일 시스템에 대한 속성 get, set, remove, list 작업의 수를 계산합니다.

xfs.quota.*

XFS 파일 시스템에 대한 할당량 작업에 대한 지표에는 할당량 회수 수, 할당량 캐시 누락, 캐시 적중 및 할당량 데이터 회수에 대한 카운터가 포함됩니다.

xfs.buffer.*

XFS 버퍼 오브젝트에 대한 지표 범위. 카운터에는 페이지를 조회할 때 요청된 버퍼 호출 수, 성공적인 버퍼 잠금, 대기 버퍼 잠금, miss_locks, miss_retries 및 버퍼 적중이 포함됩니다.

xfs.btree.*

XFS btree 작업과 관련된 지표입니다.

xfs.control.reset

XFS 통계에 대한 지표 카운터를 재설정하는 데 사용되는 구성 지표입니다. 제어 메트릭은 pmstore 툴을 통해 전환됩니다.

15.5. XFS의 장치별 PCP 지표 그룹

다음 표에서는 XFS에 사용할 수 있는 장치당 PCP 지표 그룹에 대해 설명합니다.

Expand
표 15.2. XFS의 장치별 PCP 지표 그룹

메트릭 그룹

제공된 지표

xfs.perdev.*

읽기 및 쓰기 작업 수, 읽기 및 쓰기 바이트 수를 포함한 일반 XFS 메트릭입니다. inode가 플러시되는 횟수, 클러스터형 및 클러스터 실패 횟수에 대한 카운터와 함께

xfs.perdev.allocs.*

xfs.perdev.alloc_btree.*

파일 시스템에서 오브젝트 할당에 대한 메트릭 범위, 범위 및 블록 생성/해제 수를 포함합니다. 할당 트리 조회 및 btree에서 레코드 생성 및 삭제 확장과 비교합니다.

xfs.perdev.block_map.*

xfs.perdev.bmap_btree.*

메트릭에는 블록 맵 읽기/쓰기 및 블록 삭제 수, 삽입, 삭제 및 조회에 대한 범위 목록 작업이 포함됩니다. 또한 작업 카운터는 블록맵에서 비교, 조회, 삽입 및 삭제 작업을 수행합니다.

xfs.perdev.dir_ops.*

생성, 항목 삭제, "getdent" 작업 수를 위한 XFS 파일 시스템의 디렉터리 작업에 대한 카운터입니다.

xfs.perdev.transactions.*

메타 데이터 트랜잭션 수에 대한 카운터에는 빈 트랜잭션 수와 함께 동기 및 비동기 트랜잭션 수에 대한 수가 포함됩니다.

xfs.perdev.inode_ops.*

운영 체제가 inode 캐시에서 XFS inode를 찾는 횟수와 다른 결과를 나타내는 카운터입니다. 이러한 개수 캐시 적중, 캐시 누락 등입니다.

xfs.perdev.log.*

xfs.perdev.log_tail.*

XFS filesytems를 통해 로그 버퍼 쓰기 수에 대한 카운터에는 디스크에 기록된 블록 수가 포함됩니다. 로그 플러시 및 고정 횟수도 메트릭입니다.

xfs.perdev.xstrat.*

XFS 플러시 deamon에서 플러시한 파일 데이터의 바이트 수와 연속 및 디스크의 연속되지 않은 공간에 플러시된 버퍼 수에 대한 카운터를 계산합니다.

xfs.perdev.attr.*

모든 XFS 파일 시스템에 대한 속성 get, set, remove, list 작업의 수를 계산합니다.

xfs.perdev.quota.*

XFS 파일 시스템에 대한 할당량 작업에 대한 지표에는 할당량 회수 수, 할당량 캐시 누락, 캐시 적중 및 할당량 데이터 회수에 대한 카운터가 포함됩니다.

xfs.perdev.buffer.*

XFS 버퍼 오브젝트에 대한 지표 범위. 카운터에는 페이지를 조회할 때 요청된 버퍼 호출 수, 성공적인 버퍼 잠금, 대기 버퍼 잠금, miss_locks, miss_retries 및 버퍼 적중이 포함됩니다.

xfs.perdev.btree.*

XFS btree 작업과 관련된 지표입니다.

16장. 파일 시스템 확인 및 복구

RHEL은 파일 시스템을 확인하고 복구할 수 있는 파일 시스템 관리 유틸리티를 제공합니다. 이러한 유틸리티는 종종 fsck 툴이라고 합니다. 여기서 fsck파일 시스템 검사 의 단축된 버전입니다. 필요한 경우 이러한 유틸리티는 시스템 부팅 시 자동으로 실행됩니다. 그러나 필요한 경우 fsck 유틸리티를 수동으로 호출할 수도 있습니다.

중요

파일 시스템 검사기는 파일 시스템 전체에서 메타데이터 일관성만 보장합니다. 파일 시스템에 포함된 실제 데이터를 인식하지 못하고 데이터 복구 도구가 아닙니다.

16.1. 파일 시스템 검사가 필요한 시나리오

관련 fsck 도구를 사용하여 다음 중 하나라도 발생하는 경우 시스템을 확인할 수 있습니다.

  • 시스템 부팅 실패
  • 특정 디스크의 파일이 손상됨
  • 불일치로 인해 파일 시스템이 종료되거나 읽기 전용으로 변경됨
  • 파일 시스템의 파일에 액세스할 수 없습니다

파일 시스템 불일치는 하드웨어 오류, 스토리지 관리 오류 및 소프트웨어 버그를 포함하여 다양한 이유로 발생할 수 있습니다.

중요

파일 시스템 검사 도구는 하드웨어 문제를 복구할 수 없습니다. 복구가 성공적으로 작동하려면 파일 시스템을 완전히 읽고 쓸 수 있어야 합니다. 하드웨어 오류로 인해 파일 시스템이 손상된 경우 파일 시스템을 먼저 좋은 디스크(예: dd(8) 유틸리티)로 이동해야 합니다.

저널링 파일 시스템의 경우 부팅 시 일반적으로 필요한 모든 작업은 필요한 경우 저널을 재생하는 것이며 일반적으로 매우 짧은 작업입니다.

그러나 파일 시스템이 저널링 파일 시스템의 경우에도 파일 시스템 불일치 또는 손상이 발생하는 경우 파일 시스템 검사기를 사용하여 파일 시스템을 복구해야 합니다.

중요

/etc/fstab 의 여섯 번째 필드를 0 으로 설정하여 부팅 시 파일 시스템 검사를 비활성화할 수 있습니다. 그러나 부팅 시 fsck 에 문제가 발생하지 않는 한 Red Hat은 이러한 작업을 수행하지 않는 것이 좋습니다(예: 매우 큰 파일 시스템 또는 원격 파일 시스템).

자세한 내용은 시스템의 fstab(5), fsck(8)dd(8) 매뉴얼 페이지를 참조하십시오.

16.2. fsck를 실행할 때 발생할 수 있는 부작용

일반적으로 파일 시스템 검사 및 복구 툴을 실행하면 최소 일부 불일치를 자동으로 복구할 수 있습니다. 경우에 따라 다음과 같은 문제가 발생할 수 있습니다.

  • 심각하게 손상된 inode 또는 디렉터리는 복구할 수 없는 경우 삭제될 수 있습니다.
  • 파일 시스템에 대한 중요한 변경이 발생할 수 있습니다.

예기치 않은 변경이나 바람직하지 않은 변경이 영구적으로 이루어지지 않도록하려면 절차에 설명된 예방 조치를 따르십시오.

16.3. XFS의 오류 처리 메커니즘

이 섹션에서는 XFS가 파일 시스템에서 다양한 종류의 오류를 처리하는 방법을 설명합니다.

Unclean 마운트 해제

저널링은 파일 시스템에서 발생하는 메타데이터 변경 사항에 대한 트랜잭션 레코드를 유지 관리합니다.

시스템 충돌, 정전 또는 기타 비정형 마운트 해제 시 XFS는 저널(로그라고도 함)을 사용하여 파일 시스템을 복구합니다. XFS 파일 시스템을 마운트할 때 커널이 저널 복구를 수행합니다.

손상

이 컨텍스트에서 손상은 다음과 같이 인해 발생한 파일 시스템에 대한 오류를 의미합니다.

  • 하드웨어 오류
  • 스토리지 펌웨어, 장치 드라이버, 소프트웨어 스택 또는 파일 시스템 자체의 버그
  • 파일 시스템 외부의 것으로 파일 시스템의 일부를 덮어쓰는 문제

XFS가 파일 시스템 또는 파일 시스템 메타데이터의 손상을 감지하면 파일 시스템을 종료하고 시스템 로그에서 문제를 보고할 수 있습니다. /var 디렉토리를 호스팅하는 파일 시스템에서 손상이 발생한 경우 재부팅 후에는 이러한 로그를 사용할 수 없습니다.

다음은 XFS 손상을 보고하는 시스템 로그 항목의 추가 기능입니다.

+

# dmesg --notime | tail -15

XFS (loop0): Mounting V5 Filesystem
XFS (loop0): Metadata CRC error detected at xfs_agi_read_verify+0xcb/0xf0 [xfs], xfs_agi block 0x2
XFS (loop0): Unmount and run xfs_repair
XFS (loop0): First 128 bytes of corrupted metadata buffer:
00000000027b3b56: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000005f9abc7a: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000005b0aef35: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000000da9d2ded: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000001e265b07: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000006a40df69: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000000b272907: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000000e484aac5: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
XFS (loop0): metadata I/O error in "xfs_trans_read_buf_map" at daddr 0x2 len 1 error 74
XFS (loop0): xfs_imap_lookup: xfs_ialloc_read_agi() returned error -117, agno 0
XFS (loop0): Failed to read root inode 0x80, error 11

사용자 공간 유틸리티는 손상된 XFS 파일 시스템에 액세스하려고 할 때 일반적으로 Input/output 오류 메시지를 보고합니다. 로그가 손상된 XFS 파일 시스템을 마운트하면 마운트에 실패하고 다음 오류 메시지가 표시됩니다.

mount: /mount-point: mount(2) system call failed: Structure needs cleaning.

손상을 복구하려면 xfs_repair 유틸리티를 수동으로 사용해야 합니다. 자세한 내용은 시스템의 xfs_repair(8) 도움말 페이지를 참조하십시오.

16.4. xfs_repair로 XFS 파일 시스템 확인

xfs_repair 유틸리티를 사용하여 XFS 파일 시스템의 읽기 전용 확인을 수행합니다. 다른 파일 시스템 복구 유틸리티와 달리 xfs_repair 는 XFS 파일 시스템을 완전히 마운트 해제하지 않은 경우에도 부팅 시 실행되지 않습니다. 무해한 마운트 해제의 경우 XFS는 마운트 시 로그를 재생하여 일관된 파일 시스템을 보장합니다. xfs_repair 는 먼저 다시 마운트하지 않고 더티 로그로 XFS 파일 시스템을 복구할 수 없습니다.

참고

fsck.xfs 바이너리는 xfsprogs 패키지에 있지만 부팅 시 fsck.file 시스템 바이너리를 찾는 initscripts 만 충족할 수 있습니다. fsck.xfs 는 종료 코드 0으로 즉시 종료됩니다.

프로세스

  1. 파일 시스템을 마운트하고 마운트 해제하여 로그를 재생합니다.

    # mount file-system
    # umount file-system
    참고

    구조로 인해 마운트에 실패하면 정리 오류가 발생하여 로그가 손상되어 재생할 수 없습니다. 예행 실행에서는 디스크상의 손상을 검색하고 보고해야 합니다.

  2. xfs_repair 유틸리티를 사용하여 예행 실행을 수행하여 파일 시스템을 확인합니다. 모든 오류가 출력되고 파일 시스템을 수정하지 않고도 수행할 작업이 표시됩니다.

    # xfs_repair -n block-device
  3. 파일 시스템을 마운트합니다.

    # mount file-system

    자세한 내용은 시스템의 xfs_repair(8)xfs_metadump(8) 도움말 페이지를 참조하십시오.

16.5. xfs_repair로 XFS 파일 시스템 복구

이 절차에서는 xfs_repair 유틸리티를 사용하여 손상된 XFS 파일 시스템을 복구합니다.

프로세스

  1. xfs_metadump 유틸리티를 사용하여 진단 또는 테스트 목적으로 복구하기 전에 메타데이터 이미지를 생성합니다. 페어링 파일 시스템 메타데이터 이미지는 소프트웨어 버그로 인해 손상이 발생하는 경우 지원 조사에 유용할 수 있습니다. pre-repair 이미지에 있는 손상 패턴은 근본 원인 분석을 지원하는 데 도움이 될 수 있습니다.

    • xfs_metadump 디버깅 툴을 사용하여 XFS 파일 시스템의 메타데이터를 파일로 복사합니다. 생성된 메타dump 파일은 표준 압축 유틸리티를 사용하여 압축하여 대용량 메타 덤프 파일을 지원하도록 보내야 하는 경우 파일 크기를 줄일 수 있습니다.

      # xfs_metadump block-device metadump-file
  2. 파일 시스템을 다시 마운트하여 로그를 재생합니다.

    # mount file-system
    # umount file-system
  3. xfs_repair 유틸리티를 사용하여 마운트 해제된 파일 시스템을 복구합니다.

    • 마운트에 성공하면 추가 옵션이 필요하지 않습니다.

      # xfs_repair block-device
    • Cryostat로 마운트에 실패한 경우 정리 오류가 발생하여 로그가 손상되어 재생할 수 없습니다. L 옵션을사용하여 로그를지웁니다.

      주의

      이 명령을 사용하면 크래시 발생 시 모든 메타데이터 업데이트가 진행 중이므로 심각한 파일 시스템 손상 및 데이터 손실이 발생할 수 있습니다. 로그를 재생할 수 없는 경우에만 마지막 수단으로 사용해야 합니다.

      # xfs_repair -L block-device
  4. 파일 시스템을 마운트합니다.

    # mount file-system

    자세한 내용은 시스템의 xfs_repair(8) 도움말 페이지를 참조하십시오.

16.6. ext2,ext3 및 ext4의 오류 처리 메커니즘

ext2,ext3 및 ext4 파일 시스템은 e2fsck 유틸리티를 사용하여 파일 시스템 검사 및 복구를 수행합니다. 파일 이름 fsck.ext2,fsck.ext3, fsck.ext4e2fsck 유틸리티에 대한 하드 링크입니다. 이러한 바이너리는 부팅 시 자동으로 실행되며 확인 중인 파일 시스템과 파일 시스템의 상태에 따라 해당 동작이 다릅니다.

메타데이터 저널링 파일 시스템이 아닌 ext2 및 저널이 없는 ext4 파일 시스템에 대해 전체 파일 시스템 점검 및 복구가 호출됩니다.

메타데이터 저널링이 있는 ext3 및 ext4 파일 시스템의 경우 저널은 사용자 공간에서 재생되고 유틸리티가 종료됩니다. 저널 재생은 충돌 후 일관된 파일 시스템을 보장하기 때문에 기본 작업입니다.

마운트하는 동안 이러한 파일 시스템에 메타데이터 불일치가 발생하면 파일 시스템 수퍼 블록에 이 사실을 기록합니다. e2fsck 가 파일 시스템이 이러한 오류로 표시된 것을 발견하면 e2fsck 는 저널을 재생한 후 전체 검사를 수행합니다(있는 경우).

자세한 내용은 시스템의 fsck(8)e2fsck(8) 매뉴얼 페이지를 참조하십시오.

16.7. e2fsck를 사용하여 ext2,ext3 또는 ext4 파일 시스템 확인

이 절차에서는 e2fsck 유틸리티를 사용하여 ext2,ext3 또는 ext4 파일 시스템을 확인합니다.

프로세스

  1. 파일 시스템을 다시 마운트하여 로그를 재생합니다.

    # mount file-system
    # umount file-system
  2. 예행 실행을 수행하여 파일 시스템을 확인합니다.

    # e2fsck -n block-device
    참고

    모든 오류가 출력되고 파일 시스템을 수정하지 않고도 수행할 작업이 표시됩니다. 일관성 검사의 이후 단계는 복구 모드에서 실행되는 경우 초기 단계에서 수정된 불일치를 발견하므로 추가 오류를 출력할 수 있습니다.

    자세한 내용은 시스템의 e2image(8)e2fsck(8) 매뉴얼 페이지를 참조하십시오.

16.8. e2fsck를 사용하여 ext2,ext3 또는 ext4 파일 시스템 복구

이 절차에서는 e2fsck 유틸리티를 사용하여 손상된 ext2,ext3 또는 ext4 파일 시스템을 복구합니다.

프로세스

  1. 지원 조사를 위해 파일 시스템 이미지를 저장합니다. 페어링 파일 시스템 메타데이터 이미지는 소프트웨어 버그로 인해 손상이 발생하는 경우 지원 조사에 유용할 수 있습니다. pre-repair 이미지에 있는 손상 패턴은 근본 원인 분석을 지원하는 데 도움이 될 수 있습니다.

    참고

    심각하게 손상된 파일 시스템으로 인해 메타데이터 이미지 생성에 문제가 발생할 수 있습니다.

    • 테스트를 위해 이미지를 생성하는 경우 -r 옵션을 사용하여 파일 시스템 자체와 동일한 크기의 스파스 파일을 생성합니다. 그러면 e2fsck 가 결과 파일에서 직접 작동할 수 있습니다.

      # e2image -r block-device image-file
    • 보관하거나 진단을 위해 제공할 이미지를 생성하는 경우 -Q 옵션을 사용하여 전송에 적합한 더 컴팩트한 파일 형식을 생성합니다.

      # e2image -Q block-device image-file
  2. 파일 시스템을 다시 마운트하여 로그를 재생합니다.

    # mount file-system
    # umount file-system
  3. 파일 시스템을 자동으로 복구합니다. 사용자 개입이 필요한 경우 e2fsck 는 출력에 수정되지 않은 문제를 표시하고 종료 코드에 이 상태를 반영합니다.

    # e2fsck -p block-device

17장. 파일 시스템 마운트

시스템 관리자는 시스템에 파일 시스템을 마운트하여 데이터에 액세스할 수 있습니다.

17.1. Linux 마운트 메커니즘

Linux에서 파일 시스템을 마운트하는 기본 개념은 다음과 같습니다.

Linux, UNIX 및 유사한 운영 체제에서는 서로 다른 파티션 및 이동식 장치(예: CD, DVD 또는 USB 플래시 드라이브)의 파일 시스템을 디렉토리 트리의 특정 지점(마운트 지점)에 연결한 다음 다시 분리할 수 있습니다. 파일 시스템은 디렉터리에 마운트되지만 디렉터리의 원래 콘텐츠에 액세스할 수 없습니다.

Linux에서는 파일 시스템이 이미 연결된 디렉터리에 파일 시스템을 마운트하지 않습니다.

마운트 시 다음을 통해 장치를 식별할 수 있습니다.

  • 범용 고유 식별자(UUID): 예를 들어 UUID=34795a28-ca6d-4fd8-a347-73671d0c19cb
  • 볼륨 레이블: 예: LABEL=home
  • 비영구 블록 장치의 전체 경로: 예: /dev/sda3

모든 필수 정보 없이 mount 명령을 사용하여 파일 시스템을 마운트할 때 장치 이름, 대상 디렉터리 또는 파일 시스템 유형이 없는 경우 마운트 유틸리티에서 /etc/fstab 파일의 내용을 읽고 지정된 파일 시스템이 나열되어 있는지 확인합니다. /etc/fstab 파일에는 장치 이름 목록과 선택한 파일 시스템이 마운트되도록 설정된 디렉토리와 파일 시스템 유형 및 마운트 옵션이 포함되어 있습니다. 따라서 /etc/fstab 에 지정된 파일 시스템을 마운트할 때 다음 명령 구문으로 충분합니다.

  • 마운트 지점의 마운트:

    # mount directory
  • 블록 장치에 의해 마운트:

    # mount device

17.2. 현재 마운트된 파일 시스템 나열

findmnt 유틸리티를 사용하여 명령줄에서 현재 마운트된 모든 파일 시스템을 나열합니다.

프로세스

  • 마운트된 모든 파일 시스템을 나열하려면 findmnt 유틸리티를 사용합니다.

    $ findmnt
  • 나열된 파일 시스템을 특정 파일 시스템 유형으로만 제한하려면 --types 옵션을 추가합니다.

    $ findmnt --types fs-type

    예를 들어 다음은 XFS 파일 시스템만 나열하는 예입니다.

    $ findmnt --types xfs
    
    TARGET  SOURCE                                                FSTYPE OPTIONS
    /       /dev/mapper/luks-5564ed00-6aac-4406-bfb4-c59bf5de48b5 xfs    rw,relatime
    ├─/boot /dev/sda1                                             xfs    rw,relatime
    └─/home /dev/mapper/luks-9d185660-7537-414d-b727-d92ea036051e xfs    rw,relatime

17.3. 마운트를 사용하여 파일 시스템 마운트

mount 유틸리티를 사용하여 파일 시스템을 마운트합니다.

사전 요구 사항

  • 선택한 마운트 지점에 파일 시스템이 이미 마운트되어 있지 않은지 확인합니다.

    $ findmnt mount-point

프로세스

  1. 특정 파일 시스템을 연결하려면 마운트 유틸리티를 사용합니다.

    # mount device mount-point

    예를 들어 UUID로 식별된 로컬 XFS 파일 시스템을 마운트하려면 다음을 수행합니다.

    # mount UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b /mnt/data
  2. mount 에서 파일 시스템 유형을 자동으로 인식할 수 없는 경우 --types 옵션을 사용하여 지정합니다.

    # mount --types type device mount-point

    예를 들어 원격 NFS 파일 시스템을 마운트하려면 다음을 수행합니다.

    # mount --types nfs4 host:/remote-export /mnt/nfs

17.4. 마운트 지점 이동

마운트 유틸리티를 사용하여 마운트된 파일 시스템의 마운트 지점을 다른 디렉토리로 변경합니다.

프로세스

  1. 파일 시스템이 마운트된 디렉터리를 변경하려면 다음을 수행합니다.

    # mount --move old-directory new-directory

    예를 들어 /mnt/userdirs/ 디렉터리에 마운트된 파일 시스템을 /home/ 마운트 지점으로 이동하려면 다음을 수행합니다.

    # mount --move /mnt/userdirs /home
  2. 파일 시스템이 예상대로 이동되었는지 확인합니다.

    $ findmnt
    $ ls old-directory
    $ ls new-directory

17.5. umount를 사용하여 파일 시스템 마운트 해제

umount 유틸리티를 사용하여 파일 시스템을 마운트 해제합니다.

프로세스

  1. 다음 명령 중 하나를 사용하여 파일 시스템을 마운트 해제하십시오.

    • 마운트 지점별:

      # umount mount-point
    • 장치별:

      # umount device

    명령이 다음과 유사한 오류와 함께 실패하면 프로세스에서 리소스를 사용하고 있기 때문에 파일 시스템이 사용 중임을 의미합니다.

    umount: /run/media/user/FlashDrive: target is busy.
  2. 파일 시스템이 사용 중인 경우 fuser 유틸리티를 사용하여 액세스 중인 프로세스를 확인합니다. 예를 들면 다음과 같습니다.

    $ fuser --mount /run/media/user/FlashDrive /run/media/user/FlashDrive: 18351

    나중에 파일 시스템을 사용하여 프로세스를 중지하고 다시 마운트 해제하십시오.

17.6. 웹 콘솔에서 파일 시스템 마운트 및 마운트 해제

RHEL 시스템에서 파티션을 사용할 수 있으려면 파티션에 파일 시스템을 장치로 마운트해야 합니다.

참고

파일 시스템도 마운트 해제할 수 있으며 RHEL 시스템은 이를 사용하지 않습니다. 파일 시스템을 마운트 해제하면 장치를 삭제, 제거 또는 다시 포맷할 수 있습니다.

사전 요구 사항

  • cockpit-storaged 패키지가 시스템에 설치됩니다.
  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • 파일 시스템을 마운트 해제하려면 시스템에 파티션에 저장된 파일, 서비스 또는 애플리케이션을 사용하지 않는지 확인합니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지 탭을 클릭합니다.
  3. 스토리지 테이블의 파티션을 삭제할 볼륨을 선택합니다.
  4. GPT 파티션 섹션에서 마운트 또는 마운트 해제하려는 파일 시스템이 있는 파티션 옆에 있는 메뉴 버튼을 클릭합니다.
  5. 마운트 또는 마운트 해제를 클릭합니다.

17.7. 일반적인 마운트 옵션

다음 표에는 마운트 유틸리티의 가장 일반적인 옵션이 나열되어 있습니다. 다음 구문을 사용하여 이러한 마운트 옵션을 적용할 수 있습니다.

# mount --options option1,option2,option3 device mount-point
Expand
표 17.1. 일반적인 마운트 옵션
옵션설명

async

파일 시스템에서 비동기 입력 및 출력 작업을 활성화합니다.

auto

mount -a 명령을 사용하여 파일 시스템을 자동으로 마운트할 수 있습니다.

defaults

async,auto,dev,exec,nouser,rw,suid 옵션의 별칭을 제공합니다.

exec

특정 파일 시스템에서 바이너리 파일을 실행할 수 있습니다.

loop

이미지를 루프 장치로 마운트합니다.

noauto

기본 동작은 mount -a 명령을 사용하여 파일 시스템의 자동 마운트를 비활성화합니다.

noexec

특정 파일 시스템에서 바이너리 파일 실행을 허용하지 않습니다.

nouser

파일 시스템을 마운트하고 마운트 해제하기 위해 일반 사용자(즉, root 이외의)를 허용하지 않습니다.

remount

이미 마운트된 경우 파일 시스템을 다시 마운트합니다.

ro

읽기 전용 파일 시스템을 마운트합니다.

rw

읽기 및 쓰기용으로 파일 시스템을 마운트합니다.

user

일반 사용자(즉, root 이외의)가 파일 시스템을 마운트하고 마운트 해제할 수 있습니다.

18장. 여러 마운트 지점에 마운트 공유

시스템 관리자는 마운트 지점을 복제하여 여러 디렉토리에서 파일 시스템에 액세스할 수 있도록 할 수 있습니다.

18.1. 공유 마운트 유형

사용할 수 있는 공유 마운트 유형에는 여러 가지가 있습니다. 이러한 주요 차이점은 다른 파일 시스템이 공유 마운트 지점 중 하나에 마운트될 때 작동하는 방식에 있습니다. 이러한 공유 마운트는 공유 하위 트리 기능을 사용하여 작동합니다.

다음 마운트 유형을 사용할 수 있습니다.

비공개

이 유형은 전파 이벤트를 수신하거나 전달하지 않습니다.

중복 또는 원래 마운트 지점 아래에 다른 파일 시스템을 마운트하면 다른 파일 시스템이 반영되지 않습니다.

공유됨

이 유형은 지정된 마운트 지점의 정확한 복제본을 생성합니다.

마운트 지점이 공유 마운트로 표시되면 원래 마운트 지점 내의 모든 마운트가 반영되며 그 반대의 경우도 마찬가지입니다.

루트 파일 시스템의 기본 마운트 유형입니다.

slave

이 유형은 지정된 마운트 지점의 제한된 중복을 생성합니다.

마운트 지점이 슬레이브 마운트로 표시되면 원래 마운트 지점 내의 모든 마운트가 반영되지만 슬레이브 마운트 내의 마운트는 원래 마운트에 반영되지 않습니다.

바인딩할 수 없음
이 유형은 지정된 마운트 지점이 중복되지 않도록 합니다.

18.2. 개인 마운트 지점 중복 생성

마운트 지점을 개인 마운트로 복제합니다. 나중에 중복 또는 원래 마운트 지점 아래에 마운트한 파일 시스템은 다른 마운트 지점에 반영되지 않습니다.

프로세스

  1. 원래 마운트 지점에서 가상 파일 시스템(VFS) 노드를 생성합니다.

    # mount --bind original-dir original-dir
  2. 원래 마운트 지점을 비공개로 표시합니다.

    # mount --make-private original-dir

    또는 선택한 마운트 지점과 그 아래의 모든 마운트 지점의 마운트 유형을 변경하려면 --make-private 대신 --make-rprivate 옵션을 사용합니다.

  3. 중복을 생성합니다.

    # mount --bind original-dir duplicate-dir

예 18.1. 개인 마운트 지점으로 /media를 /mnt로 중복

  1. /media 디렉토리에서 VFS 노드를 생성합니다.

    # mount --bind /media /media
  2. /media 디렉터리를 비공개로 표시합니다.

    # mount --make-private /media
  3. /mnt 에서 중복을 생성합니다.

    # mount --bind /media /mnt
  4. 이제 /media/mnt 가 콘텐츠를 공유하지만 /media 내의 마운트는 /mnt 에 표시되지 않는지 확인할 수 있습니다. 예를 들어 CD-ROM 드라이브에 비어 있지 않은 미디어가 포함되어 있고 /media/cdrom/ 디렉터리가 있는 경우 다음을 사용합니다.

    # mount /dev/cdrom /media/cdrom
    # ls /media/cdrom
    EFI  GPL  isolinux  LiveOS
    # ls /mnt/cdrom
    #
  5. /mnt 디렉터리에 마운트된 파일 시스템이 /media 에 반영되지 않았는지도 확인할 수 있습니다. 예를 들어 /dev/sdc1 장치를 사용하는 비어 있지 않은 USB 플래시 드라이브가 연결되고 /mnt/flashdisk/ 디렉터리가 있는 경우 다음을 사용합니다.

    # mount /dev/sdc1 /mnt/flashdisk
    # ls /media/flashdisk
    # ls /mnt/flashdisk
    en-US  publican.cfg

18.3. 공유 마운트 지점 중복 생성

마운트 지점을 공유 마운트로 복제합니다. 나중에 원래 디렉토리 또는 중복으로 마운트한 파일 시스템은 항상 다른 디렉터리에 반영됩니다.

프로세스

  1. 원래 마운트 지점에서 가상 파일 시스템(VFS) 노드를 생성합니다.

    # mount --bind original-dir original-dir
  2. 원래 마운트 지점을 공유로 표시합니다.

    # mount --make-shared original-dir

    또는 선택한 마운트 지점과 그 아래의 모든 마운트 지점의 마운트 유형을 변경하려면 --make-shared 대신 --make-rshared 옵션을 사용합니다.

  3. 중복을 생성합니다.

    # mount --bind original-dir duplicate-dir

예 18.2. 공유 마운트 지점으로 /media를 /mnt로 중복

/media/mnt 디렉터리가 동일한 콘텐츠를 공유하도록 하려면 다음을 수행합니다.

  1. /media 디렉토리에서 VFS 노드를 생성합니다.

    # mount --bind /media /media
  2. /media 디렉터리를 공유로 표시합니다.

    # mount --make-shared /media
  3. /mnt 에서 중복을 생성합니다.

    # mount --bind /media /mnt
  4. 이제 /media 내의 마운트가 /mnt 에도 표시되는지 확인할 수 있습니다. 예를 들어 CD-ROM 드라이브에 비어 있지 않은 미디어가 포함되어 있고 /media/cdrom/ 디렉터리가 있는 경우 다음을 사용합니다.

    # mount /dev/cdrom /media/cdrom
    # ls /media/cdrom
    EFI  GPL  isolinux  LiveOS
    # ls /mnt/cdrom
    EFI  GPL  isolinux  LiveOS
  5. 마찬가지로 /mnt 디렉터리에 마운트된 모든 파일 시스템이 /media 에 반영되었는지 확인할 수 있습니다. 예를 들어 /dev/sdc1 장치를 사용하는 비어 있지 않은 USB 플래시 드라이브가 연결되고 /mnt/flashdisk/ 디렉터리가 있는 경우 다음을 사용합니다.

    # mount /dev/sdc1 /mnt/flashdisk
    # ls /media/flashdisk
    en-US  publican.cfg
    # ls /mnt/flashdisk
    en-US  publican.cfg

18.4. 슬레이브 마운트 지점 복제 생성

마운트 지점을 슬레이브 마운트 유형으로 복제합니다. 나중에 원래 마운트 지점 아래에 마운트한 파일 시스템은 중복에 반영되지만 다른 방법은 반영되지 않습니다.

프로세스

  1. 원래 마운트 지점에서 가상 파일 시스템(VFS) 노드를 생성합니다.

    # mount --bind original-dir original-dir
  2. 원래 마운트 지점을 공유로 표시합니다.

    # mount --make-shared original-dir

    또는 선택한 마운트 지점과 그 아래의 모든 마운트 지점의 마운트 유형을 변경하려면 --make-shared 대신 --make-rshared 옵션을 사용합니다.

  3. 중복을 생성하고 슬레이브 유형으로 표시합니다.

    # mount --bind original-dir duplicate-dir
    # mount --make-slave duplicate-dir

예 18.3. 슬레이브 마운트 지점으로 /media를 /mnt로 분할

이 예제에서는 /media 디렉터리의 콘텐츠를 /mnt 에 표시할 수 있지만 /mnt 디렉터리에 마운트가 없는 경우 /media 에 반영되는 방법을 보여줍니다.

  1. /media 디렉토리에서 VFS 노드를 생성합니다.

    # mount --bind /media /media
  2. /media 디렉터리를 공유로 표시합니다.

    # mount --make-shared /media
  3. /mnt 에서 중복을 만들고 슬레이브 로 표시합니다.

    # mount --bind /media /mnt
    # mount --make-slave /mnt
  4. /media 내의 마운트도 /mnt 에 표시되는지 확인합니다. 예를 들어 CD-ROM 드라이브에 비어 있지 않은 미디어가 포함되어 있고 /media/cdrom/ 디렉터리가 있는 경우 다음을 사용합니다.

    # mount /dev/cdrom /media/cdrom
    # ls /media/cdrom
    EFI  GPL  isolinux  LiveOS
    # ls /mnt/cdrom
    EFI  GPL  isolinux  LiveOS
  5. 또한 /mnt 디렉터리에 마운트된 파일 시스템이 /media 에 반영되지 않았는지 확인합니다. 예를 들어 /dev/sdc1 장치를 사용하는 비어 있지 않은 USB 플래시 드라이브가 연결되고 /mnt/flashdisk/ 디렉터리가 있는 경우 다음을 사용합니다.

    # mount /dev/sdc1 /mnt/flashdisk
    # ls /media/flashdisk
    # ls /mnt/flashdisk
    en-US  publican.cfg

18.5. 마운트 지점이 중복되지 않도록 방지

마운트 지점을 바인딩할 수 없음으로 표시하여 다른 마운트 지점에서 복제할 수 없습니다.

프로세스

  • 마운트 지점의 유형을 바인딩할 수 없는 마운트로 변경하려면 다음을 사용합니다.

    # mount --bind mount-point mount-point
    # mount --make-unbindable mount-point

    또는 선택한 마운트 지점과 그 아래의 모든 마운트 지점의 마운트 유형을 변경하려면 --make-unbindable 대신 --make-runbindable 옵션을 사용합니다.

    이후 이 마운트를 복제하려고 하면 다음 오류와 함께 실패합니다.

    # mount --bind mount-point duplicate-dir
    
    mount: wrong fs type, bad option, bad superblock on mount-point,
    missing codepage or helper program, or other error
    In some cases useful info is found in syslog - try
    dmesg | tail  or so

예 18.4. /media가 중복되지 않도록 방지

  • /media 디렉터리가 공유되지 않도록 하려면 다음을 사용합니다.

    # mount --bind /media /media
    # mount --make-unbindable /media

19장. 영구적으로 파일 시스템 마운트

시스템 관리자는 파일 시스템을 영구적으로 마운트하여 불가능한 스토리지를 구성할 수 있습니다.

19.1. /etc/fstab 파일

/etc/fstab 구성 파일을 사용하여 파일 시스템의 영구 마운트 지점을 제어합니다. /etc/fstab 파일의 각 행은 파일 시스템의 마운트 지점을 정의합니다.

공백으로 구분된 다음 필드가 포함됩니다.

  • 영구 속성 또는 /dev 디렉터리의 경로로 식별되는 블록 장치입니다.
  • 장치가 마운트될 디렉터리입니다.
  • 장치의 파일 시스템입니다.
  • 기본 옵션을 사용하여 부팅 시 파티션을 마운트하는 기본 옵션이 포함된 파일 시스템의 마운트 옵션입니다. mount 옵션 필드도 x- systemd. 옵션 형식의 systemd 마운트 장치옵션을 인식합니다.
  • dump 유틸리티의 백업 옵션입니다.
  • fsck 유틸리티에 대한 순서를 확인합니다.
참고

systemd-fstab-generator 는 항목을 /etc/fstab 파일에서 systemd-mount 단위로 동적으로 변환합니다. systemd -mount 장치가 마스킹되지 않는 한 수동 활성화 중에 systemd /fstab 의 LVM 볼륨을 자동으로 마운트합니다.

예 19.1. /etc/fstab/boot 파일 시스템

Expand
블록 장치마운트 지점파일 시스템옵션Backup확인

UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b

/boot

xfs

defaults

0

0

systemd 서비스는 /etc/fstab 의 항목에서 마운트 단위를 자동으로 생성합니다.

자세한 내용은 시스템의 fstab(5)systemd.mount(5) 도움말 페이지를 참조하십시오.

19.2. /etc/fstab에 파일 시스템 추가

/etc/fstab 구성 파일에서 파일 시스템의 영구 마운트 지점을 구성합니다.

프로세스

  1. 파일 시스템의 UUID 특성을 확인합니다.

    $ lsblk --fs storage-device

    예를 들어 파티션의 UUID를 확인합니다.

    $ lsblk --fs /dev/sda1
    
    NAME FSTYPE LABEL UUID                                 MOUNTPOINT
    sda1 xfs    Boot  ea74bbec-536d-490c-b8d9-5b40bbd7545b /boot
  2. 마운트 지점 디렉터리가 없는 경우 이를 생성합니다.

    # mkdir --parents mount-point
  3. root 로서 /etc/fstab 파일을 편집하고 UUID로 식별되는 파일 시스템의 행을 추가합니다.

    예를 들어 다음은 /etc/fstab의 /boot 마운트 지점입니다.

    UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b /boot xfs defaults 0 0
  4. 시스템이 새 구성을 등록하도록 마운트 단위를 다시 생성합니다.

    # systemctl daemon-reload
  5. 파일 시스템을 마운트하여 구성이 작동하는지 확인합니다.

    # mount mount-point

20장. 필요에 따라 파일 시스템 마운트

시스템 관리자는 필요에 따라 자동으로 마운트되도록 NFS와 같은 파일 시스템을 구성할 수 있습니다.

20.1. the Cryostat 서비스

Cryo stat 서비스는 파일 시스템을 자동으로 마운트 및 마운트 해제하여(필요에 따라) 시스템 리소스를 저장할 수 있습니다. NFS, AFS, SMBFS, CIFS 및 로컬 파일 시스템과 같은 파일 시스템을 마운트하는 데 사용할 수 있습니다.

/etc/fstab 구성을 사용하여 영구 마운트의 한 가지 단점은 사용자가 마운트된 파일 시스템에 액세스하는 방법에 관계없이 마운트된 파일 시스템을 유지하기 위해 리소스를 전용으로 설정해야 한다는 것입니다. 예를 들어 시스템이 여러 시스템에 NFS 마운트를 한 번에 유지 관리하는 경우 시스템 성능에 영향을 미칠 수 있습니다.

/etc/fstab 의 대안은 커널 기반 Cryostat 서비스를 사용하는 것입니다. 다음으로 구성됩니다.

  • 파일 시스템을 구현하는 커널 모듈입니다.
  • 다른 모든 기능을 수행하는 사용자 공간 서비스입니다.

자세한 내용은 시스템의 Cryo stat(8) 도움말 페이지를 참조하십시오.

20.2. Cryostat 구성 파일

이 섹션에서는 Cryostat 서비스에서 사용하는 구성 파일의 사용법 및 구문에 대해 설명합니다.

마스터 맵 파일

Cryo stat 서비스는 /etc/auto.master (마스터 맵)를 기본 기본 구성 파일로 사용합니다. 이는 NSS(Name Service Switch) 메커니즘과 함께 /etc/autofs.conf 구성 파일에서 Cryostat 구성을 사용하여 지원되는 다른 네트워크 소스 및 이름을 사용하도록 변경할 수 있습니다.

모든 온디맨드 마운트 지점은 마스터 맵에서 구성해야 합니다. 마운트 지점, 호스트 이름, 내보낸 디렉토리 및 옵션은 각 호스트에 대해 수동으로 구성하는 대신 파일 집합(또는 기타 지원되는 네트워크 소스)에 모두 지정할 수 있습니다.

마스터 맵 파일에는 Cryostat에서 제어하는 마운트 지점과 해당 구성 파일 또는 network 소스가 map으로 표시됩니다. 마스터 맵의 형식은 다음과 같습니다.

mount-point  map-name  options

이 형식으로 사용되는 변수는 다음과 같습니다.

mount-point
Cryo stat 마운트 지점(예: /mnt/data )입니다.
map-file
마운트 지점 목록과 해당 마운트 지점을 마운트해야 하는 파일 시스템 위치가 포함된 맵 소스 파일입니다.
옵션
제공된 경우 해당 맵에 옵션이 지정되지 않은 경우 해당 맵의 모든 항목에 적용됩니다.

예 20.1. /etc/auto.master 파일

다음은 /etc/auto.master 파일의 샘플 행입니다.

/mnt/data  /etc/auto.data

파일 맵

맵 파일은 개별 온디맨드 마운트 지점의 속성을 구성합니다.

Cryostat는 디렉터리가 없는 경우 디렉터리를 생성합니다. Cryostat를 시작하기 전에 디렉터리가 있는 경우 Cryostat는 종료 시 해당 디렉토리를 제거하지 않습니다. 시간 초과가 지정되면 시간 초과 기간에 디렉터리에 액세스하지 않으면 디렉터리가 자동으로 마운트 해제됩니다.

지도의 일반적인 형식은 마스터 맵과 유사합니다. 그러나 options 필드는 마스터 맵에서와 같이 항목의 끝에 대신 마운트 지점과 위치 사이에 표시됩니다.

mount-point  options  location

이 형식으로 사용되는 변수는 다음과 같습니다.

mount-point
이는 Cryostat 마운트 지점을 나타냅니다. 간접 마운트의 단일 디렉터리 이름 또는 직접 마운트를 위한 마운트 지점의 전체 경로일 수 있습니다. 각 직접 및 간접 맵 항목 키(마운트 지점) 뒤에 공백으로 구분된 오프셋 디렉토리 목록( /로 시작하는 하위 디렉토리 이름)을 추가하여 이를 다중 마운트 항목이라고 합니다.
옵션
제공된 경우 구성 항목 append_optionsno 로 설정된 경우 마스터 맵 옵션 대신 이러한 옵션이 마스터 맵 항목 옵션에 추가됩니다.
위치
이는 로컬 파일 시스템 경로( Sun map format escape character : /로 시작하는 맵 이름), NFS 파일 시스템 또는 기타 유효한 파일 시스템 위치와 같은 파일 시스템 위치를 나타냅니다.

예 20.2. 맵 파일

다음은 맵 파일의 샘플입니다(예: /etc/auto.misc ). 이 맵 파일을 /misc 아래에 마운트하려면 마스터 맵 파일 /etc/auto.master:에 추가하십시오.

/misc		/etc/auto.misc

/etc/auto.misc 파일에는 다음이 포함됩니다.

payroll  -fstype=nfs4  personnel:/exports/payroll
sales    -fstype=xfs   :/dev/hda4

맵 파일의 첫 번째 열은 Cryostat 마운트 지점: salesstaff 라는 서버의 급여를 나타냅니다. 두 번째 열은 Cryostat 마운트 옵션을 나타냅니다. 세 번째 열은 마운트의 소스를 나타냅니다.

지정된 구성에 따라 / home / payroll 및 /home /sales 가 됩니다. -fstype= 옵션은 종종 생략되며, 시스템 기본값이 NFS 마운트용 NFSv4인 경우 NFSv4 마운트를 포함하여 파일 시스템이 NFS인 경우 필요하지 않습니다.

지정된 구성을 사용하여 프로세스에서 /home/payroll/2006/July.sxc 와 같은 unmounted 디렉토리에 액세스해야 하는 경우 Cryostat 서비스는 디렉터리를 자동으로 마운트합니다.

amd 맵 형식

Cryo stat 서비스는 amd 형식의 맵 구성도 인식합니다. 이는 Red Hat Enterprise Linux에서 제거된 am-utils 서비스에 대해 작성된 기존 Cryostat 구성을 재사용하려는 경우에 유용합니다.

그러나 Red Hat은 이전 섹션에서 설명하는 간단한 Cryostat 형식을 사용하는 것이 좋습니다.

자세한 내용은 시스템 * /usr/share/doc/autofs/README .amd-maps 파일의 * * Cryostat(5) , Cryostat.conf (5) 및 auto.master(5) 도움말 페이지를 참조하십시오.

20.3. Cryostat 마운트 지점 구성

Cryostat 서비스를 사용하여 온디맨드 마운트 지점을 구성합니다.

사전 요구 사항

  • Cryostat 패키지를 설치합니다.

    # dnf install autofs
  • Cryostat 서비스를 시작하고 활성화합니다.

    # systemctl enable --now autofs

프로세스

  1. /etc/auto.식별자 에 있는 온디맨드 마운트 지점의 맵 파일을 만듭니다. ID 를 마운트 지점을 식별하는 이름으로 교체합니다.
  2. 맵 파일에서 The Cryostat 구성 파일 섹션에 설명된 대로 마운트 지점, 옵션 및 위치 필드를 입력합니다.
  3. The Cryostat 구성 파일 섹션에 설명된 대로 마스터 맵 파일에 맵 파일을 등록합니다.
  4. 새로 구성된 Cryostat 마운트를 관리할 수 있도록 서비스가 구성을 다시 읽을 수 있도록 허용합니다.

    # systemctl reload autofs.service
  5. 온디맨드 디렉터리의 콘텐츠에 액세스해 보십시오.

    # ls automounted-directory

20.4. map을 저장하고 검색하는 데 ldap를 사용하도록 Cryostat 구성

LDAP 디렉터리에 저장된 map을 검색하도록 Cryostat 서비스를 구성할 수 있습니다.

사전 요구 사항

  • Cryo statopenldap 패키지가 설치됩니다.
  • Kerberos 가능 서비스가 보안 인증을 위해 실행 중입니다.

프로세스

  1. LDAP 액세스를 구성하려면 /etc/openldap/ldap.conf 파일을 수정합니다. BASEURI 옵션이 설정되어 있는지 확인합니다.
  2. /etc/autofs.conf 파일에서 audit map의 LDAP 스키마를 구성합니다. 기본적으로 Cryo stat 는 구성 파일에 지정된 순서대로 일반적으로 사용되는 스키마를 확인합니다.

    #
    # Define the LDAP schema to used for lookups
    #
    # If no schema is set autofs will check each of the schemas
    # below in the order given to try and locate an appropriate
    # basdn for lookups. If you want to minimize the number of
    # queries to the server set the values here.
    #
    #map_object_class = nisMap
    #entry_object_class = nisObject
    #map_attribute = nisMapName
    #entry_attribute = cn
    #value_attribute = nisMapEntry
    #
    # Other common LDAP naming
    #
    #map_object_class = automountMap
    #entry_object_class = automount
    #map_attribute = ou
    #entry_attribute = cn
    #value_attribute = automountInformation
    #
    #map_object_class = automountMap
    #entry_object_class = automount
    #map_attribute = automountMapName
    #entry_attribute = automountKey
    #value_attribute = automountInformation
    참고

    이러한 값을 명시적으로 설정하여 LDAP 쿼리를 경계적으로 줄일 수도 있습니다. /etc/autofs.conf 파일에서 하위 및 대문자로 속성을 작성할 수 있습니다.

  3. LDAP에 map을 저장하기 위한 최근 설정된 스키마는 rfc2307bis 초안에 설명되어 있습니다. 이 스키마를 사용하려면 주석을 제거하고 ldap_schema 옵션에 적절한 값을 설정하여 /etc/autofs.conf 파일에서 구성합니다. 예를 들어 비표준 스키마를 사용하거나 기본 동작을 재정의해야 하는 경우 /etc/autofs.conf 파일에 관련 스키마 속성을 지정할 수 있습니다. 다음 값은 rfc2307bis 초안과 같이 일반적으로 사용되는 스키마 설정에 해당합니다.

    default_map_object_class = automountMap
    default_entry_object_class = automount
    default_map_attribute = automountMapName
    default_entry_attribute = automountKey
    default_value_atrribute = automountInformation

    Cryostat는 표준 스키마를 자동으로 감지하고 이러한 설정을 지정하는 것은 일반적으로 사용자 지정 또는 혼합-schema 환경에서만 필요합니다. 사용하는 경우 하나의 전체 스키마 정의 세트만 활성화되어야 합니다.

  4. 구성에서 사용자 지정 스키마를 지정하도록 선택하는 경우 스키마 관련 항목의 전체 집합만 활성화되어 있는지 확인합니다. 충돌을 피하기 위해 다른 하나를 주석 처리하십시오. rfc2307bis 스키마에서 Cryo statKey 속성은 이전 rfc2307 스키마에서 사용된 cn 속성을 대체합니다. 다음은 해당 LDAP Data Interchange Format(LDIF) 구성의 예입니다.

    # auto.master, example.com
    dn: automountMapName=auto.master,dc=example,dc=com
    objectClass: top
    objectClass: automountMap
    automountMapName: auto.master
    
    # /home, auto.master, example.com
    dn: automountMapName=auto.master,dc=example,dc=com
    objectClass: automount
    automountKey: /home
    automountInformation: auto.home
    
    # auto.home, example.com
    dn: automountMapName=auto.home,dc=example,dc=com
    objectClass: automountMap
    automountMapName: auto.home
    
    # foo, auto.home, example.com
    dn: automountKey=foo,automountMapName=auto.home,dc=example,dc=com
    objectClass: automount
    automountKey: foo
    automountInformation: filer.example.com:/export/foo
    
    # /, auto.home, example.com
    dn: automountKey=/,automountMapName=auto.home,dc=example,dc=com
    objectClass: automount
    automountKey: /
    automountInformation: filer.example.com:/export/&
  5. LDAP 서버의 인증을 허용하려면 /etc/autofs_ldap_auth.conf 파일을 편집합니다.

    1. authrequired 를 yes로 변경합니다.
    2. 주체를 LDAP 서버의 Kerberos 호스트 주체로 설정합니다. host/FQDN@REALM. 사용자 이름은 GSS 클라이언트 인증의 일부로 디렉터리에 연결하는 데 사용됩니다.

      <autofs_ldap_sasl_conf
           usetls="no"
           tlsrequired="no"
           authrequired="yes"
           authtype="GSSAPI"
      clientprinc="host/server.example.com@EXAMPLE.COM"/>
           secret="<ldap password>"/>

      호스트 주체에 대한 자세한 내용은 IdM에서 정식 DNS 호스트 이름 사용을 참조하십시오. klist -k 를 실행하여 정확한 호스트 주체 정보를 가져올 수도 있습니다.

20.5. Cryostat 서비스를 사용하여 NFS 서버 사용자 홈 디렉터리 만들기

사용자 홈 디렉터리를 자동으로 마운트하도록 Cryostat 서비스를 구성합니다.

사전 요구 사항

  • Cryo stat 패키지가 설치되어 있어야 합니다.
  • Cryo stat 서비스가 활성화되어 실행 중입니다.

프로세스

  1. 사용자 홈 디렉토리를 마운트하려는 서버에서 /etc/auto.master 파일을 편집하여 마운트 지점 및 로컬 audit 맵을 정의하고 다음을 추가합니다.

    /home /etc/auto.home
  2. 서버에 사용자 홈 디렉토리를 마운트하고 다음을 추가합니다.

    * -fstype=nfs,rw,sync host.example.com:/home/&

    기본적으로 nfs 이므로 fstype 매개변수를 건너뛸 수 있습니다. 자세한 내용은 시스템의 Cryo stat(5) 도움말 페이지를 참조하십시오.

  3. Cryostat 서비스를 다시 로드합니다.

    # systemctl reload autofs

20.6. Cryostat 사이트 구성 파일 덮어쓰기 또는 보강

클라이언트 시스템의 특정 마운트 지점에 대한 사이트 기본값을 재정의하는 것이 유용한 경우가 있습니다.

초기 조건:

예를 들어 다음 조건을 고려하십시오.

  • nsswitch 는 map을 확인할 서비스를 지시합니다.
  • 확장 또는 추가하려는 맵의 이름은 auto.home 입니다.
  • auto.home 맵은 ldap 에 저장되고 /etc/nsswitch.conf 에는 다음 지시문이 있습니다.

    automount: files ldap
  • /etc/auto.master 맵 파일에는 다음이 포함됩니다.

    /home /etc/auto.home
  • 맵 /etc/auto.home의 파일에는 다음이 포함됩니다.

    *  fileserver.example.com:/export/home/&

더 많은 맵 포함 사용:

nsswitch 를 통해 중앙 집중식으로 관리되는 auto.home 맵을 읽으려면 로컬 /etc/auto.home 파일에서 와일드카드 맵 항목 * fileserver.example.com:/export/home/& amp;을 제거하고 +auto.home 으로 바꿉니다.

참고

또한 지도 포함은 로컬 맵에서만 사용할 수 있습니다. Cryo stat 가 더하기 맵 포함을 통해 파일 소스를 접할 때 포함된 맵 이름이 현재 읽고 있는 맵과 동일한 경우 건너뜁니다. 이 경우 둘 다 auto.home 이므로 Cryostat는 nsswitch.conf 에 정의된 다음 소스로 진행됩니다. 이 소스는 ldap 입니다. 맵에 와일드카드 맵 항목이 있는 경우 찾아보기 모드가 활성화된 경우에도 디렉터리 목록에 영향을 미치지 않습니다. 이는 lookup이 완료될 때 와일드카드가 일치할 수 있는 와일드카드를 알 수 없기 때문입니다. 따라서 사전에 마운트 지점 디렉터리를 생성할 수 없습니다.

항목 덮어쓰기 또는 추가

로컬에서 특정 항목을 덮어쓰거나 추가하려면 /etc/auto.home+auto.home 행 앞에 배치합니다. 예를 들어 /etc/auto.home 파일은 다음과 같습니다.

mydir  someserver:/export/mydir

+auto.home
참고

/home을 나열할 때 mydir과 같은 로컬 항목을 표시하려면 /etc/autofs.conf에서 browse_mode = yes를 설정하여 찾아보기 모드를 활성화합니다. 액세스하지 않는 한 와일드카드 항목(예: *)은 디렉토리 목록에 표시되지 않습니다.

마운트 지점이 /etc/fstab 에 정의된 경우 systemd 단위를 사용하여 파일 시스템을 온디맨드로 마운트합니다. 각 마운트에 대해 항목 단위를 추가하고 활성화해야 합니다.

프로세스

  1. 파일 시스템 영구 마운트에 설명된 대로 원하는 fstab 항목을 추가합니다. 예를 들면 다음과 같습니다.

    /dev/disk/by-id/da875760-edb9-4b82-99dc-5f4b1ff2e5f4  /mount/point  xfs  defaults  0 0
  2. 이전 단계에서 만든 항목의 options 필드에 x-systemd.automount 를 추가합니다.
  3. 시스템이 새 구성을 등록하도록 새로 생성된 단위를 로드합니다.

    # systemctl daemon-reload
  4. 다음 단위를 시작합니다.

    # systemctl start mount-point.automount

검증

  1. mount-point.automount 가 실행 중인지 확인합니다.

    # systemctl status mount-point.automount
  2. shareed 디렉토리에 원하는 콘텐츠가 있는지 확인합니다.

    # ls /mount/point

자세한 내용은 systemd 관리를 참조하십시오.

마운트 지점을 마운트 단위로 정의할 때 systemd 장치를 사용하여 필요에 따라 파일 시스템을 마운트합니다. 각 마운트에 대해 항목 단위를 추가하고 활성화해야 합니다.

프로세스

  1. 마운트 유닛을 만듭니다. 예를 들면 다음과 같습니다.

    mount-point.mount
    [Mount]
    What=/dev/disk/by-uuid/f5755511-a714-44c1-a123-cfde0e4ac688
    Where=/mount/point
    Type=xfs
  2. 확장자 .automount 를 사용하여 마운트 단위와 동일한 이름으로 단위 파일을 만듭니다.
  3. 파일을 열고 [Automount] 섹션을 만듭니다. 마운트 경로로 Where= 옵션을 설정합니다.

    [Automount]
    Where=/mount/point
    [Install]
    WantedBy=multi-user.target
  4. 시스템이 새 구성을 등록하도록 새로 생성된 단위를 로드합니다.

    # systemctl daemon-reload
  5. 대신 units를 활성화하고 시작합니다.

    # systemctl enable --now mount-point.automount

검증

  1. mount-point.automount 가 실행 중인지 확인합니다.

    # systemctl status mount-point.automount
  2. shareed 디렉토리에 원하는 콘텐츠가 있는지 확인합니다.

    # ls /mount/point

자세한 내용은 systemd 관리를 참조하십시오.

21장. IdM의 SSSD 구성 요소를 사용하여 Cryostat 맵 캐시

SSSD(System Security Services Daemon)는 원격 서비스 디렉터리 및 인증 메커니즘에 액세스하는 시스템 서비스입니다. 데이터 캐싱은 네트워크 연결 속도가 느린 경우 유용합니다. SSSD 서비스를 구성하려면 이 섹션의 절차를 따르십시오.

21.1. SSSD를 캐시하도록 매핑 구성

SSSD 서비스를 사용하여 IdM 서버를 전혀 사용하도록 Cryostat를 구성하지 않고도 IdM 서버에 저장된 map을 캐시할 수 있습니다.

사전 요구 사항

  • sssd 패키지가 설치되어 있습니다.

프로세스

  1. SSSD 구성 파일을 엽니다.

    # vim /etc/sssd/sssd.conf
  2. SSSD 에서 처리하는 서비스 목록에 Cryostat 서비스를 추가합니다.

    [sssd]
    domains = ldap
    services = nss,pam,autofs
  3. [autofs] 섹션을 만듭니다. Cryostat 서비스의 기본 설정이 대부분의 인프라에서 작동하기 때문에 이 필드를 비워 둘 수 있습니다.

    [nss]
    
    [pam]
    
    [sudo]
    
    [autofs]
    
    [ssh]
    
    [pac]

    자세한 내용은 시스템의 sssd.conf 도움말 페이지를 참조하십시오.

  4. 선택 사항: Cryostat 항목의 검색 기반을 설정합니다. 기본적으로 LDAP 검색 기반이지만 ldap_autofs_search_base 매개변수에 하위 트리를 지정할 수 있습니다.

    [domain/EXAMPLE]
    
    ldap_search_base = "dc=example,dc=com"
    ldap_autofs_search_base = "ou=automount,dc=example,dc=com"
  5. SSSD 서비스를 다시 시작하십시오.

    # systemctl restart sssd.service
  6. SSSD가 audit 설정 소스로 나열되도록 /etc/nsswitch.conf 파일을 확인합니다.

    automount: sss files
  7. Cryostat 서비스를 다시 시작하십시오.

    # systemctl restart autofs.service
  8. /home 에 대한 마스터 맵 항목이 있다고 가정하면 사용자의 /home 디렉토리를 나열하여 구성을 테스트합니다.

    # ls /home/userName

    원격 파일 시스템을 마운트하지 않으면 /var/log/messages 파일에 오류가 있는지 확인합니다. 필요한 경우 logging 매개 변수를 debug로 설정하여 /etc/sysconfig/autofs 파일에서 디버그 수준을 늘립니다.

22장. root 파일 시스템에 대한 읽기 전용 권한 설정

경우에 따라 읽기 전용 권한으로 루트 파일 시스템(/)을 마운트해야 합니다. 예를 들어, 보안을 강화하거나 예기치 않은 시스템 전원 끄기 후 데이터 무결성을 보장하기 위해

22.1. 쓰기 권한을 항상 유지하는 파일 및 디렉토리

시스템이 제대로 작동하려면 일부 파일과 디렉터리가 쓰기 권한을 유지해야 합니다. 루트 파일 시스템이 읽기 전용 모드로 마운트되면 이러한 파일은 tmpfs 임시 파일 시스템을 사용하여 RAM에 마운트됩니다.

이러한 파일과 디렉터리의 기본 세트는 /etc/rwtab 파일에서 읽습니다. 이 파일이 시스템에 있는 경우 readonly-root 패키지가 필요합니다.

dirs	/var/cache/man
dirs	/var/gdm
<content truncated>

empty	/tmp
empty	/var/cache/foomatic
<content truncated>

files	/etc/adjtime
files	/etc/ntp.conf
<content truncated>

/etc/rwtab 파일의 항목은 다음 형식을 따릅니다.

copy-method    path

이 구문에서는 다음을 수행합니다.

  • copy-method 를 파일 또는 디렉터리가 tmpfs에 복사되는 방법을 지정하는 키워드 중 하나로 바꿉니다.
  • path 를 파일 또는 디렉터리의 경로로 바꿉니다.

/etc/rwtab 파일은 파일 또는 디렉토리를 tmpfs 에 복사할 수 있는 다음과 같은 방법을 인식합니다.

빈 경로가 tmpfs 에 복사됩니다. 예를 들면 다음과 같습니다.

empty /tmp
dirs

디렉터리 트리가 tmpfs, empty로 복사됩니다. 예를 들면 다음과 같습니다.

dirs /var/run
파일

파일 또는 디렉터리 트리가 그대로 tmpfs 에 복사됩니다. 예를 들면 다음과 같습니다.

files /etc/resolv.conf

/etc/rwtab.d/ 에 사용자 지정 경로를 추가할 때 동일한 형식이 적용됩니다.

이 절차를 통해 루트 파일 시스템은 다음 모든 부팅에 읽기 전용으로 마운트됩니다.

프로세스

  1. /etc/sysconfig/readonly-root 파일에서 READONLY 옵션을 yes 로 설정하여 파일 시스템을 읽기 전용으로 마운트합니다.

    READONLY=yes
  2. /etc/fstab 파일의 루트 항목(/)에 ro 옵션을 추가합니다.

    /dev/mapper/luks-c376919e...  /  xfs  x-systemd.device-timeout=0,ro  1  1
  3. ro 커널 옵션을 활성화합니다.

    # grubby --update-kernel=ALL --args="ro"
  4. rw 커널 옵션이 비활성화되어 있는지 확인합니다.

    # grubby --update-kernel=ALL --remove-args="rw"
  5. tmpfs 파일 시스템에서 쓰기 권한으로 마운트할 파일과 디렉토리를 추가해야 하는 경우 /etc/rwtab.d/ 디렉터리에 텍스트 파일을 생성하고 여기에 구성을 배치합니다.

    예를 들어 쓰기 권한으로 /etc/example/file 파일을 마운트하려면 다음 행을 /etc/rwtab.d/example 파일에 추가합니다.

    files /etc/example/file
    중요

    tmpfs 의 파일 및 디렉터리에 대한 변경 사항은 부팅 시 유지되지 않습니다.

  6. 시스템을 재부팅하여 변경 사항을 적용합니다.

문제 해결

  • 읽기 전용 권한으로 root 파일 시스템을 실수로 마운트하는 경우 다음 명령을 사용하여 읽기 및 쓰기 권한으로 다시 마운트할 수 있습니다.

    # mount -o remount,rw /

23장. 할당량을 사용하여 XFS에서 스토리지 공간 사용량 제한

디스크 할당량을 구현하여 사용자 또는 그룹에 사용할 수 있는 디스크 공간을 제한할 수 있습니다. 사용자가 너무 많은 디스크 공간을 사용하거나 파티션이 가득 차기 전에 시스템 관리자에게 알리는 경고 수준을 정의할 수도 있습니다.

XFS 할당량 하위 시스템은 디스크 공간(블록) 및 파일(inode) 사용에 대한 제한을 관리합니다. XFS 할당량은 사용자, 그룹 또는 디렉터리 또는 프로젝트 수준에서 이러한 항목의 사용을 제어하거나 보고합니다. 그룹 및 프로젝트 할당량은 기본이 아닌 기존 XFS 디스크 형식에서만 상호 배타적입니다.

디렉터리별 또는 프로젝트별로 관리하는 경우 XFS는 특정 프로젝트와 관련된 디렉터리 계층 구조의 디스크 사용량을 관리합니다.

23.1. 디스크 할당량

대부분의 컴퓨팅 환경에서 디스크 공간은 무한하지 않습니다. 할당량 하위 시스템은 디스크 공간의 사용을 제어하는 메커니즘을 제공합니다.

로컬 파일 시스템에서 개별 사용자와 사용자 그룹에 대한 디스크 할당량을 구성할 수 있습니다. 이렇게 하면 사용자별 파일(예: 이메일)에 할당된 공간을 사용자가 작업하는 프로젝트에 할당된 공간과 별도로 관리할 수 있습니다. 할당량 하위 시스템은 할당된 제한을 초과할 때 사용자에게 경고하지만 현재 작업에 대한 일부 추가 공간(하드 제한/소프트 제한)을 허용합니다.

할당량이 구현되는 경우 할당량을 초과했는지 확인하고 할당량이 정확한지 확인해야 합니다. 사용자가 할당량을 반복적으로 초과하거나 소프트 제한에 일관되게 도달하면 시스템 관리자는 사용자가 디스크 공간을 적게 사용하거나 사용자의 디스크 할당량을 늘리는 방법을 결정하는 데 도움이 될 수 있습니다.

할당량을 제어하도록 설정할 수 있습니다.

  • 사용된 디스크 블록 수입니다.
  • UNIX 파일 시스템의 파일에 대한 정보를 포함하는 데이터 구조인 inode의 수입니다. inode는 파일 관련 정보를 저장하므로 생성할 수 있는 파일 수를 제어할 수 있습니다.

23.2. xfs_quota 툴

xfs_quota 툴을 사용하여 XFS 파일 시스템의 할당량을 관리할 수 있습니다. 또한 제한 적용이 효과적인 디스크 사용량 회계 시스템으로 설정된 XFS 파일 시스템을 사용할 수 있습니다.

XFS 할당량 시스템은 여러 가지 면에서 다른 파일 시스템과 다릅니다. 가장 중요한 것은 XFS는 할당량 정보를 파일 시스템 메타데이터로 간주하고 저널링을 사용하여 높은 수준의 일관성 보장을 제공하는 것입니다.

자세한 내용은 시스템의 xfs_quota(8) 도움말 페이지를 참조하십시오.

23.3. XFS의 파일 시스템 할당량 관리

XFS 할당량 하위 시스템은 디스크 공간(블록) 및 파일(inode) 사용에 대한 제한을 관리합니다. XFS 할당량은 사용자, 그룹 또는 디렉터리 또는 프로젝트 수준에서 이러한 항목의 사용을 제어하거나 보고합니다. 그룹 및 프로젝트 할당량은 기본이 아닌 기존 XFS 디스크 형식에서만 상호 배타적입니다.

디렉터리별 또는 프로젝트별로 관리하는 경우 XFS는 특정 프로젝트와 관련된 디렉터리 계층 구조의 디스크 사용량을 관리합니다.

23.4. XFS의 디스크 할당량 활성화

XFS 파일 시스템에서 사용자, 그룹 및 프로젝트에 대한 디스크 할당량을 활성화합니다. 할당량이 활성화되면 xfs_quota 툴을 사용하여 제한을 설정하고 디스크 사용량을 보고할 수 있습니다.

프로세스

  1. 사용자의 할당량을 활성화합니다.

    # mount -o uquota /dev/xvdb1 /xfs

    제한을 적용하지 않고 사용량 보고를 허용하려면 uquotauqnoenforce 로 바꿉니다.

  2. 그룹의 할당량을 활성화합니다.

    # mount -o gquota /dev/xvdb1 /xfs

    제한을 적용하지 않고 사용량 보고를 허용하려면 gquotagqnoenforce 로 바꿉니다.

  3. 프로젝트의 할당량을 활성화합니다.

    # mount -o pquota /dev/xvdb1 /xfs

    제한을 적용하지 않고 사용량 보고를 허용하려면 pquotapqnoenforce 로 바꿉니다.

  4. 또는 /etc/fstab 파일에 할당량 마운트 옵션을 포함합니다. 다음 예제에서는 XFS 파일 시스템에서 각각 사용자, 그룹, 프로젝트에 대한 할당량을 활성화하는 /etc/fstab 파일의 항목을 보여줍니다. 다음 예제에서는 읽기/쓰기 권한이 있는 파일 시스템도 마운트합니다.

    # vim /etc/fstab
    /dev/xvdb1    /xfs    xfs    rw,quota       0  0
    /dev/xvdb1    /xfs    xfs    rw,gquota      0  0
    /dev/xvdb1    /xfs    xfs    rw,prjquota    0  0

    자세한 내용은 시스템의 xfs(5)xfs_quota(8) 도움말 페이지를 참조하십시오.

23.5. XFS 사용 보고

xfs_quota 툴을 사용하여 제한을 설정하고 디스크 사용량을 보고합니다. 기본적으로 xfs_quota 는 대화식으로 실행되며 기본 모드에서 실행됩니다. 기본 모드 하위 명령은 사용법을 보고하고 모든 사용자가 사용할 수 있습니다.

사전 요구 사항

프로세스

  1. xfs_quota 쉘을 시작합니다.

    # xfs_quota
  2. 지정된 사용자의 사용량 및 제한을 표시합니다.

    xfs_quota> quota username
  3. 블록 및 inode에 대한 무료 및 사용 수를 표시합니다.

    xfs_quota> df
  4. help 명령을 실행하여 xfs_quota 에서 사용할 수 있는 기본 명령을 표시합니다.

    xfs_quota> help
  5. xfs_quota 를 종료하려면 q 를 지정합니다.

    xfs_quota> q

    자세한 내용은 시스템의 xfs_quota(8) 도움말 페이지를 참조하십시오.

23.6. XFS 할당량 제한 수정

-x 옵션으로 xfs_quota 도구를 시작하여 전문가 모드를 활성화하고 할당량 시스템을 수정할 수 있는 관리자 명령을 실행합니다. 이 모드의 하위 명령은 제한의 실제 구성을 허용하고 승격된 권한이 있는 사용자만 사용할 수 있습니다.

사전 요구 사항

프로세스

  1. -x 옵션으로 xfs_quota 쉘을 시작하여 전문가 모드를 활성화합니다.

    # xfs_quota -x /path
  2. 특정 파일 시스템에 대한 할당량 정보를 보고합니다.

    xfs_quota> report /path

    예를 들어 /home ( /dev/blockdevice에서)에 대한 샘플 할당량 보고서를 표시하려면 report -h /home 명령을 사용합니다. 다음과 유사한 출력이 표시됩니다.

    User quota on /home (/dev/blockdevice)
    Blocks
    User ID      Used   Soft   Hard Warn/Grace
    ---------- ---------------------------------
    root            0      0      0  00 [------]
    testuser   103.4G      0      0  00 [------]
  3. 할당량 제한을 수정합니다.

    xfs_quota> limit isoft=500m ihard=700m user

    예를 들어 홈 디렉터리가 /home/john 인 사용자 john 의 소프트 및 하드 inode 수 제한을 각각 500 및 500으로 설정하려면 다음 명령을 사용합니다.

    # xfs_quota -x -c 'limit isoft=500 ihard=700 john' /home/

    이 경우 마운트된 xfs 파일 시스템인 mount_point 를 전달합니다.

  4. xfs_quota -x 에서 사용할 수 있는 전문가 명령을 표시합니다.

    xfs_quota> help

검증

  • 할당량 제한이 수정되었는지 확인합니다.

    xfs_quota> report -i -u
    User quota on /home (/dev/loop0)
                                   Inodes
    User ID          Used       Soft       Hard    Warn/ Grace
    ---------- --------------------------------------------------
    root                3          0          0     00 [------]
    testuser            2        500        700     00 [------]

    자세한 내용은 시스템의 xfs_quota(8) 도움말 페이지를 참조하십시오.

23.7. XFS에 대한 프로젝트 제한 설정

프로젝트 제어 디렉터리에 대한 제한을 구성합니다.

프로세스

  1. 프로젝트 제어 디렉토리를 /etc/projects 에 추가합니다. 예를 들어 다음은 고유한 ID가 11인 /var/log 경로를 /etc/projects 에 추가합니다. 프로젝트 ID는 프로젝트에 매핑된 숫자 값이 될 수 있습니다.

    # echo 11:/var/log >> /etc/projects
  2. 프로젝트 ID를 프로젝트 이름에 매핑하려면 프로젝트 이름을 /etc/projid 에 추가합니다. 예를 들어 다음에서는 logfiles 라는 프로젝트를 이전 단계에서 정의한 대로 프로젝트 ID 11과 연결합니다.

    # echo logfiles:11 >> /etc/projid
  3. 프로젝트 디렉터리를 초기화합니다. 예를 들어 다음은 프로젝트 디렉토리 /var:을 초기화합니다.

    # xfs_quota -x -c 'project -s logfiles' /var
  4. 초기화된 디렉터리를 사용하여 프로젝트의 할당량을 구성합니다.

    # xfs_quota -x -c 'limit -p bhard=1g logfiles' /var

    자세한 내용은 시스템의 xfs_quota(8), projid(5)projects(5) 도움말 페이지를 참조하십시오.

24장. 할당량을 사용하여 ext4에서 스토리지 공간 사용량 제한

시스템을 할당하기 전에 시스템에서 디스크 할당량을 활성화해야 합니다. 사용자당 또는 프로젝트당 디스크 할당량을 할당할 수 있습니다. 그러나 소프트 제한이 설정된 경우 유예 기간이라는 구성 가능한 기간에 이러한 할당량을 초과할 수 있습니다.

24.1. 할당량 툴 설치

디스크 할당량을 구현하려면 quota RPM 패키지를 설치해야 합니다.

프로세스

  • quota 패키지를 설치합니다.

    # dnf install quota

24.2. 파일 시스템 생성 시 할당량 기능 활성화

파일 시스템 생성 시 할당량을 활성화합니다.

프로세스

  1. 파일 시스템 생성 시 할당량을 활성화합니다.

    # mkfs.ext4 -O quota /dev/sda
    참고

    사용자 및 그룹 할당량만 기본적으로 활성화되어 초기화됩니다.

  2. 파일 시스템 생성 시 기본값을 변경합니다.

    # mkfs.ext4 -O quota -E quotatype=usrquota:grpquota:prjquota /dev/sda
  3. 파일 시스템을 마운트합니다.

    # mount /dev/sda

24.3. 기존 파일 시스템에서 할당량 기능 활성화

tune2fs 명령을 사용하여 기존 파일 시스템에서 할당량 기능을 활성화합니다.

프로세스

  1. 파일 시스템을 마운트 해제합니다.

    # umount /dev/sda
  2. 기존 파일 시스템에서 할당량을 활성화합니다.

    # tune2fs -O quota /dev/sda
    참고

    기본적으로 사용자 및 그룹 할당량만 초기화됩니다.

  3. 기본값을 변경합니다.

    # tune2fs -Q usrquota,grpquota,prjquota /dev/sda
  4. 파일 시스템을 마운트합니다.

    # mount /dev/sda

24.4. 할당량 적용 활성화

할당량 계산은 추가 옵션 없이 파일 시스템을 마운트한 후 기본적으로 활성화되어 있지만 할당량 적용은 그렇지 않습니다.

사전 요구 사항

  • 할당량 기능이 활성화되고 기본 할당량이 초기화됩니다.

프로세스

  • 사용자 할당량에 대한 할당량 을 활성화합니다.

    # mount /dev/sda /mnt
    # quotaon /mnt
    참고

    usrquota,grpquota 또는 prjquota 마운트 옵션을 사용하여 마운트 시 할당량 적용 기능을 활성화할 수 있습니다.

    # mount -o usrquota,grpquota,prjquota /dev/sda /mnt
  • 모든 파일 시스템에 대해 사용자, 그룹, 프로젝트 할당량을 활성화합니다.

    # quotaon -vaugP
    • -u,-g 또는 -P 옵션이 지정되지 않은 경우 사용자 할당량만 활성화됩니다.
    • -g 옵션만 지정하면 그룹 할당량만 활성화됩니다.
    • -P 옵션만 지정하면 프로젝트 할당량만 활성화됩니다.
  • /home 과 같은 특정 파일 시스템의 할당량을 활성화합니다.

    # quotaon -vugP /home

24.5. 사용자당 할당량 할당

디스크 할당량은 edquota 명령을 사용하여 사용자에게 할당됩니다.

참고

EDITOR 환경 변수에서 정의한 텍스트 편집기는 edquota 에서 사용합니다. 편집기를 변경하려면 ~/.bash_profile 파일의 EDITOR 환경 변수를 선택한 편집기의 전체 경로로 설정합니다.

사전 요구 사항

  • 사용자 할당량을 설정하기 전에 사용자가 있어야 합니다.

프로세스

  1. 사용자의 할당량을 할당합니다.

    # edquota username

    username 을 할당량을 할당할 사용자로 바꿉니다.

    예를 들어 /dev/sda 파티션에 대한 할당량을 활성화하고 edquota testuser 명령을 실행하면 시스템에 구성된 기본 편집기에 다음이 표시됩니다.

    Disk quotas for user testuser (uid 501):
    Filesystem   blocks   soft   hard   inodes   soft   hard
    /dev/sda      44043      0      0    37418      0      0
  2. 원하는 제한을 변경합니다.

    값 중 하나가 0으로 설정되면 제한이 설정되지 않습니다. 텍스트 편집기에서 변경합니다.

    예를 들어 다음은 testuser의 소프트 및 하드 블록 제한이 각각 50000 및 55000으로 설정되어 있음을 보여줍니다.

    Disk quotas for user testuser (uid 501):
    Filesystem   blocks   soft   hard   inodes   soft   hard
    /dev/sda      44043  50000  55000    37418      0      0
    • 첫 번째 열은 할당량이 활성화된 파일 시스템의 이름입니다.
    • 두 번째 열은 사용자가 현재 사용 중인 블록 수를 보여줍니다.
    • 다음 두 열은 파일 시스템에서 사용자의 소프트 블록 제한과 하드 블록 제한을 설정하는 데 사용됩니다.
    • inodes 열에는 사용자가 현재 사용 중인 inode 수가 표시됩니다.
    • 마지막 두 열은 파일 시스템에서 사용자의 소프트 및 하드 inode 제한을 설정하는 데 사용됩니다.

      • 하드 블록 제한은 사용자 또는 그룹이 사용할 수 있는 디스크 공간의 최대 최대 크기입니다. 이 제한에 도달하면 추가 디스크 공간을 사용할 수 없습니다.
      • 소프트 블록 제한은 사용할 수 있는 최대 디스크 공간을 정의합니다. 그러나 하드 제한과 달리 일정 시간 동안 소프트 제한을 초과할 수 있습니다. 이 시간을 유예 기간 이라고 합니다. 유예 기간은 초, 분, 시간, 일, 주 또는 월 단위로 표시할 수 있습니다.

검증

  • 사용자의 할당량이 설정되었는지 확인합니다.

    # quota -v testuser
    Disk quotas for user testuser:
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
    /dev/sda      1000*  1000   1000             0      0      0

24.6. 그룹당 할당량 할당

그룹별로 할당량을 할당할 수 있습니다.

사전 요구 사항

  • 그룹 할당량을 설정하기 전에 그룹이 있어야 합니다.

프로세스

  1. 그룹 할당량을 설정합니다.

    # edquota -g groupname

    예를 들어 devel 그룹의 그룹 할당량을 설정하려면 다음을 수행합니다.

    # edquota -g devel

    이 명령은 텍스트 편집기에서 그룹의 기존 할당량을 표시합니다.

    Disk quotas for group devel (gid 505):
    Filesystem   blocks  soft  hard  inodes  soft  hard
    /dev/sda     440400     0     0   37418     0     0
  2. 제한을 수정하고 파일을 저장합니다.

검증

  • 그룹 할당량이 설정되었는지 확인합니다.

    # quota -vg groupname

24.7. 프로젝트당 할당량 할당

프로젝트당 할당량을 할당할 수 있습니다.

사전 요구 사항

  • 파일 시스템에서 프로젝트 할당량이 활성화되어 있습니다.

프로세스

  1. 프로젝트 제어 디렉토리를 /etc/projects 에 추가합니다. 예를 들어 다음은 고유한 ID가 11인 /var/log 경로를 /etc/projects 에 추가합니다. 프로젝트 ID는 프로젝트에 매핑된 숫자 값이 될 수 있습니다.

    # echo 11:/var/log >> /etc/projects
  2. 프로젝트 ID를 프로젝트 이름에 매핑하려면 프로젝트 이름을 /etc/projid 에 추가합니다. 예를 들어 다음은 Logs 라는 프로젝트를 이전 단계에서 정의한 11의 프로젝트 ID와 연결합니다.

    # echo Logs:11 >> /etc/projid
  3. 원하는 제한을 설정합니다.

    # edquota -P 11
    참고

    프로젝트 ID(이 경우11) 또는 이름(이 경우로그 )으로 프로젝트를 선택할 수 있습니다.

  4. quotaon 을 사용하여 할당량 적용을 활성화합니다.

    할당량 적용 활성화를 참조하십시오.

검증

  • 프로젝트 할당량이 설정되었는지 확인합니다.

    # quota -vP 11
    참고

    프로젝트 ID 또는 프로젝트 이름으로 확인할 수 있습니다.

    자세한 내용은 시스템의 edquota(8), projid(5)projects(5) 도움말 페이지를 참조하십시오.

24.8. 소프트 제한의 유예 기간 설정

지정된 할당량에 소프트 제한이 있는 경우 유예 기간을 편집할 수 있습니다. 이는 소프트 제한을 초과할 수 있는 시간입니다. 사용자, 그룹 또는 프로젝트의 유예 기간을 설정할 수 있습니다.

프로세스

  • 유예 기간을 편집합니다.

    # edquota -t
중요

다른 edquota 명령은 특정 사용자, 그룹 또는 프로젝트에 대한 할당량에서 작동하지만 -t 옵션은 할당량이 활성화된 모든 파일 시스템에서 작동합니다.

24.9. 파일 시스템 할당량 비활성화

quotaoff 를 사용하여 지정된 파일 시스템에서 디스크 할당량 적용 기능을 끕니다. 이 명령을 실행한 후 할당량 계산이 활성화된 상태로 유지됩니다.

프로세스

  • 모든 사용자 및 그룹 할당량을 비활성화하려면 다음을 수행합니다.

    # quotaoff -vaugP
    • -u,-g 또는 -P 옵션이 지정되지 않은 경우 사용자 할당량만 비활성화됩니다.
    • -g 옵션만 지정하면 그룹 할당량만 비활성화됩니다.
    • -P 옵션만 지정하면 프로젝트 할당량만 비활성화됩니다.
    • 명령이 실행되면 -v 스위치를 사용하면 자세한 상태 정보가 표시됩니다.

      자세한 내용은 시스템의 quotaoff(8) 도움말 페이지를 참조하십시오.

24.10. 디스크 할당량 보고

repquota 유틸리티를 사용하여 디스크 할당량 보고서를 만듭니다.

프로세스

  1. repquota 명령을 실행합니다.

    # repquota

    예를 들어 repquota /dev/sda 명령은 다음 출력을 생성합니다.

    *** Report for user quotas on device /dev/sda
    Block grace time: 7days; Inode grace time: 7days
    			Block limits			File limits
    User		used	soft	hard	grace	used	soft	hard	grace
    ----------------------------------------------------------------------
    root      --      36       0       0              4     0     0
    kristin   --     540       0       0            125     0     0
    testuser  --  440400  500000  550000          37418     0     0
  2. 모든 할당량 지원 파일 시스템에 대한 디스크 사용량 보고서를 확인합니다.

    # repquota -augP

    각 사용자가 블록 또는 inode 제한을 초과했는지 여부를 확인한 후 표시되는 -- 기호입니다. 소프트 제한이 초과된 경우 해당 - 문자 대신 + 문자가 표시됩니다. 첫 번째 - 문자는 블록 제한을 나타내며 두 번째 문자는 inode 제한을 나타냅니다.

    grace 열은 일반적으로 비어 있습니다. 소프트 제한이 초과된 경우 열에는 유예 기간에 남아 있는 시간 사양과 동일한 시간 사양이 포함됩니다. 유예 기간이 만료된 경우 그 자리에는 아무것도 나타나지 않습니다.

    자세한 내용은 repquota(8) 도움말 페이지를 참조하십시오.

25장. 사용되지 않는 블록 삭제

이를 지원하는 블록 장치에서 삭제 작업을 수행하거나 예약할 수 있습니다. 블록 삭제 작업은 마운트된 파일 시스템에서 더 이상 사용되지 않는 기본 스토리지와 통신합니다. 블록 삭제 작업을 통해 SSD는 가비지 수집 루틴을 최적화할 수 있으며 씬 프로비저닝된 스토리지에 사용되지 않는 물리적 블록을 다시 사용하도록 알릴 수 있습니다.

요구 사항

  • 파일 시스템의 기본 블록 장치는 물리적 삭제 작업을 지원해야 합니다.

    /sys/block/ <device> /queue/discard_max_bytes 파일의 값이 0이 아닌 경우 물리적 삭제 작업이 지원됩니다.

25.1. 블록 삭제 작업 유형

다른 방법을 사용하여 삭제 작업을 실행할 수 있습니다.

배치 삭제
이러한 유형의 삭제는 fstrim 명령의 일부입니다. 파일 시스템에서 사용되지 않는 모든 블록을 관리자가 지정한 기준과 일치시킵니다. Red Hat Enterprise Linux 10은 물리적 삭제 작업을 지원하는 XFS 및 ext4 형식의 장치에서 배치 삭제 기능을 지원합니다.
온라인 삭제

이 유형의 삭제 작업은 마운트 시 삭제 옵션을 사용하여 구성되며 사용자 개입 없이 실시간으로 실행됩니다. 그러나 사용에서 자유로 전환되는 블록만 삭제합니다. Red Hat Enterprise Linux 10은 XFS 및 ext4 형식의 장치에서 온라인 삭제 기능을 지원합니다.

성능을 유지하기 위해 온라인 삭제가 필요한 경우 또는 시스템 워크로드에 배치 삭제가 불가능한 경우를 제외하고 일괄 삭제를 사용하십시오.

주기적 삭제
systemd 서비스에서 정기적으로 실행되는 배치 작업.

모든 유형은 XFS 및 ext4 파일 시스템에서 지원됩니다.

권장 사항

일괄 처리 또는 주기적 삭제 사용

온라인 삭제는 다음 경우에만 사용하십시오.

  • 시스템의 워크로드는 배치 삭제가 불가능하거나
  • 성능을 유지하려면 온라인 삭제 작업이 필요합니다.

25.2. 배치 블록 삭제 수행

배치 블록 삭제 작업을 수행하여 마운트된 파일 시스템에서 사용되지 않는 블록을 삭제할 수 있습니다.

사전 요구 사항

  • 파일 시스템이 마운트되었습니다.
  • 파일 시스템의 기본 블록 장치는 물리적 삭제 작업을 지원합니다.

프로세스

  • fstrim 유틸리티를 사용합니다.

    • 선택한 파일 시스템에서만 삭제 작업을 수행하려면 다음을 사용합니다.

      # fstrim mount-point
    • 마운트된 모든 파일 시스템에서 삭제 작업을 수행하려면 다음을 사용합니다.

      # fstrim --all
  • 다음에서 fstrim 명령을 실행하는 경우:

    • 삭제 작업을 지원하지 않는 장치, 또는
    • 장치 중 하나가 삭제 작업을 지원하지 않는 여러 장치로 구성된 논리 장치(LVM 또는 MD)가 다음 메시지가 표시됩니다.

      # fstrim /mnt/non_discard
      
      fstrim: /mnt/non_discard: the discard operation is not supported

25.3. 온라인 블록 삭제 활성화

온라인 블록 삭제 작업을 수행하여 지원되는 모든 파일 시스템에서 사용되지 않는 블록을 자동으로 삭제할 수 있습니다. 자세한 내용은 시스템의 mount(8)fstab(5) 도움말 페이지를 참조하십시오.

프로세스

  • 마운트 시 온라인 삭제 활성화:

    • 파일 시스템을 수동으로 마운트할 때 -o discard 마운트 옵션을 추가합니다.

      # mount -o discard device mount-point
    • 파일 시스템을 영구적으로 마운트하는 경우 /etc/fstab 파일의 마운트 항목에 삭제 옵션을 추가합니다.

25.4. 주기적인 블록 삭제 활성화

systemd 타이머를 활성화하여 지원되는 모든 파일 시스템에서 사용되지 않는 블록을 정기적으로 삭제할 수 있습니다.

프로세스

  • systemd 타이머를 활성화하고 시작합니다.

    # systemctl enable --now fstrim.timer
    Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /usr/lib/systemd/system/fstrim.timer.

검증

  • 타이머 상태를 확인합니다.

    # systemctl status fstrim.timer
    fstrim.timer - Discard unused blocks once a week
       Loaded: loaded (/usr/lib/systemd/system/fstrim.timer; enabled; vendor preset: disabled)
       Active: active (waiting) since Wed 2023-05-17 13:24:41 CEST; 3min 15s ago
      Trigger: Mon 2023-05-22 01:20:46 CEST; 4 days left
         Docs: man:fstrim
    
    May 17 13:24:41 localhost.localdomain systemd[1]: Started Discard unused blocks once a week.

26장. I/O 및 파일 시스템 성능에 영향을 미치는 요소

스토리지 및 파일 시스템 성능에 대한 적절한 설정은 스토리지 목적에 따라 크게 달라집니다.

I/O 및 파일 시스템 성능은 다음과 같은 요인의 영향을 받을 수 있습니다.

  • 데이터 쓰기 또는 읽기 패턴
  • 순차적 또는 임의
  • 버퍼링 또는 직접 IO
  • 기본 데이터 정렬
  • 블록 크기
  • 파일 시스템 크기
  • 저널 크기 및 위치
  • 액세스 시간 기록
  • 데이터 안정성 보장
  • 사전 가져오기 데이터
  • 디스크 공간 사전 할당
  • 파일 조각화
  • 리소스 경합

26.1. I/O 및 파일 시스템 문제 모니터링 및 진단 툴

시스템 성능을 모니터링하고 I/O, 파일 시스템 및 해당 구성과 관련된 성능 문제를 진단하는 데 Red Hat Enterprise Linux 10에서 다음 툴을 사용할 수 있습니다.

  • vmstat 툴은 전체 시스템의 프로세스, 메모리, 페이징, 블록 I/O, 인터럽트 및 CPU 활동에 대해 보고합니다. 관리자가 I/O 하위 시스템이 성능 문제를 담당하는지 여부를 결정하는 데 도움이 될 수 있습니다. vmstat 를 사용한 분석에 I/O 하위 시스템이 성능이 저하된 것으로 표시되면 관리자는 iostat 툴을 사용하여 담당 I/O 장치를 확인할 수 있습니다.
  • iostat 은 시스템의 I/O 장치 로드에 대한 보고서입니다. 이는 Cryo stat 패키지에서 제공합니다.
  • blktrace 는 I/O 하위 시스템에서 시간을 소비하는 방법에 대한 자세한 정보를 제공합니다. 기능 유틸리티 blkparseblktrace 에서 원시 출력을 읽고 blktrace 에서 기록한 입력 및 출력 작업에 대해 사람이 읽을 수 있는 요약을 생성합니다.
  • BTT blktrace 출력을 분석하고 I/O 스택의 각 영역에서 데이터가 소비하는 시간을 표시하여 I/O 하위 시스템에서 병목 현상을 보다 쉽게 파악할 수 있습니다. 이 유틸리티는 blktrace 패키지의 일부로 제공됩니다. blktrace 메커니즘에서 추적하고 btt 에서 분석한 중요한 이벤트 중 일부는 다음과 같습니다.

    • I/O 이벤트 Queuing (Q)
    • 드라이버 이벤트(D)에 I/O의 디스패치
    • I/O 이벤트 완료 (C)
  • iowatcherblktrace 출력을 사용하여 시간이 지남에 따라 I/O를 그래프로 표시할 수 있습니다. 디스크 I/O의 논리 블록 주소(LBA), 초당 처리량(MB), 초당 검색 수, 초당 I/O 작업 수에 중점을 둡니다. 이렇게 하면 장치의 1초당 작업 제한에 도달할 시기를 식별하는 데 도움이 될 수 있습니다.
  • BPF 컴파일러 컬렉션(BCC)은eBPF(extended Berkeley Packet Filter) 프로그램을 쉽게 생성할 수 있는 라이브러리입니다. eBPF 프로그램은 디스크 I/O, TCP 연결 및 프로세스 생성과 같은 이벤트에서 트리거됩니다. BCC 툴은 /usr/share/bcc/tools/ 디렉터리에 설치됩니다. 다음 bcc-tools 는 성능을 분석하는 데 도움이 됩니다.

    • biolatency 는 히스토그램의 블록 장치 I/O(디스크 I/O)의 대기 시간을 요약합니다. 이를 통해 장치 캐시 적중을 위한 두 가지 모드와 캐시 누락 및 대기 시간 초과를 포함하여 배포를 검토할 수 있습니다.
    • biosnoop 는 발행 프로세스 ID 및 I/O 대기 시간과 함께 각 I/O 이벤트를 표시하는 기본 블록 I/O 추적 툴입니다. 이 도구를 사용하면 디스크 I/O 성능 문제를 조사할 수 있습니다.
    • biotop 는 커널의 블록 i/o 작업에 사용됩니다.
    • filelife 툴은 stat() syscall을 추적합니다.
    • 파일은 느린 동기 파일 읽기 및 쓰기를 추적합니다.
    • filetop 는 프로세스별 파일 읽기 및 쓰기를 표시합니다.
    • ext4slower,nfsslower, xfsslower 는 특정 임계값보다 느린 파일 시스템 작업을 표시하는 툴 입니다.

      자세한 내용은 eBPF를 사용하여 시스템 성능 분석을 참조하십시오.

  • bpftace 는 성능 문제를 분석하는 데 사용되는 eBPF 의 추적 언어입니다. 또한 I/O 성능 문제를 조사하는 데 유용한 시스템 관찰을 위해 BCC와 같은 추적 유틸리티를 제공합니다.
  • 다음 SystemTap 스크립트는 스토리지 또는 파일 시스템 성능 문제를 진단하는 데 유용할 수 있습니다.

    • disktop.stp: 5초마다 디스크를 읽거나 쓰는 상태를 확인하고 해당 기간 동안 상위 10개의 항목을 출력합니다.
    • iotime.stp: 읽기 및 쓰기 작업에 소요된 시간과 읽기 및 쓰기 바이트 수를 출력합니다.
    • traceio.stp: 1 초마다 모니터링되는 누적 I/O 트래픽을 기반으로 상위 10개의 실행 파일을 출력합니다.
    • traceio2.stp: 실행 가능한 이름과 프로세스 식별자를 지정된 장치에 읽기 및 쓰기로 출력합니다.
    • Inodewatch.stp: 지정된 메이저 또는 마이너 장치의 지정된 inode에 읽기 또는 쓰기가 발생할 때마다 실행 가능한 이름과 프로세스 식별자를 출력합니다.
    • inodewatch2.stp: 지정된 메이저 또는 마이너 장치의 지정된 inode에서 속성이 변경될 때마다 실행 가능한 이름, 프로세스 식별자 및 속성을 출력합니다.

자세한 내용은 다음을 참조하세요.

26.2. 파일 시스템 포맷에 사용 가능한 튜닝 옵션

일부 파일 시스템 구성 결정은 장치를 포맷한 후에는 변경할 수 없습니다.

다음은 스토리지 장치를 포맷하기 전에 사용할 수 있는 옵션입니다.

크기
워크로드에 맞게 적절하게 크기의 파일 시스템을 생성합니다. 소규모 파일 시스템은 파일 시스템 검사를 위해 더 적은 시간과 메모리가 필요합니다. 그러나 파일 시스템이 너무 작으면 성능이 저하됩니다.
블록 크기

블록은 파일 시스템의 작업 단위입니다. 블록 크기는 단일 블록에 저장할 수 있는 데이터의 양을 결정하므로 한 번에 쓰거나 읽는 최소 데이터 양을 결정합니다.

기본 블록 크기는 대부분의 사용 사례에 적합합니다. 그러나 블록 크기 또는 여러 블록의 크기가 일반적으로 읽거나 쓰는 데이터 양과 같거나 약간 큰 경우 파일 시스템이 더 효율적으로 데이터를 저장합니다. 작은 파일은 여전히 전체 블록을 사용합니다. 파일이 여러 블록에 분산될 수 있지만 이로 인해 추가 런타임 오버헤드가 발생할 수 있습니다.

또한 일부 파일 시스템은 특정 수의 블록으로 제한되며, 이는 파일 시스템의 최대 크기를 제한합니다. 블록 크기는 mkfs 명령을 사용하여 장치를 포맷할 때 파일 시스템 옵션의 일부로 지정됩니다. 블록 크기를 지정하는 매개변수는 파일 시스템에 따라 다릅니다.

Cryostat

파일 시스템은 파일 시스템에서 데이터를 배포하는 것과 관련이 있습니다. 시스템에서 RAID와 같이 스트라이핑된 스토리지를 사용하는 경우 장치를 포맷할 때 데이터 및 메타데이터를 기본 스토리지와 조정하여 성능을 향상시킬 수 있습니다.

많은 장치는 특정 파일 시스템으로 장치를 포맷할 때 자동으로 설정하는 것이 좋습니다. 장치가 이러한 권장 사항을 내보내지 않거나 권장 설정을 변경하려면 mkfs 명령을 사용하여 장치를 포맷할 때 수동으로 지정해야합니다.

파일 시스템을 지정하는 매개변수는 파일 시스템에 따라 다릅니다.

외부 저널
저널링 파일 시스템은 작업이 실행되기 전에 저널 파일에서 쓰기 작업 중에 수행할 변경 사항을 설명합니다. 이렇게 하면 시스템 충돌 또는 정전 시 스토리지 장치가 손상될 가능성이 줄어들고 복구 프로세스의 속도가 빨라집니다.
참고

Red Hat은 외부 저널 옵션을 사용하지 않는 것이 좋습니다.

메타데이터 집약적인 워크로드는 저널에 매우 자주 업데이트됩니다. 더 큰 저널은 더 많은 메모리를 사용하지만 쓰기 작업의 빈도를 줄입니다. 또한 기본 스토리지만큼 빠르거나 더 빠른 전용 스토리지에 저널을 배치하여 메타데이터 집약적인 워크로드가 있는 장치의 검색 시간을 개선할 수 있습니다.

주의

외부 저널이 신뢰할 수 있는지 확인합니다. 외부 저널 장치를 손실하면 파일 시스템이 손상됩니다. 마운트 시 저널 장치를 지정하고 형식 시 외부 저널을 생성해야 합니다.

26.3. 파일 시스템 마운트에 사용 가능한 튜닝 옵션

다음은 대부분의 파일 시스템에서 사용할 수 있는 옵션입니다. 장치가 마운트되면 지정할 수 있습니다.

액세스 시간

파일을 읽을 때마다 액세스가 발생한 시간(시간)으로 메타데이터업데이트됩니다. 추가 쓰기 I/O가 포함됩니다. relatime 은 대부분의 파일 시스템의 기본 atime 설정입니다.

그러나 이 메타데이터를 업데이트하는 데 시간이 오래 걸리는 경우, 정확한 액세스 시간 데이터가 필요하지 않은 경우 noatime 마운트 옵션을 사용하여 파일 시스템을 마운트할 수 있습니다. 이렇게 하면 파일을 읽을 때 메타데이터에 대한 업데이트가 비활성화됩니다. 또한 디렉터리를 읽을 때 메타데이터에 대한 업데이트를 비활성화하는 nodiratime 동작을 활성화합니다.

참고

no atime 마운트 옵션을 사용하여 시간 업데이트를 비활성화하면 백업 프로그램과 같이 이를 사용하는 애플리케이션이 중단될 수 있습니다.

Read-ahead

미리 읽기 동작은 곧 필요할 가능성이 있는 데이터를 미리 가져와서 페이지 캐시에 로드하여 파일 액세스 속도를 높이며 디스크에 있는 경우보다 빠르게 검색할 수 있습니다. read-ahead 값이 높을수록 시스템이 데이터를 미리 가져옵니다.

Red Hat Enterprise Linux는 파일 시스템에 대해 감지한 내용에 따라 적절한 read-ahead 값을 설정하려고 합니다. 그러나 정확한 탐지가 항상 가능한 것은 아닙니다. 예를 들어 스토리지 배열이 단일 LUN으로 시스템에 표시되는 경우 시스템은 단일 LUN을 감지하고 배열에 대한 적절한 읽기-마운드 값을 설정하지 않습니다.

순차적 I/O를 많이 스트리밍하는 워크로드는 종종 높은 읽기-ahead 값의 이점을 얻을 수 있습니다. Red Hat Enterprise Linux에서 제공되는 스토리지 관련 tuned 프로필은 LVM 스트라이핑을 사용하는 것처럼 read-ahead 값을 높이지만 이러한 조정은 모든 워크로드에 항상 충분하지는 않습니다.

26.4. 사용되지 않는 블록 삭제

파일 시스템에서 사용하지 않는 블록을 정기적으로 삭제하는 것은 솔리드 스테이트 디스크와 씬 프로비저닝된 스토리지 모두에 권장되는 방법입니다.

블록 삭제 작업의 유형에 대한 자세한 내용은 블록 삭제 작업 유형을참조하십시오.

26.5. 솔리드 스테이트 디스크 튜닝 고려 사항

SSD(Solid-State Disk)는 영구 데이터를 저장하기 위해 회전된 플래티를 사용하지 않고 Keycloak 플래시 칩을 사용합니다. SSD는 전체 논리 블록 주소 범위 전체에서 데이터에 대한 지속적인 액세스 시간을 제공하며 회전 카운터와 같은 측정 가능한 검색 비용이 발생하지 않습니다. 스토리지 공간당 비용이 더 많이 들고 스토리지 밀도가 줄어들지만 HDD보다 대기 시간이 짧고 처리량이 높습니다.

일반적으로 성능은 SSD에서 사용된 블록에 디스크 용량에 따라 성능이 저하됩니다. 성능 저하 수준은 벤더에 따라 다르지만 모든 장치는 이 점에서 성능 저하를 경험합니다. 삭제 동작을 활성화하면 이러한 성능 저하를 완화하는 데 도움이 될 수 있습니다. 자세한 내용은 블록 삭제 작업 유형을참조하십시오.

기본 I/O 스케줄러 및 가상 메모리 옵션은 SSD와 함께 사용하기에 적합합니다. SSD 성능에 영향을 줄 수 있는 설정을 구성할 때 다음 요소를 고려하십시오.

I/O 스케줄러

대부분의 SSD에서 모든 I/O 스케줄러를 제대로 수행할 것으로 예상됩니다. 그러나 다른 스토리지 유형과 마찬가지로 Red Hat은 벤치마킹을 통해 특정 워크로드에 대한 최적의 구성을 결정하는 것이 좋습니다. SSD를 사용하는 경우 Red Hat은 특정 워크로드 벤치마킹을 위해서만 I/O 스케줄러를 변경하는 것이 좋습니다. I/O 스케줄러 간에 전환하는 방법에 대한 자세한 내용은 /usr/share/doc/kernel-version/Documentation/block/switching-sched.txt 파일을 참조하십시오.

단일 대기열 HBA의 경우 기본 I/O 스케줄러는 데드라인 입니다. 여러 대기열 HBA의 경우 기본 I/O 스케줄러는 none 입니다.

가상 메모리
I/O 스케줄러와 마찬가지로 VM(가상 메모리) 하위 시스템에는 특별한 튜닝이 필요하지 않습니다. SSD에서 I/O의 빠른 특성을 고려할 때, 쓰기 작업이 증가해도 일반적으로 디스크의 다른 작업의 대기 시간에 부정적인 영향을 미치지 않으므로 vm_dirty_back Cryostat_ ratiovm_dirty_ratio 설정을 낮춥니다. 그러나 이 튜닝은 전체 I/O를 생성할 수 있으므로 일반적으로 워크로드별 테스트 없이 권장되지 않습니다.
swap
SSD는 스왑 장치로 사용할 수도 있으며 좋은 페이지 아웃 및 페이지 인 성능을 생성할 가능성이 큽니다.

26.6. 일반 블록 장치 튜닝 매개변수

여기에 나열된 일반 튜닝 매개변수는 /sys/block/sdX/queue/ 디렉터리에서 사용할 수 있습니다.

다음 나열된 튜닝 매개변수는 I/O 스케줄러 튜닝과 분리되어 있으며 모든 I/O 스케줄러에 적용할 수 있습니다.

add_random
일부 I/O 이벤트는 /dev/random 의 엔트로피 풀에 기여합니다. 이러한 기여에 따른 오버헤드가 측정 가능한 경우 이 매개변수를 0 으로 설정할 수 있습니다.
iostats

기본적으로 iostats 는 활성화되어 있으며 기본값은 1 입니다. iostats 값을 0 으로 설정하면 장치에 대한 I/O 통계 수집이 비활성화되어 I/O 경로가 있는 적은 양의 오버헤드가 제거됩니다. iostats0 으로 설정하면 특정 NVMe 솔리드 스테이트 스토리지 장치와 같은 매우 높은 성능 장치의 성능이 약간 향상될 수 있습니다. 벤더가 지정된 스토리지 모델에 달리 지정하지 않는 한 iostats 가 활성화된 상태로 두는 것이 좋습니다.

iostats 를 비활성화하면 장치의 I/O 통계가 더 이상 /proc/diskstats 파일에 표시되지 않습니다. /sys/diskstats 파일의 내용은 sar 또는 iostats 와 같은 I/O 툴을 모니터링하기 위한 I/O 정보의 소스입니다. 따라서 장치에 대한 iostats 매개변수를 비활성화하면 장치가 더 이상 I/O 모니터링 툴 출력에 표시되지 않습니다.

max_sectors_kb

I/O 요청의 최대 크기를 킬로바이트 단위로 지정합니다. 기본값은 512 KB입니다. 이 매개 변수의 최소값은 스토리지 장치의 논리 블록 크기에 따라 결정됩니다. 이 매개변수의 최대값은 max_hw_sectors_kb 값으로 결정됩니다.

Red Hat은 max_sectors_kb 가 항상 최적의 I/O 크기와 내부 삭제 블록 크기를 여러 개일 것을 권장합니다. 스토리지 장치에서 0개 또는 지정되지 않은 경우 매개 변수에 logical_block_size 값을 사용합니다.

nomerges
대부분의 워크로드는 요청 병합의 이점을 제공합니다. 그러나 병합을 비활성화하는 것은 디버깅 목적에 유용할 수 있습니다. 기본적으로 nomerges 매개변수는 0 으로 설정되어 병합을 활성화합니다. 간단한 one-hit 병합을 비활성화하려면 nomerges1 로 설정합니다. 모든 유형의 병합을 비활성화하려면 nomerges2 로 설정합니다.
nr_requests
대기 중인 I/O의 최대 허용 번호입니다. 현재 I/O 스케줄러가 none 인 경우 이 수만 줄일 수 있습니다. 그러지 않으면 수를 늘리거나 줄일 수 있습니다.
optimal_io_size
일부 스토리지 장치는 이 매개변수를 통해 최적의 I/O 크기를 보고합니다. 이 값이 보고되는 경우 Red Hat은 애플리케이션이 가능한 경우 최적의 I/O 크기에 맞게 I/O를 발행하는 것이 좋습니다.
read_ahead_kb

순차적 읽기 작업 중에 운영 체제가 미리 읽을 수 있는 최대 킬로바이트 수를 정의합니다. 결과적으로 다음 순차적 읽기를 위해 필요한 정보가 커널 페이지 캐시에 이미 있으므로 읽기 I/O 성능이 향상됩니다.

장치 매퍼는 종종 높은 read_ahead_kb 값의 이점을 얻습니다. 각 장치가 매핑될 수 있는 128 KB는 좋은 시작점이지만, 디스크의 큐의 max_sectors_kb 값을 요청하도록 read_ahead_kb 값을 늘리면 대용량 파일을 순차적으로 읽는 애플리케이션 환경에서 성능이 향상될 수 있습니다.

rotational
일부 솔리드 스테이트 디스크는 솔리드 스테이트 상태를 올바르게 알리지 않으며 기존 회전 디스크로 마운트됩니다. 자동 회전 값을 0 으로 수동으로 설정하여 스케줄러에서 불필요한 검색 논리를 비활성화합니다.
rq_affinity
rq_affinity 의 기본값은 1 입니다. 발급된 CPU 코어의 동일한 CPU 그룹에 있는 하나의 CPU 코어에서 I/O 작업을 완료합니다. I/O 요청을 발행한 프로세서에서만 완료를 수행하려면 rq_affinity2 로 설정합니다. 언급된 두 가지 기능을 비활성화하려면 0 으로 설정합니다.
scheduler
특정 스토리지 장치에 대한 스케줄러 또는 스케줄러 기본 설정 순서를 설정하려면 /sys/block/devname/queue/scheduler 파일을 편집합니다. 여기서 devname 은 구성할 장치의 이름입니다.

27장. Stratis 파일 시스템 설정

Stratis는 Red Hat Enterprise Linux를 위한 로컬 스토리지 관리 솔루션입니다. 단순성과 사용 편의성에 중점을 두고 있으며 고급 스토리지 기능에 액세스할 수 있습니다.

Stratis는 물리적 스토리지 장치 풀을 관리하는 서비스로 실행되며, 복잡한 스토리지 구성을 설정하고 관리하는 동시에 쉽게 로컬 스토리지 관리를 단순화합니다.

Stratis는 다음을 지원합니다.

  • 초기 스토리지 구성
  • 나중에 변경 사항 적용
  • 고급 스토리지 기능 사용

Stratis의 중앙 개념은 스토리지 풀입니다. 이 풀은 하나 이상의 로컬 디스크 또는 파티션에서 생성되며 파일 시스템은 풀에서 생성됩니다. 이 풀은 다음과 같은 기능을 활성화합니다.

  • 파일 시스템 스냅샷
  • 씬 프로비저닝
  • 캐싱
  • Encryption

27.1. Stratis 파일 시스템의 구성 요소

외부에서 Stratis는 명령줄과 API를 통해 다음 파일 시스템 구성 요소를 제공합니다.

blockdev
디스크 또는 디스크 파티션과 같은 블록 장치입니다.
pool

하나 이상의 블록 장치로 구성됩니다.

풀은 블록 장치의 크기와 동일한 총 크기가 고정되어 있습니다.

풀에는 dm-cache 대상을 사용하는 비휘발성 데이터 캐시와 같은 대부분의 Stratis 계층이 포함되어 있습니다.

Stratis는 각 풀에 대해 /dev/stratis/my-pool/ 디렉터리를 생성합니다. 이 디렉터리에는 풀에서 Stratis 파일 시스템을 나타내는 장치에 대한 링크가 포함되어 있습니다.

파일 시스템

각 풀은 0개 이상의 파일 시스템을 포함할 수 있습니다. 파일 시스템을 포함하는 풀은 원하는 수의 파일을 저장할 수 있습니다.

파일 시스템은 씬 프로비저닝되며 총 크기가 고정되어 있지 않습니다. 파일 시스템의 실제 크기는 저장된 데이터로 증가합니다. 데이터 크기가 파일 시스템의 가상 크기에 도달하면 Stratis는 씬 볼륨과 파일 시스템을 자동으로 늘립니다.

파일 시스템은 XFS 파일 시스템으로 포맷됩니다. Stratis는 스토리지에 XFS 파일 시스템을 사용하고 Stratis 볼륨을 프로비저닝합니다.

참고

Stratis 볼륨은 명령줄 인터페이스와의 정렬을 유지하기 위해 나머지 문서 전체에서 "Stratis 파일 시스템"이라고 합니다.

중요

Stratis는 XFS가 인식하지 못하는 파일 시스템에 대한 정보를 추적하고 XFS를 사용하여 변경한 내용은 Stratis에서 자동으로 업데이트를 생성하지 않습니다. 사용자는 Stratis에서 관리하는 XFS 파일 시스템을 다시 포맷하거나 재구성해서는 안 됩니다.

Stratis는 /dev/stratis/my-pool/my-fs 경로에서 파일 시스템에 대한 링크를 생성합니다.

Stratis는 dmsetup list 및 /proc/partitions 파일에 표시되는 많은 장치 매퍼 장치를 사용합니다. 마찬가지로 lsblk 명령 출력은 Stratis의 내부 작동 및 계층을 반영합니다.

27.2. Stratis와 호환되는 블록 장치

Stratis와 함께 사용할 수 있는 스토리지 장치입니다.

지원되는 장치

Stratis 풀은 이러한 유형의 블록 장치에서 작동하도록 테스트되었습니다.

  • LUKS
  • LVM 논리 볼륨
  • MD RAID
  • DM Multipath
  • iSCSI
  • HDD 및 SSD
  • NVMe 장치

27.3. Stratis 설치

Stratis에 필요한 패키지를 설치합니다.

프로세스

  1. Stratis 서비스 및 명령줄 유틸리티를 제공하는 패키지를 설치합니다.

    # dnf install stratisd stratis-cli
  2. stratisd 서비스를 시작하고 부팅 시 시작되도록 활성화하려면 다음을 수행합니다.

    # systemctl enable --now stratisd

검증

  • stratisd 서비스가 활성화되어 있고 실행 중인지 확인합니다.

    # systemctl status stratisd
    stratisd.service - Stratis daemon
    Loaded: loaded (/usr/lib/systemd/system/stratisd.service; enabled; preset:>
    Active: active (running) since Tue 2025-03-25 14:04:42 CET; 30min ago
    Docs: man:stratisd(8)
    Main PID: 24141 (stratisd)
    Tasks: 22 (limit: 99365)
    Memory: 10.4M
    CPU: 1.436s
    CGroup: /system.slice/stratisd.service
    └─24141 /usr/libexec/stratisd --log-level debug

27.4. 암호화되지 않은 Stratis 풀 생성

하나 이상의 블록 장치에서 암호화되지 않은 Stratis 풀을 생성할 수 있습니다.

사전 요구 사항

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 풀을 생성 중인 블록 장치는 사용 중이 아니며, 마운트 해제되고, 공간이 1GB 이상입니다.
  • IBM Z 아키텍처에서 /dev/dasd* 블록 장치를 분할해야 합니다. Stratis 풀을 생성하려면 파티션 장치를 사용합니다.

    DASD 장치 파티셔닝에 대한 자세한 내용은 64비트 IBM Z에서 Linux 인스턴스 구성 을 참조하십시오.

참고

생성 중에 Stratis 풀만 암호화할 수 있으며 나중에는 암호화할 수 없습니다.

프로세스

  1. Stratis 풀에서 사용하려는 각 블록 장치에 존재하는 파일 시스템, 파티션 테이블 또는 RAID 서명을 지웁니다.

    # wipefs --all block-device

    block-device 값은 블록 장치의 경로입니다(예: /dev/sdb ).

  2. 선택한 블록 장치에 암호화되지 않은 새 Stratis 풀을 생성합니다.

    # stratis pool create my-pool block-device

    block-device 값은 비어 있거나 지워진 블록 장치의 경로입니다.

    다음 명령을 사용하여 한 줄에 여러 블록 장치를 지정할 수도 있습니다.

    # stratis pool create my-pool block-device-1 block-device-2

검증

  • 새 Stratis 풀이 생성되었는지 확인합니다.

    # stratis pool list

27.5. 웹 콘솔을 사용하여 암호화되지 않은 Stratis 풀 생성

웹 콘솔을 사용하여 하나 이상의 블록 장치에서 암호화되지 않은 Stratis 풀을 생성할 수 있습니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 풀을 생성 중인 블록 장치는 사용 중이 아니며, 마운트 해제되고, 공간이 1GB 이상입니다.
참고

암호화되지 않은 Stratis 풀을 생성한 후에는 암호화할 수 없습니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 표에서 메뉴 버튼을 클릭하고 Create Stratis pool 을 선택합니다.
  4. 이름 필드에 Stratis 풀의 이름을 입력합니다.
  5. Stratis 풀을 생성할 블록 장치를 선택합니다.
  6. 선택 사항: 풀에서 생성된 각 파일 시스템의 최대 크기를 지정하려면 파일 시스템 크기 관리를 선택합니다.
  7. 생성을 클릭합니다.

검증

  • 스토리지 섹션으로 이동하여 장치 테이블에서 새 Stratis 풀을 볼 수 있는지 확인합니다.

27.6. 커널 키링에서 키를 사용하여 암호화된 Stratis 풀 생성

데이터를 보호하려면 커널 인증 키를 사용하여 하나 이상의 블록 장치에서 암호화된 Stratis 풀을 생성할 수 있습니다.

이러한 방식으로 암호화된 Stratis 풀을 생성하면 커널 인증 키가 기본 암호화 메커니즘으로 사용됩니다. 이후 시스템이 재부팅된 후 이 커널 인증 키를 사용하여 암호화된 Stratis 풀의 잠금을 해제합니다.

하나 이상의 블록 장치에서 암호화된 Stratis 풀을 생성할 때 다음 사항에 유의하십시오.

  • 각 블록 장치는 cryptsetup 라이브러리를 사용하여 암호화되며 LUKS2 형식을 구현합니다.
  • 각 Stratis 풀에는 고유 키가 있거나 다른 풀과 동일한 키를 공유할 수 있습니다. 이러한 키는 커널 인증 키에 저장됩니다.
  • Stratis 풀을 구성하는 블록 장치는 모두 암호화되거나 암호화되지 않아야 합니다. 동일한 Stratis 풀에 암호화된 블록 장치와 암호화되지 않은 블록 장치를 모두 사용할 수 없습니다.
  • 암호화된 Stratis 풀의 데이터 캐시에 추가된 블록 장치는 자동으로 암호화됩니다.

사전 요구 사항

  • Stratis v2.1.0 이상이 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 풀을 생성 중인 블록 장치는 사용 중이 아니며, 마운트 해제되고, 공간이 1GB 이상입니다.
  • IBM Z 아키텍처에서 /dev/dasd* 블록 장치를 분할해야 합니다. Stratis 풀에서 파티션을 사용합니다.

    DASD 장치 파티셔닝에 대한 자세한 내용은 64비트 IBM Z에서 Linux 인스턴스 구성 을 참조하십시오.

프로세스

  1. Stratis 풀에서 사용하려는 각 블록 장치에 존재하는 파일 시스템, 파티션 테이블 또는 RAID 서명을 지웁니다.

    # wipefs --all block-device

    block-device 값은 블록 장치의 경로입니다(예: /dev/sdb ).

  2. 키를 이미 설정하지 않은 경우 다음 명령을 실행하고 프롬프트에 따라 암호화에 사용할 키 세트를 생성합니다.

    # stratis key set --capture-key key-description

    key-description 은 커널 인증 키에 생성되는 키에 대한 참조입니다. 명령줄에 키 값을 입력하라는 메시지가 표시됩니다. 키 값을 파일에 저장하고 --capture-key 옵션 대신 --keyfile-path 옵션을 사용할 수도 있습니다.

  3. 암호화된 Stratis 풀을 생성하고 암호화에 사용할 키 설명을 지정합니다.

    # stratis pool create --key-desc key-description my-pool block-device
    key-description
    이전 단계에서 생성한 커널 인증 키에 존재하는 키를 참조합니다.
    my-pool
    새 Stratis 풀의 이름을 지정합니다.
    block-device

    비어 있거나 지워진 블록 장치의 경로를 지정합니다.

    다음 명령을 사용하여 한 줄에 여러 블록 장치를 지정할 수도 있습니다.

    # stratis pool create --key-desc key-description my-pool block-device-1 block-device-2

검증

  • 새 Stratis 풀이 생성되었는지 확인합니다.

    # stratis pool list

27.7. Clevis를 사용하여 암호화된 Stratis 풀 생성

Stratis 2.4.0부터는 명령줄에서 Clevis 옵션을 지정하여 Clevis 메커니즘을 사용하여 암호화된 풀을 생성할 수 있습니다.

사전 요구 사항

프로세스

  1. Stratis 풀에서 사용하려는 각 블록 장치에 존재하는 파일 시스템, 파티션 테이블 또는 RAID 서명을 지웁니다.

    # wipefs --all block-device

    block-device 값은 블록 장치의 경로입니다(예: /dev/sdb ).

  2. 암호화된 Stratis 풀을 생성하고 암호화에 사용할 Clevis 메커니즘을 지정합니다.

    # stratis pool create --clevis tpm2 my-pool block-device
    tpm2
    사용할 Clevis 메커니즘을 지정합니다.
    my-pool
    새 Stratis 풀의 이름을 지정합니다.
    block-device

    비어 있거나 지워진 블록 장치의 경로를 지정합니다.

    또는 다음 명령을 사용하여 Clevis tang 서버 메커니즘을 사용합니다.

    # stratis pool create --clevis tang --tang-url my-url --thumbprint thumbprint my-pool block-device
    tang
    사용할 Clevis 메커니즘을 지정합니다.
    my-url
    tang 서버의 URL을 지정합니다.
    thumbprint

    tang 서버의 지문을 참조합니다.

    다음 명령을 사용하여 한 줄에 여러 블록 장치를 지정할 수도 있습니다.

    # stratis pool create --clevis tpm2 my-pool block-device-1 block-device-2

검증

  • 새 Stratis 풀이 생성되었는지 확인합니다.

    # stratis pool list
    참고

    풀 생성 중에 Clevis 및 인증 키 옵션을 동시에 지정하여 Clevis 및 인증 키 메커니즘을 둘 다 사용하여 암호화된 풀을 생성할 수도 있습니다.

27.8. 스토리지 RHEL 시스템 역할을 사용하여 암호화된 Stratis 풀 생성

데이터를 보호하기 위해 스토리지 RHEL 시스템 역할을 사용하여 암호화된 Stratis 풀을 생성할 수 있습니다. 암호 외에도 Clevis 및 Tang 또는 TPM 보호를 암호화 방법으로 사용할 수 있습니다.

중요

Stratis 암호화는 전체 풀에서만 구성할 수 있습니다.

사전 요구 사항

프로세스

  1. 중요한 변수를 암호화된 파일에 저장합니다.

    1. 자격 증명 모음을 생성합니다.

      $ ansible-vault create ~/vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
    2. ansible-vault create 명령이 편집기를 열고 < key > : < value > 형식으로 중요한 데이터를 입력합니다.

      luks_password: <password>
    3. 변경 사항을 저장하고 편집기를 종료합니다. Ansible은 자격 증명 모음의 데이터를 암호화합니다.
  2. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      vars_files:
        - ~/vault.yml
      tasks:
        - name: Create a new encrypted Stratis pool with Clevis and Tang
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_pools:
               - name: mypool
                 disks:
                   - sdd
                   - sde
                 type: stratis
                 encryption: true
                 encryption_password: "{{ luks_password }}"
                 encryption_clevis_pin: tang
                 encryption_tang_url: tang-server.example.com:7500

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    encryption_password
    LUKS 볼륨을 잠금 해제하는 데 사용되는 암호 또는 암호입니다.
    encryption_clevis_pin
    생성된 풀을 암호화하는 데 사용할 수 있는 Clevis 메서드입니다. tangtpm2 를 사용할 수 있습니다.
    encryption_tang_url
    Tang 서버의 URL입니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 파일을 참조하십시오.

  3. 플레이북 구문을 확인합니다.

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  4. Playbook을 실행합니다.

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

검증

  • Clevis 및 Tang이 구성된 상태로 풀이 생성되었는지 확인합니다.

    $ ansible managed-node-01.example.com -m command -a 'sudo stratis report'
    ...
                            "clevis_config": {
                                "thp": "j-G4ddvdbVfxpnUbgxlpbe3KutSKmcHttILAtAkMTNA",
                                "url": "tang-server.example.com:7500"
                            },
                            "clevis_pin": "tang",
                            "in_use": true,
                            "key_description": "blivet-mypool",

27.9. 웹 콘솔을 사용하여 암호화된 Stratis 풀 생성

데이터를 보호하려면 웹 콘솔을 사용하여 하나 이상의 블록 장치에서 암호화된 Stratis 풀을 생성할 수 있습니다.

하나 이상의 블록 장치에서 암호화된 Stratis 풀을 생성할 때 다음 사항에 유의하십시오.

  • 각 블록 장치는 cryptsetup 라이브러리를 사용하여 암호화되며 LUKS2 형식을 구현합니다.
  • 각 Stratis 풀에는 고유 키가 있거나 다른 풀과 동일한 키를 공유할 수 있습니다. 이러한 키는 커널 인증 키에 저장됩니다.
  • Stratis 풀을 구성하는 블록 장치는 모두 암호화되거나 암호화되지 않아야 합니다. 동일한 Stratis 풀에 암호화된 블록 장치와 암호화되지 않은 블록 장치를 모두 사용할 수 없습니다.
  • 암호화된 Stratis 풀의 데이터 계층에 추가된 블록 장치는 자동으로 암호화됩니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • Stratis v2.1.0 이상이 설치되고 stratisd 서비스가 실행 중입니다.
  • Stratis 풀을 생성 중인 블록 장치는 사용 중이 아니며, 마운트 해제되고, 공간이 1GB 이상입니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 표에서 메뉴 버튼을 클릭하고 Create Stratis pool 을 선택합니다.
  4. 이름 필드에 Stratis 풀의 이름을 입력합니다.
  5. Stratis 풀을 생성할 블록 장치를 선택합니다.
  6. 암호화 유형을 선택합니다. 암호, Tang 키 서버 또는 둘 다 사용할 수 있습니다.

  7. 선택 사항: 풀에서 생성된 각 파일 시스템의 최대 크기를 지정하려면 파일 시스템 크기 관리를 선택합니다.
  8. 생성을 클릭합니다.

검증

  • 스토리지 섹션으로 이동하여 장치 테이블에서 새 Stratis 풀을 볼 수 있는지 확인합니다.

27.10. 웹 콘솔을 사용하여 Stratis 풀 이름 변경

웹 콘솔을 사용하여 기존 Stratis 풀의 이름을 변경할 수 있습니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다.

    웹 콘솔은 기본적으로 Stratis를 감지하고 설치합니다. 그러나 Stratis를 수동으로 설치하려면 Stratis 설치를 참조하십시오.

  • Stratis 풀이 생성됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 테이블에서 이름을 변경할 Stratis 풀을 클릭합니다.
  4. Stratis 풀 페이지에서 이름 필드 옆에 있는 편집을 클릭합니다.
  5. Rename Stratis 풀 대화 상자에 새 이름을 입력합니다.
  6. Rename 을 클릭합니다.

27.11. Stratis 파일 시스템에서 프로비저닝 모드 설정

기본적으로 모든 Stratis 풀이 프로비저닝되므로 논리 파일 시스템 크기가 물리적으로 할당된 공간을 초과할 수 있습니다. Stratis는 파일 시스템 사용량을 모니터링하고 필요한 경우 사용 가능한 공간을 사용하여 자동으로 할당을 늘립니다. 그러나 사용 가능한 모든 공간이 이미 할당되어 있고 풀이 가득 차면 파일 시스템에 추가 공간을 할당할 수 없습니다.

참고

파일 시스템이 공간이 부족하면 사용자가 데이터가 손실될 수 있습니다. 데이터가 손실될 위험이 초과된 애플리케이션의 경우 이 기능을 비활성화할 수 있습니다.

Stratis는 풀 사용량을 지속적으로 모니터링하고 D-Bus API를 사용하여 값을 보고합니다. 스토리지 관리자는 이러한 값을 모니터링하고 필요에 따라 풀에 장치를 추가하여 용량에 도달하지 못하도록 해야 합니다.

사전 요구 사항

  • Stratis가 설치되어 있어야 합니다. 자세한 내용은 Stratis 설치를 참조하십시오.

프로세스

  • 풀을 올바르게 설정하려면 다음 두 가지 가능성이 있습니다.

    • 하나 이상의 블록 장치에서 풀을 생성하여 생성 시 풀이 완전히 프로비저닝되도록 합니다.

      # stratis pool create --no-overprovision pool-name /dev/sdb
    • --no-overprovision 옵션을 사용하면 풀은 실제 사용 가능한 물리적 공간보다 많은 논리 공간을 할당할 수 없습니다.

      1. 기존 풀에서 프로비저닝 모드를 통해 설정합니다.

        # stratis pool overprovision pool-name <yes|no>

        "yes"로 설정하면 풀에 대한 오버 프로비저닝을 활성화합니다. 즉, 풀에서 지원하는 Stratis 파일 시스템의 논리 크기 합계는 사용 가능한 데이터 공간 크기를 초과할 수 있습니다. 풀이 초과 프로비저닝되고 모든 파일 시스템의 논리 크기 합계가 풀에서 사용 가능한 공간을 초과하면 시스템은 프로비저닝을 끄고 오류를 반환할 수 없습니다.

검증

  1. Stratis 풀의 전체 목록을 확인합니다.

    # stratis pool list
    
    Name       Total Physical                    Properties    UUID                                  Alerts
    pool-name  1.42 TiB / 23.96 MiB / 1.42 TiB  ~Ca,~Cr,~Op    cb7cb4d8-9322-4ac4-a6fd-eb7ae9e1e540
  2. stratis pool list 출력에서 pool overprovisioning mode 플래그가 있는지 확인합니다. "~"은 "NOT"의 계산 기호이므로 ~Op 는 프로비저닝을 지원하지 않음을 의미합니다.
  3. 선택 사항: 특정 풀에서 프로비저닝을 검사합니다.

    # stratis pool overprovision pool-name yes
    
    # stratis pool list
    
    Name          Total Physical                    Properties     UUID                                   Alerts
    pool-name     1.42 TiB / 23.96 MiB / 1.42 TiB   ~Ca,~Cr,~Op    cb7cb4d8-9322-4ac4-a6fd-eb7ae9e1e540

27.12. NBDE에 Stratis 풀 바인딩

암호화된 Stratis 풀을 NBDE(Network Bound Disk Encryption)에 바인딩하려면 Tang 서버가 필요합니다. Stratis 풀이 포함된 시스템이 재부팅되면 Tang 서버와 연결하여 커널 인증 키 설명을 제공하지 않고도 암호화된 풀의 잠금을 자동으로 해제합니다.

참고

Stratis 풀을 보조 Clevis 암호화 메커니즘에 바인딩해도 기본 커널 인증 키 암호화는 제거되지 않습니다.

사전 요구 사항

프로세스

  • 암호화된 Stratis 풀을 NBDE에 바인딩합니다.

    # stratis pool bind nbde --trust-url my-pool tang-server
    my-pool
    암호화된 Stratis 풀의 이름을 지정합니다.
    tang-server
    Tang 서버의 IP 주소 또는 URL을 지정합니다.

27.13. Stratis 풀을 TPM에 바인딩

암호화된 Stratis 풀을 신뢰할 수 있는 플랫폼 모듈(TPM) 2.0에 바인딩하면 풀이 재부팅되고 커널 키링 설명을 제공하지 않고도 풀이 자동으로 잠금 해제됩니다.

사전 요구 사항

프로세스

  • 암호화된 Stratis 풀을 TPM에 바인딩합니다.

    # stratis pool bind tpm my-pool
    my-pool
    암호화된 Stratis 풀의 이름을 지정합니다.
    key-description
    암호화된 Stratis 풀을 생성할 때 생성된 커널 인증 키에 존재하는 키를 참조합니다.

27.14. 커널 인증 키를 사용하여 암호화된 Stratis 풀 잠금 해제

시스템을 재부팅한 후 암호화된 Stratis 풀 또는 이를 구성하는 블록 장치가 표시되지 않을 수 있습니다. 풀을 암호화하는 데 사용된 커널 인증 키를 사용하여 풀 잠금을 해제할 수 있습니다.

사전 요구 사항

프로세스

  1. 이전에 사용된 것과 동일한 키 설명을 사용하여 키 세트를 다시 생성합니다.

    # stratis key set --capture-key key-description

    key-description 은 암호화된 Stratis 풀을 생성할 때 생성된 커널 인증 키에 존재하는 키를 참조합니다.

  2. Stratis 풀이 표시되는지 확인합니다.

    # stratis pool list

27.15. 보조 암호화에서 Stratis 풀 바인딩 해제

지원되는 보조 암호화 메커니즘에서 암호화된 Stratis 풀을 바인딩 해제하면 기본 커널 키링 암호화가 그대로 유지됩니다. 처음부터 Clevis 암호화로 생성된 풀에는 사실이 아닙니다.

사전 요구 사항

프로세스

  • 보조 암호화 메커니즘에서 암호화된 Stratis 풀을 바인딩 해제합니다.

    # stratis pool unbind clevis my-pool

    my-pool 은 바인딩 해제하려는 Stratis 풀의 이름을 지정합니다.

27.16. Stratis 풀 시작 및 중지

Stratis 풀을 시작하고 중지할 수 있습니다. 이 옵션을 사용하면 파일 시스템, 캐시 장치, 씬 풀, 암호화된 장치와 같이 풀을 구성하는 데 사용된 모든 오브젝트를 제거하거나 중단할 수 있습니다. 풀이 장치 또는 파일 시스템을 적극적으로 사용하는 경우 경고가 표시될 수 있으며 중지할 수 없습니다.

중지된 상태는 풀의 메타데이터에 기록됩니다. 이러한 풀은 풀이 start 명령을 수신할 때까지 다음 부팅에서 시작되지 않습니다.

사전 요구 사항

프로세스

  • 다음 명령을 사용하여 Stratis 풀을 중지합니다. 이렇게 하면 스토리지 스택이 제거되지만 모든 메타데이터는 그대로 유지됩니다.

    # stratis pool stop --name pool-name
  • 다음 명령을 사용하여 Stratis 풀을 시작합니다. --unlock-method 옵션은 암호화된 경우 풀 잠금을 해제하는 방법을 지정합니다.

    # stratis pool start --unlock-method <keyring|clevis> --name pool-name
    참고

    풀 이름 또는 풀 UUID를 사용하여 풀을 시작할 수 있습니다.

검증

  • 다음 명령을 사용하여 시스템의 모든 활성 풀을 나열합니다.

    # stratis pool list
  • 다음 명령을 사용하여 중지된 모든 풀을 나열합니다.

    # stratis pool list --stopped
  • 중지된 풀에 대한 자세한 정보를 보려면 다음 명령을 사용합니다. UUID가 지정되면 명령은 UUID에 해당하는 풀에 대한 자세한 정보를 출력합니다.

    # stratis pool list --stopped --uuid UUID

27.17. Stratis 파일 시스템 생성

기존 Stratis 풀에서 Stratis 파일 시스템을 생성합니다.

사전 요구 사항

프로세스

  1. 풀에 Stratis 파일 시스템을 생성합니다.

    # stratis filesystem create --size number-and-unit my-pool my-fs
    number-and-unit
    파일 시스템의 크기를 지정합니다. 사양 형식은 입력에 대한 표준 크기 사양 형식(B, KiB, MiB, GiB, TiB 또는 PiB)을 따라야 합니다.
    my-pool
    Stratis 풀의 이름을 지정합니다.
    my-fs

    파일 시스템의 임의의 이름을 지정합니다.

    예를 들어 Stratis 파일 시스템을 생성합니다.

    # stratis filesystem create --size 10GiB pool1 filesystem1
  2. 파일 시스템의 크기 제한을 설정합니다.

    # stratis filesystem create --size number-and-unit --size-limit number-and-unit my-pool my-fs
    참고

    이 옵션은 Stratis 3.6.0부터 사용할 수 있습니다.

    필요한 경우 나중에 크기 제한을 제거할 수도 있습니다.

    # stratis filesystem unset-size-limit my-pool my-fs

검증

  • 풀 내에 파일 시스템을 나열하여 Stratis 파일 시스템이 생성되었는지 확인합니다.

    # stratis fs list my-pool

27.18. Stratis 파일 시스템 마운트

기존 Stratis 파일 시스템을 마운트하여 콘텐츠에 액세스합니다.

사전 요구 사항

프로세스

  • 파일 시스템을 마운트하려면 Stratis가 /dev/stratis/ 디렉터리에서 유지 관리하는 항목을 사용합니다.

    # mount /dev/stratis/my-pool/my-fs mount-point

    이제 파일 시스템이 마운트 지점 디렉터리에 마운트 되어 사용할 준비가 되었습니다.

    참고

    중지하기 전에 풀에 속하는 모든 파일 시스템을 마운트 해제합니다. 파일 시스템이 여전히 마운트된 경우 풀이 중지되지 않습니다.

27.19. 부팅 시 Stratis 파일 시스템 마운트 구성

파일 시스템 풀을 올바르게 시작하는 메커니즘을 설정하여 부팅 시 마운트되도록 Stratis 파일 시스템을 구성할 수 있습니다. 이 경우 마운트 작업이 실패합니다. Stratis는 이 프로세스를 지원하기 위해 두 가지 systemd 서비스를 제공합니다.

참고

Stratis는 현재 루트 파일 시스템 관리를 지원하지 않습니다. 이러한 지침은 루트가 아닌 파일 시스템에만 적용됩니다.

사전 요구 사항

  • Stratis 파일 시스템(예: < my-fs >)은 Stratis 풀(예: < my-pool > )에 생성됩니다. 자세한 내용은 Stratis 파일 시스템 생성을 참조하십시오.
  • 마운트 지점 디렉터리가 생성됩니다(예: < mount-point> ).
  • 파일 시스템 풀의 UUID가 결정됩니다(예: < pool-uuid> ).

프로세스

  • root 로서 /etc/fstab 파일을 편집합니다.

    • 파일 시스템의 /etc/ fstab 항목의 마운트 옵션에 x-systemd.requires=stratis-fstab-setup@ <pool-uuid > .service 를 추가합니다.

      /dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup@<pool-uuid>.service
    • Clevis를 통해 NBDE(Network Bound Disk Encryption)를 사용하여 풀을 암호화한 경우 x-systemd.requires=stratis-fstab-setup-with-network@ <pool-uuid > .service_netdev 를 추가합니다.

      /dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup-with-network@<pool-uuid>.service,_netdev

      교체:

  • 파일 시스템이 포함된 Stratis 풀의 이름이 <my-pool >입니다.
  • 풀 내에서 생성된 Stratis 파일 시스템의 이름이 < my-fs >입니다.
  • 파일 시스템을 마운트하려는 디렉터리의 이름이 <Mount-point >입니다.
  • 파일 시스템 풀의 UUID를 사용한 <pool-uuid >.
중요

부팅 시 암호화된 Stratis 풀에서 Stratis 파일 시스템을 마운트하면 암호가 제공될 때까지 부팅 프로세스가 중지될 수 있습니다. 자동 메커니즘을 사용하여 풀을 암호화하는 경우(예: NBDE 또는 TPM2) Stratis 풀은 자동으로 잠금 해제됩니다. 그렇지 않은 경우 사용자가 파일 시스템의 풀 잠금을 해제하려면 콘솔에 암호를 입력해야 할 수 있습니다.

27.20. 웹 콘솔을 사용하여 Stratis 파일 시스템 생성 및 구성

웹 콘솔을 사용하여 기존 Stratis 풀에서 파일 시스템을 생성할 수 있습니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • stratisd 서비스가 실행 중입니다.
  • Stratis 풀이 생성됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 파일 시스템을 생성할 Stratis 풀을 클릭합니다.
  4. Stratis 풀 페이지에서 Stratis 파일 시스템 섹션으로 스크롤하고 새 파일 시스템 만들기를 클릭합니다.
  5. 파일 시스템의 이름을 입력합니다.
  6. 파일 시스템의 마운트 지점을 입력합니다.
  7. 마운트 옵션을 선택합니다.
  8. 부팅 시 드롭다운 메뉴에서 파일 시스템을 마운트할 시기를 선택합니다.
  9. 파일 시스템을 생성합니다.

    • 파일 시스템을 생성하고 마운트하려면 생성 및 마운트 를 클릭합니다.
    • 파일 시스템만 만들려면 생성 을 클릭합니다.

검증

  • 새 파일 시스템은 Stratis 파일 시스템 탭 아래의 Stratis 페이지에 표시됩니다.

28장. 추가 블록 장치를 사용하여 Stratis 풀 확장

Stratis 풀에 추가 블록 장치를 연결하여 Stratis 파일 시스템에 더 많은 스토리지 용량을 제공할 수 있습니다. 수동으로 또는 웹 콘솔을 사용하여 수행할 수 있습니다.

28.1. Stratis 풀에 블록 장치 추가

Stratis 풀에 하나 이상의 블록 장치를 추가할 수 있습니다.

사전 요구 사항

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 풀을 생성 중인 블록 장치는 사용 중이 아니며, 마운트 해제되고, 공간이 1GB 이상입니다.

프로세스

  • 하나 이상의 블록 장치를 풀에 추가하려면 다음을 사용합니다.

    # stratis pool add-data my-pool device-1 device-2 device-n

28.2. 웹 콘솔을 사용하여 Stratis 풀에 블록 장치 추가

웹 콘솔을 사용하여 기존 Stratis 풀에 블록 장치를 추가할 수 있습니다. 캐시를 블록 장치로 추가할 수도 있습니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • stratisd 서비스가 실행 중입니다.
  • Stratis 풀이 생성됩니다.
  • Stratis 풀을 생성 중인 블록 장치는 사용 중이 아니며, 마운트 해제되고, 공간이 1GB 이상입니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 테이블에서 블록 장치를 추가할 Stratis 풀을 클릭합니다.
  4. Stratis 풀 페이지에서 블록 장치 추가를 클릭하고 블록 장치를 데이터 또는 캐시로 추가할 계층 위치를 선택합니다.
  5. 암호로 암호화된 Stratis 풀에 블록 장치를 추가하는 경우 암호를 입력합니다.
  6. 블록 장치에서 풀에 추가할 장치를 선택합니다.
  7. 추가 를 클릭합니다.

29장. Stratis 파일 시스템 모니터링

Stratis 사용자는 시스템의 Stratis 파일 시스템에 대한 정보를 확인하여 상태 및 여유 공간을 모니터링할 수 있습니다.

29.1. Stratis 파일 시스템에 대한 정보 표시

stratis 유틸리티를 사용하여 풀에 속한 총 크기 또는 파일 시스템 및 블록 장치와 같은 Stratis 파일 시스템에 대한 통계를 나열할 수 있습니다.

XFS 파일 시스템의 크기는 관리할 수 있는 총 사용자 데이터 양입니다. 씬 프로비저닝된 Stratis 풀에서 Stratis 파일 시스템에는 할당된 공간보다 큰 크기가 있는 것처럼 보일 수 있습니다. XFS 파일 시스템은 이 명확한 크기와 일치하도록 크기가 조정되므로 일반적으로 할당된 공간보다 큽니다. df와 같은 표준 Linux 유틸리티는 XFS 파일 시스템의 크기를 보고합니다. 이 값은 일반적으로 XFS 파일 시스템에 필요한 공간을 초과하므로 Stratis에서 할당된 공간을 덮어씁니다.

중요

과도하게 프로비저닝된 Stratis 풀의 사용을 정기적으로 모니터링합니다. 파일 시스템 사용량이 할당된 공간에 접근하면 Stratis는 풀에서 사용 가능한 공간을 사용하여 자동으로 할당을 늘립니다. 그러나 사용 가능한 모든 공간이 이미 할당되어 있고 풀이 가득 차면 추가 공간을 할당할 수 없으므로 파일 시스템이 공간이 부족해집니다. 이로 인해 Stratis 파일 시스템을 사용하여 애플리케이션에서 데이터가 손실될 위험이 발생할 수 있습니다.

사전 요구 사항

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.

프로세스

  • 시스템의 Stratis에 사용되는 모든 블록 장치에 대한 정보를 표시하려면 다음을 수행합니다.

    # stratis blockdev
    Pool Name   Device Node  Physical Size  Tier	UUID
    my-pool     /dev/sdb     9.10 TiB       Data    ec9fb718-f83c-11ef-861e-7446a09dccfb
  • 시스템의 모든 Stratis 풀에 대한 정보를 표시하려면 다음을 수행합니다.

    # stratis pool
    
    Name     Total/Used/Free		            Properties  UUID	                              Alerts
    my-pool  8.00 GiB / 800.99 MiB / 7.22 GiB  -Ca,-Cr,Op   e22772c2-afe9-446c-9be5-2f78f682284e  WS001
  • 시스템의 모든 Stratis 파일 시스템에 대한 정보를 표시하려면 다음을 수행합니다.

    # stratis filesystem
    
    Pool	Filesystem  Total/Used/Free/Limit		          Device		             UUID
    Spool1  sfs1		1 TiB / 546 MiB / 1023.47 GiB / None  /dev/stratis/spool1/sfs1   223265f5-8f17-4cc2-bf12-c3e9e71ff7bf

파일 시스템 이름 또는 UUID를 지정하여 시스템에서 Stratis 파일 시스템에 대한 세부 정보를 표시할 수도 있습니다.

# stratis filesystem list my-pool --name my-fs

UUID: 47255008-9bc7-4bd2-8294-e9d25cd9e7ba
Name: my-fs
Pool: my-pool
Device: /dev/stratis/my-pool/my-fs
Created: Nov 08 2018 08:03
Snapshot origin: None
Sizes:
	Logical size of thin device: 1 TiB
	Total used (including XFS metadata): 546 MiB
	Free: 1023.47 GiB
 Size Limit: None

29.2. 웹 콘솔을 사용하여 Stratis 풀 보기

웹 콘솔을 사용하여 기존 Stratis 풀 및 포함된 파일 시스템을 볼 수 있습니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • stratisd 서비스가 실행 중입니다.
  • 기존 Stratis 풀이 있습니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 테이블에서 볼 Stratis 풀을 클릭합니다.

    Stratis 풀 페이지에는 풀에 대한 모든 정보와 풀에서 생성한 파일 시스템이 표시됩니다.

30장. Stratis 파일 시스템에서 스냅샷 사용

Stratis 파일 시스템의 스냅샷을 사용하여 임의의 시간에 파일 시스템 상태를 캡처하고 나중에 복원할 수 있습니다.

30.1. Stratis 스냅샷의 특성

Stratis에서 스냅샷은 다른 Stratis 파일 시스템의 사본으로 생성된 일반 Stratis 파일 시스템입니다.

Stratis의 현재 스냅샷 구현은 다음과 같습니다.

  • 파일 시스템의 스냅샷은 다른 파일 시스템입니다.
  • 스냅샷과 원본은 수명 동안 연결되지 않습니다. 스냅샷된 파일 시스템은 생성된 파일 시스템보다 오래 지속될 수 있습니다.
  • 스냅샷 생성을 위해 파일 시스템을 마운트할 필요가 없습니다.
  • 각 스냅샷은 XFS 로그에 필요한 실제 백업 스토리지의 약 절반을 사용합니다.

30.2. Stratis 스냅샷 생성

Stratis 파일 시스템을 기존 Stratis 파일 시스템의 스냅샷으로 생성할 수 있습니다.

사전 요구 사항

프로세스

  • Stratis 스냅샷을 생성합니다.

    # stratis fs snapshot my-pool my-fs my-fs-snapshot

스냅샷은 첫 번째 클래스 Stratis 파일 시스템입니다. 여러 Stratis 스냅샷을 생성할 수 있습니다. 여기에는 단일 원본 파일 시스템 또는 다른 스냅샷 파일 시스템의 스냅샷이 포함됩니다. 파일 시스템이 스냅샷인 경우 origin 필드는 자세한 파일 시스템 목록에 원본 파일 시스템의 UUID를 표시합니다.

30.3. Stratis 스냅샷의 콘텐츠에 액세스

Stratis 파일 시스템의 스냅샷을 마운트하여 읽기 및 쓰기 작업에서 액세스할 수 있도록 할 수 있습니다.

사전 요구 사항

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 스냅샷을 생성했습니다. 자세한 내용은 Stratis 스냅샷 생성을 참조하십시오.

프로세스

  • 스냅샷에 액세스하려면 /dev/stratis/my-pool/ 디렉토리에서 일반 파일 시스템으로 마운트하십시오.

    # mount /dev/stratis/my-pool/my-fs-snapshot mount-point

30.4. Stratis 파일 시스템을 이전 스냅샷으로 되돌리기

Stratis 파일 시스템의 콘텐츠를 Stratis 스냅샷에 캡처된 상태로 되돌릴 수 있습니다.

사전 요구 사항

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 스냅샷을 생성했습니다. 자세한 내용은 Stratis 스냅샷 생성을 참조하십시오.

프로세스

  1. 선택 사항: 나중에 액세스할 수 있도록 파일 시스템의 현재 상태를 백업합니다.

    # stratis filesystem snapshot my-pool my-fs my-fs-backup
  2. 이전에 만든 스냅샷에 파일 시스템 되돌리기를 예약합니다.

    # stratis filesystem schedule-revert my-pool my-fs-snapshot
  3. 선택 사항: 되돌리기가 성공적으로 예약되었는지 확인하려면 다음을 실행합니다.

    # stratis filesystem list my-pool --name my-fs-snapshot
    UUID: b14987eb-b735-4c68-8962-f53f6b644cbc
    Name: my-fs-snapshot
    Pool: my-pool
    
    Device: /dev/stratis/p1/my-fs-snapshot
    
    Created: Mar 18 2025 12:29
    
    Snapshot origin: f5a881b1-299d-4147-8ead-b4a56c623692
    Revert scheduled: Yes
    
    Sizes:
    Logical size of thin device: 1 TiB
    Total used (including XFS metadata): 5.42 GiB
    Free: 1018.58 GiB
    참고

    하나 이상의 되돌리기 작업을 동일한 원본 파일 시스템으로 예약할 수 없습니다. 또한 원본 파일 시스템 또는 되돌리기를 예약한 스냅샷을 제거하려고 하면 제거 작업이 실패합니다.

    풀을 재시작하기 전에 언제든지 되돌리기 작업을 취소할 수도 있습니다.

    # stratis filesystem cancel-revert my-pool my-fs-snapshot

    다음을 실행하여 취소가 성공적으로 예약되었는지 확인할 수 있습니다.

    # stratis filesystem list my-pool --name my-fs-snapshot
    UUID: b14987eb-b735-4c68-8962-f53f6b644cbc
    Name: my-fs-snapshot
    Pool: my-pool
    
    Device: /dev/stratis/p1/my-fs-snapshot
    
    Created: Mar 18 2025 12:29
    
    Snapshot origin: f5a881b1-299d-4147-8ead-b4a56c623692
    Revert scheduled: No
    
    Sizes:
    Logical size of thin device: 1 TiB
    Total used (including XFS metadata): 5.42 GiB
    Free: 1018.58 GiB
    
    Size Limit: None

    취소하지 않으면 풀을 다시 시작할 때 예약된 복원이 진행됩니다.

    # stratis pool stop --name my-pool
    # stratis pool start --name my-pool

검증

  1. 풀에 속하는 파일 시스템을 나열합니다.

    # stratis filesystem list my-pool

이전에 복사한 my-fs-snapshot 상태로 되돌리기 때문에 이제 my-fs-snapshot 이 풀의 파일 시스템 목록에 표시되지 않습니다. my-fs 라는 파일 시스템의 내용은 이제 스냅샷 my-fs-snapshot 과 동일합니다.

30.5. Stratis 스냅샷 제거

풀에서 Stratis 스냅샷을 제거할 수 있습니다. 스냅샷의 데이터가 손실됩니다.

사전 요구 사항

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다. 자세한 내용은 Stratis 설치를 참조하십시오.
  • Stratis 스냅샷을 생성했습니다. 자세한 내용은 Stratis 스냅샷 생성을 참조하십시오.

프로세스

  1. 스냅샷을 마운트 해제합니다.

    # umount /dev/stratis/my-pool/my-fs-snapshot
  2. 스냅샷을 삭제합니다.

    # stratis filesystem destroy my-pool my-fs-snapshot

31장. Stratis 파일 시스템 제거

기존 Stratis 파일 시스템 또는 풀을 제거할 수 있습니다. Stratis 파일 시스템 또는 풀이 제거되면 복구할 수 없습니다.

31.1. Stratis 파일 시스템 제거

기존 Stratis 파일 시스템을 제거할 수 있습니다. 저장된 데이터는 손실됩니다.

사전 요구 사항

프로세스

  1. 파일 시스템을 마운트 해제합니다.

    # umount /dev/stratis/my-pool/my-fs
  2. 파일 시스템을 삭제합니다.

    # stratis filesystem destroy my-pool my-fs

검증

  • 파일 시스템이 더 이상 존재하지 않는지 확인합니다.

    # stratis filesystem list my-pool

31.2. 웹 콘솔을 사용하여 Stratis 풀에서 파일 시스템 삭제

웹 콘솔을 사용하여 기존 Stratis 풀에서 파일 시스템을 삭제할 수 있습니다.

참고

Stratis 풀 파일 시스템을 삭제하면 포함된 모든 데이터가 지워집니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • Stratis가 설치되고 stratisd 서비스가 실행 중입니다.

    웹 콘솔은 기본적으로 Stratis를 감지하고 설치합니다. 그러나 Stratis를 수동으로 설치하려면 Stratis 설치를 참조하십시오.

  • 기존 Stratis 풀이 있고 Stratis 풀에 파일 시스템이 생성됩니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 표에서 파일 시스템을 삭제할 Stratis 풀을 클릭합니다.
  4. Stratis 풀 페이지에서 Stratis 파일 시스템 섹션으로 스크롤하고 삭제하려는 파일 시스템의 메뉴 버튼을 클릭합니다.
  5. 드롭다운 메뉴에서 삭제 를 선택합니다.
  6. 삭제 확인 대화 상자에서 삭제 를 클릭합니다.

31.3. Stratis 풀 제거

기존 Stratis 풀을 제거할 수 있습니다. 저장된 데이터는 손실됩니다.

사전 요구 사항

프로세스

  1. 풀의 파일 시스템을 나열합니다.

    # stratis filesystem list my-pool
  2. 풀의 모든 파일 시스템을 마운트 해제합니다.

    # umount /dev/stratis/my-pool/my-fs-1 \
             /dev/stratis/my-pool/my-fs-2 \
             /dev/stratis/my-pool/my-fs-n
  3. 파일 시스템을 삭제합니다.

    # stratis filesystem destroy my-pool my-fs-1 my-fs-2
  4. 풀을 삭제합니다.

    # stratis pool destroy my-pool

검증

  • 풀이 더 이상 존재하지 않는지 확인합니다.

    # stratis pool list

31.4. 웹 콘솔을 사용하여 Stratis 풀 삭제

웹 콘솔을 사용하여 기존 Stratis 풀을 삭제할 수 있습니다.

참고

Stratis 풀을 삭제하면 포함된 모든 데이터가 지워집니다.

사전 요구 사항

  • RHEL 10 웹 콘솔을 설치했습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • stratisd 서비스가 실행 중입니다.
  • 기존 Stratis 풀이 있습니다.

프로세스

  1. RHEL 10 웹 콘솔에 로그인합니다.
  2. 스토리지를 클릭합니다.
  3. 스토리지 테이블에서 삭제하려는 Stratis 풀에 대한 메뉴 버튼을 클릭합니다.
  4. 드롭다운 메뉴에서 풀 삭제 를 선택합니다.
  5. Permanently delete pool 대화 상자에서 Delete 를 클릭합니다.

32장. ext4 파일 시스템 시작하기

시스템 관리자는 ext4 파일 시스템을 생성, 마운트, 크기 조정, 백업 및 복원할 수 있습니다. ext4 파일 시스템은 ext3 파일 시스템의 확장 가능한 확장입니다. Red Hat Enterprise Linux 10을 사용하면 최대 개별 파일 크기인 16 테라바이트와 파일 시스템을 최대 50 TB까지 지원할 수 있습니다.

32.1. ext4 파일 시스템의 기능

ext4 파일 시스템의 기능은 다음과 같습니다.

  • Extent 사용: ext4 파일 시스템은 Extent를 사용하므로 대용량 파일을 사용할 때 성능이 향상되고 대용량 파일의 메타데이터 오버헤드가 줄어듭니다.
  • Ext4는 적절하게 할당되지 않은 블록 그룹 및 inode 테이블 섹션에 레이블을 지정하여 파일 시스템 확인 중에 블록 그룹 및 테이블 섹션을 건너뛸 수 있습니다. 파일 시스템의 크기가 증가함에 따라 빠른 파일 시스템 검사를 수행할 수 있습니다.
  • 메타데이터 체크섬: 기본적으로 이 기능은 Red Hat Enterprise Linux 10에서 활성화됩니다.
  • ext4 파일 시스템의 할당 기능:

    • 영구 사전 할당
    • 지연된 할당
    • 다중 블록 할당
    • 스트라이프 인식 할당
  • 확장 속성(xattr): 시스템에서 파일당 여러 개의 추가 이름과 값 쌍을 연결할 수 있습니다.
  • 할당량 저널링: 충돌 후 긴 할당량 일관성 검사가 필요하지 않습니다.

    참고

    ext4에서 지원되는 유일한 저널링 모드는 data=ordered (기본값)입니다. 자세한 내용은 RHEL에서 지원되는 EXT 저널링 옵션 "data=writeback" 인 Red Hat 지식베이스 솔루션을 참조하십시오.

  • 하위 타임 스탬프 - 하위 초에 타임스탬프를 제공합니다.

자세한 내용은 시스템의 ext4 도움말 페이지를 참조하십시오.

32.2. ext4 파일 시스템 생성

시스템 관리자는 mkfs.ext4 명령을 사용하여 블록 장치에서 ext4 파일 시스템을 만들 수 있습니다.

사전 요구 사항

프로세스

  1. ext4 파일 시스템을 생성하려면 다음을 수행합니다.

    • 일반 파티션 장치, LVM 볼륨, MD 볼륨 또는 유사한 장치의 경우 다음 명령을 사용합니다.

      # mkfs.ext4 /dev/block_device

      /dev/block_device 를 블록 장치의 경로로 바꿉니다.

      예를 들어 /dev/sdb1,/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 또는 /dev/my-volgroup/my-lv. 일반적으로 기본 옵션은 대부분의 사용 시나리오에 가장 적합합니다.

    • 스트라이핑된 블록 장치(예: RAID5 배열)의 경우 파일 시스템 생성 시 스트라이프를 지정할 수 있습니다. 적절한 스트라이프를 사용하면 ext4 파일 시스템의 성능이 향상됩니다. 예를 들어 4k 블록 파일 시스템에서 64k stride(즉, 16 x 4096)를 사용하여 파일 시스템을 생성하려면 다음 명령을 사용합니다.

      # mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device

      다음 예제에서는 다음을 수행합니다.

      • stride=value: RAID 청크 크기를 지정합니다.
      • stripe-width=value: RAID 장치의 데이터 디스크 수 또는 스트라이프의 스트라이프 단위 수를 지정합니다.
    참고
    • 파일 시스템을 생성할 때 UUID를 지정하려면 다음을 수행합니다.

      # mkfs.ext4 -U UUID /dev/block_device

      UUID 를 설정할 UUID(예: 7cd65de3-e0be-41d-b66d-96d749c02da7 )로 바꿉니다.

      UUID가 추가되도록 /dev/block_device 를 ext4 파일 시스템의 경로로 바꿉니다(예: /dev/sda8 ).

    • 파일 시스템을 생성할 때 라벨을 지정하려면 다음을 수행합니다.

      # mkfs.ext4 -L label-name /dev/block_device
  2. 생성된 ext4 파일 시스템을 보려면 다음을 수행합니다.

    # blkid

32.3. ext4 파일 시스템 마운트

시스템 관리자는 마운트 유틸리티를 사용하여 ext4 파일 시스템을 마운트 할 수 있습니다.

사전 요구 사항

프로세스

  1. 파일 시스템을 마운트할 마운트 지점을 생성하려면 다음을 수행합니다.

    # mkdir /mount/point

    /mount/point 를 파티션의 마운트 지점을 생성해야 하는 디렉토리 이름으로 바꿉니다.

  2. ext4 파일 시스템을 마운트하려면 다음을 수행합니다.

    • 추가 옵션 없이 ext4 파일 시스템을 마운트하려면 다음을 수행합니다.

      # mount /dev/block_device /mount/point
    • 파일 시스템을 영구적으로 마운트하려면 파일 시스템 영구 마운트 를 참조하십시오.
  3. 마운트된 파일 시스템을 보려면 다음을 수행합니다.

    # df -h

32.4. ext4 파일 시스템 크기 조정

시스템 관리자는 resize2fs 유틸리티를 사용하여 ext4 파일 시스템의 크기를 조정할 수 있습니다. 특정 장치를 나타내는 접미사가 사용되지 않는 한 resize2fs 유틸리티는 파일 시스템 블록 크기의 단위로 크기를 읽습니다. 다음 접미사는 특정 단위를 나타냅니다.

  • s (sectors) - 512 바이트 섹터
  • K(kilobytes) - 1,024 바이트
  • m (megabytes) - 1,048,576 바이트
  • G (gigabytes) - 1,073,741,824 바이트
  • t (terabytes) - 1,099,511,627,776 바이트

사전 요구 사항

  • ext4 파일 시스템. ext4 파일 시스템 생성에 대한 자세한 내용은 ext4 파일 시스템 생성을 참조하십시오.
  • 크기 조정 후 파일 시스템을 보관하는 적절한 크기의 기본 블록 장치입니다.

프로세스

  1. ext4 파일 시스템의 크기를 조정하려면 다음 단계를 따르십시오.

    • 마운트 해제된 ext4 파일 시스템의 크기를 축소하고 확장하려면 다음을 수행합니다.

      # umount /dev/block_device
      # e2fsck -f /dev/block_device
      # resize2fs /dev/block_device size

      /dev/block_device 를 블록 장치의 경로로 바꿉니다(예: /dev/sdb1 ).

      s,K,M,G, T 접미사를 사용하여 size 를 필요한 크기 조정 값으로 바꿉니다.

    • resize2fs 명령을 사용하여 마운트하는 동안 ext4 파일 시스템이 증가할 수 있습니다.

      # resize2fs /mount/device size
      참고

      size 매개변수는 확장 시 선택 사항(및 종종 중복되는 경우가 있음)입니다. resize2fs 는 자동으로 확장되어 컨테이너의 사용 가능한 공간(일반적으로 논리 볼륨 또는 파티션)을 채웁니다.

  2. 크기 조정 파일 시스템을 보려면 다음을 수행합니다.

    # df -h

32.5. ext4 및 XFS와 함께 사용되는 툴 비교

이 섹션에서는 ext4 및 XFS 파일 시스템에서 일반적인 작업을 수행하는 데 사용할 툴을 비교합니다.

Expand
Taskext4XFS

파일 시스템 생성

mkfs.ext4

mkfs.xfs

파일 시스템 검사

e2fsck

xfs_repair

파일 시스템 크기 조정

resize2fs

xfs_growfs

파일 시스템의 이미지 저장

e2image

xfs_metadumpxfs_mdrestore

파일 시스템 레이블 또는 튜닝

tune2fs

xfs_admin

파일 시스템 백업

tarrsync

xfsdumpxfsrestore

할당량 관리

할당량

xfs_quota

파일 매핑

filefrag

filefrag

참고

네트워크를 통한 백업에 대한 전체 클라이언트-서버 솔루션을 사용하려면 RHEL 9에서 사용할 수 있는 bacula 백업 유틸리티를 사용할 수 있습니다. Bacula에 대한 자세한 내용은 Bacula 백업 솔루션을 참조하십시오.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동