728x90

실습 개요


NFS 서버와 WEB 연동

 

NFS란

- Network File System

- 리눅스/유닉스에서 사용하는 표준 프로토콜

- 네트워크로 파일/디렉토리 공유 시 사용

- NAS 방식에 해당

- 보안 방식 구성을 위해 kerberos 서비스와 연동

 

구성 순서

서버

1. 패키지 설치

2. 디렉토리 준비

3. 설정

 1) 디렉토리 공유 설정

 2) 서비스 설정

4. 서비스 활성화

5. 방화벽 설정

 

클라이언트

1. 패키지 설치

2. 마운트


NFS 서버 구성 (서버)


패키지 설치 확인

yum list nfs-utils

nfs-utils.x86_64             1:1.3.0-0.68.el7.1             @updates
Available Packages
nfs-utils.x86_64             1:1.3.0-0.68.el7.2             updates

 

디렉토리 생성

[root@nfs ~]# mkdir /contents
[root@nfs ~]# ls -ld /contents/
drwxr-xr-x. 2 root root 6 May 25 14:32 /contents/

 

설정

nfs 설정 파일 확인

[root@nfs ~]# ls -l /etc/sysconfig/nfs
-rw-r--r--. 1 root root 1679 Jul 22  2021 /etc/sysconfig/nfs
[root@nfs ~]# ls -l /etc/nfs.conf
-rw-r--r--. 1 root root 1023 Jul 22  2021 /etc/nfs.conf

 

디렉토리 공유 설정

vi /etc/exports
/contents	*(rw,sync,sec=sys)

# * : 접근을 허용할 대상, 모두
# 10.0.2.0/24: 특정 네트워크 대역
# 10.0.2.40/24: 특정 시스템 지정
# rw: 읽기-쓰기 허용
# sync: 빠른 동기화
# sec: 인증 방식: sys(기본 값, 생략 가능)

# 설정 변경 시 항상 실행
exportfs -r

 

서비스 활성화

 systemctl enable --now nfs-server

 

방화벽 설정

firewall-cmd --add-service=nfs
firewall-cmd --add-service=nfs --permanent

 


WEB 서버 (클라이언트)

 


마운트 설정

/etc/fstab 설정 파일 수정

vi /etc/fstab
10.0.2.40:/contents     /var/www/html   nfs     rw,sync,sec=sys 0	0

# NFS 서버의 IP:공유 디렉토리 경로
# /var/www/html: 마운트포인트

 

마운트 확인

mount | grep /var/www/html
10.0.2.40:/contents on /var/www/html type nfs4 (rw,relatime,sync,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.2.30,local_lock=none,addr=10.0.2.40)

# nfs 서버에서 작업
echo "test nfs with web" > /contents/index.html

# web 서버에서 확인
cat /var/www/html/index.html
test nfs with web

 

=> 여기까지 NFS 서버와 연결은 성공

=> 그러나, httpd와 nfs 연동은 안됨 (SELinux 설정이 원인)

 

웹 브라우저 접속 시 접근 불가 에러: SELinux 설정 원인

## 클라이언트에서 확인: 컨텍스트 값이 변경되지 않아서 연동에 실패함

# 컨텍스트 확인(nfs_t)
ls -lZd /var/www/html
drwxr-xr-x. root root system_u:object_r:nfs_t:s0       /var/www/html

# SELinux 기본 값 적용
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
restorecon -Rv /var/www/html

# 값이 변경되지 않음(nfs_t)
# 4.1 버전은 클라이언트에서 마운트해서 사용할 경우 변경 불가
# => 4.2 버전으로 변경 필요
ls -lZd /var/www/html
drwxr-xr-x. root root system_u:object_r:nfs_t:s0       /var/www/html

 

 


NFS-WEB 연동


SELinux 설정 변경

클라이언트에서 마운트 해제 후 컨텍스트 확인

# 마운트 해제
umount /var/www/html

# 컨텍스트 확인(httpd_sys_content_t)
ls -lZd /var/www/html
...
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
...

 

서버에서 NFS 버전 설정

/etc/sysconfig/nfs 설정 파일

# 4.1에서 4.2로 버전 변경
vi /etc/sysconfig/nfs
14 RPCNFSDARGS="-V4.2"

