# RHEL

Linux grub rescue
Q: grub2 파일이 존재하지 않아 grub rescue 모드로 진입합니다. A: 정상적인 grub 파일로 mkconfig 를 진행해야 합니다. iso 이미지 이용 버전에 맞는 iso 파일을 시스템에 마운트한다. Troubleshooting mode 로 진입한다. Rescue 모드로 진입한다. 1을 입력한 후 enter 키를 누른다. 
Init and Systemd
Init 과 Systemd 는 시스템 부팅 중 필요한 서비스 및 프로세스를 시작하는 역할을 한다. 과거에는 Init 프로세스가 주로 사용되었지만, 최근에는 Systemd 가 Init 을 대체하여 사용된다. 처리 방식 init 시스템은 간단하고 직렬적인 방식으로 서비스 및 프로세스를 시작한다. 하나의 서비스가 시작되기를 기다린 후 다음 서비스가 시작된다. 이런 과정에 따라 부팅 시간이 늘어난다. systemd 는 병렬로 여러 서비스 및 프로세스를 시작하여 부팅 속도를 개선한다. 의존성을 분석하고 병렬 실행하여 시스템 초기화를 효율적으로 처리한다. 단위(Unit) init 시스템은 각 서비스를 스크립트로 정의하여 시작한다. 보통 /etc/init.d 디렉터리에 위치한다. systemd 는 단위라는 개념을 도입하여 각 서비스를 unit 파일로 정의한다. /etc/systemd/system 디렉터리에 위치한다. 단위 파일로 서비스의 설정 및 의존성을 지정한다. 로그 및

Ownership and Permission
리눅스는 파일과 디렉터리에 대한 소유권(Ownership)과 권한(Permission) 시스템을 사용하여 파일 및 디렉터리에 대한 접근을 제어한다. 소유권(Ownership) 파일과 디렉터리는 소유자(Owner)와 소유 그룹(Group)으로 지정된다. 1. 소유자 파일과 디렉터리를 생성한 사용자를 나타낸다. 파일과 디렉터리에 대한 수정, 읽기 및 실행 권한을 가진다. 2. 소유 그룹 여러 사용자를 그룹으로 묶어 소유 그룹을 형성할 수 있다. 파일과 디렉터리에 대한 일부 권한을 공유하는 사용자의 그룹이다. 권한(Permission) 파일과 디렉터리에 대한 접근 권한은 소유자, 소유 그룹 및 기타 사용자에 대해 정의된다. 권한은 주요 3가지 카테고리로 나뉜다. 1. 읽기 권한(Read) 파일 내용을 읽거나 디렉터리 내용을 나열할 수 있는 권한이다. 2. 쓰기 권한(Write) 파일 내용을 변경하거나 디렉터리 내용을 변경할 수 있는 권한이다. 파일을 생성,
Apache [WS] 와 Tomcat[WAS]을 mod_jk로 연결하기 / RHEL 사용
AWS EC2를 사용하여 Apache [WS] 와 Tomcat[WAS]을 구성했습니다. Apache[WS] 설치 EC2 생성 인스턴스 생성 이름 ws OS 이미지 Red Hat Enterprise Linux 9 (HVM), SSD Volume Type 인스턴스 유형 t2.micro 네트워크 설정 보안 그룹 생성 SSH 트래픽 허용 - 위치 무관 인터넷에서 HTTP 트래픽 허용 스토리지 구성 30GB EC2 접속 후 환경설정 net-tools 설치 yum install net-tools 권한이 없다고 뜨면 모든 명령어 앞에 sudo 를 붙여주면 된다 예시 ) sudo yum -y update
RHEL에서 AWS EFS 설치하기
설치 방법은 대부분 다른 OS랑 비슷한데, amazon-efs-utils를 EC2에 설치하는 방법만 조금 다릅니다. 해당 부분만 주의 해주시면 될 것 같습니다 ! [AWS] 📚 EFS 개념 원리 & 사용 세팅 💯 정리 ※위의 참고글을 한번 읽어보고 진행을 하면 좋다. 현재 사용중인 VPC에 들어가서 DNS를 활성화 EFS용 전용 보안그룹 생성 파일 시스템 생성 - 기본 설정으로 생성 해당 EFS의 네트워크 탭에 접속 후 사용하지 않는 가용 영역 삭제 혹은 추가 EFS를 EC2에 연결 AWS EFS 탭으로 접속 후 방금 만든 EFS 인스턴스 클릭 1시 방향에 있는 연결 버튼을 클릭 DNS를 통한 탑재 [EFS 탑재 헬퍼를 이용] 필요한 snipp

