Notice
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

정보통신공학과 노선변경기

리눅스 관리 4일차 systemd systemctl 부트프로세스 네트워크관리(nmcli) 본문

Sub3_리눅스 관리

리눅스 관리 4일차 systemd systemctl 부트프로세스 네트워크관리(nmcli)

HEONPOLI 2021. 5. 13. 18:02

3일차 실습해설, 간략설명

더보기

구성순서, 방식

 fdisk   make filesystem    mount             permanent mount(/etc/fstab)

 

swap 영역구성        fdisk       mkswap           swapon               장치 swap swap defaults 0 0

기본 파일시스템 구성     fdisk        mkfs            mount        

장치 마운트디렉토리 파일형식지정 defaults 0 0

알면좋은 Hex code: 83=Linux, 82=Linux swap, 8e=Linux LVM

*3일차 실습해설

*****************************실습***********************

1. VM 디스크 1을 제외한 모든 디스크를 제거 하시오

2. VM 디스크 2 (10G) 를 생성하시오.

3. 다음 사양을 적용 할수 있도록 적당히 파티셔닝 하고 마운트 하시오

- swap 메모리를 500M 확장 하시오(파티셔닝 방법) 

- ext4 2G /tmp/test1 에 마운트 되는 파일시스템 생성(논리볼륨 아님)

- xfs 1G /tmp/test1 에 마운트 되는 파일시스템 생성(논리볼륨아님)

- 다음과 같은 논리 볼륨을 생성하시오

      - 3G, 2G pv -> vgname 인 논리 볼륨그룹 생성

      - /vgname/lvname1   1G  (ext4 /mnt/lv1 )

      - /vgname/lvname2   2G  (xfs /mnt/lv2 )

  -lvname1 을 1.5G로 확장하시오.

  모든 내용은 재부팅 후에도 설정이 유지 되어야 한다.

********************************************************************

 

<강사님 풀이> (명령어에 sudo 권한으로..)

10G 디스크 추가

fdisk 들어가서.. 

주파티션 1 +500M, 주파티션2 +2G, 주파티션3 +1G, 확장 파티션으로 전부지정

확장1 +3G (type 8e(LVM)), 확장2 +2G(type 8e(LVM))

1.Swap 메모리 만들기

mkswap /dev/vdb1

swapon /dev/vdb1

2.파일시스템 두개 만들기

mkdir /tmp/test1

mkdir /tmp/test2

mkfs.ext4 /dev/vdb2

mkfs.xfs /dev/vdb3

lsblk -f 로 확인

파일시스템 형성되면 그 때 UUID값이 생성된다.

mount /dev/vdb2 /tmp/test1

mount /dev/vdb3 /tmp/test2

3.논리볼륨 나누기

pvcreate /dev/vdb5

pvcreate /dev/vdb6

pvdisplay

vgcreate vgname /dev/vdb5 -s 16M

      그룹이름 vgname으로 해주고 물리볼륨 합쳐주기, PE 16M으로 임의지정함

vgextend > 볼륨그룹에 피시컬볼륨 추가

vgextend vgname /dev/vdb6 -s 16M

lvcreate vgname -n lvname1 -L 1G

lvcreate vgname -n lvname2 -L 2G

lvdisplay

mkfs.ext4 /dev/vgname/lvname1

mkfs.xfs /dev/vgname/lvname2

mkdir /mnt/lv1

mkdir /mnt/lv2

mount /dev/vgname/lvname1 /mnt/lv1

mount /dev/vgname/lvname2 /mnt/lv2

lsblk -f 로 확인

4. 영구마운트..

/etc/fstab에서 작성    swap: 장치 swap swap defaults 0 0

                파티션 지정: 장치 마운트디렉 파일형식 defaults 0 0

5.논리볼륨확장

lvextend -L 1.5G /dev/vgname/lvname1 -r

 

*시스템

**systemd > 실행시 최초로 돌아가는 프로그램, 데몬프로그램

돌아가는 도중에는 제어할 수 없다. 

