리눅스 기본 정리4

양승현·2022년 7월 21일
0

linux

목록 보기
6/20

"NFS"

  • Shared Storage

Storage

  1. Block Storage(SAN)
  2. File Storage(NAS)
  3. object Storage

정리3 복습

행단위 편집기 : sed

  • 파일을 열지 않고 쉘상에서 특정 단어를 변경하는 등의 내용을 작성하면 이를 파일에 반영시킬 수 있다.
  • abc.txt 파일내에서 만나게 되는 첫번째 old를 new로 변경한다. 만약 ..new/g' 라고 작성했다면 파일 전체를 old를 new 로 변경한다.
  • 만약 변경될 내용을 변수를 이용하여 처리하고 싶다면 ' 대신 " 를 사용하면 된다.
예) sed -i 's/old/new' abc.txt

화면단위 편집기 : vi(m) vi improved

i - 현재 위치에서 입력
o - 현재 위치에서 아랫줄 부터 입력
yy - 한줄 복사
p - 붙여넣기
u - 되돌리기
dd - 한줄 지우기
G - 맨 아래로

Quiz. sed 를 이용하여 test.txt 파일내에 있는 섹션 [database] 아래에 1.1.1.1 이라는 IP 주소를 추가시켜보세요. 단, 파일을 열어서는 안됩니다
sed -i'' -r -e "/database/a\1.1.1.1/" test.txt
sed -i -r -e "/\[database\]/a\5.5.5.5" a.txt 

SSH 연결

서버 확인(클라이언트가 서버를 확인)
사용자 확인(서버가 사용자를 확인[인증])

[vi 편집기 이용하여 인터페이스 이름 변경하기]

  • Centos7 버전 이후(이전에는 eth0, eth1..)로 인터페이스의 이름은 다음과 같은 과정을 거쳐 결정되도록 설정되어 있다.
ens(slot) -> enp(port) -> eno(bios 이름을 이용하여 결정)

1. 우리는 우리가 직접 인력한 인터페이스 이름을 사용하고 싶다. eth0로 변경

[root@srv7 ~]# vi /etc/default/grub
 6 GRUB_CMDLINE... v=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"

2. 인터페이스 변경

[root@srv7 ~]# cd /etc/sysconfig/network-scripts/
[root@srv7 network-scripts]# ls ifcfg-*
ifcfg-ens32  ifcfg-lo
[root@srv7 network-scripts]# mv ifcfg-ens32 ifcfg-eth0

- 1 TYPE=Ethernet  -> L3
  2 BOOTPROTO=none -> DHCP라고 변경하면 아래 사항과는 상관없이 자동으로 IP를 받아온다
  3 NAME=ens32
  4 DEVICE=ens32
  5 ONBOOT=yes
  6 DNS1=8.8.8.8
  7 IPADDR=192.168.1.112
  8 PREFIX=24
  9 GATEWAY=192.168.1.1

  • 변경 하기
:%s/ens32/eth0/g

3. 변경된 사항에 대한 최종 반영

