Linux

[Linux Bible] chapter 12~15 요약

윤창이 2021. 2. 28. 19:03
728x90

[주의] 개인 공부를 위해 쓴 글이기 때문에 주관적인 내용은 물론, 쓰여진 정보가 틀린 것일 수도 있습니다!

피드백 부탁드립니다. (- -)(_ _) 꾸벅

 

 


12. 디스크와 파일시스템 관리하기

 

  디스크 하나를 여러 파티션으로 나누고 각 파티션은 파일 시스템으로 포맷된다. 일부 파티션은 swap 파티션이나 LVM 물리 볼륨 등으로 특정 용도로 포맷이 된다. 리눅스에서 루트(/) 파티션을 두고 하나의 파티션만 사용할 수 있지만, /home, /var, /tmp 등 각 파티션에 할당할 수도 있다. 각 파티션은 더 큰 리눅스 파티션에 연결되는데 이것을 마운트가 된다고 표현한다.

/etc/fstab 파일에서 파티션들의 장치 이름과 마운트 위치를 나타내준다.

 

  •  하드 디스크 파티션 작업하기
    전통적으로 MBR 방식을 사용하였지만, 몇 년 사이 GUID 방식이 부상하였고 UEFI 아키택처 시스템에 사용되었다. GUID 방식의 파티션에서 작업할 때는 이 책에서 설명하는 fdisk 명령 대신 gdisk라는 도구를  사용하여야 한다.

 

  • 디스크 파티션을 확인 
$ fdisk -l (파티션 위치)

$ fdisk -c -u -l /dev/nvme0n1

섹터 단위로 파티션 크기를 나타내려면 u 옵션을 추가, DOS 호환성 모드를 끄려면 c 옵션을 추가한다.

 


  • 단일 파티션 디스크 만들기
    1. 새 하드 디스크 또는 USB 플래시 드라이브를 장착한다.
    2. 새 디스크에 파티션을 만든다.
    3. 새 디스크에 파일시스템을 만든다.
    4. 파일시스템을 마운트한다.

1. 먼저 tail 명령을 통해 USB 드라이버의 장치명을 파악한다.

2. USB 드라이브가 발견되어 /dev/sdc로 지정된 것을 알 수 있다.

USB가 자동으로 마운트 되었다면 언마운트를 해줘야 한다. ( $ umount /dev/sdc1 )

3. 이제 fdisk 명령을 통해 USB 드라이브에 파티션을 만든다.

4. fdisk 명령 모드로 들어왔다. 파티션 전체를 확인하기 위해선 p를 사용하고, 특정 파티션을 삭제하는 명령은 d이다.

5. 새 파티션을 만들려면 n을 입력한다. 어떤 파티션을 만들지 선택하라고 표시됨.

6. 확장 파티션을 만들려면 e, 기본 파티션이라면 p.

7. 파티션 번호를 입력한다.

8. 파티션이 시작하는 첫번째 색터 번호, 마지막 색터를 입력한다.

9. 파티션의 크기를 입력한다.

p를 통해 잘 만들어져있는지 확인해본다.

10. 변경 내용을 적용하려면 w를 입력한다.

 

만약 동기화 오류가 뜬다면 파티션을 언마운트하고 다음 명령을 실행하여 커널과 디스크 파티션 테이블을 동기화한다.

$ partprobe /dev/sdc

11. 파티션을 만들었더라도 새 파티션을 사용할 수는 없다. 파티션에 파일시스템을 만드려면 mkfs 명령을 사용한다.

$ mkfs -t ext4 /dev/sdc1

12. 새로운 파일 시스템을 사용하려면 마운트 포인트를 만들어 이를 새 파티션에 마운트 해야한다.

sdc1 이라는 파티션이 이제 /mnt/test 폴더에 마운트 되었고, df 명령으로 확인했을 때 8GB의 폴더가 생성됐다.

 

13. 드라이브를 사용하고 뺄 때는 언마운트를 해줘야한다.

$ umount /dev/sdc1

14. USB를 끼우면 자동으로 마운트되는데, 설정을 바꾸고 싶다면 /etc/fstab를 편집한다.

/dev/sdc1  /mnt/test  ext4  defaults  0 1

 위 구문을 추가한다. 여기서 숫자 0은 파일시스템의 파일들을 dump 명령으로 백업하지 말라는 뜻이고 1은 일정 횟수만큼 마운트한 뒤에는 파티션에 오류가 있는지 확인하라는 뜻이다.


  • 다중 파티션 만들기