# 서비스 재시작
systemctl restart nfs-server

 

클라이언트에서 마운트 설정

1) NFS 버전 지정: v4.2

2) context 항목 지정: 기존의 html 파일의 컨텍스트

# 마운트 설정 파일 수정(컨텍스트 추가)
vi /etc/fstab
10.0.2.40:/contents     /var/www/html   nfs     rw,sync,sec=sys,v4.2,context="unconfined_u:object_r:httpd_sys_content_t:s0"  0	0

# 마운트
mount -a

 

 

웹 서비스 연동 완료

 

 

728x90
728x90

 

실습 개요


 

Webserver
- http / https 프로토콜을 이용
- 정적인 페이지 + 동적인 페이지를 제공 (컨텐츠)
- 구성방식 : Apache , Nginx , IIS ...
- 페이지 : html , css , php , python ...

-> LAMP ( Linux + Apache + MariaDB + PHP )


WEB Server


Apache 기본 구성


패키지 설치 및 서비스 시작

# WEB 서버
yum install -y httpd      
systemctl enable --now httpd       
firewall-cmd --add-service=http --permanent    
firewall-cmd --add-service=http
echo "test web page" > /var/www/html/index.html

# 다른 가상 머신에서 접속 확인
[root@storage ~]# curl 10.0.2.40
test web page

 


PHP 구성


추가 패키지 설치

php, php-mbstring, php-pear, php-fpm, php-mysql(DB 연동)

yum install -y php php-mbstring.x86_64 php-fpm php-mysql php-pear

 

 

언어를 위한 설정 파일 수정 (DB 연동)

/etc/httpd/conf.d/php.conf

vi /etc/httpd/conf.d/php.conf
      4 <FilesMatch \.php$>
      5         SetHandler "proxy:fcgi://127.0.0.1:9000"

 

 

서비스 재시작 및 활성화

httpd (재시작), php-fpm (활성화)

systemctl restart httpd php-fpm

 

 

서비스를 제공할 스크립트 작성

1. /var/www/html/info.php

 

# /var/www/html/info.php
echo "<?php phpinfo(); ?>" > /var/www/html/info.php

systemctl restart httpd php-fpm

 

 

웹 브라우저에서 접속하여 php 기본 페이지 확인: Web 서버 IP/php 설정 파일 이름

 

 

여기까지 작업이 완료되었다면 HTTP + PHP 서비스가 정상적으로 작동되고 있음

 

 

2. /var/www/html/db.php

1) 사전 작업: DB 서버에 데이터가 저장된 테이블과 사용자 설정 필요

[root@master ~]# mysql -u root -p

MariaDB [(none)]> GRANT select ON *.* TO remote@'%' identified by '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> SELECT user,host FROM mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| remote  | %         |
| replica | %         |
| root    | %         |
| root    | 127.0.0.1 |
| root    | ::1       |
| root    | localhost |
+---------+-----------+

MariaDB [(none)]> SELECT * FROM examdb.test_tab;
+------+------+--------+
| id   | name | locate |
+------+------+--------+
|    1 | kim  | seoul  |
+------+------+--------+
1 row in set (0.00 sec)

 

2) db.php 파일 생성

vi /var/www/html/db.php

<?php
$conn = mysqli_connect('10.0.2.10', 'remote', '123', 'examdb');

$sql = "SELECT * FROM test_tab";
$result = mysqli_query($conn, $sql);
  while($row = mysqli_fetch_array($result)){
    echo $row['id'].' '.$row['name'].' '.$row['locate'].'<br>';
  }
?>

 

* DB 연결 에러: WEB 서버의 SELinux 설정이 원인

 

방화벽 확인 (문제 없음)

firewall-cmd --list-services
dhcpv6-client mysql ssh

 

포트 설정 확인 (문제 없음)

semanage port -l | grep 3306
mysqld_port_t                  tcp      1186, 3306, 63132-63164

 

파일 컨텍스트 확인 (문제 없음)

ls -Z /var/lib/mysql
...
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 examdb
...

 

부울 컨텍스트 확인 (문제: off > on)

# WEB 서버에서 작업 필요

semanage boolean -l | grep httpd_can_network_connect_db
httpd_can_network_connect_db   (off  ,  off)  Allow httpd to can network connect db