예전에 사용하던것 > init 

 

init: 직렬 실행, 순차적으로 실행, 쉘 스크립트 기반으로 동작

       /etc/inittab에 실행시 시작할 run level 저장

       스크립트가 동작하면서 시스템 관리

       /etc/init.d/에 스크립트 저장되어있음

       /etc/rc?.d 에 해당 run level로 지정할 시 실행되는 프로그램 저장

 

systemd: 병렬 실행 > 서비스들간의 종속성 존재, target 이 데몬 하위

    unit 단위로 서비스를 관리한다.

    서비스유닛 = http, ssh, ftp 

    소켓유닛 = 프로세스간의 통신을 위해 생성

    target 유닛 = 부팅시 필요한거 저장

   

*init_test.sh의 status확인, start해보기

sudo vi /usr/bin/unit_test.sh

#!/bin/bash

 

echo "start unit test"

 

while (( 1 ))

do 

        echo "hi test.sh"

        sleep 3

done

 

chmod +x /usr/bin/unit_test.sh 

sudo chmod +x /usr/bin/unit_test.sh 

ls -al /usr/bin/unit_test.sh 

/usr/bin/unit_test.sh

 

*유닛생성

sudo vi /etc/systemd/system/unit_test.service

에다가 작성

[Unit]

Description=unit test systemd service

 

[Service]

type=simple

ExecStart=/bin/bash /usr/bin/unit_test.sh

 

[Install]

WantedBy=multi-user.target

 

*systemctl 명령어

sudo yum install httpd

 systemctl status httpd

 systemctl start httpd

sudo firewall-cmd --add-service=http

systemctl start unit_test.service

 

systemctl list-units  >> 동작중인 유닛 리스트 보여준다.

 systemctl -t service list-units     >>  service type인 유닛만 확인 -t가 type지정

systemctl status 상태확인

systemctl start     실행

enable ⇒ 심볼릭 링크 생성

systemctl is-active httpd >> httpd 가 active상태인지 확인

systemctl stop 유닛 정지

systemctl restart 유닛 재시작

systemctl reload 설정 저장된 파일 수정해줄 때 reload 하면 서버가 돌고있는 상태에서 적용가능

systemctl mask  ⇒ 실행안되게끔 잠시 격리

systemctl unmask 로 다시 서버복귀



******systemctl 실습*********

 

1. http 서비스의 실행 상태 확인

sudo systemctl status httpd

2. httpd 서비스를 활성화 시키시오

sudo systemctl enable httpd

3. httpd  서비스를 비활성화 시키시오

disable

4. httpd 서비스를 실행하시오

start

5. httpd 서비스를 중지 시키시오

stop

6. httpd 서비스를 마스크 상태로 만드시오

mask

7. httpd 서비스의 마스크를 해제 하시오 

unmask

8. httpd 서비스를 시작한후 PID 확인, reload  후 PID확인

start 하고난 다음, reload한 다음은 같다. restart는 PID 바뀐다.

9. httpd 서비스를 재시작한후 PID 를 확인 하시오

10. sshd의 의존성을 확인하시오.

systemctl list-dependencies sshd

**********************************************************

 

*부트프로세스 교재 278p        주우우웅요

1.POST : power on self test

1.5. BIOS/UEFI

2.부트로더 메모리에 적재, grub2를 적재하여 가능한 커널 목록 출력

3.initrmfs 압축해제하여 /sysroot에 압축해제

4.필요한 파일을 메모리에 적재

5.default target

6.multi-user.target(다중사용자)

7.graphical.target(GUI)

 

*get-default = default target 확인       중요해!!!!!!!!!

default target > 처음에 선택되는 target

systemctl get-default

systemctl set-default <target-unit>

systemctl isolate <target-unit>



*root passwd 복구 중요해!!!!!!!!!

 

2.부트로더 메모리에 적재, grub2를 적재하여 가능한 커널 목록 출력

3.initrmfs 압축해제하여 /sysroot에 압축해제

 

커널선택창에서...

e

