becool

20210507(금) 본문

linux

20210507(금)

gusalstm 2021. 5. 7. 16:24
반응형

 

 

P921 SAN(Storage Area Network) iSCSI

SERVER_ filesystem -----(network)-----STORAGE   : SAN

 → 별도의 스토리지를 준비하는 것이 일반적 (스토리지의 전체 공간을 활용하는 경우가 많음)

SERVER  -----(network)----- filesystem_ STORAGE   : NAS

 → 서버가 쓰던 공간 중 일부에 대해 공유 (정해진 공간만큼을 활용)

 

FC SAN: 광섬유 연결,  비용 ↑ 속도 ↑

IP SAN :  IP프로토콜 기반, 비용↓ 속도 ↓  (iSCSI)

 

TCP/IP를 통해 SCSI 명령어를 LAN 또는 WAN에 위치한 스토리지 장치에 전달

 

Target : 물리적으로 스토리지와 직접 연결된 iSCSI 서버

Initiator : Target이 TCP/IP를 통해 공급하는  SAN을 이용하는 클라이언트. 최종사용자에겐 서비스를 제공하는 서버가 됨.

 

 P923 패키지 설치

[root@host1 ~]# yum install targetcli -y

[root@host1 ~]# targetcli

/> [TAB] 명령어 리스트

/> 
*              /              backstores/    iscsi/         loopback/      
bookmarks      cd             clearconfig    exit           get            
help           ls             pwd            refresh        restoreconfig  
saveconfig     sessions       set            status         version       

 

/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 0] : 주로 사용
  | o- fileio ............................................. [Storage Objects: 0] : nfs처럼 자신의 디스크를 할당하여 서비스제공
  | o- pscsi .............................................. [Storage Objects: 0] :
  | o- ramdisk ............................................ [Storage Objects: 0] : ram을 디스크로 사용 (runtime)
  o- iscsi ........................................................ [Targets: 0]
  o- loopback ..................................................... [Targets: 0]
/> 

/> backstores/block create dev=/dev/sdb name=blk1
Created block storage object blk1 using /dev/sdb.

/> backstores/fileio create file_or_dev=/home/user/iscsi_fileio size=1G name=blk2
Created fileio blk2 with size 1073741824

block : sdb 전체 세팅이므로 용량 세팅 없음

fileio : 서버의 일부 세팅이므로 용량 세팅 필요

 

/etc/target/saveconfig.json

/> iscsi/ create wwn=iqn.2021-05.net.example:host1

  ※ 이름설정 중요 : iqn + 날짜 + 도메인(도메인을 역순으로 기재 : target의 서브도메인) 

      ㄴ initiator에서 인식할 이름

Created target iqn.2021-05.net.example.host1

Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

 

/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 1]
  | | o- blk1 ...................... [/dev/sdb (20.0GiB) write-thru deactivated]
  | |   o- alua ............................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
  | o- fileio ............................................. [Storage Objects: 1]
  | | o- blk2 ........ [/home/user/iscsi_fileio (1.0GiB) write-back deactivated]
  | |   o- alua ............................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1]
  | o-  iqn.2021-05.net.example:host1................................. [TPGs: 1]
  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 0]
  |     o- luns ...................................................... [LUNs: 0]
  |     o- portals ................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ................................................. [OK]
  o- loopback ..................................................... [Targets: 0]
/> iscsi/iqn.2021-05.net.example:host1/tpg1/acls create wwn=iqn.2021-05.net.example:host2

Created Node ACL for iqn.2021-05.net.example:host2

/> iscsi/iqn.2021-05.net.example:host1/tpg1/luns create /backstores/fileio/blk2

/> iscsi/iqn.2021-05.net.example:host1/tpg1/luns create /backstores/block/lvtargettest

Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2021-05.net.example:host2

/> iscsi/iqn.2021-05.net.example:host1/tpg1/portals/ create 10.0.2.11

/> iscsi/iqn.2021-05.net.example:host1/tpg1/portals/ create 10.0.2.11 ip_port=0000 [3333을 사용하였음]  

Created network portal 10.0.2.11:3333.

  → 위 ls화면에서 모든 인터페이스에 대해 3260를 사용하는것으로 되어있으므로 다르게 써야함.

/> iscsi/iqn.2021-05.net.example:host1/tpg1/portals/ delete 0.0.0.0 ip_port=3260

/> iscsi/iqn.2021-05.net.example:host1/tpg1/portals/ delete 10.0.2.11 ip_port=3333