semanage boolean -m httpd_can_network_connect_db --on

semanage boolean -l | grep httpd_can_network_connect_db
httpd_can_network_connect_db   (on   ,   on)  Allow httpd to can network connect db

 

 

웹 브라우저에서 접속: WEB 서버의 IP/db.php

 

728x90
728x90

/etc/my.cnf 설정 파일 수정


Master DB


/etc/my.cnf 설정 파일 수정

vi /etc/my.cnf

[mysqld]
server-id=10
log-bin=mariadb-bin	# 바이너리 기록
autocommit=0
...

 

서비스 재시작

systemctl restart mariadb.service

 

DB 사용자 설정

 

[사용자 생성 + 권한 설정]

GRANT 권한 ON 데이터베이스.테이블 TO 사용자@'호스트'

mysql -u root -p

# replica 사용자에게 모든 데이터베이스의 모든 테이블에 대한 권한 지정 
# @'localhost': 로컬 호스트만
# @'%': 모든 사용자

GRANT replication slave ON *.* TO replica@'%' identified by '123';

# 사용자 설정에 대한 변경 값 적용
flush privileges

 


Slave DB


/etc/my.cnf 설정 파일 수정

vi /etc/my.cnf

[mysqld]
server-id=20
log-bin=mariadb-bin
read_only=1
report-host=slave.goorm.com

 

서비스 재시작

systemctl restart mariadb

 


데이터 백업 구성


 

 

 

Master DB: 데이터 백업 전에 DB 잠금 설정

MariaDB [(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000001 |      460 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

# Position 번호 확인

 

Master DB: 논리적 백업 (새로운 터미널에서 작업)

mysqldump -u root -p --all-databases --lock-all-tables --events > mysql_dump.sql
Enter password:

# 생성된 파일 확인
ls
mysql_dump.sql

 

Master DB: 원래 터미널에서 잠금 해제

MariaDB [(none)]> unlock tables;

 

 

Master DB: 백업 파일을 Slave DB로 복사

scp mysql_dump.sql root@10.0.2.20:/tmp

 

 

Slave DB: 백업 데이터 복원

[root@slave ~]# mysql -u root -p < /tmp/mysql_dump.sql
	-> 복원만 하는 작업 (로그인 아님)
[root@slave ~]# mysql -u root -p
	-> 설정을 위해 로그인

 

Slave DB: 마스터 지정 및 설정

# IP주소, 사용자 이름/패스워드 , log_file / log_pos 는 
# 마스터에서 show master status; 로 확인 후 입력

MariaDB [(none)]> change master to master_host='10.0.2.10' ,
-> master_user='replica', master_password='123', 
-> master_log_file='mariadb-bin.000001',
-> master_log_pos=460;

MariaDB [(none)]> start slave;

 

 

Slave DB: 설정 확인

MariaDB [(none)]> show slave status \G

 

 


데이터 동기화 확인


Master DB: 데이터 수정

[root@master ~]# mysql -u root -p
Enter password:

MariaDB [(none)]> USE testdb;
MariaDB [testdb]> INSERT INTO first_tab VALUE(5,'n');                 
Query OK, 1 row affected (0.00 sec)
MariaDB [testdb]> COMMIT;
Query OK, 0 rows affected (0.04 sec)

MariaDB [testdb]> SELECT * FROM first_tab;
+------+------+
| id   | name |
+------+------+
|    1 | k    |
|    2 | a    |
|    5 | n    |
+------+------+
3 rows in set (0.00 sec)

 

* 만약 커밋을 하지 않으면 변경 사항이 저장되지 않기 때문에 서로 데이터가 다르게 보일 수 있음

 

Slave DB: 수정된 데이터 확인

MariaDB [(none)]> use testdb;
MariaDB [testdb]> SELECT * FROM first_tab;
+------+------+
| id   | name |
+------+------+
|    1 | k    |
|    2 | a    |
|    5 | n    |
+------+------+
3 rows in set (0.00 sec)

 

 

좌: Master DB, 우: Slave DB

 

728x90
728x90

데이터베이스란


데이터베이스란

- 데이터를 체계적으로 저장/관리 하기 위한 서비스

- 관계형 데이터베이스를 많이 사용함 (2차원 테이블)

- NoSQL 방식의 데이터베이스도 많이 사용함 => 빅데이터 처리 등의 용도로 사용

- MariaDB는 관계형 데이터베이스 중 하나 (Mysql에서 파생)

 

 

데이터베이스 실습 개요


1. 패키지 설치 (mariadb-server)

2. 설정 파일 수정 (/etc/my.cnf)

3. 서비스 활성화 (mariadb)

4. 서비스 기본 보안 설정 (mysql_secure_installation)

 - 루트 사용자 암호 설정 및 불필요한 정보 제거

5. 방화벽 설정 (firewall-cmd --add-service=mysql)

 - 원격 접근이 필요할 경우만 설정

 

* xml 설정 파일: /usr/lib/firewalld/services/

xml 파일을 이용하여 설정 가능

 


DB 서버 이중화 구성 실습 개요


백업 및 복원

- 백업 및 복원의 필요성: 데이터베이스에 저장한 데이터를 안전하게 유지하기 위함

- 백업 특징

  물리적 백업 논리적 백업
속도 빠름 느림
제약 사항 같은 시스템(서비스) 관계 없음

 

이중화 구성

- 이중화 구성의 필요성: 서비스 제공을 원활하게 하기 위해 장애 발생에 대한 대비

- 이중화 구성의 특징: 마스터(쓰기 가능)와 슬레이브(읽기만 가능)

 

이중화 구성 방법

1. 기본 서비스가 구성된 두 대 이상의 서버 준비

2. 마스터 역할의 서버에서 설정

 1) 시스템을 구분할 ID 지정 (설정 파일)

 2) 사용자 설정 (생성/권한)

 3) 방화벽 설정 (mysql) > 슬레이브 접근을 위한 설정

 4) 데이터베이스 백업

