
이번 포스팅에서는 RHCSA v9 응시를 위해 수집한 Dump와 풀이를 담아보려 한다. Red Hat 공식 홈페이지에서는 RHCSA의 주요 학습 포인트를 다음과 같이 제시한다.
"RHCSA 시험 응시자는 도움 없이 아래 태스크를 수행할 수 있어야 합니다. 태스크는 몇 가지 카테고리로 분류되어 있습니다."
1. 필수 툴 이해 및 사용
> 셸 프롬프트에 액세스하고 올바른 구문으로 커맨드 실행
> 입력-출력 리디렉션(>, >>, |, 2> 등) 사용
> grep 및 정규 표현식을 사용하여 텍스트 분석
> SSH를 사용하여 원격 시스템에 액세스
> 로그인하여 멀티유저 타겟에서 사용자 변경
> tar, gzip, bzip2를 사용하여 파일 아카이브, 압축, 압축 풀기, 압축 해제
> 텍스트 파일 생성 및 편집
> 파일 및 디렉토리 생성, 삭제, 복사, 이동
> 하드 링크와 소프트 링크 생성
> 표준 ugo/rwx 권한 나열, 설정 및 변경
> man, info 및 /usr/share/doc의 파일을 포함한 시스템 문서를 찾고, 읽고, 사용
2. 소프트웨어 관리
> RPM 리포지토리에 대한 액세스 구성
> RPM 소프트웨어 패키지 설치 및 제거
> Flatpak 리포지토리에 대한 액세스 구성
> Flatpak 소프트웨어 패키지 설치 및 제거
3. 간단한 셸 스크립트 생성
> 조건부 코드 실행(if, test, [] 등 사용)
> 파일, 커맨드라인 입력 등의 처리에 루프 구문(for 등) 사용
> 스크립트 입력 처리($1, $2 등)
> 스크립트에 포함된 셸 명령 출력 처리
4. 실행 시스템 운영
> 시스템을 정상적으로 부팅, 재부팅, 셧다운
> 시스템을 수동으로 다른 타겟으로 부팅
> 시스템에 액세스하기 위해 부팅 프로세스 중단
> CPU/메모리 사용이 많은 프로세스를 식별하여 종료
> 프로세스 스케줄링 조정
> 튜닝 프로파일 관리
> 시스템 로그 파일 및 저널을 찾고 해석
> 시스템 저널 보존
> 네트워크 서비스 시작, 중단 및 상태 점검
> 안전하게 시스템 간 파일 전송
5. 로컬 스토리지 구성
> GPT 디스크에서 파티션 나열, 생성, 삭제
> 물리 볼륨 생성 및 제거
> 볼륨 그룹에 물리 볼륨 할당
> 논리 볼륨 생성 및 제거
> UUID(Universally Unique ID) 또는 레이블을 사용하여 부팅 시 파일 시스템을 마운트하도록 시스템 구성
> 어떠한 손실/손상 없이 시스템에 새로운 파티션 및 논리 볼륨과 스왑 추가
6. 파일 시스템 구축 및 구성
> vfat, ext4, xfs 파일 시스템 생성, 마운트, 분리 및 사용
> NFS를 사용하여 네트워크 파일 시스템 마운트 및 분리
> autofs 구성
> 기존 논리 볼륨 확장
> 파일 권한 문제 진단 및 수정
7. 시스템 배포, 구성 및 유지 관리
> at cron 과 systemd 타이머 유닛을 사용하여 작업 예약
> 서비스를 시작 및 중단하고 부팅 시 자동으로 시작하도록 서비스 구성
> 자동으로 특정 타겟에 시스템이 부팅되도록 구성
> 타임 서비스 클라이언트 구성
> Red Hat Content Delivery Network, 원격 리포지토리 또는 로컬 파일 시스템에서 소프트웨어 패키지 설치와 업데이트
> 시스템 부트로더 수정
8. 기본 네트워킹 관리
> IPv4 및 IPv6 주소 구성
> 호스트 이름 확인 구성
> 부팅 시 네트워크 서비스가 자동으로 시작하도록 구성
> firewalld 및 firewall-cmd를 사용하여 네트워크 액세스 제한
9. 사용자 및 그룹 관리
> 로컬 사용자 계정 생성, 삭제, 수정
> 로컬 사용자 계정의 비밀번호 변경 및 비밀번호 유효 기간 설정 조정
> 로컬 그룹 및 그룹 멤버십 생성, 삭제, 수정
> 관리자 권한 접근 설정
10. 보안 관리
> firewall-cmd/firewalld를 사용하여 방화벽 구성
> 기본 파일 권한 관리
> 키 기반 SSH 인증 구성
> SELinux 실행 및 허용 범위 모드 설정
> SELinux 파일 나열 및 식별, 컨텍스트 처리
> 기본 파일 컨텍스트 복원
> SELinux 포트 레이블 관리
> 부울 설정을 사용하여 시스템 SELinux 설정 수정
과제는 두 개의 카테고리(설정 과제/관리 및 복구 과제)로 되어있다. 제공되는 두 개의 node에서 각각의 카테고리에 해당하는 과제를 수행한다.
1-1. 네트워크 설정
- 호스트 이름: node1.domain250.example.com
- IPv4 주소: 172.25.250.100
- 서브넷 마스크: 255.255.255.0
- 게이트웨이: 172.25.250.254
- DNS: 172.25.250.254
나의 답안:
1. 호스트 이름 변경
hostnamectl set-hostname node1.domain250.example.com
# 확인
hostnamectl
2. 네트워크 설정 변경
# 연결 및 인터페이스 확인
nmcli con show
nmcli dev show
# 네트워크 설정
nmcli con mod enp0s8 ipv4.addresses 192.168.56.104/24 ipv4.gateway 192.168.56.1 ipv4.dns 8.8.8.8 ipv4.method manual autoconnect yes
# 변경사항 적용(down -> up)
nmcli con down enp0s8
nmcli con up enp0s8
nmcli con show
# 확인
ip a
1-2. Yum Repository 설정
다음 링크를 사용하여 YUM 레포지토리를 구성하시오:
- BaseOS: http://content.example.com/rhel8.0/x86_64/dvd
- AppStream: http://content.example.com/rhel8.0/x86_64/dvd/AppStream
나의 답안:
# 0. 실습용 환경 구성
# repo server의 IP ADDR = 192.168.56.108
# BaseOS : /var/www/html/repo/BaseOS
# AppStream : /var/www/html/repo/AppStream
-----------------------------------------------
# 1.repo 파일 생성(remote.repo)
vi /etc/yum.repos.d/remote.repo
[BaseOS]
name=RHEL-9-7-0-x86_64-BaseOS
baseurl=http://192.168.56.108/repo/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=RHEL-9-7-0-x86_64-AppStream
baseurl=http://192.168.56.108/repo/AppStream
enabled=1
gpgcheck=0
:wq
#2. 적용 및 확인
dnf clean all
dnf repolist -v
1-3. SELinux 포트 트러블슈팅
비표준 포트 82번에서 실행 중인 웹 서버의 문제를 해결하시오:
- /var/www/html의 기존 파일을 수정 없이 제공해야 함.
- 웹 서버가 포트 82에서 정상 서비스되어야 함.
- 부팅 시 서비스가 자동 시작되도록 설정.
나의 답안:
# httpd 서비스 상태 확인
systemctl status httpd
# file context확인
ll -Z /var/www/html/
semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1
restorecon -Rv /var/www/html
semanage port -a -t http_port_t -p tcp 82
firewall-cmd --permanent --add-port=82/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
# 서비스 구동 및 enable처리
systemctl enable --now httpd
1-4. 사용자 및 그룹 생성
- "sysadms" 그룹 생성.
- "natasha", "harry" 사용자를 생성하고 보조 그룹으로 "sysadms" 지정.
- "sarah" 사용자 생성 (로그인 불가능한 쉘 부여, sysadms 멤버 아님).
- 모든 사용자 비밀번호: "trootent".
- "sysadms" 그룹에 사용자 추가 권한 부여.
- "harry" 사용자에게 sudo 암호 입력 없이 비밀번호를 변경할 수 있는 권한 부여.
나의 답안:
groupadd sysmgrs
useradd -G sysmgrs natasha
useradd -G sysmgrs harry
useradd -s /usr/sbin/nologin sarah
echo flectrag | passwd natasha --stdin
echo flectrag | passwd harry --stdin
echo flectrag | passwd sarah의 --stdin
visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
harry ALL=(ALL) NOPASSWD: /usr/bin/passwd harry
su - harry
sudo passwd harry(확인용)
1-5. 크론탭(Crontab) 설정
- "natasha" 사용자로 2분마다 실행되는 크론 작업 설정.
- 실행 내용: logger "EX200 in progress"
나의 답안:
systemctl status crond
systemctl enable --now crond
crontab -u natasha -e
*/2 * * * * logger "EX200 in progress"
#~마다 일때는 / 표시 오전 10시 20분일 경우 20 10 * * * * 의 표기 형식
## 참고 14시 30분 이런 식으로 문제가 나오는 경우도 있는데 그런 경우에는 밑에 주석 제거 후, 하기와 같이 입력
# 30 14 * * * logger "EX200 in progress"
systemctl restart crond
crontab -lu natasha
cat /var/log/messages
1-6. 협업 디렉터리 설정
- "/home/manager" 디렉터리 생성.
- 소유 그룹: "sysadms".
- 권한: "sysadms" 멤버는 모든 권한을 가지며, 그 외 사용자(root 제외)는 접근 불가.
- 향후 해당 디렉터리 내에 생성되는 파일이 자동으로 "sysadms" 그룹 소유가 되도록 설정(SGID).
나의 답안:
# 방법 1
mkdir /home/manager
chgrp sysmgrs /home/manager
chmod 2770 /home/manager
ls -ld /home/manager
# 방법 2
mkdir /home/manager
chgrp sysmgrs /home/manager
chmod g+s
setfactl -m o::--- /home/manager
setfactl -m g:sysmgrs:rwx /home/manager
1-7. NTP 구성
- 시스템 시간을 "ntp.example.com" 서버와 동기화하도록 설정.
나의 답안:
systemctl status chronyd
systemctl start chronyd
systemctl enable --now chronyd
systemctl status ntpd
systemctl stop ntpd
systemctl disable ntpd
vi /etc/chrony.conf
# 다음 라인을 추가
server ntp.example.com iburst prefer
systemctl restart chronyd
# 검증
timedatectl
chronyc
chronyc> sources
1-8. Autofs 구성
- 모든 `remoteuserX`의 홈 디렉토리는 NFS를 통해 공유됩니다. 이 서버는 `utility.example.com(172.24.10.100)`에서 사용 가능하며, NFS 공유 경로는 `/netdir`입니다.
- `remoteuserX`의 실제 홈 디렉토리 위치는 `utility.example.com:/home/remoteuserX`입니다. (여기서 X는 본인의 스테이션 번호입니다.)
- `remoteuserX`의 홈 디렉토리는 **Autofs 서비스**에 의해 자동으로 마운트되어야 합니다.
- 홈 디렉토리는 해당 사용자가 **쓰기 가능(writable)**해야 합니다.
나의 답안:
# 전제 조건 체크(utility.example.com 서버)
# 다음 작업이 미리 완료되어 있음을 전제로 한다.
## utility.example.com 주소와 IP주소가 매핑되어 있음
echo "192.168.56.106 utility.example.com" >> /etc/hosts
## remoteuser10의 home dir는 이렇게 설정되어 있음
[root@localhost home]# ll
total 0
drwxrwxrwx. 3 root root 80 Jan 16 16:36 remoteuser10
## 모든 remoteuser의 home dir는 NFS를 통해 exported되어 있음
echo "/home 192.168.56.0/24(rw,no_root_squash)" >> /etc/exports
exportfs -ra
## 서비스가 방화벽에 등록되어 있음
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
## remoteuser10 계정이 생성되어 있음
useradd -M remoteuser10
# 1. autofs 활성화
systemctl enable --now autofs
# 2. remoteuser10의 비밀번호 설정
echo "remoteuser10./" | passwd --stdin remoteuser10
# 3. master map 수정(/etc/auto.master)
## 작성 형식 : [마운트될 상위 dir] [map file 경로]
vi /etc/auto.master
#/misc /etc/auto.misc 주석처리
/netdir /etc/auto.misc
# 4. map file 생성(/etc/auto.misc)
## 작성 형식 : [상대 경로] [마운트 옵션] [원격서버 주소:공유경로]
remoteuser10 -fstype=rw,nfs,sync
utility.example.com:/home/remoteuser10
# 5. autofs 재시작 및 확인
systemctl restart autofs
su - remoteuser10
cd /home
touch test # w 권한 확인
ls -al
1-9. 파일 찾기 및 복사
- "natasha" 사용자에 의해 생성된(소유권이 natasha인) 모든 파일 및 디렉터리 찾기.
- 해당 항목들을 "/root/natashafiles" 디렉터리로 복사.
나의 답안:
# 대상 디렉토리 생성
mkdir -p /root/natashafiles
# 검색 실행
find / -user natasha -exec cp -a {} /root/natashafiles/ \;
or
find / -user natasha -exec cp -rp {} /root/natashafiles/ \;
# 확인
ls -al /root/natashafiles
1-10. 문자열 검색
- "/usr/share/dict/words" 파일에서 "ich"가 포함된 모든 줄 찾기.
- 검색된 내용을 "/root/lines" 파일에 저장.
나의 답안:
grep ich /usr/share/dict/words > /root/lines
cat lines
1-11. 아카이브 생성
- "/usr/local"의 내용을 tar로 묶고 bzip2로 압축.
- 결과물 저장 위치: "/root/backup.tar.bz2".
나의 답안:
tar -cvjf backup.tar.bz2 /usr/local/
mv backup.tar.bz2 /root
1-12. 파일 권한 설정
- /etc/fstab 파일을 /var/tmp/fstab으로 복사 후 다음 권한 설정:
- 소유자/그룹: root.
- 모든 사용자에게 실행 권한 없음.
- "natasha" 사용자: 읽기 및 쓰기 가능.
- "harry" 사용자: 읽기 및 쓰기 불가.
- 기타 모든 사용자: 읽기 전용.
나의 답안:
## -a(archive) : 모든 파일 속성 보존(symlink도 그대로 복사)
## -R(recursive) : 디렉토리 내 모든 하위 파일 및 디렉토리 함께 cp
## -p(preserve) : 파일 권한, 소유권, 타임스탬프 보존
cp -aRp /etc/fstab /var/tmp/fstab
chown -R root:root /var/tmp/fstab
chmod a-x /var/tmp/fstab
setfacl -m u:natasha:rw- /var/tmp/fstab
setfacl -m u:harry:--- /var/tmp/fstab
setfacl -m o::r-- /var/tmp/fstab
# 확인
getfacl /var/tmp/fstab
1-13. 특정 UID 사용자 생성
- UID "2334", 비밀번호 "souspolo"인 "unilao" 사용자 생성.
나의 답안:
useradd unilao -u 2334
echo "souspolo" | passwd --stdin "unilao"
# UID 확인
[root@node1 ~]# id unilao
uid=2334(unilao) gid=2334(unilao) groups=2334(unilao)
1-14. 패스워드 만료 설정
- 비밀번호 최대 사용 기간을 20일로 설정.
나의 답안:
vi /etc/login.defs
PASS_MAX_DAYS 20
# 기존 값 99999에서 수정 후 저장
1-15. 로그인 메시지 출력
- 특정 사용자로 로그인 시 메시지를 출력하는 스크립트/애플리케이션(rhcsa) 구성.
나의 답안:
# 스크립트 생성
vi /usr/local/bin/rhcsa
#!/bin/bash
echo "Welcome to user ngepc"
chmod 755 /usr/local/bin/rhcsa
# 방법 1)
vi /home/ngepc/.bashrc
# 방법 2)
vi /home/ngepc/.bash_profile
둘 중 하나의 파일 내부에서
fi 밑에 다음라인 추가:
/usr/local/bin/rhcsa
# 확인
[root@node1 ~]# su - ngepc
Welcome to user ngepc
[ngepc@node1 ~]$
1-16. 특정 유저 umask 설정
- "natasha" 사용자가 생성하는 파일/디렉터리에 대해 다음 권한이 적용되도록 설정:
- 파일 기본 권한: rw------- (0600)
- 디렉터리 기본 권한: rwx------ (0700)
나의 답안:
vi /home/natasha/.bash_profile
다음 항목을 추가:
umask 277
# 확인
[root@node1 ~]# su - natasha
[natasha@node1 ~]$ touch hello
[natasha@node1 ~]$ mkdir hi
[natasha@node1 ~]$ ls -lt
total 0
dr-x------. 2 natasha natasha 6 Jan 14 18:18 hi
-r--------. 1 natasha natasha 0 Jan 14 18:18 hello
[natasha@node1 ~]$ getfacl hello
# file: hello
# owner: natasha
# group: natasha
user::r--
group::---
other::---
1-17. 컨테이너 빌드
- "walhalla" 사용자로 http://classroom/Containerfile 다운로드.
- 파일 수정 없이 이미지 이름을 "pdf"로 하여 빌드.
나의 답안:
# podman 서비스 활성화
systemctl status podman
systemctl enable podman
# container file 설치할 디렉토리 생성
mkdir /container
cd /container
# 파일 다운로드(완제품<docker file>이 아닌 설계도임)
wget http://classroom.example.com/Containerfile
# 컨테이너 이미지 생성하기(설계도 이름이 Containerfile로 같을 때)
# -t : tag, 이미지_이름:버전
# . : 빌드 컨텍스트, 현재 디렉토리 내 파일들을 빌드 재료로 사용)
podman build -t myimg.v1 .
# 명령어 수행 시, Containerfile에 적힌 지시사항을 한 줄씩 실행함
# "**현재 디렉토리(.)**에 있는 설계도를 바탕으로,
# **myimg**라는 이름의 v1 버전 이미지를 **빌드(build)**해라!"
# 확인
podman images
1-18. 컨테이너 서비스 등록 (Rootless & Systemd)
- 컨테이너 이름: mycontainer
- 위에서 생성한 "pdf" 이미지 사용.
- 재부팅 시 수동 개입 없이 자동 시작되도록 systemd 서비스 등록.
- /opt/file -> /opt/incoming, /opt/processed -> /opt/outgoing으로 자동 마운트 설정.
나의 답안:
# 17번 문제를 완료하면, /container를 base dir로 해서 이미지 생성
# 1. 인프라 및 권한 준비(root)
# 일반 사용자가 접근할 수 없는 시스템 영역을 설정
## root가 chown 권한을 주지 않으면 ngepc가 podman run 실행 시 -v 옵션의 :Z에서 에러 발생
## Error: lsetxattr /opt/processed: operation not permitted
## :Z 옵션 에러 -> 컨테이너가 해당 디렉토리를 쓸 수 있도록 SELinux 보안 레이블을 자동 변경(root로 변경해야 함)
su - root
mkdir /opt/file
mkdir /opt/processed
chown ngepc:ngepc /opt/file
chown ngpec:ngepc /opt/porcessed
# Linger 설정(root 권한으로)
# 일반 사용자 logout시에도 서비스가 active 상태로 유지되도록
loginctl enable-linger ngepc
# 2. 사용자 환경 진입(ngepc) 및 컨테이너 실행
# su보다 ssh 연결 수립 추천(환경변수 때문)
## systemctl --user 명령어 -> XDG_RUNTIME_DIR이라는 환경변수가 제대로 작동해야 동작함
## su는 사용자만 바꿈
## ssh 접속은 해당 사용자의 완전한 로그인 세션 생성(모든 설정이 자동으로 활성화)
ssh ngepc@localhost
# 컨테이너 실행 및 서비스 파일 생성
## -d : 백그라운드 실행(터미널 닫아도 계속 동작하도록)
## -v : 마운트 옵션(호스트 폴더 /opt/files를 컨테이너 폴더/opt/incoming에 마운트)
## :Z : SELinux 레이블 자동 조정 -> 컨테이너에 안전한 액세스 허용
## localhost/myimg:v1 : 로컬 레지스트리에서 가져오겠다.
podman run -d --name mycontainer
-v /opt/file/:/opt/incoming:Z
-v /opt/processed/:/opt/outcoming:Z
localhost/myimg:v1
# container 실행 확인
podman ps -a
# /opt 경로에 마운트가 잘 되었는지 확인
podman exec mycontainer ls /opt/
# 출력값 :
> incoming
> outcoming
# 컨테이너 내부에서 외부 디렉토리로 파일 생성 가능한지 확인
podman exec mycontainer touch /opt/incoming/t1
# 3. systemd 유닛 파일 생성 및 설정
# systemd 유닛 파일 저장 위치 확인
man systemd.unit
mkdir -p /home/ngepc/.config/systemd/user
# systemd 유닛 파일 생성
podman generate systemd --name mycontainer --files
# 생성 확인
ls
mv container-mycontainer.service
/home/ngepc/.config/systemd/user/
systemctl --user daemon-reload
# Linger 설정
## ngepc가 로그아웃 해도 systemd가 계속 활성화 되도록
loginctl enable-linger ngepc
# 확인
loginctl show-user ngepc
# 4. 서비스 동작 테스트 및 자동화 등록
# container 실행 중지(수동으로 띄운 컨테이너 종료)
## 종료하는 이유 : systemd가 관리하는 컨테이너 실행 위해
## 수동 실행 컨테이너 : podman 명령어 사용
## systemd 관리 컨테이너 : systemctl 명령어 사용
podman stop mycontainer
# 확인
podman ps -a
# systemd를 통해 컨테이너 시작
systemctl --user start container-mycontainer.service
# 확인
podman ps -a
# systemd를 통해 컨테이너 중지
systemctl --user stop container-mycontainer.service
# 확인
podman ps -a
# 시스템 재부팅 시 자동 활성화 설정
systemctl --user enable --now container-mycontainer.service
2-1. Root 패스워드 재설정
- 패스워드를 분실한 상황을 가정하여 root 패스워드 재설정 또는 응급 모드 진입.
나의 답안:
# 방법 1) 추천 방식
VM 재부팅
부트로더 스크린 뜨면 e
linux열 맨 끝에 rw init=/bin/bash
ctrl + x로 재부팅
bash-5.1# passwd root
bash-5.1# (password 2회 입력)
bash-5.1# touch /.autorelabel
bash-5.1# /usr/sbin/reboot -f
-------------------------------------------------------
# 방법 2) 비추천 방식
VM 재부팅
부트로더 스크린 뜨면 e
linux열 맨 끝에 rd.break
ctrl + x로 재부팅
switch_root:/# mount -o rw,remount /sysroot
switch_root:/# chroot /sysroot
switch_root:/# passwd
switch_root:/# (password 2회 입력)
switch_root:/# touch /.autorelabel
switch_root:/# exit
exit
2-2. LVM 생성
- 볼륨 그룹 "wgroup" 내에 "wshare" 논리 볼륨 생성.
- PE 크기: 8MB.
- 크기: 50 extents.
- 파일시스템: ext4.
- 마운트: /mnt/wshare에 자동 마운트 설정.
나의 답안:
# 1. block device 및 file system 보기
lsblk
## 파티션 생성
fdisk /dev/sdb
Command (m for help): n -> t -> w 순
[command n]
* Partition Type : p
* Partition Number : (default)
* First Sector : (default)
* Last Sector : +1G
[command t]
* Hex Code or Alias : 8e
[command w]
* Synced on the disk
lsblk
# 2. pv, vg, lv, fs 생성
## 순서
## 2-1) PV - physical volume
## 2-2) VG - volume group
## 2-3) LV - logical volume
## 2-4) FS - file system
## 2-5) mount directory
### 2-1)
pvcreate /dev/sdb1
### 2-2)
vgcreate -s 8M wgroup /dev/sdb1
vgdisplay # PE 확인
### 2-3)
lvcreate -n wshare -l 50 wgroup
lvs
### 2-4)
mkfs.ext4 /dev/mapper/wgroup-wshare
### 2-5)
mkdir /mnt/wshare
# 3. 부팅 시 자동 mount 설정
vi /etc/fstab
/dev/mapper/wgroup-wshare /mnt/wshare ext4 defaults 0 0 #행추가
## fstab 변경 -> systemctl에 알리기
systemctl daemon-reload
# 4. 점검 및 확인
mount -a # 마운트 안된 사항 점검
df -Th # 마운트 된 사항 점검
2-3. Swap 파티션 추가
- 400MB 크기의 스왑 파티션 생성 및 영구 활성화.
나의 답안:
free -m # swap 사이즈 확인
# 1. 새로운 파티션 생성(/dev/sdb2)
fdisk /dev/sdb
Command (m for help): n -> t -> w 순
[command n]
* Partition Type : p
* Partition Number : 2
* First Sector : (default)
* Last Sector : +400M
[command t]
* Partition Number : 2
* Hex Code or Alias : 82
[command w]
* Synced on the disk
## partition 2(/dev/sdb2) 생성 확인
lsblk
# 2. swap 생성
## 2-1) mkswap
## 2-2) swapon
## 2-1)
mkswap /dev/sdb2
## 부팅시 자동 마운트 설정
vi /etc/fstab
/dev/sdb2 none swap defaults 0 0 # 행추가
## 2-2)
swapon /dev/sdb2
systemctl daemon-reload
# 3. 확인
free -m
2-4. LVM 크기 조정
- 주어진 조건에 맞게 Logical Volume의 크기를 확장.
나의 답안:
[방법 1] : lvresize -r 활용
[방법 2] : resize -r(수동 리사이즈)
----------------------------------------------------
[방법 1]
df -h # 마운트 지점 확인
umount /mnt/wshare # 마운트 해제
# 1. 파일시스템 오류 검사(축소 전 필수 단계)
e2fsck -f /dev/mapper/wgroup-wshare
# 2. lvresize -r 사용하여 LVM resize
lvresize -r -L 280M /dev/mapper/wgroup-wshare
# 3. 확인 후 마운트
lvs
mount -a
----------------------------------------------------
[방법 2]
df -h
umount /mnt/wshare
# 1.
e2fsck -f /dev/mapper/wgroup-wshare
# 2.
resize2fs /dev/mapper/wgroup-wshare 280M
lvreduce --fs ignore -L 300M /dev/mapper/wgroup-wshare
# 3.
mount -a
2-5. Tuned 설정
- 시스템에 권장되는 tuned 프로파일을 확인하고 적용.
나의 답안:
# 설치 확인
rpm -qa | grep tune
# 현재 profile 확인
tuned-adm active
# 추천 profile 확인
tuned-adm recommend
> virtual-guest
tuned-adm profile virtual-guest
tuned-adm active
> virtual-guest