[root@srv7 network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg

4. 재부팅

[root@srv7 network-scripts]# reboot

퍼미션

소유주  그룹사용자  그 외 모든 사용자
rwx    rwx        rwx
chmod를 사용해 재정의할 수 있다.
chmod 777 모든 권한 오픈
"u" : 소유주
"g" : 그룹
"o" : others
chmod u+x ddd.sh -> 소유주에게 실행 권한 부여
chmod +x ddd.sh -> 모두에게 실행 권한 부여

groups

생성된 사용자는 무조건 하나의 그룹에는 포함되어야 한다.
만약 2개의 그룹에 포함되어 있다면 둘 중 하나는 primary group이어야 한다.

usermod -aG newgroup user2
user2를 기존 그룹 유지하면서 새로운 newgroup에 포함시킨다.
a는 뒤에 g를 두면 한개의 그룹에만 포함되는 것이므로 모순이다. aG

패스워드 지정하기

  • echo "user2:user2" | chpasswd

사용자 삭제

  • 생성된 그룹을 삭제한다.
  • userdel -> 사용자는 삭제되지만 사용자의 홈 디렉토리는 유지된다.
  • userdel -r -> 사용자를 삭제하면서 동시에 홈 디렉토리도 삭제한다.

nfs

  • 리눅스의 물리장치는 논리장치(디렉토리)와 연계된 상태에서 사용할 수 있다.(마운트)
    물리장치 -> /dev
* 외부에 있는 스토리지에 볼륨을 마운트하여 사용하는 경우에는 로컬에서 vda, vda와 같은 형태로 보이기도 한다. vda-> vda1,vda2
	mount /dev/sr0 /test
    umount /test/ or umount /dev/sr0
    
    [nfs]
    mount -t nft 1.1.1.1:/remote /test
    
    마운트 정보를 지속적으로 유지하고 싶다면 /etc/fstab에 기록하고

LVM

  • 크기가 작은 다수의 볼륨을 연결하여 하나의 볼륨으로 만들고 이를 다시 논리적으로 나누어 원하는 크기의 볼륨으로 조정하여 사용할 수 있다.
  • 각 볼륨의 크기가 달라도 상관없이 연결이 가능하다.
  • 속도가 느리다.
  • 데이터 손실시 복구가 어렵다.
  • FT(Fault Tolerance) -> 결함허용 -> 결함에 의해 데이터가 손실되더라도 복구가 가능해야 한다.

RAID

  • RAID는 두개 이상의 디스크를 결합하여 데이터 손실을 방지하고 데이터 I/O를 높여줄 수 있다.
  • RAID는 리눅스와 같은 운영체제에서 소프트웨어적으로 제공하는 방식과 서버/스토리지 자체적으로 제공하는 하드웨어적인 기법으로 구분할 수 있다.

RAID0 -> strip

  • 디스크를 동시에 사용하여 쓰기
  • 디스크 공간 활용율 -> 100%
  • 디스크 손상시 복구가 불가능하다.

RAID1

  • FT를 지원한다.
  • 공간활용율 -> 50%

RAID4

  • 패리티비트를 한대의 스토리에 두고 사용하는 방식

RAID5

  • 패트리비트를 각 스토리지에 분산시켜 두고 사용하는 방식
  • 결국 RAID를 사용하면 데이터를 안정적을 관리할 수 있다. 또한 쓰기 속도를 향상 시킬 수 있다.

로컬에 디스크 추가하기

  1. 전원 종료
  2. 새로운 디스크 추가후 부팅
  3. 파티셔닝
  4. 포맷
    mkfs -t ext4 /dev/sdb1 또는 mkfs.txt4 /dev/sdb1

haproxy 구성 예 -> /etc/haproxy/haproxy.cfg -> systemctl restart haproxy
https://cloudwafer.com/blog/installing-haproxy-on-centos-7/

=============
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

frontend http_front
bind 192.168.1.104:80
stats uri /haproxy?stats
default_backend http_back

backend http_back
balance roundrobin
server my_server1 192.168.1.102:80 check
server my_server2 192.168.1.103:80 check

HAProxy 는 로드 밸런서(L4/L7)

L7 LB(alb@aws) 구성예 -> https://www.serverlab.ca/tutorials/linux/network-services/layer-7-load-balancing-with-haproxy/

RPM

  • 리눅스는 설치를 위한 모든 코드를 외부에 공개한다. 따라서 특정 애플리케이션을 설치하고자 한다면 소스코드를 다운로드하고 파일을 컴파일한 뒤 이를 설치하는 과정을 거쳐야한다. 컴파일을 위해서는 설치 위치, 필요한 옵션등을 수동으로 지정할 수 있어 전문가나 익숙한 사람들에게는 좋은 방법이 될 수 있으나 초보자나 클라우드 환경과 같이 빠른 설치가 필요한 곳에서는 어려운 일이 될 수 있다. 이를 해결하기 위하여 윈도우의 install.exe와 비슷한 파일을 RedHat에서 만들었는데 이를 RPM이라 부른다. (또는 패키지라 칭한다.)
기본설치방법
  • rpm -ivh 패키지이름.rpm -> install 한다. 단, 동일 패키지가 설치되어 있다면 오류가 발생한다. rpm -Uvh 패키지이름.rpm -> 기존에 설치된 것 있는지 확인하고 기존 설치된 버전보다 지금 설치라고자 하는 버전이 최근 버전이라면 업그레이드 설치를 진행한다. 만약 설치되어 있지 않는다면 정상적인 install을 진행한다.
  • "v" 확인, "h" #를 이용하여 확인한다.
  • 'gedit는 그래픽 환경에 의존성을 높인다.'
yum -> dnf
  • yum은 인터넷이나 회사내에 다수의 패키지를 저장소에 보관하고 사용자가 필요한 패키지를 요청했을 때 해당 패키지, 의존성 해결을 위한 패키지를 묶어 사용자에게 전달해 주는 방식이다.
  • 만약 패키지가 epel에서 제공되는 패키지라면 CentOS에서는 설치할 수 없다. 이경우에는 epel 목록을 설치하여 해결할 수 있다.
wget http://....com/etst.rpm
yum -y install test3.rpm
  • test.rpm을 설치하면 해결해야할 의존성 패키지는 yum으로 연결하여 다운로드 설치한다.

과제1. cron이란??

과제2. date 명령을 실행했을 때 아래와 같은 형식으로 나와야한다2207211750

0개의 댓글