3. 슬레이브 역할의 서버에서 설정

 1) 시스템을 구분할 ID 지정 (설정 파일)

 2) 마스터를 지정 및 슬레이브 상태로 설정 (mysql 실행 후)

 3) 마스터의 백업 데이터를 이용해 복원

 


 

실습 환경

 

  DB-Master DB-Slave
IPv4 10.0.2.10/24 10.0.2.20/24
GW 10.0.2.1
DNS 8.8.8.8
HOSTNAME master.goorm.com slave.goorm.com
OS CentOS 7

 


 

사전 작업-시스템 환경 설정


 

네트워크 설정

# 마스터
[root@localhost ~]# nmcli con add type ethernet ifname enp0s3 con-name nat ipv4.addresses 10.0.2.10/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
[root@localhost ~]# nmcli con up nat
[root@localhost ~]# hostnamectl set-hostname master.goorm.com
[root@localhost ~]# bash
[root@master ~]#

# 슬레이브
[root@localhost ~]# nmcli con add type ethernet ifname enp0s3 con-name nat ipv4.addresses 10.0.2.20/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
[root@localhost ~]# nmcli con up nat
[root@localhost ~]# hostnamectl set-hostname slave.goorm.com
[root@localhost ~]# bash
[root@slave ~]#

 

패키지 설치

yum install -y mariadb-server

 

서비스 활성화

systemctl enable --now mariadb

 

보안 구성

mysql_secure_installation

 

방화벽 구성

firewall-cmd --add-service=mysql
firewall-cmd --add-service=mysql --permanent

 

 


SQL 구문


1. SELECT
데이터 확인 (모든 유저)


2. DML
INSERT  - 데이터 삽입(행 추가)
UPDATE - 데이터 수정(값 변경)
DELETE - 데이터 삭제(행 삭제)


3. DDL
CREATE - 테이블(객체)를 생성
ALTER - 테이블의 구조 / 객체의 특성을 변경
DROP - 테이블(객체)를 삭제


4. DCL
GRANT - 권한 추가
REVOKE - 권한 제거


5. TCL
COMMIT - 변경 사항을 적용
ROLLBACK - 이전 상태로 되돌리기

 


MariaDB의 COMMIT 방식


- 기본적으로 설치 시 AUTO-COMMIT 방식으로 구성

- 설정 시 오류가 발생하면 복구하기 어려움

- 활성/비활성 설정 시에는 세션(일시적) 설정과 설정 파일(영구) 설정

 

세션 설정

