수업실습)

아무 서버나 켠 후, 211.183.3.77 /24로 IP를 변경해보자. 외부 통신이 가능하도록 만드세요!
client도 한대 켜서 211.183.3.100 /24 으로 IP를 설정한 후 외부통신 되게 만들어보세요.
GW: 211.183.3.2
DNS: 8.8.8.8

client: 211.183.3.100

[root@client ~]# yum install -y ftp vsftpd

server: 211.183.3.77

  • httpd, ftp 설치
[root@server ~]# yum install -y httpd vsftpd
[root@server ~]# systemctl restart httpd vsftpd firewalld
[root@server ~]# systemctl enable httpd vsftpd firewalld
  • 어떤 서비스가 어떤 포트를 사용하고 있는지 확인( ≒ netstat: 비추)
[root@server ~]# ss -tnlp

# 서비스가 어떤 포트로 제공되냐는 것이지, 방화벽이 열려있다는 것은 아님(→ 방화벽은 따로 확인해야 함)

  • 어떤 프로세스인지 확인
[root@server ~]# ps -p 911

 

  • 80 tcp 열기
[root@server ~]# firewall-cmd --list-serviced
[root@server ~]# firewall-cmd --add-port=80/tcp
[root@server ~]# firewall-cmd --permanent --add-port=80/tcp
  • 반영 후 확인
[root@server ~]# firewall-cmd --reload
[root@server ~]# firewall-cmd --list-port
80/tcp

# 클라이언트에서 http 서버의 접속을 테스트

  • 서버에서 우리가 알고 있는 ftp 포트들을 허용
[root@server ~]# firewall-cmd --permanent --add-port=20/tcp
[root@server ~]# firewall-cmd --permanent --add-port=21/tcp
[root@server ~]# firewall-cmd --reload
  • user1의 홈디렉토리에 간단한 테스트 파일 생성
[root@server ~]# touch /home/user1/ftp.txt
[root@server ~]# ls /home/user1
ftp.txt
[root@server ~]# firewall-cmd --reload

# 클라이언트에서 ftp로 접속 잘됨
# dir을 쳐서 파일을 목록을 보려고 하니, 거부

  • 서버에서 ftp 서비스를 추가
[root@server ~]# firewall-cmd --permanent --add-service=ftp
[root@server ~]# firewall-cmd --reload

# 클라이언트에서 다시 접속 후 dir을 해보면, 아까와는 다르게 잘 보이는걸 확인가능

# ftp는 결국 20, 21 포트 이외에 사용자와의 파일 송수신시에 추가적으로 랜덤한 포트가 할당되기 때문이다. 하지만 그 포트를 일일이 제어하기 힘들다. 따라서 서비스 자체를 허용하면, 해당 서비스로 인해 파생되는(related, 연관되는) 다른 요인들도 허용해준다.

→ 포트만 열어서는 안된다

  • 서버에서 서비스 제거
[root@server ~]# firewall-cmd --permanent --remove-service=ftp

# 서비스가 아닌 ftp의 기본포트인 20, 21번만 열려있는 상태

  • 클라이언트에서 위 서버로 ftp 접속
[root@client ~]# ftp 192.168.2.77

# 접속은 되지만 파일은 못봄

[root@http ~]# firewall-cmd --permanent --add-service=ftp

# 서비스 추가 후에 파일도 잘 보이는걸 확인 가능


--add-port
--add-service

# 서비스, 포트 추가

--remove-port=
--remove-service

# 제거

--permanent

# 영구적으로

--list-all
--reload

# 확인, 반영


서버에서 안정성이 제일 중요!

SCSI 비싸지만 안정성 높음, 고가용성(높은 확률로 사용 가능하게)

디스크 관리

RAID(Redundant Array Inexpensive/Independent Disk)

 

저렴한 디스크를 중복되게 배열

용량을 늘리거나, 데이터를 중복으로 저장함으로써 속도를 늘리거나 데이터를 안전하게 저장할 수 있는 디스크 관리 방식

 

※ 두가지 명령어 필요

  1. fdisk: 파티션을 관리
  2. mdadm(Multi Disk ADMin): 레이드 명령어
[root@client ~]# yum -y install mdadm

# 명령어 설치됐는지 확인

  • client에 RAID를 구성할 디스크를 추가해보자!

# suspend가 아닌 Shut Down 꼭!
# 1GB짜리 디스크를 두개 만든다.


RAID 0

+) striping, 속도↑, 공간효율 그대로(100%)

 -) 디스크가 하나라도 문제 발생 시 모든 데이터 유실: 안정성↓

RAID 0 실습)

[root@client ~]# ls -al /dev/sd*

  • sdb에 파티션 추가