Dracut
리눅시 시스템에서 초기 램 디스크(initramfs)를 생성하는 명령어이다. 1. initramfs 생성 initramfs를 생성하여 필요한 장치 드라이버와 모듈, 설정 파일 등을 포함하여 부팅 초기에 필요한 요소를 하나의 묶음으로 만든다. 생성된 initramfs는 시스템 부팅 시 사용되며 루트 파일 시스템을 마운트하고 부팅 프로세스를 시작하는데 필수이다. 2. 사용자 정의 모듈 추가 dracut 을 사용하여 사용자가 필요한 모듈을 직접 추가할 수 있다. 특정 하드웨어 장치나 파일 시스템을 지원하기 위한 추가 설정이 필요한 경우 유용하게 사용된다.

Linux Storage Management
Disk Partitioning 디스크 파티셔닝은 하나의 물리적인 디스크를 여러 논리적인 파티션으로 나누는 과정을 말한다. 파티셔닝을 할 경우 각 파티션은 독립적으로 관리되고 파일 시스템을 생성하여 데이터를 저장할 수 있다. 1. MBR(Master Boot Record) 디스크의 처음 부분에 위치하는 파티션 테이블 형식으로 BIOS 기반 시스템에서 주로 사용된다. 최대 4개의 기본 파티션을 지원하며 하나의 기본 파티션을 확장 파티션으로 만들어 여러 논리 파티션을 생성할 수 있다. 하지만 MBR의 한계로 더 많은 파티션을 생성할 수 없는 경우도 있다. 2. GPT(Guid Partition Table) UEFI 기반 시스템와 일부 최신 시스템에서 사용되는 파티션 테이블 형식이다. 최대 128개의 파티션을 지원하며 복구와 데이터 무결성을 위한 여러 기능을 제공한다. 파티셔닝을 수행하는 도구는 일반적으로 fdisk, parted, gdisk 가 있다. /

Linux sysctl
sysctl은 리눅스/유닉스 기반의 시스템에서 커널 매개변수를 동적으로 설정하고 관리하는 도구이다. 주로 DB 서버에서 운영 체제가 어플리케이션에 적합하도록 변경이 필요하거나 시스템의 성능을 향상시키기 위해 사용된다. sysctl을 사용하기 위해선 root 권한이 필요하다. /proc 파일 시스템을 통해 커널 매개변수에 접근하고 변경한다. /proc/sys 디렉터리에 커널 매개변수들이 저장되어 있고 # sysctl 명령을 통해 해당 디렉터리에 접근하고 매개 변수를 읽거나 설정한다. // 특정 매개변수의 설정값 확인 // 특정 매개변수의 설정값 확인 // 특정 매개변수의 설정값 변경 // 특정 매개변수의 설정값 변경 ex) > 위 방법은 시스템이 재시작될 경우 운영 체제의 기본 값으로 초기화된다. 설정값을 영구적으로 적용하기 위해선 /etc/sysctl.conf 파일이나 /etc/sysctl.d/ 디렉터리에 파일을 생성한다. **sysctl