# 현재 설정 값 확인
MariaDB [testdb]> show variables like 'autocommit';

# 현재 설정 값 변경(일시적)
MariaDB [testdb]> set autocommit = 1;

# (1/0 , true/false , on/off)
# 비활성화 시에는 COMMIT / ROLLBACK 구문 사용 가능

 

 

영구 설정

- /etc/my.cnf 파일 (/etc/my.cnf.d)

- autocommit=0

 

vi /etc/my.cnf
autocommit=0

# 설정 파일을 변경했으므로 서비스 재시작
systemctl restart mariadb

 

/etc/my.cnf 파일의 [mysqld] 영역에 autocommit 추가

 

 

 

 

 

728x90
728x90

iSCSI TARGET 설정


네트워크 설정 및 호스트 네임 설정

# 네트워크 설정
nmcli con add type ethernet con-name nat ifname enp0s3 ipv4.addresses 10.0.2.100/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
nmcli con up nat
nmcli con show
ifconfig

# 호스트 네임 설정
hostnamectl set-hostname target.goorm.com
bash
# @localhost에서 @target으로 호스트 네임 변경

ip


스토리지 구성: 하드 디스크 추가

 

 

디스크가 추가된 것을 확인할 수 있음


패키지 설치

yum install -y targetcli

디스크 파티셔닝

1GB 크기의 파티션 3개 생성

 


Backstore 생성

- block: 물리 장치(HDD, SSD, DVD 등) + 논리 장치(LVM, RAID)

- fileio: 현재 시스템에서 사용 중인 파일 시스템의 일부 공간 제공

- pscsi: 모든 유형의 로컬 SCSI 장치들을 모두 공유할 수 있게 지원되는 유형

- ramdisk: 시스템에 램디스크 장치를 만들어 저장

 

1. block 생성

/> backstores/block create dev=/dev/sdb1 name=part1
Created block storage object part1 using /dev/sdb1.


iSCSI 연결 설정

1. IQN 설정

타겟 이름 설정: 서비스 설정 시기 + 호스트 네임

IQN을 생성하면 TPG가 자동 생성되고 portals 항목에 0.0.0.0:3260 값이 기본으로 설정됨

/> iscsi/ create iqn.2022-05.com.goorm:target
Created target iqn.2022-05.com.goorm:target.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

 

 

2. ACL 설정

해당 시스템에서 사용하는 이름이 아닌 연결을 허용할 초기자의 IQN 지정

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/acls create iqn.2022-05.com.goorm:initiator
Created Node ACL for iqn.2022-05.com.goorm:initiator

 

3. LUN 설정

LUN 생성 시에는 backstore에서 생성했던 저장 객체를 사용하여 맵핑

add_mapped_luns 옵션 생략 시

 1) 기본 값=true

 2) acls 자동 맵핑

 3) 읽기-쓰기 권한 부여 (쓰기 권한을 원하지 않는다면 false로 설정할 것)

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/luns create /backstores/block/part1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2022-05.com.goorm:initiator

 

4. Portal 설정

IP 주소와 포트 번호 설정

* 설정 시 0.0.0.0:3260 설정이 존재한다면 새로운 설정 추가 불가

 

 

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/portals/ create 10.0.2.100 3260
Using default IP port 3260
Created network portal 10.0.2.100:3260.

 

 

5. 종료

/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

방화벽 설정 및 서비스 활성화

systemctl enable target

firewall-cmd --add-service=iscsi-target --permanent
firewall-cmd --add-service=iscsi-target

 


iSCSI INITIATOR 설정

 


네트워크 설정

# 네트워크 설정
nmcli con add type ethernet con-name nat ifname enp0s3 ipv4.addresses 10.0.2.200/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
nmcli con up nat
nmcli con show
ifconfig

# 호스트 네임 설정
hostnamectl set-hostname initiator.goorm.com
bash
# @localhost에서 @initiator로 호스트 네임 변경

도구 설치

대부분 기본적으로 설치되어 있음

yum install -y iscsi-initiator-utils

IQN 설정

타겟과 연결하기 위해서 타겟의 acls 항목에서 지정한 IQN과 같은 이름으로 IQN 설정 필요

ls -l /etc/iscsi/initiatorname.iscsi
-rw-r--r--. 1 root root 49 Sep 12  2021 /etc/iscsi/initiatorname.iscsi

cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:5d7f19268f2	# acls 항목에서 지정한 이름과 다름

vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2022-05.com.goorm:initiator	# 변경

cat /etc/iscsi/initiatorname.iscsi                
InitiatorName=iqn.2022-05.com.goorm:initiator

 


서비스 활성화

systemctl start iscsi
systemctl enable iscsi

연결

1. 검색 (Discovery)

# 검색-discovery
iscsiadm -m discovery -t st -p 10.0.2.100
10.0.2.100:3260,1 iqn.2022-05.com.goorm:target

* 오류 발생 시 네트워크 연결 혹은 방화벽 확인

 

 

2. 로그인

1) node: 동작 모드 - 연결 시도

2) 검색한 타겟의 iqn

3) -l: 로그인 옵션

iscsiadm -m node -T iqn.2022-05.com.goorm:target -l
Logging in to [iface: default, target: iqn.2022-05.com.goorm:target, portal: 10.0.2.100,3260] (multiple)
Login to [iface: default, target: iqn.2022-05.com.goorm:target, portal: 10.0.2.100,3260] successful.

* 인증 오류 발생 시 /etc/iscsi/initiatorname.iscsi 파일에 설정한 IQN 과 타겟에서 설정한 ACL 과 일치하는지 확인

 

 

3. 세션 확인

1) session: 연결한 대상의 정보 및 제공받는 장치에 대한 정보 확인

2) -P: 세션 확인 시 지정하는 등급

iscsiadm -m session -P 3

sdb 장치와 연결된 것을 확인할 수 있음

 

* 연결 오류 발생 시 *

1. 연결 삭제
2. iscsid 서비스 중지
=> 타겟과 이니시에이터의 연결을 완전히 제거 후 재연결 시도

 

연결 해제

iscsiadm -m node -T iqn.2022-05.com.goorm:target -u

 

검색 기록 제거

iscsiadm -m node -T iqn.2022-05.com.goorm:target -o delete

 

리로드(재검색)

iscsiadm -m node -T iqn.2022-05.com.goorm:target -R

장치 사용

# 디스크 파티셔닝 
fdisk /dev/sdb
partprobe /dev/sdb

# 파일 시스템 생성
mkfs -t xfs /dev/sdb1

# 마운트
vi /etc/fstab
/dev/sdb1	/mnt	xfs	_netdev	0	0

# 마운트 확인
lsblk

 

 

 

728x90
728x90

스토리지란


스토리지란

- 데이터를 저장하는 공간

 

스토리지 제공 방식

 

1. DAS: 케이블을 통한 직접 연결 (시스템과 스토리지)

 - Direct Attached Storage

 - 장점: 편리하고 일반적인 방식

 - 단점: 거리적인/공간적인 제약

 

2. NAS: 네트워크로 시스템과 스토리지 연결

 - Network Attached Storage

 - 사용 가능한 구성(파일 시스템)을 완료하고 네트워크로 제공

 - 장점: 거리적인 제약이 사라짐

 - 단점: 속도가 느림, 보안 취약

 

3. SAN: 네트워크로 시스템과 스토리지 연결

 - Storage Area Network

 - 스토리지 자체를 제공함 > 클라이언트가 직접 포맷 후 사용 

 - FC-SAN: 광섬유 장비들을 이용한 네트워크 구성 > 속도 향상, 비용 증가

 - IP-SAN: TCP 프로토콜을 이용한 SAN 연결 방식 제공 > 속도 향상, 비용 유지, 대표 서비스: iSCSI

 

스토리지 구성 방식 비교

  DAS NAS SAN
  FC-SAN IP-SAN(iSCSI)
구성 요소 서버 시스템 스토리지 파일서버 스토리지
+일반서버시스템
서버 시스템 스토리지
접속 장치 없음 이더넷 스위치 FC 스위치, HBA 이더넷 스위치
파일 시스템 클라이언트에서 직접 설정 파일 서버에서 공유 클라이언트에서 직접 설정
속도결정요소 채널 속도 채널 속도 + LAN 연결 속도 채널 속도
프로토콜 SCSI TCP/IP FCP TCP/IP
전송 단위 블록 파일 블록
데이터 공유 불가능 가능 불가능
확장성 나쁨 좋음

 