1. 위에서 fdisk를 통해 파티션을 만들었 듯이 이번에는 파티션 6개를 만들어준다. 3개까진 primary partition으로 만들고 하나는 extended로 만들어 2개를 추가로 만든다. (자세한건 책에)

2. p를 통해 확인한다.

3. 파티션은 스왑공간(82), FAT32(x), Linux LVM(8e)으로 사용하려면 t를 통해 파티션 형식을 지정한다.

4. w를 통해 저장한다.변경 내용이 모두 적용되면 커널이 이를 알고 있는지 확인해야한다. /proc/partitions에서 찾아본다.

5. 이제 파티션들이 서로 다른 형식의 내용물을 담는다. 이 파일 시스템이나 스왑 영역으로 조직하기 위해 다음과 같이 다른 명령이 필요하다.


  • Logical Volume Management (LVM)

저장소를 좀 더 효율적, 융통성 있게 다룰 수 있는 기능을 제공한다. LVM을 사용하면 물리 디스크 파티션은 볼륨 그룹이라는 공간 풀에 추가되고, 논리 볼륨은 이 볼륨 그룹에서 필요한 만큼 일정 공간을 할당 받는다.

  • 볼륨이 사용 중일 때도 볼륨 그룹에서 더 많은 공간을 가져다 추가할 수 있다.
  • 볼륨 그룹에 공간이 바닥나기 시작하면 더 많은 물리 볼륨을 추가할 수 있다.
  • 한 물리 볼륨에서 다른 볼륨으로 데이터를 옮길 수 있다. 따라서 더 작은 디스크를 제거하고 이를 더 큰 디스크로 교체할 수 있게 된다. 

 

13. 서버 관리

 

리눅스 시스템을 다룰 수 있는 3가지 도구 

  1. SSH
  2. SCP
  3. SFTP

1. SSH

$ ssh lab

~/.ssh/config 파일에서 호스트를 설정해 줄 수 있다. 암호키는 IdentityFile 옵션에 암호키 파일 위치를 지정해줄 수 있다.

다음과 같이 그래픽 기반 애플리케이션을 -X 옵션을 통해 X11 포워딩을 활성화하여 사용할 수 있다. 매번 서버에 접속하지 않고 이어서 실행하기 위해서는 실행할 명령을 백그라운드에 넣어 놓는다. ( 백그라운드 명령 : & )

 

2. SCP

리눅스의 cp 명령과 비슷한데 원격 시스템에서 사용하는 복사 방법이다. 

$ scp nx:~/file.txt ~/tmp

위의 명령은 nx host의 ~/file.txt 파일을 현재 리눅스의 ~/tmp 폴더안에 복사한다는 뜻이다. scp의 단점으로는 속성이 사라지고, 심볼릭 링크가 사라지며, 복사가 필요 이상으로 반복되는 단점이 있다. 그래서 네트워크 백업 도구인 rsync 명령을 쓰기도 한다.

 

3. SFTP

원격 시스템으로 파일을 복사해야 하는지 아니면 원격 시스템에서 복사해 와야 하는지 헷갈린다면 sftp 명령을 사용하여 SSH 서비스를 통해 인터렉티브 FTP 방식의 세션을 시작해야 한다. stfp를 사용하면 ssh 서비스를 통해 원격 시스템에 연결한 뒤, 디렉터리를 변경하거나 디렉터리의 내용물을 리스트로 출력하고 서버에서 파일을 가져오거나 서버에 파일을 넣어둘 수도 있다.

- SSH 공개키 방식 인증 사용하기

ssh-keygen 명령을 통해 공개키-개인키를 만들 수 있다. 여기서 개인키를 자신이 들고 있고, 공개키를 원격 호스트에게 보내주어 사용할 수 있다.

 

- 시스템 로그 구성

/etc/rsyslog.conf 파일의 모듈 섹션이다.

• imjournal 모듈 : rlogind가 systemd저널에 액세스할 수 있게 한다

• imuxsock 모듈 : 로컬 시스템이 쏟아내는 메시지를 받는다

• imklog 모듈 : —MARK— 메시지를 로그 처리

• imp / imtcp 모듈 : 관련 포트 번호 항목들에 대해 rsyslog서비스가 원격 로그 메시지를 받을 수 있게 해준다.

 

