4.9. 커널
RHEL 9.0의 커널 버전
Red Hat Enterprise Linux 9.0은 커널 버전 5.14.0-70과 함께 배포됩니다.
Red Hat은 기본적으로 권한 있는 사용자에 대해서만 모든 RHEL 버전에서 eBPF 를 활성화합니다.
eBPF(extended Berkeley Packet Filter)는 복잡한 기술로, 사용자가 Linux 커널 내에서 사용자 지정 코드를 실행할 수 있습니다. 따라서 eBPF 코드는 검증기 및 기타 보안 메커니즘을 통과해야 합니다. CVE(Common Vulnerabilities and Exposures) 인스턴스가 있으며, 이 코드의 버그는 인증되지 않은 작업을 위해 오용될 수 있었습니다. 이 위험을 완화하기 위해 Red Hat은 권한 있는 사용자에 대해서만 모든 RHEL 버전에서 기본적으로 eBPF 를 활성화했습니다. kernel.command-line 매개변수 privileged _bpf_disabled=0을 사용하여 권한이 없는
사용자에 대해 eBPF 를 활성화할 수 있습니다.
그러나 다음 사항에 유의하십시오.
-
권한이 없는_bpf_disabled=0
을 적용하면 커널이 Red Hat 지원에서 평가되고 보안 위험으로 시스템이 열립니다. -
Red Hat은 기능이
CAP_SYS_ADMIN
과 같은 경우CAP_BPF
기능을 사용하여 프로세스를 처리할 것을 권장합니다. -
unauthorized
_bpf_disabled=0
을 설정하면 대부분의 BPF 프로그램 유형을 로드하려면 추가 기능(일반적으로CAP_SYS_ADMIN
또는CAP_PERFMON
)이 필요하므로 권한이 없는 사용자가 많은 BPF 프로그램을 실행할 수 없습니다.
커널 명령줄 매개 변수를 적용하는 방법에 대한 자세한 내용은 커널 명령줄 매개변수 구성을 참조하십시오.
(BZ#2091643)
Red Hat은 마이너 릴리스에서 커널 기호만 보호
Red Hat은 보호된 커널 기호를 사용하여 커널 모듈을 컴파일하는 경우에만 EUS (Extended Update Support) 릴리스 내에서 향후 모든 업데이트에서 커널 모듈이 계속 로드되도록 합니다. RHEL 9의 마이너 릴리스 간에 ABI(커널 애플리케이션 바이너리 인터페이스)는 보장되지 않습니다.
RHEL 9 베타 커널 신뢰할 수 있는 SecureBoot 인증서로 서명
이전 버전에서는 RHEL 베타 릴리스에서는 사용자가 MOK(Machine Owner Key) 기능을 사용하여 별도의 베타 공개 키를 등록해야 했습니다. RHEL 9 Beta부터 커널은 신뢰할 수 있는 SecureBoot 인증서로 서명되므로 사용자는 UEFI Secure Boot가 활성화된 시스템에서 베타 버전을 사용하기 위해 별도의 베타 공개 키를 등록할 필요가 없습니다.
RHEL 9에서 cgroup-v2
가 기본적으로 활성화되어 있습니다
제어 그룹 버전 2(cgroup-v
2) 기능은 제어 그룹 관리를 간소화하는 단일 계층 구조 모델을 구현합니다. 또한 한 번에 단일 제어 그룹의 멤버만 프로세스가 될 수 있습니다. systemd
와의 심도 있는 통합으로 RHEL 시스템에서 리소스 제어를 구성할 때 최종 사용자 환경이 향상됩니다.
새로운 기능의 개발은 대부분 cgroup-v2
에 대해 수행되며, cgroup-v1
에서는 누락된 일부 기능이 있습니다. 마찬가지로 cgroup-v1
에는 cgroup-v2
에서 누락된 일부 레거시 기능이 포함되어 있습니다. 또한 제어 인터페이스는 다릅니다. 따라서 cgroup-v1에 직접 종속된 타사 소프트웨어가
환경에서 제대로 실행되지 않을 수 있습니다.
cgroup-v
2
cgroup-v1
을 사용하려면 커널 명령줄에 다음 매개변수를 추가해야 합니다.
systemd.unified_cgroup_hierarchy=0 systemd.legacy_systemd_cgroup_controller
cgroup-v1
및 cgroup-v2
는 커널에서 완전히 활성화됩니다. 커널 관점에서는 기본 제어 그룹 버전이 없으며 시작 시 마운트할 systemd
에 의해 결정됩니다.
커널 변경으로 인해 타사 커널 모듈에 영향을 줄 수 있음
5.9 이전 커널 버전의 Linux 배포판에서는 GPL 함수를 비GPL 기능으로 내보내기가 지원되었습니다. 결과적으로 shim
메커니즘을 통해 독점적인 기능을 GPL 커널 기능과 연결할 수 있었습니다. 이번 릴리스에서 RHEL 커널은 shim
을 다시 사용하여 GPL을 시행하는 RHEL의 기능을 향상시키는 업스트림 변경 사항을 통합합니다.
파트너 및 ISV(독립 소프트웨어 벤더)는 RHEL 9의 초기 버전으로 커널 모듈을 테스트해야 합니다.
64비트 ARM 아키텍처에는 RHEL 9의 4 KB 페이지 크기가 있습니다.
Red Hat은 Red Hat Enterprise Linux 9에서 64비트 ARM 아키텍처에 대해 4KB의 실제 메모리 크기를 선택했습니다. 이 크기는 대부분의 ARM 기반 시스템에 존재하는 워크로드 및 메모리 양과 잘 연결됩니다. 대규모 페이지 크기를 효율적으로 사용하려면 대규모 페이지 옵션을 사용하여 대규모 데이터 세트로 더 많은 메모리 또는 워크로드를 처리합니다.
대규모 페이지에 대한 자세한 내용은 시스템 상태 모니터링 및 성능 관리를 참조하십시오.
(BZ#1978382)
strace
유틸리티에서 이제 SELinux 컨텍스트 불일치를 올바르게 표시합니다.
strace
의 기존 --secontext
옵션이 mismatch
매개변수를 사용하여 확장되었습니다. 이 매개변수를 사용하면 불일치 시 실제 컨텍스트와 함께 예상 컨텍스트를 출력할 수 있습니다. 출력은 이중 느낌표(!!
), 먼저 실제 컨텍스트, 다음 예상 컨텍스트로 구분됩니다. 아래 예제에서 전체,mismatch
매개변수는 컨텍스트의 사용자가 일치하지 않기 때문에 실제 컨텍스트와 함께 예상되는 전체 컨텍스트를 출력합니다. 그러나 독방 불일치
를 사용하는 경우 컨텍스트의 유형 부분만 확인합니다. 컨텍스트의 유형이 일치하므로 예상 컨텍스트가 인쇄되지 않습니다.
[...] $ strace --secontext=full,mismatch -e statx stat /home/user/file statx(AT_FDCWD, "/home/user/file" [system_u:object_r:user_home_t:s0!!unconfined_u:object_r:user_home_t:s0], ... $ strace --secontext=mismatch -e statx stat /home/user/file statx(AT_FDCWD, "/home/user/file" [user_home_t:s0], ...
SELinux 컨텍스트 불일치로 인해 SELinux와 관련된 액세스 제어 문제가 발생하는 경우가 많습니다. 시스템 호출 추적에 출력되는 불일치는 SELinux 컨텍스트 정확성의 검사를 훨씬 신속하게 제공할 수 있습니다. 시스템 호출 추적은 액세스 제어 검사와 관련하여 특정 커널 동작을 설명할 수도 있습니다.
perf-top
이제 특정 열로 정렬할 수 있습니다.
이번 업데이트를 통해 perf-top
시스템 프로파일링 툴을 사용하면 임의의 이벤트 열에 따라 샘플을 정렬할 수 있습니다. 이전에는 그룹의 여러 이벤트가 샘플링된 경우 첫 번째 열에 의해 이벤트가 정렬되었습니다. 샘플을 정렬하려면 --group-sort-idx
명령줄 옵션을 사용하고 숫자 키를 눌러 일치하는 데이터 열로 테이블을 정렬합니다. 열 번호 지정은 0
에서 시작됩니다.
(BZ#1851933)
새로운 패키지: jigawatts
checkpoint/Restore In Userspace(CRIU)는 프로세스를 체크포인트 및 복원할 수 있는 Linux 유틸리티입니다. jigawatts
패키지에는 Java 라이브러리가 포함되어 있으며 Java 애플리케이션에서 CRIU 메커니즘의 사용 편의성을 개선하는 것을 목표로 합니다.
trace-cmd reset
명령에 새 동작이 있습니다.
이전에는 trace-cmd reset
명령에서 tracing_on
구성을 0으로 재설정했습니다. trace-cmd reset
의 새 동작은 tracing_on
을 기본값인 1로 재설정하는 것입니다.
(BZ#1933980)
RHEL 9에서 extended Berkeley Packet Filter가 지원됨
eBPF(Extended Berkeley Packet Filter) 는 제한된 기능 세트에 대한 액세스 권한이 있는 제한된 샌드박스 환경에서 커널 공간에서 코드를 실행할 수 있는 커널 내 가상 머신입니다. 가상 머신은 특수 어셈블리와 유사한 코드를 실행합니다.
eBPF 바이트 코드가 먼저 커널에 로드됩니다. 그런 다음 바이트 코드가 실시간 컴파일을 사용하여 네이티브 머신 코드로 확인 및 변환됩니다. 마지막으로 가상 시스템은 코드를 실행합니다.
Red Hat은 eBPF 가상 시스템을 사용하는 다양한 구성 요소를 제공합니다. RHEL 9에서는 다음과 같은 구성 요소가 포함됩니다.
- BCC(BPF Compiler Collection) 패키지는 eBPF 를 사용하여 Linux 운영 체제의 I/O 분석, 네트워킹 및 모니터링을 위한 툴을 제공합니다.
- BCC 툴 패키지에 제공된 툴과 유사한 툴을 개발할 수 있는 BCC 라이브러리입니다.
-
bpftrace
추적 언어. bpf
development 및bpf
tracelibbpf
패키지입니다.-
libbpf
라이브러리의XDP
및AF_XDP
API 부분은 지원되지 않으며 향후 릴리스에서 제거될 수 있습니다.
-
- 트래픽 제어(tc)를 위한 eBPF(eBPF) 기능은 커널 네트워크 데이터 경로 내에서 프로그래밍 가능한 패킷 처리를 가능하게 합니다.
-
커널 네트워킹 스택이 처리되기 전에 수신된 패킷에 대한 액세스를 제공하는 e XDP(데이터 경로) 기능입니다. Red Hat은
libxdp
라이브러리를 통해 사용되는 경우에만 XDP 를 지원합니다. XDP 기능에 대한 사용자 공간 지원 유틸리티가 포함된
xdp-tools
패키지는 AMD64 및 Intel64 CPU 아키텍처에서 지원됩니다.xdp-tools
패키지는 다음을 포함합니다.-
libxdp
라이브러리입니다. -
XDP 프로그램을 로드하기 위한 X
dp-loader
유틸리티입니다. -
패킷 필터링을 위한
xdp-filter
프로그램 예. -
XDP 가 활성화된 네트워크 인터페이스에서 패킷을 캡처하기 위한
xdpdump
유틸리티입니다.xdpdump
유틸리티는 현재 AMD64 및 Intel64 CPU 아키텍처에서만 지원됩니다. 기술 프리뷰로 다른 아키텍처에서 사용할 수 있습니다.
-
-
eXpress Data Path(XDP) 경로를 사용자 공간에 연결하기 위한
AF_XDP
소켓입니다.
RHEL 9에서는 크래시
유틸리티 버전 8.0.0을 제공합니다.
RHEL 9는 크래시
유틸리티 버전 8.0.0과 함께 배포됩니다. 버그 수정 및 주요 개선 사항은 다음과 같습니다.
-
add-symbol-file
명령에 새offset
매개변수를 추가합니다. 이 지원을 통해kaslr_offset
을gdb
로 설정하는 데 도움이 됩니다. -
gdb-7.6
을gdb-10.2
로 업그레이드합니다.
(BZ#1896647)
makedumpfile
에서 향상된 zstd
압축 기능 지원
이번 개선된 기능을 통해 makedumpfile
에 Zstandard (zstd
) 압축 기능이 추가되어 높은 압축률을 제공합니다. 이러한 개선은 특히 대규모 메모리 시스템에 도움이 됩니다.
이제 zstd
압축 기능은 이전 압축 비율과 같이 vmcore
덤프 크기와 압축 시간 소비 간에 균형을 유지합니다. 결과적으로 개선된 압축 메커니즘으로 이제 허용되는 적절한 압축 시간을 사용하여 더 작은 vmcore
파일을 생성합니다.
좋은 압축 비율은 시스템을 사용하는 방법과 RAM에 저장된 데이터 유형에 따라 달라집니다.
(BZ#1988894)
Intel Xeon 확장 가능 서버 프로세서에서 numatop
활성화
numatop
는 NUMA 시스템에서 실행되는 프로세스와 스레드의 동작을 추적 및 분석하고 NUMA 관련 성능 병목 현상을 식별할 수 있는 지표를 표시하는 툴입니다.
numatop
는 Intel 성능 카운터 샘플링 기술을 사용하고 성능 데이터를 Linux 시스템 런타임
정보와 연결하여 프로덕션 시스템에 대한 분석을 제공합니다.
(BZ#1874125)
kexec_file_load
가 RHEL 9의 기본 옵션으로 추가되었습니다.
이번 업데이트에서는 64비트 ARM 아키텍처에 대해 kexec_file_load
시스템 호출을 추가합니다. kdump
에 대한 커널 kexec
loader를 제공합니다. 이전에는 보안 부팅 옵션이 활성화되면 커널이 서명되지 않은 커널 이미지를 로드하지 못했습니다. kdump
메커니즘은 먼저 보안 부팅이 활성화되었는지 여부를 탐지한 다음 실행할 부팅 인터페이스를 선택합니다. 결과적으로 보안 부팅이 활성화된 상태에서 서명되지 않은 커널이 로드되지 않고 kexec_file_load()
가 지정되어 있었습니다.
이번 업데이트에서는 설명된 시나리오에서 문제가 해결되고 서명되지 않은 커널이 올바르게 작동합니다.
(BZ#1895232)
makedumpfile
에 예상 vmcore
크기를 얻기 위한 개선된 옵션 포함
이 구현을 통해 makedumpfile
유틸리티에 현재 실행 중인 커널의 덤프 크기에 대한 추정치를 출력하는 데 도움이 되는 다음 옵션이 포함되어 있습니다.
-
--dry-run
은 다른 옵션으로 지정된 모든 작업을 수행하지만 출력 파일은 작성하지 않습니다. -
--show-stats
는 보고서 메시지를 출력합니다. 이는--message-level
옵션에 제공된 수준에서 비트 4를 활성화하는 대안입니다.
다음 예제에서는 --dry-run
및 --show-stats
사용량을 보여줍니다.
$ makedumpfile --dry-run --show-stats -l --message-level 7 -d 31 /proc/kcore dump.dummy
덤프 파일 크기는 패닉 시 시스템 상태에 따라 다를 수 있으며 옵션에 의해 제공되는 추정치는 실제 상태와 다를 수 있습니다.
kexec-tools
패키지는 RHEL 9의 기본 crashkernel
메모리 예약 값을 지원합니다.
kexec-tools
패키지에서 기본 crashkernel
메모리 예약 값을 유지 관리합니다. kdump
서비스는 기본값을 사용하여 각 커널에 대해 크래시커널
메모리를 예약합니다. 이 구현을 통해 시스템에 사용 가능한 메모리가 4GB 미만인 경우 kdump
에 대한 메모리 할당도 향상됩니다.
기본 crashkernel 값을 쿼리하려면 다음을 수행합니다.
$ kdumpctl get-default-crashkernel
기본 crashkernel
값으로 예약된 메모리가 시스템에 충분하지 않은 경우 crashkernel
매개변수를 늘립니다.
부팅 명령줄의 crashkernel=auto
옵션은 RHEL 9 이상 릴리스에서 더 이상 지원되지 않습니다.
자세한 내용은 /usr/share/doc/kexec-tools/crashkernel-howto.txt
파일을 참조하십시오.
(BZ#2034490)
RHEL 9에서 코어 예약이 지원됩니다.
코어 스케줄링 기능을 사용하면 서로 신뢰해서는 안 되는 작업이 동일한 CPU 코어를 공유하지 않도록 방지할 수 있습니다. 마찬가지로, 사용자는 CPU 코어를 공유할 수 있는 작업 그룹을 정의할 수 있습니다.
이러한 그룹을 지정할 수 있습니다.
- 일부 SMT(Cross-Symmetric Multithreading) 공격을 완화하여 보안을 강화하기 위해
- 전체 코어가 필요한 작업을 격리합니다. 예를 들어 실시간 환경의 작업 또는 단일 지침, 여러 데이터(SIMD) 처리와 같은 특정 프로세서 기능에 의존하는 작업의 경우
자세한 내용은 코어 스케줄링 을 참조하십시오.
(JIRA:RHELPLAN-100497)
기본적으로 제한 iommu 모드를 사용하여 64비트 ARM 아키텍처에서 성능이 향상되었습니다.
이 업그레이드를 통해 64비트 ARM 아키텍처는 기본적으로 시스템 메모리 관리 단위(SMMU)에 지연 직접 메모리 액세스(DMA) 도메인을 사용합니다. 상당한 성능 이점을 가져오는 동안 주소 unmap과 SMMU의TLB( Translation Lookaside Buffer) 플러시 사이에 창을 도입할 수 있습니다. 이전 버전에서 64비트 ARM 아키텍처는 엄격한 DMA 도메인을 기본값으로 구성하여 4KB 페이지 크기로 인해 성능이 저하되었습니다.
strict DMA 도메인 모드를 사용해야 하는 경우 커널 명령줄을 사용하여 iommu.strict=1
모드를 지정합니다. 엄격한 DMA 도메인을 사용하면 64비트 ARM 아키텍처에서 성능이 저하될 수 있습니다.
(BZ#2050415)
kernel-rt
소스 트리가 RHEL 9.0 트리로 업데이트되었습니다.
최신 Red Hat Enterprise Linux 커널 소스 트리를 사용하도록 kernel-rt
소스가 업데이트되었습니다. 실시간 패치 세트도 최신 업스트림 버전 v5.15-rt19로 업데이트되었습니다. 이러한 업데이트는 여러 버그 수정 및 개선 사항을 제공합니다.
(BZ#2002474)
hv_24x7
및 hv_gpci
PMUs의 CPU 핫플러그 지원
이번 업데이트를 통해 PMU 카운터는 CPU의 핫 플러그에 올바르게 반응합니다. 결과적으로 hv_gpci
이벤트 카운터가 비활성화된 CPU에서 실행되는 경우 계산은 다른 CPU로 리디렉션됩니다.
(BZ#1844416)
POWERPC hv_24x7
중첩 이벤트에 대한 메트릭을 사용할 수 있습니다.
POWERPC hv_24x7
중첩 이벤트에 대한 메트릭을 이제 perf
에 사용할 수 있습니다. 이러한 메트릭은 여러 이벤트를 집계하여 Perf 카운터에서 얻은 값과 CPU가 워크로드를 얼마나 효과적으로 처리할 수 있는지에 대한 이해를 제공합니다.
(BZ#1780258)
RHEL 9에서 DVDMA 드라이버가 도입되었습니다.
recordsDMA 드라이버를 사용하면 RDMA 가능 Intel® 네트워크 장치에서 RDMA 기능을 사용할 수 있습니다. 이 드라이버에서 지원하는 장치는 다음과 같습니다.
- Intel® 이더넷 컨트롤러 E810
- Intel® 이더넷 네트워크 어댑터 X722
RHEL 9는 X722 Internet Wide-area RDMA 프로토콜 (iWARP) 장치에 대해 업데이트된 Intel® 이더넷 프로토콜 (IRDMA)을 제공합니다. RHEL 9에는 iWARP 및 RDMA over Converged Ethernet(RoCEv2)을 지원하는 새로운 E810 장치가 도입되었습니다. recordsDMA 모듈은 X722에 대한 레거시 i40iw 모듈을 교체하고 i40iw에 대해 정의된 ABI(Application Binary Interface)를 확장합니다. 변경 사항은 기존 X722 RDMA-Core 공급자(libi40iw)와 역호환됩니다.
- X722 장치는 iWARP 및 보다 제한된 구성 매개변수 세트만 지원합니다.
E810 장치는 다음과 같은 RDMA 및 혼잡 관리 기능을 지원합니다.
- iWARP 및 RoCEv2 RDMA 전송
- PFC( priority Flow Control)
- 명시적인 Congestion 알림 (ECN)
(BZ#1874195)
커널 본딩
모듈의 새 매개변수: lacp_active
RHEL 9에는 bonding
커널 모듈의 lacp_active
매개변수가 도입되었습니다. 이 매개변수는 지정된 간격으로 링크 집계 제어 프로토콜 데이터 단위(LACECDHE) 프레임을 보낼지 여부를 지정합니다. 옵션은 다음과 같습니다.
-
(기본값) - 구성된
lacp_rate
매개변수와 함께 LACECDHE 프레임을 보낼 수 있습니다. -
off
- LACECDHE 프레임이 "speak to"로 작동합니다.
LACECDHE 상태 프레임은 연결을 초기화하거나 바인딩 해제해도 전송됩니다.