

1. 디스크 확인
lsblk
/dev/sdb(20G), /dev/sdc(10G), /dev/sdd(10G), /dev/sde(20G)2. 파티션 생성 (전체 디스크 사용)
각 디스크에 primary 파티션 1개씩 생성 (fdisk, g → n → w)
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
이후 시스템 반영
partprobe
3. 물리볼륨(PV) 생성
pvcreate /dev/sdb1 /dev/sdc1
4. 볼륨그룹(VG) 생성 (PE 8M)
vgcreate vg0 /dev/sdb1 /dev/sdc1 -s 8M
5. 논리볼륨(LV) 생성
lv01 : 5G (-l 옵션)lv02 : 10G (-L 옵션)lv03 : 5G (-l 옵션)lvcreate -L 10G -n lv02 vg0
lvcreate -l 640 -n lv01 vg0 # 5G / 8M = 640
lvcreate -l 640 -n lv03 vg0
6. 파일 시스템 생성
mkfs.xfs /dev/vg0/lv02
mkfs.ext4 /dev/vg0/lv03
mkswap /dev/vg0/lv01
7. 수동 마운트 준비 및 마운트
mkdir -p /media/disk{1,2}
mount /dev/vg0/lv02 /media/disk1
mount /dev/mapper/vg0-lv03 /media/disk2
swapon /dev/vg0/lv01
8. 자동 마운트 등록
vim /etc/fstab
추가
/dev/vg0/lv02 /media/disk1 xfs defaults 0 0
/dev/mapper/vg0-lv03 /media/disk2 ext4 defaults 0 0
/dev/vg0/lv01 swap swap defaults 0 0
9. 볼륨 그룹에 디스크 추가
pvcreate /dev/sdd1
vgextend vg0 /dev/sdd1
10. 논리볼륨 확장
lv02: +5G 확장lvextend -L +5G /dev/vg0/lv02
xfs_growfs /media/disk1
lv03: 10G로 확장lvextend -L 10G /dev/vg0/lv03
resize2fs /dev/vg0/lv03
11. 20G 디스크(/dev/sdb1) 제거
/dev/sde1 사용)pvcreate /dev/sde1
vgextend vg0 /dev/sde1
데이터 이동
pvmove /dev/sdb1
제거
vgreduce vg0 /dev/sdb1
12. 확인
lsblk
df -Th
lvs
vgs
pvs
swapon -s
핵심
resize2fs, xfs_growfs: LV 확장 후 FS 확장 필수pvmove 전: 반드시 충분한 빈 공간 확보fstab에 swap 타입 명시해야 자동 마운트됨 sshd.service, multi-user.target 등)systemctl: 현재 활성 유닛 목록
systemctl -a: 모든 유닛 (비활성 포함)
systemctl -t 서비스유형: 특정 유닛만 확인 (예: -t service)
systemctl -t service
systemctl list-units --type=service
systemctl list-unit-files
enabled: 부팅 시 자동 실행
disabled: 부팅 시 실행 안 됨
static: 직접 실행 X, 다른 유닛에 의해 실행
masked: 강제 비활성화 (링크를 /dev/null로)
generated: 시스템이 자동 생성한 임시 유닛 (재부팅하면 사라질 수 있음)
systemctl sub-command unit
status: 현재 상태 확인
start: 서비스 시작 (일시적)
stop: 서비스 중지
restart: 재시작
reload: 설정 재적용 (프로세스 유지)
enable: 부팅 시 자동 실행 설정
disable: 부팅 시 자동 실행 해제
mask: 실행 자체를 차단
unmask: 마스크 해제
list-dependencies: 의존 유닛 목록 확인
systemctl start xxxx.service # 지금 실행
systemctl enable xxxx.service # 다음 부팅 때 실행
systemctl enable xxxx.service --now
systemctl status sshd
systemctl restart network
systemctl mask bluetooth.service
systemctl list-units --type=service
systemctl list-unit-files | grep enabled
/etc/systemd/system/
→ 커스터마이징 유닛, override 설정
→ 이곳에 있으면 항상 우선 적용됨
/run/systemd/system/
→ 일시적인 유닛 설정이 생성됨 (재부팅하면 사라짐)
/usr/lib/systemd/system/
→ 서비스가 설치되면 기본 유닛 파일이 여기에 저장됨
→ 시스템 업데이트로 변경될 수 있음
sshd 서비스 유닛 파일 위치 확인
systemctl status sshd
override 설정 만들기 (수정하려면 etc에 덮어쓰기)
systemctl edit sshd
이 명령을 사용하면 /etc/systemd/system/sshd.service.d/override.conf 파일이 생성되어 override 됨
1. 서비스 즉시 중지 + 부팅 시 비활성화
systemctl disable sshd --now
--now: 현재 상태 중지disable: 부팅 시 실행되지 않음status 확인 시 → inactive (dead)2. 서비스 시작
systemctl start sshd
systemctl status sshd
status에 active (running) 이 뜸PID 확인 가능3. 서비스 부팅 시 자동 시작 설정
systemctl enable sshd
/etc/systemd/system/multi-user.target.wants/에 심볼릭 링크 생성됨4. 서비스 중지
systemctl stop sshd
status: inactive5. 비활성화
systemctl disable sshd
enable된 자동 시작도 제거6. 서비스 잠금 (mask)
systemctl mask sshd
sshd.service가 /dev/null에 링크됨start 시도해도 아래와 같은 에러 발생Failed to start sshd.service: Unit is masked.7. 잠금 해제
systemctl unmask sshd
8. 서비스 시작 + PID 확인
systemctl start sshd
systemctl status sshd
Main PID: XXXX 확인9. 서비스 리로드
systemctl reload sshd
systemctl status sshd
reload: 설정만 다시 읽음PID: 변하지 않음10. 서비스 재시작
systemctl restart sshd
PID: 변경됨stop → start 효과 = 프로세스 재생성핵심 정리
명령어 설명 PID 변화
start: 서비스 시작 새로 생성
stop: 서비스 중지 PID 제거
reload: 설정 재적용 (무중단) 유지
restart: 중단 후 재시작 변경
enable: 부팅 자동 실행 등록 유지
disable: 자동 실행 해제 유지
mask: 서비스 완전 차단 (/dev/null) 유지
unmask: 차단 해제 유지
활용 팁
현재 실행 여부만 확인
systemctl is-active sshd
부팅 자동 여부 확인
systemctl is-enabled sshd
서비스에 의존하는 다른 유닛 확인
systemctl list-dependencies sshd
구성요소 역할 저장 위치
systemd-journald 로그 수집 /run/log/journal (비영구)
rsyslogd 로그 저장 /var/log/* (영구)
systemd-journald는 RAM 기반이 기본이며, /var/log/journal/로 옮겨야 영구 저장/var/log/messages: 대부분의 시스템 로그 (보안, 메일, 부팅, 디버그 등 제외)
/var/log/secure: 인증 관련 (로그인, su, sudo 등)
/var/log/maillog: 메일 관련 로그
/var/log/cron: crontab, at 등의 예약 작업
/var/log/boot.log: 부팅 관련 로그
logger -p facility.priority "메시지"
예시
logger -p authpriv.info "사용자 로그인 테스트"
facility 예
authpriv, auth, cron, daemon, mail, user, kern, local0~7
priority 예
0: emerg1: alert2: critical3: error4: warning5: notice6: info7: debugtail -f /var/log/messages
tail -f /var/log/secure
journalctl: 전체 로그 출력
journalctl -n 50: 최근 50줄
journalctl -f: 실시간 로그 출력
journalctl -p err: error 이상만 보기
journalctl --since yesterday: 어제부터 지금까지
journalctl --since 2024-03-28 --until 2024-03-29: 특정 기간 보기
notice ~ warning: 노란색err 이상: 빨간색mv /run/log/journal /var/log/
systemctl restart systemd-journald
journalctl이 재부팅 후에도 로그 유지 가능SystemMaxUse=100M
SystemKeepFree=50M
변경 후
systemctl restart systemd-journald
문제 발생 시 가장 먼저 볼 파일은?
➤ /var/log/messages + /var/log/secure
logger 명령어는?
➤ 임의 로그를 남기고 로그 설정 확인 시 매우 유용
systemctl restart rsyslog vs systemd-journald의 차이?
➤ 전자는 로그 저장 데몬 재시작, 후자는 로그 수집 서비스 재시작
1. rsyslog.conf 수정
vim /etc/rsyslog.conf
아래 한 줄 추가 (위치: #### RULES #### 아래)
cron.err /var/log/cron1
facility=cron 이고 priority ≥ err인 로그를 /var/log/cron1에 따로 저장2. 설정 반영
systemctl restart rsyslog
rsyslog는 수동으로 재시작해야 설정 적용됨3. 테스트용 로그 메시지 전송
logger -p cron.info "cronlog1"
logger -p cron.crit "cronlog2"
4. 결과 확인
tail -2 /var/log/cron
-> 출력
... cronlog1
... cronlog2
tail -2 /var/log/cron1
-> 출력
... cronlog2
cronlog1: info → /var/log/cron에는 남지만, /var/log/cron1에는 안 감cronlog2: crit → /var/log/cron과 /var/log/cron1 둘 다 기록5. journald 로그 영구 저장 설정
mv /run/log/journal /var/log/
systemctl restart systemd-journald
/var/log/journal 디렉토리가 존재하면 systemd-journald는 로그를 RAM이 아닌 디스크에 저장하게 됨추가 팁
로그 확인
journalctl -u rsyslog
영구 저장 여부 확인
journalctl --disk-usage
실무 팁
여러 레벨을 동시에 기록하려면?
cron.err;cron.crit /var/log/cronX
특정 사용자 로그를 따로 관리하려면 user.* facility 사용
BIOS/UEFI: 부트 장치 로딩
GRUB2: 커널 선택 화면 (grub.cfg 참고)
Kernel: 커널 로드, initramfs 실행
systemd: default.target 실행
systemctl get-default
systemctl set-default multi-user.target # CLI (텍스트 모드)
systemctl set-default graphical.target # GUI (X윈도우)
systemctl isolate multi-user.target
systemctl isolate graphical.target
GRUB_TIMEOUT=5: 부팅 대기 시간 (초)
GRUB_DEFAULT=saved: 이전 커널 기억
GRUB_DISABLE_SUBMENU=true: 서브메뉴 사용 안 함
GRUB_CMDLINE_LINUX: 커널 부팅 파라미터 지정
GRUB_TERMINAL_OUTPUT="console": 출력 장치 설정
GRUB_DISABLE_RECOVERY=true: 복구 모드 숨김
grub2-mkconfig -o /boot/grub2/grub.cfg
부팅 시 GRUB 화면에서 아무 키
rescue 또는 기본 커널에 e → 편집 모드
linux 줄 끝에 rd.break 추가
Ctrl + X → 구급 쉘 진입
루트 마운트 및 chroot
mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel
exit
exit
vi /etc/grub.d/00_header
cat << EOF
set superusers="admin"
password admin 1234
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg
# 1. 타겟 확인
systemctl get-default
# 2. 타겟 변경
systemctl set-default multi-user.target
# 3. GUI 모드로 전환
systemctl isolate graphical.target
# 4. GRUB 부트 시간 변경
vim /etc/default/grub
GRUB_TIMEOUT=3
:wq
grub2-mkconfig -o /boot/grub2/grub.cfg
GRUB에서 멈춤: e 눌러 rd.break로 진입
GUI 부팅 안 됨: systemctl get-default → graphical.target 확인
GRUB 비밀번호 설정 오류: grub.cfg 권한 또는 superusers 오타 확인

데브반에서 감찰 나왔습니다