utf-8 옆에 rd.break

mount -o remount,rw /sysroot

chroot /sysroot

passwd 

touch /.autorelabel

exit

 

*네트워크관리.. 시험에 나온댜

부팅 -> IP/subnet, Gateway DNS 등 구성 후 접근가능 -> www.google.com

 

ip address = ip정보확인

 

ip a s == ip address show

 

sudo ip link set ens12 down => ens12 network down 시키는것

sudo ip link set ens12 up => 다시 ip 받아오게 하는것

sudo ip a add 192.168.122.100/24 dev ens12  => ip 주소 추가할당

sudo ip a del 192.168.122.90/24 dev ens12       => ip 주소 제거

 

ip route show => 라우팅 경로 확인

sudo ip route del default via 192.168.122.1 dev ens12  => 라우팅 삭제 

sudo ip route add default via 192.168.122.1 dev ens12 => 라우팅 추가

 

/etc/resolv.conf 에서 vi로 nameserver 지정가능하다.(아무것도 없을 때 사용)

 

*NetworkManager

네트워크와 관련된 모든 설정을 관리하는 서비스

/etc/sysconfig/network-scripts 설정있는 파일

 

DHCP 서버가 보내주는 정보를 다시 작성해주면 된다.

DHCP 서버가 보내주는 것: IP/Subnetmask, gateway, dns

 

*네트워크 관리도구

(ip는 잘 안쓰는 명령어)

nmcli, nmtui 를 주로 쓴다 nmtui거의 안씀

 

**nmcli 

profile 단위로 관리

nmcli con show     연결정보 보여준다.

ens12 ip: 192.168.122.100/24 ,  routing : 192.168.122.1 

eth0 ip: 192.168.122.118/24

 

sudo nmcli con add con-name ens12-1 type ethernet ifname ens12 

=>  새로운 인터페이스 생성

ens12 네트워크카드에 ens12-1 인터페이스를 추가, type은 ethernet으로

sudo nmcli connection down Wired\ connection\ 1     ens12 대신 ens12-1 올리기위해 down

혹은

nmcli connection up ens12-1 할 수 있다. = 명령어 치면 DHCP로부터 받아온다

sudo nmcli con delete Wired\ connection\ 1        커넥션 지우기

nmcli con show 로 확인가능

 

method 지정안해주면 gw, dns, 를 정해놔도 DHCP로 요청함(두번 일하는거잖아)

지정해주면 static으로 manual 받아옴

 

sudo nmcli con add con-name ens12-2 type ethernet ifname ens12

sudo nmcli con modify ens12-2 ipv4.addresses 192.168.122.200/24

sudo nmcli con modify ens12-2 ipv4.dns 8.8.8.8

sudo nmcli con modify ens12-2 ipv4.gateway 192.168.122.1

sudo nmcli con modify ens12-2 ipv4.method manual

sudo nmcli connection up ens12-2            ( sudo nmcli con up ens12-2)

nmcli con show

 

/etc/sysconfig/network-scripts/ifcfg-ens12-2 여기에 설정된거 있다 vi로 들어가서 확인 or cat

**********실습*************

1. network 인터페이스 카드를 추가 하세요

NAT

device model : e1000

 

다음 내용은 새로 추가한 인터페이스에 대한 내용입니다

(eth0 가 아님!)

 

인터페이스 명을 확인하세요

새로 추가된 인터페이스에게 고정된 아이피를 할당하세요

con-name : static200

ip : 192.168.122.10

prefix 24

dns : 8.8.8.8

gateway : 192.168.122.1

 

hostname : cccr2021

**************************************

ens13 인터페이스카드 추가

sudo nmcli con add con-name static200 type ethernet ifname ens13

sudo nmcli con modify static200 ipv4.addresses 192.168.122.10/24

sudo nmcli con modify static200 ipv4.gateway 192.168.122.1

sudo nmcli con modify static200 ipv4.dns 8.8.8.8

sudo nmcli con modify static200 ipv4.method manual

sudo nmcli con up static200