/> iscsi/iqn.2021-05.net.example:host1/tpg1/portals/ create 10.0.2.11 ip_port=3260

/> ls

o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 1]
  | | o- blk1 ...................... [/dev/sdb (20.0GiB) write-thru deactivated]
  | |   o- alua ............................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
  | o- fileio ............................................. [Storage Objects: 1]
  | | o- blk2 .......... [/home/user/iscsi_fileio (1.0GiB) write-back activated]
  | |   o- alua ............................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1]
  | o- iqn.2021-05.net.example:host1 ................................. [TPGs: 1]
  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 1]
  |     | o- iqn.2021-05.net.example:host2 .................... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ............................. [lun0 fileio/blk2 (rw)]
  |     o- luns ...................................................... [LUNs: 1]
  |     | o- lun0 ... [fileio/blk2 (/home/user/iscsi_fileio) (default_tg_pt_gp)]
  |     o- portals ................................................ [Portals: 1]
  |       o- 10.0.2.11:3260 ............................................... [OK]
  o- loopback ..................................................... [Targets: 0]
/> 

 

이상태로 재부팅하면 /etc/target/saveconfig.json 이 초기화됨.

systemctl enable target 이 필요함.

 

[root@host1 user]# firewall-cmd --add-port=3260/tcp

[root@host1 user]# firewall-cmd --add-port=3260/tcp --permanent 

 

===================================

[root@host1 ~]# fdisk /dev/sdc       :(sdc1 +5G, sdc2 +5G)

[root@host1 ~]# partprobe /dev/sdc1 (/dev/sdc2)

[root@host1 ~]# pvcreate /dev/sdc1

[root@host1 ~]# pvcreate /dev/sdc2

[root@host1 ~]# vgcreate vgmain /dev/sdc1 /dev/sdc2

[root@host1 ~]# lvcreate -n lvtest -L 9G vgmain 

[root@host1 ~]# ls /dev/vgmain/lvtest 
/dev/vgmain/lvtest

[root@host1 ~]# targetcli

/> backstores/block/ create dev=/dev/vgmain/lvtest  name=lvtargettest
Created block storage object lvtargettest using /dev/vgmain/lvtest.

/> ls

/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 2]
  | | o- blk1 ...................... [/dev/sdb (20.0GiB) write-thru deactivated]
  | | | o- alua ............................................... [ALUA Groups: 1]
  | | |   o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
  | | o- lvtargettest ..... [/dev/vgmain/lvtest (9.0GiB) write-thru deactivated]
  | |   o- alua ............................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................... [ALUA state: Active/optimized]

  | o- iqn.2021-05.net.example:host1................................. [TPGs: 1]

  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 1]

  |     | o- iqn.2021-05.net.example:host2.................... [Mapped LUNs: 2]

  |     |   o- mapped_lun0 ............................. [lun0 fileio/blk2 (rw)]
  |     |   o- mapped_lun1 ...................... [lun1 block/lvtargettest (rw)]
  |     o- luns ...................................................... [LUNs: 2]
  |     | o- lun0 ... [fileio/blk2 (/home/user/iscsi_fileio) (default_tg_pt_gp)]
  |     | o- lun1 . [block/lvtargettest (/dev/vgmain/lvtest) (default_tg_pt_gp)]
  |     o- portals ................................................ [Portals: 1]
  |       o- 10.0.2.11:3260 ............................................... [OK]
  o- loopback ..................................................... [Targets: 0]
/> exit

 

[root@host1 ~]# dd if=/dev/zero of=/home/user/fileA count=10 bs=1k
10+0 records in
10+0 records out
10240 bytes (10 kB) copied, 0.000255108 s, 40.1 MB/s

 

=====================================

P938 클라이언트 (initiator)

[root@host2 ~]# yum install iscsi-initiator-utils

[root@host2 ~]# vim /etc/iscsi/initiatorname.iscsi

 - initiatorname = iqn.2021-05.net.example:host2 

     ※ 네임 : targetcli 의 ls 화면에서 acls 아랫줄에 저장된 이름 hots2 이 initiator로 쓸 이름이다.

               ( iscsi 위에 있는 이름은 host의 이름)

     ※ 로그인할때 -T 는 iscsi위에 있는 host의 이름 host1 로 사용

[root@host2 ~]# iscsiadm -m discovery -t st -p 10.0.2.11    검색 디스커버리
10.0.2.11:3260,1 iqn.2021-05.net.example:host1

[root@host2 ~]#