[root@client ~]# fdisk /dev/sdb

# 어떤 파티션을 추가해야 할지 모르겠을때

  • 파티션 추가됐는지 확인
[root@client ~]# ls -al /dev/sd*

  • sdc에 파티션 추가
[root@client ~]# fdisk /dev/sdc

  • 파티션 추가됐는지 확인
[root@client ~]# ls -al /dev/sd*

  • RAID 0 디스크 배열 md0을 생성
[root@client ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1


  • 성공했다면 아래처럼 뜸

  • 실패했다면 아래처럼 하기
# 둘다 같음, 편한쪽으로

1. --소문자
[root@client ~]# mdadm --detail /dev/md0

2. -대문자
[root@client ~]# mdadm -D /dev/md0

# --detail : 자세한 정보 확인

[root@client ~]# yum remove -y mdadm

# 혹시 디테일을 쳐도 아무것도 안뜨면 mdadm을 삭제했다가 다시 설치

[root@client ~]# yum install -y mdadm
[root@client ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1

# 파티셔닝이 된 상태(/dev/sdb1)와 디스크(/dev/sdb)는 엄연히 다른 상태

  • 파일시스템 만들기(mkfs = MaKe File System)
[root@client ~]# mkfs -t ext4 /dev/md0

# 어떤 디스크나 장치, 파티션을 사용하려면 꼭 파일시스템을 만들어야 한다

  • /dev/md0 에 접근하기 위한 마운트포인트 생성
[root@client ~]# mkdir /raid0
  • 마운트
[root@client ~]# mount /dev/md0 /raid0

# 테스트를 위해 아무 파일이나 /raid0 에 복사

  • 마운트 유지
[root@client ~]# vi /etc/fstab
# 아래 내용 추가
/dev/md0                /raid0                  ext4    defaults        0 0

  • 확인
[root@client ~]# df -h | grep -i raid0
/dev/md0                      2.0G 6.0M 1.9G 1% /raid0

[root@client ~]# cp anaconda-ks.cfg /raid0

RAID 0_디스크삭제)

# 세번째 디스크를 삭제

# 장치의 이름 ‘Hard Disk 3’이 때에 따라서 순서나 이름이 바뀔 수 있기 때문에 내가 지우고 싶은 장치의 순번을 명확하게 확인하고 싶다면 advanced를 보면 된다.

# 재부팅을 하면 마운트를 하기위해 최소 1분 30초 동안 시도중
# 마운트가 불가능하기때문에 이머전시 모드로 진입. root 계정의 암호를 넣고 로그인
# mdadm -D 를 통해 디테일을 보면 state가 inactive

→ 마운트도 안되고 당연히 데이터도 살릴 수 없다!


1. 마운트에서 문제가 생기니, 그 부분을 가려보자!

[root@client ~]# vi /etc/fstab

RAID 0_디스크생성)

2. 혹시라도 디스크를 추가해서 레이드를 재구성하면, 데이터를 살릴 수도 있으니까

    전원을 종료 후 디스크를 한개 추가해보자.

  • sdc 파티션 추가
[root@client ~]# fdisk /dev/sdc

[root@client ~]# mdadm --stop /dev/md0

[root@client ~]# mdadm --add /dev/md0 /dev/sdc1

  •  레이드 디스크 실행
[root@client ~]# mdadm --run /dev/md0

→ 원래 문제가 있던 장치였기 때문에 stop을 하는 순간 /dev/md0 자체가 사라져버렸다.

결론 = 살릴 수 없다!


RAID 1)

RAID 1 실습)

  • 디스크 2개 추가

  • sdd1과 sde1 파티션 추가
[root@client ~]# fdisk /dev/sdd
[root@client ~]# fdisk /dev/sde

  • RAID 1 디스크 배열 md1을 생성
[root@client ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1

  • 잘 만들어졌는지 확인
[root@client ~]# mdadm --detail /dev/md1
  • 파일시스템 생성
[root@client ~]# mkfs -t ext4 /dev/md1

  • 테스트 파일을 복사
[root@client ~]# cp ~/anaconda-ks.cfg /raid1
  • 마운트 유지
[root@client ~]# vi /etc/fstab
# 아래 내용 추가
/dev/md1                /raid1                  ext4    defaults        0 0

[root@client ~]# init 0

RAID 1_디스크삭제)

# 마지막 배열의 디스크를 삭제
# 삭제후 재부팅

딜레이는 조금 되지만, raid0 때와는 다르게 이머전시 모드로 가진 않는다.

# 마운트도 잘 되어있고, 데이터도 잘 살아있는것을 확인 가능

  • 자세한 정보 확인
[root@client ~]# mdadm -D /dev/md1