Linux Cron
cron 은 리눅스/유닉스 기반 시스템에서 주기적인 작업을 실행하기 위한 스케줄링 시스템이다. 정해진 시간에 자동으로 프로그램이나 스크립트를 실행하여 반복 작업을 자동화하는데 사용된다. cron 데몬(cron daemon) 백그라운드에서 실행되는 시스템 서비스로 정해진 시간에 작업을 실행한다. 일반적으로 시스템이 부팅될 때 자동으로 시작되며 특정 사용자의 cron 테이블을 읽어 정의된 작업을 예약한다. cron 테이블(cron table) 각 사용자에 대한 스케줄링 정보를 저장하는 파일이다. 각 사용자는 자신의 cron 테이블에 원하는 작업을 등록하여 정해진 시간에 실행하도록 스케줄링할 수 있다. 사용자는 # crontab 명령어를 사용하여 자신의 cron 테이블을 관리한다. 1. 사용자별 cron 테이블 각 사용자는 자신의 cron 테이블에 작업을 등록한다. /var/spool/cron 디렉터리에 저장되며 # crontab 명령어를 사용하여 작업을 추가,

Linux Device Files
리눅스는 장치 파일을 통해 하드웨어 디바이스나 커널 기능에 접근한다. 주로 4 가지 종류의 장치 파일이 사용된다. 블록 장치 파일(Block Devices) 블록 단위로 데이터를 읽고 쓰는데 사용되는 파일이다. HDD, SSD와 같은 저장 장치들이 블록 장치에 해당한다. 블록 장치는 주로 데이터를 순차적으로 처리하며 파일 시스템을 포함하는 저장 매체로 사용된다. 블록 장치 파일은 일반적으로 /dev/sdX (예: /dev/sda, /dev/sdb)와 같은 형식으로 표현된다. 문자 장치 파일(Character Devices) 문자 단위로 데이터를 읽고 쓰는데 사용되는 파일이다. 터미널 장치 (TTY)와 같이 데이터가 순차적으로 처리되는 장치들이 문자 장치에 해당한다. 문자 장치 파일은 주로 입출력 장치에 사용되며 블록 장치와 달리 데이터를 순차적으로 처리하고, 파일 시스템을 사용하지 않는 장치들이 대표적이다. 문자 장치 파일은 일반적으로 /dev/ttyX (예: /

Linux Structure
리눅스는 다음과 같은 구조로 이루어져 있다. 1. 하드웨어(Hardware) 물리적인 컴퓨터 시스템을 구성하는 모든 장치를 말한다. CPU, Memory, HDD, SSD, Graphic Card, NIC 등이 포함된다. 리눅스는 이러한 하드웨어를 관리하고 제어하여 운영 체제와 응용프로그램이 하드웨어 리소스를 효율적으로 사용할 수 있도록 한다. 2. 커널(Kernel) 리눅스의 핵심으로 운영체제의 핵심 기능을 담당한다. 하드웨어를 직접적으로 제어하고 프로세스, 메모리, 파일 시스템, 디바이스 드라이버, 네트워크, 보안 등을 관리하고 다양한 기능을 수행한다. 커널은 사용자가 직접 접근하지 않고 응용프로그램과 상호작용하는 인터페이스 역활을 한다. 또한 매우 안정적이고 빠르며 확장 가능한 구

Linux Boot Process
RHEL 7버전을 기준으로 다음과 같은 부팅 절차를 따른다. 1. BIOS/UEFI 서버의 전원이 켜지면 BIOS/UEFI 가 실행된다. 이 단계에서 하드웨어를 검사하고 초기화하여 기본적인 하드웨어 설정을 준비한다. 2. MBR(Master Boot Record) 또는 GPT(GUID Partition Table) 로딩 RHEL 7버전은 기본적으로 MBR/GPT 를 지원한다. MBR을 사용할 경우 부팅 디스크의 첫 섹터에 있는 부트로더 코드가 실행되고, GPT를 사용할 경우 UEFI 파티션에 있는 부트로더 코드가 실행된다. 3. GRUB 로딩 부트로더로 GRUB2(GRand Unified Bootloader 2)가 사용된다. GRUB은 메뉴를 통해 사용자가 원하는 커널이나 운영 체제를 선택할 수 있도록 한다. 부트로더는 커널 이미지와 초기 루트 파일 시스템의 위치를 알아야 한다. 4. 커널 로드 GRUB이 선택한 커널 이미지(vmlinuz)를 메모리에 로

Shell Scripts
1. sort sort 명령어는 파일 내용을 정렬하는 데 사용된다. // myfile.txt 파일의 내용을 알파벳순으로 정렬하여 출력한다. 2. uniq uniq 명령어는 파일 내용에서 중복된 라인을 제거하는 데 사용된다. // myfile.txt 파일 내의 중복된 라인을 제거하여 출력한다. // myfile.txt 파일 내의 중복된 라인을 제거하고, 알파벳순으로 정렬하여 출력한다. 3. sed sed 명령어는 특정 파일의 내용을 에디터(vi, vim 등)를 사용하지 않고 변경할 때 사용된다. // myfile.txt 파일 내 'before' 라는 단어를 'after' 로 변경한다. // myfile.txt 파일 내 'mid' 라는 단어가 들어간 라인 위에 'up' 단어를 삽입한다. // i\ 대신 n\ 이 들어가면 라인 아래에 단어를 삽입한다. ex) before: mid gap after: up mid gap // myfile.txt

Linux logs
Q: /var/log 디렉터리에 존재하는 로그 파일은 각각 어떤 정보가 있는지 궁금합니다. 서비스 운영 중 장애가 발생하면 가장 먼저 로그를 확인한다. 리눅스의 로그는 /var/log 디렉터리에 생성된다. messages 시스템에 문제가 생겼을 때 가장 먼저 확인되는 로그 파일로 rsyslog.conf 에서 제외된 항목을 제외한 모든 항목이 기록된다. Event, Error, Warning, Failed 등 모든 내용이 들어가기 때문에 grep 명령어로 확인하는게 좋다. ex) secure 시스템에 접속한 사용자의 정보가 기록되는 파일이다. SSH, Telnet 등을 사용하여 시스템에 접속된 정보가 기록되며 접속일, 사용자 명, IP 등이 기록된다. 특정 시스템의 해킹이 의심될 경우 확인해봐야 하는 로그이다. boot.log 서비스 데몬들의 부트 관련 정보가 기록된다. 데몬들의 시작, 종료, 실패 내용이 기록되고 종료 시 내용도 기록된다.