로그 파일들을 다른 컴퓨터로 보내려면 로컬/원격 양쪽의 rsyslog 파일을 수정해야함.

 @ 클라이언트 부분

1. su 명령어로 root 사용자로 로그인한다.

2. /etc/rsyslog.conf 파일을 에디터로 연다.

3. 로그 파일의 이름을 @loghost 로 변경

 

 @ loghost 부분

1. /etc/rsyslog.conf 파일을 에디터로 연다.

2. 첫번째 2줄(UDP), 다음 2줄(TCP)의 주석을 해제해서 514포트를 열어준다. 

3. iptables 또는 firewalld 명령어를 통해서 방화벽 해제

4. service rsyslog restart 또는 systemctl restart rsyslog.service 명령어 통해 재시작

5. netstat 명령어로 rsyslogd 데몬에 대해 514 포트가 개방되어있는지 확인 ( $ netstat -tupln | grep 514 )

 

- sar (System Acrivity Reporter

$ sar -u | less
	-u : CPU 사용량
	-d : 디스크 활동량
	-n : Dev 단위시간 횟수

 

- df / du 로 시스템 공간/사용량 표시

df 로 파일시스템의 남은 사용 가능한 공간을 알 수 있다.

 

du -sh * 명령으로 해당 디렉터리 디스트 사용량을 알 수 있다.

 

 

14. 네트워크 관리하기

네트워크 관리하는 방법

1. NetworkManager 사용

2. TUI(text user interface) 사용

3. 커맨드라인에서 설정 파일 편집

 

1. 데스크톱 네트워크 구성하기

$ ip addr show

네트워크 인터페이스 정보 출력

$ ping 192.168.0.21  :  원격 시스템 연결을 확인할 수 있다.

$ route  :  라우트 정보 확인 가능

$ traceroute  :  처음부터 호스트까지 전체 라우터 경로를 추적할 수 있다.

$ hostname  :  로컬 시스템의 호스트명 출력

$ dnsdomainname  :  도메인 부분만 떼어 보기

$ host naver.com  or  dir naver.com  :  DNS 서버가 조회를 올바르게 처리할 수 있는지 확인

 

2. 네트워크 인터페이스 구성하기

다음과 같은 설정창에서 IP주소, Netmask(서브넷), Gateway, DNS 지정가능.

맨 밑에 Routes에서 IP 주소 앨리어스를 설정할 수 있다. 

 

3.  tui로 네트워크 구성하기

$ nmtui

nmtui로 네트워크 매니저에서 했던 설정들을 똑같이 커맨드창에서 편집할 수 있음

 

 

4. 네트워크 설정파일 이해하기

페도라나 RHEL같이 레드헷 기반 리눅스에서는 /etc/sysconfig/network-scripts 디렉터리에 각 인터페이스 별로 설정파일이 존재하는데, 우분투에서는 /etc/network/interface 파일에서 찾을 수 있다.

먼저 설정파일을 에디터로 편집하기 전에는 중복될 수도 있기 때문에 NetworkManager를 꺼야한다.

$ systemctl stop NetworkManager.service
$ systemctl disable NetworkManager.service
$ systemctl restart network.service
$ systemctl enable network.service

/etc/network/interface 파일 예시

 

$ ifup  :  인터페이스 켜기

$ ifdown  :  인터페이스 끄기

 

- 그 밖의 네트워크 관련 파일들

  • /etc/sysconfig/network 파일  :  게이트웨이 설정할때 쓰임
  • /etc/hostname 파일  :  호스트명 설정파일
  • /etc/hosts 파일  :  DNS 없이 호스트명을 IP 주소로 매핑
  • /etc/resolv.conf 파일  :  DNS 서버와 검색 도메인 지정하는 파일
  • /etc/nsswitch.conf 파일  :  host를 찾는 순서 결정

 

15. 서비스 시작하기와 중지하기

$ service [서비스이름] start/stop/restart
$ systemctl start/stop/restart [유닛이름]

upstart-job은 서비스 제어로 service 명령을 쓰고

systemd를 사용하는 시스템에서는 systemctl 명령을 쓴다.

$ systemctl status service_name.service

서비스 상태를 확인

systemctl enable service_name.service
systemctl disable service_name.service

부팅시 서비스 자동 시작 or 자동 시작 해제

728x90