# 잘 동작중이긴하지만 완벽한 상태는 아님

RAID 1_디스크생성)

서버 전원 종료후 새로운 디스크를 한개 추가한 다음 파티션을 잡아주자.

  • sde 파티션 추가
[root@client ~]# fdisk /dev/sde


RAID 5

RAID 5 실습)

# 전원 종료 → 1GB 디스크 4개를 추가 → 부팅 → sdf~sdi 파티션 추가

  • sdf ~ sdi 파티션 추가
[root@client ~]# fdisk /dev/sdf
[root@client ~]# fdisk /dev/sdg
[root@client ~]# fdisk /dev/sdh
[root@client ~]# fdisk /dev/sdi
  • RAID 5 디스크 배열 md5를 생성
[root@client ~]# mdadm --create /dev/md5 --level=5 --raid-devices=4 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1
명령이 안끝났지만, 줄을 바꾸고 싶을때 → \ 사용!
  • 자세한 정보 확인
[root@client ~]# mdadm -D /dev/md5

  • 파일시스템 생성
[root@client ~]# mkfs.ext4 /dev/md5
  • 마운트 포인트 생성
[root@client ~]# mkdir /raid5
  • 마운트
[root@client ~]# mount /dev/md5 /raid5
  • 테스트 파일 복사
[root@client ~]# cp ~/anaconda-ks.cfg /raid5
  • 마운트 유지
[root@client ~]# vi /etc/fstab
# 아래 내용 추가
/dev/md5                /raid5                  ext4    defaults        0 0

[root@client ~]# init 0

RAID 5_디스크삭제1)

# 마지막 디스크 삭제 후 부팅, Disk 9

살짝 문제가 있긴하지만 정상부팅이 된다.


※ 디스크 하나를 더 생성한다면 RAID 1과 같이 정상 복구될것이다.

RAID 5_디스크삭제2)

# 디스크를 한개 더 지우기, Disk 7

이머전시 모드로 들어가는걸 확인 가능

# mdadm --run 을 해도 동작을 하지 않는다. (옵션에 명시된 장치 부족)


※ 2개의 디스크를 삭제하면, 다시 디스크를 생성해주더도 복구가 불가능하다.

RAID 5_디스크생성)

# 전원 종료 → 1GB 디스크 2개를 추가

  • sdg, sdi 파티션 추가
[root@client ~]# fdisk /dev/sdg
[root@client ~]# fdisk /dev/sdi

# 파티션 추가 전후
# 추가도 안되고
# stop 후 실행도 안되고

※ 2개의 디스크를 삭제하면, 다시 디스크를 생성해주더도 장애가 생긴다.

# 재부팅시에 이머전시 모드가 안뜨도록 /dev/md5를 주석처리

 


RAID 6)

한쌍의 패리티 비트 사용

두개의 디스크에 문제가 생겨도 복구 가능

RAID 6 실습)

1GB짜리 4개의 디스크(10~13, j k l m)를 추가 후 raid6를 구성한 다음
디스크를 두개 삭제(11,13 삭제)해도 데이터가 보존되는지 확인해보세요

디스크 추가

  • sdj ~ sdm 파티션 추가
[root@client ~]# fdisk /dev/sdj
[root@client ~]# fdisk /dev/sdk
[root@client ~]# fdisk /dev/sdl
[root@client ~]# fdisk /dev/sdm
  • RAID 6 디스크 배열 md6를 생성
[root@client ~]# mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdj1 /dev/sdk1 /dev/sdl /dev/sdm
  • 자세한 정보 확인
[root@client ~]# mdadm -D /dev/md6
  • 파일시스템 생성
[root@client ~]# mkfs.ext4 /dev/md6
  • 마운트 포인트 생성
[root@client ~]# mkdir /raid6
  • 마운트
[root@client ~]# mount /dev/md6 /raid6
  • 테스트 파일 복사
[root@client ~]# cp ~/anaconda-ks.cfg /raid6
  • 마운트 유지
[root@client ~]# vi /etc/fstab
# 아래 내용 추가
/dev/md6                /raid6                  ext4    defaults        0 0

  • 초기화
[root@client ~]# init 0

디스크 삭제

  • Disk 11, 13 삭제

# 두개를 삭제해도 남아있음

혹시 레이드가 풀려있다면 mdadm --run /dev/md6으로 레이드장치를 재시작하고 마운트를 다시 한 다음 확인!


RAID 10)

RAID 10 실습)

  • 새로운 서버에 패키지 설치
[root@http ~]# yum install -y mdadm

# 새로운 서버를 종료후 디스크 4개를 추가한 후 파티션을 생성

  • sdb1 과 sdc1을 묶어서 md1을 구성