Linux tmpfs
Q: tmp 설정을 따로 하지 않을 경우 파일 시스템 내부에 데이터가 삭제될까요? A: 수동으로 Clear 하지 않을 경우 삭제되지 않습니다. Linux를 설치할 때 tmpfile clean 데몬의 기본값은 다음과 같다. 위 설정의 경우 기본적으로 수동으로 실행 시 /tmp 파일을 Clear 하도록 설정되어 있다. 그 이유는 해당 데몬을 활성화할 경우 임시로 저장된 공간이 실시간으로 비워지므로 /tmp 영역이 필요한 서비스가 정상 구동되지 않을 수 있다. /tmp 파일 시스템의 보관 주기는 기본 10일이다. * 따라서 리눅스에서는 다음의 조건을 통해 /tmp 파일 시스템의 데이터를 관리한다. * systemd-tmpfiles 데몬을 통해 /tmp 내 파일을 관리할 때, 3개의 기존 타임 스탬프가 고려된다. (atime: 마지막 접근 시간, mtime: 마지막 변경시간, ctime: inode 변경시간) systemd-tmpfiles 은

빠른 노트 정리
1. iscsi initiator 서버에 등록된 target 정보 삭제 위 명령어로 등록된 target 서버의 정보는 아래 디렉터리에 저장된다. nodes, send_targets 디렉터리를 삭제하여 target 정보를 reset 한다. 2. SSH를 비밀번호 인증 방식으로 로그인 > sshd 를 재시작할 경우 ssh로 연결된 세션은 모두 끊기게 되므로 서버에 다른 작업이 진행되고 있을 경우 주의해야 한다. 3. 리눅스 모니터링 명령어 리눅스에서 설정값을 변경할 때, 변경되는 점을 실시간으로 확인하기 위해 아래와 같은 명령어를 사용하여 확인이 가능하다. Ctrl+C 단축키로 모니터링을 종료한다. -d: 변경되는 항목을 하이라이트함 -n: 새로고침 주기를 초 단위로 설정 (최소 0.1초까지 설정 가능) -f: 파일의 변화를 실시간으로 출력함 4. Ventoy VS Rufus Ventoy / Rufus 는 Baremetal 서버에 운영체제를 설치