블록 스토리지

1) 파일 기반 스토리지: 사용자는 대상의 계층 구조 안에서 추가적인 파일 검색 및 전송 등의 작업을 할 수 있음

2) 블록 기반 스토리지: 제공 받은 블록 스토리지를 파티셔닝하고 파일 시스템을 생성하여 사용할 수 있음

 

스토리지별 용도

오브젝트 스토리지: 단순히 파일 자체를 제공하기 위한 용도

파일 스토리지: 스토리지를 제공하기 위한 용도, 사용 중인 스토리지에서 일부 영역 공유, 파일도 함께 공유

블록 스토리지: 단순히 스토리지만 통째로 제공

 

 

iSCSI 용어

[기본 용어]

1. 타겟(Target): 스토리지 장치를 제공하는 시스템, 서버 역할

2. 초기자(Initiator): 타겟에서 제공하는 스토리지 장치에 연결해서 블록 스토리지를 제공받음, 클라이언트 역할

3. IQN(iSCSI Qualified Name): 타겟과 초기자의 이름

 

[타겟]

1. TPG(Target Portal Group): 대상 포털 그룹, ACL/LUN/Portal 세 항목을 하나의 그룹으로 만든 연결에 대한 설정 집

2. ACL(Access Control List): 접근 제어 리스트, 타겟에 의해 제공되는 스토리지에 연결할 수 있는 초기자 지정

3. LUN(Logical Unit Number): 초기자에게 제공할 스토리지 장치에게 부여된 논리 장치 번호

4. Portal: 초기자가 타겟에 연결할 때 사용하는 IP 주소와 포트 번호

 

[초기자]

1. Discovery: 초기자에서 연결하려는 대상을 검색하는 단계

2. Login: Discovery에서 발견한 대상으로 연결하는 단계

 


iSCSI 구성 과정


기본 서비스 구성 과정

1. 패키지 설치 (도구/서비스)

2. 서비스 활성화

3. 서비스 설정 (설정 파일/명령어/파일/사용자/스토리지)

4. 서비스 활성화 혹은 재시작

5. 방화벽 설정

 

타켓 구성 순서

1. targetcli 패키지 설치 (iSCSI 타겟 설정 도구)

2. 서비스 설정

 1) 스토리지 준비 (v-box에서 추가 + LVM/파티션 구성)

 2) targetcli 도구 설정

3. target 서비스 활성화 (설정 값을 불러오는 작업)

4. 방화벽 설정 (Portal에서 설정하는 포트에 따라 추가) > 기본값: 3260/tcp

 

이니시에이터 구성 순서

1. 패키지 설치

2. 연결 설정

3. 사용

 


실습 환경 구성


1. 디스크 추가: VDI, 8GB, 동적 할당

 

2. 네트워크 설정

  TARGET INITIATOR
IPv4 10.0.2.100/24 10.0.2.200/24
GW 10.0.2.1 10.0.2.1
DNS 8.8.8.8 8.8.8.8
Hostname target.goorm.com initiator.goorm.com

 


실습 개요


TARGET 구성

1. target 시스템 네트워크 구성

2. 디스크 장치 추가 및 준비

 1) 8기가 장치의 경우 1기가 크기의 파티션 3개 생성

 2) 추가 실습: 2개로 볼륨 그룹 생성 > 1기가 크기의 논리볼륨 생성

3. targetcli 구성

 1) block: 이름-exam, 장치이름-논리볼륨이름

 2) IQN: iqn.2022-05.com.goorm:target > 타겟 이름

 3) ACL: iqn.2022-05.com.goorm:initiator > 이니시에이터 이름

 4) LUN: 기본 값으로 (lun0)

 5) PORTAL: IP-10.0.2.100 port-3260/tcp

4. 서비스/방화벽 설정

 

 

INITIATOR 구성

1. 이니시에이터 이름 수정

2. 검색/로그인

3. 파티셔닝 후 xfs로 파일 시스템 포맷

4. /etc/fstab에 등록 후 재부팅

 

추가 실습: 타켓에서 볼륨 그룹/논리 볼륨 확장 해보고 확장된 크기로 이니시에이터에서 제대로 인식되는지 확인

728x90

+ Recent posts