[root@host2 ~]# iscsiadm -m node -T iqn.2021-05.net.example:host1 -l    ② l옵션 로그인

Logging in to [iface: default, target: iqn.2021-05.net.example:host1, portal : 10.0.2.11,3260] (multiple)

Login to [iface: default, target: iqn.2021-05.net.examplei:host1, portal : 10.0.2.11,3260] successful.

[root@host2 ~]# iscsiadm -m session -P 1

Target : iqn.2021-05.net.example:host1 (non-flash)

Current Portal: 10.0.2.11:3260,1
Persistent Portal: 10.0.2.11:3260,1
**********
Interface:
**********
Iface Name: default
Iface Transport: tcp

Iface Initiatorname:  iqn.2021-05.net.example:host2

Iface IPaddress: 10.0.2.12
Iface HWaddress: <empty>
Iface Netdev: <empty>
SID: 1
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
Internal iscsid Session State: NO CHANGE

 

 

lsblk - mkfs - /etc/fstab

 

[root@host2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT


sdh               8:112  0    9G  0 disk 

[root@host2 mnt]# mkfs -t ext4 /dev/sdh

[root@host2 mnt]# vim /etc/fstab 

/dev/sdh        /mnt    ext4    _netdev 0       0       

※ mount 시 유의 : ext4, xfs 등을 쓰지만 네트워크 공유 스토리지 이므로 /etc/fstab/에서 defaults 가 아닌 _netdev 로 설정

 

마운트 순서 iscsiadm -> mkfs -> mount

해제 순서 umount -> iscsiadm

 

 

[root@host2 ~]# iscsiadm -m node -T iqn.2021-05.net.example:host1 -u
Logging out of session [sid: 1, target: iqn.2021-05.net.example:host1, portal: 10.0.2.11,3260]
Logout of [sid: 1, target: iqn.2021-05.net.example:host1, portal: 10.0.2.11,3260] successful.

[root@host2 ~]# iscsiadm -m node -T iqn.2021-05.net.example:host1 -o delete 

 ▶  순서 : ACL에 맞는 이름 변경 후 검색(discovery) → 로그인 에 맞지 않게 진행한경우

  검색 후 로그인을 하여도 인증되지 않음.

 ▶  이 경우 -o delete 옵션을 통해 남아있는 initiator의 이름을 삭제, systemctl 서비스 재시작 등을 거친후에 다시 로그인을 시도해야한다. (iscsid.socket)

 

※ systemctl

iscsiadm 명령어를 쓰면 자동으로 start되며, 검색내용 갱신 할려면 로그아웃 뿐만 아니라 아래 두가지를 종료 후 재시작하여야함. (stop, restart, start)

[root@host2 ~]# systemctl status iscsid

[root@host2 ~]# systemctl status iscsid.socket

 

 

=================================================

 

P514 데이터베이스

SQL : 관계형 데이터베이스 : 정형화된 테이블형태의 데이터를 사용할때 주로 사용

Key value = no SQL database : 테이블형태로 정형화하지 않는경우 주로 사용 big data 분야

 

[root@host1 ~]# yum install mariadb mariadb-server -y

[root@host1 ~]# systemctl start mariadb

[root@host1 ~]# vim /etc/my.cnf

/usr/share/mysql/

/etc/mysql/my.cnf

[root@host1 ~]# firewall-cmd --add-service=mysql

[root@host1 ~]# mysql_secure_installation 

 

-h --host : 원격접속용(로컬접속시 미사용)

-p --password : 패스워드

-u --user=name : 접속용 사용자 이름

 

[root@host1 ~]# mysql -u root -h localhost -p 
Enter password: 

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9

 

P555 백업

mysqldump

백업

[root@host1 ~]# mysqldump -u root -p business > business.sql

Enter password: 
mysqldump: Got error: 1049: "Unknown database 'business'" when selecting the database
[root@host1 ~]# mysqldump -u root -p -A >mariadb.dump

Enter password: 

[root@host1 ~]# mysqldump -u root -p -A -r mariadb.dump  (리다이렉션과 같음)

복원

[root@host1 ~]# mysql -u root -p < mariadb.dump

 

 

p561 복제/보안 (이중화)

 

 

 

 

 

 

728x90

'linux' 카테고리의 다른 글

20210622 (화) webservice  (0) 2021.06.22
20210616 (수) dns, web서비스  (0) 2021.06.16
20210506 (목)  (0) 2021.05.06
20210504(화)  (0) 2021.05.04
20210503 (월)  (0) 2021.05.03
Comments