[Linux] 사설 RHEL Repository 만들기
목차 yum.repo.d 알아보기 RPM vs YUM 특정 패키지 다운로드하기 사설 Repository 생성 사설 Repository 사용 RHEL 리눅스를 사용하는 경우 Red hat 레포지토리에서 원하는 패키지를 편리하게 설치하고 사용할 수 있다. 레포지토리에서 패키지를 가져오는 과정이 어떻게 이루어지는지 궁금하였고, 해당 부분을 직접 설정하여 원하는 패키지만 모아놓은 사설 레포지토리를 생성하고 해당 레포지토리를 외부에서도 사용이 가능하도록 해보고 싶었다. 또한 보안을 목적으로 외부와 단절되어 있는 서버인 경우 외부와 인터넷을 통해 통신할 수 없기 때문에 레포지토리를 사용할 수 없는 환경일 수 있는데, 이러한 상황에서도 위의 과정을 알고 있으면 도움이 될 수 있을 것이다. (* 물론 클라우드 환경에서는 private 망에 있는 서버도 NAT 게이트웨이를 통해 인터넷 액세스가 가능하지만...)

[Spark] Spark Streaming
Spark Docs에 나오는 Spark Streaming 예제 localhost:9999에서 입력받은 글자 단어 세기 0. 실행 환경 > AWS EC2 t2.xlarge OS : Red Hat 9.1 Python : 3.9 Spark : 3.3.1 Scala : 2.12.15 Java : OpenJDK 64-Bit Server VM, 1.8.0_352 1. Streaming Test 1-1. streaming.py 생성 1-2. streaming 실행 1-3. Netcat실행 
[Spark] SQL 연습하기
0. 실행 환경 > AWS EC2 t2.xlarge OS : Red Hat 9.1 Python : 3.9 Spark : 3.3.1 Scala : 2.12.15 Java : OpenJDK 64-Bit Server VM, 1.8.0_352 1. SQL 연습 biging df.dtypes 를 실행하면 price가 bigint 라는 타입이라고 출력된다. bigint는 8 바이트 크기의 SQL 서버에서 가장 큰 정수 데이터 타입이다. (-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807) SparkSession pyspark.sql.SparkSession Dataset, DatFrame API 로 Spark 프로그래밍하기 위한 진입점 SparkSession은 DataFrame 생성, DataFrame을 table로 등록, parquet 파일 읽기에 사용된다. SparkSession을 생성하기위해서

[Python] EC2에 Jupyter Notebook 실행하기(ssh 포트포워딩)
0. 실행 환경 > AWS EC2 t2.xlarge OS : Red Hat 9.1 Python :3.9 Jupyter Notebook 6.4.12 1. Jupyter Notebook 설정 Jupyter Notebook 설치 후 비밀번호를 설정한다. 꼭 필요한 과정은 아니다. 다만 비밀번호를 생성하지 않으면 실행 시 마다 생성되는 token 값으로 접속해야한다. 1-1. Jupyter Notebook 비밀번호 생성 1-2. 비밀번호 설정 2. Jupyter Notebook 실행 1번을 생략했다면 접속 URL을 출력하는데 복사해둔다. 3. SSH 포트포워딩 ![](https://velog.velcdn.com/images/denver_