[root@http ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
  • sdd1 과 sde1을 묶어서 md2를 구성
[root@http ~]# mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
  • 위에서 만든 md1과 md2를 갖고 새로운 레이드0 장치인 md10을 구성
[root@http ~]# mdadm --create /dev/md10 --level=0 --raid-devices=2 /dev/md1 /dev/md2
입력을 잘못한 경우, --stop으로 삭제하고 다시 만든다.
→ mdadm --stop /dev/md1

이머전시 모드로 들어가더라도 /dev/md10만 잘 살아 있다면 재 마운트를 하면 되므로 큰 문제는 없다.
→ [root@http ~]# mount /dev/md10 /raid10
  • 파일시스템 생성
[root@http ~]# mkfs.ext4 /dev/md10
  • 마운트 포인트 생성
[root@http ~]# mkdir /raid10
  • 마운트
[root@http ~]# mount /dev/md10 /raid10
  • 테스트 파일 복사
[root@http ~]# cp ~/anaconda-ks.cfg /raid10

  • 마운트 유지
[root@client ~]# vi /etc/fstab
# 아래 내용 추가
/dev/md10                /raid10                  ext4    defaults        0 0

[root@client ~]# init 0

RAID 10_디스크삭제)

지울 수 있는 최대한의 디스크를 삭제한 다음 정상동작하는지 확인하세요.

# Shut Down 후 Disk 3, 5번 삭제

  • 확인
[root@server ~]# ls /raid10
[root@server ~]# mdadm -D /dev/md10

# md1과 md2의 상태, 정상이지만 degraded

 

※ 서로 다른 곳에 묶인 디스크(3+5, 2+4)를 하나씩 삭제한다면, 장애가 생기지 않는다.


RAID 16)

RAID 16 실습)

stg1 , stg2 을 만드세요!
stg1 은 nfs-client , stg2는 nfs-server 입니다.

클라이언트는 엄청나게 안정적인 디스크 2GB를 원합니다. 따라서 서버관리자는 raid16으로 구성된 스토리지를 통해 nfs-server를 구성하기로 했다. 구성한 다음 최대한 많은 디스크를 삭제하여 클라이언트가 만족할 수 있도록 하세요.

제출할 내용
1. 최대 몇개를 삭제할 수 있는지? /dev/md16의 자세한 정보
2. client와 server에서의 df -h 정보.
  • 디스크 8개 추가 후 nfs-server 설정
[root@nfs-server ~]# fdisk /dev/sdb
...
[root@nfs-server ~]# fdisk /dev/sdi

[root@nfs-server ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
[root@nfs-server ~]# mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
[root@nfs-server ~]# mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1
[root@nfs-server ~]# mdadm --create /dev/md4 --level=1 --raid-devices=2 /dev/sdh1 /dev/sdi1

[root@nfs-server ~]# mdadm --create /dev/md16 --level=6 --raid-devices=4 /dev/md1 /dev/md2 /dev/md3 /dev/md4

[root@http ~]# mkfs.ext4 /dev/md16
[root@http ~]# mkdir /raid16
[root@http ~]# mount /dev/md16 /raid16
[root@http ~]# cp ~/anaconda-ks.cfg /raid16

[root@client ~]# vi /etc/fstab
/dev/md16                /raid16                  ext4    defaults        0 0

[root@client ~]# init 6
  • 디스크 6개 제거 후 nfs-server 설정
[root@server ~]# ls /raid16
[root@server ~]# mdadm --run /dev/md16

[root@server ~]# mdadm -D /dev/md16
[root@server ~]# df -h | grep -i raid16

  • nfs-server NFS 설정
[root@nfs-server ~]# yum install -y nfs-utils
[root@nfs-server ~]# systemctl start nfs-server
[root@nfs-server ~]# systemctl enable nfs-server

[root@nfs-server ~]# chmod -R 777 /raid18
[root@nfs-server ~]# vi /etc/exports
/raid16 211.183.3.*(rw)
[root@nfs-server ~]# exportfs -r
[root@srv1 ~]# yum install -y nfs-utils
[root@srv1 ~]# mkdir /remote
[root@srv1 ~]# mount -t nfs 211.183.3.77:/raid16 /remote


RAID 레벨별 정리표

RAID 레벨 내결함성 허용 장애 디스크 수 복구 가능 여부 추가 디스크로 복구
RAID 0 없음 0 복구 불가 불가능
RAID 1 있음 1 1개 복구 가능 가능
RAID 5 있음 1 1개 복구 가능, 2개 복구 불가 가능
RAID 6 있음 2 2개 복구 가능, 3개 복구 불가 가능
RAID 10 있음 쌍별 1개 쌍별 1개 복구 가능 가능