“iSCSI를 활용해서 OS를 부팅하고 배포해 보자”
iSCSI 란 Internet Small Computer System Interface의 약자로 컴퓨팅 환경에서 인터넷 프로토콜(IP)를 기반으로 데이터 스토리지 연결에 사용하는 관리도구 이다.
이 포스팅은 PXE, iPXE 그리고 iSCSI를 이용한 OS 설치 자동화 인프라를 활용하여 배포하는 방법을 소개한다.
[개 요] ✅ 종 류 : 엔지니어링 ✅ 난이도 : ⭐ ✅ 내용요약 : iSCSI를 활용한 OS를 부팅과 배포에 대한 설명 ✅ 테스트환경 : CentOS7 ✅ 관련직무 : 시스템&클라우드 엔지니어 |
[기초이론&용어설명]
|
[관련 기술자료] |
iSCSI 란?
# 참고 이미지 URL(https://lilo.tistory.com/61)
– Internet Small Computer System Interface – 인터넷 프로토콜(IP) 기반의 스토리지 네트워킹 표준이며 데이터 스토리지 장치의 연결에 사용 |
1. 구성 방식
– 하드웨어 방식 : 전용 네트워크 카드는 자체 하드웨어 기능을 이용하여 iSCSI 처리
– 소프트웨어 방식 : 일반적인 네트워크 카드는 OS내 패키지를 이용하여 iSCSI 처리
2. Linux OS(CentOS 7) 기준 iSCSI 패키지 및 용어
– 서버(Target)
패키지 : scsi-target-utils
명령어 : tgt-admin
용어 :
1) IQN(iSCSI Qualified Name) : iSCSI Target/Initiator의 고유 이름 포맷 중 하나
2) LUN(Logical Unit Number) : iSCSI Target이 제공하는 논리적 SCSI 장치이며, Backstore 매핑
3) Backing store : 논리적 SCSI 장치 경로 및 장치 이름
4) ACL(Access Control List) : iSCSI Target에 접속을 허용할 Initiator IP 주소 리스트
– 클라이언트(Initiator)
패키지 : iscsi-initiator-utils
명령어 : iscsiadm
용어 :3. iSCSI를 이용하여 부팅 가능한 OS 이미지 구성
1) discovery(-m) : iSCSI Target 서버 유형 확인
2) type(-t) : SCSI 장치 종류
3) portal(-p) : iSCSI Target 서버 네트워크 주소
4) login : iSCSI Target 서버 내 IQN(고유이름) 접속
5) node(-m) : iSCSI Target & Initiator 네트워크망 연결점
6) targetname(-T) : IQN(고유이름)
7) logout : iSCSI Target 서버 내 IQN(고유이름) 사용 종료
iSCSI를 이용하여 부팅 가능한 OS 이미지 구성
(ISO 이미지 파일을 이용하여 OS를 설치하는 방법은 대부분 숙지하고 있거나,
포털 검색을 통해 진행 가능하여 대부분 내용은 넘어가겠다.)
몇몇 단계의 필요한 부분에 대해서만 언급하도록 하겠다.
iSCSI를 활용하여 OS를 부팅하고, 배포해보자.
✅ 설치 단계중
1) 하드디스크 선택 부분에서 로컬하드디스크가 아닌 SAN(iSCSI) 장치를 선택
2) iSCSI Target 네트워크 주소(Portal) 입력
3) iSCSI Target & Initiator IQN(고유이름) 입력
4) iSCSI Target & Initiator IQN(고유이름) 선택
✅ 설치 완료 단계중
1) 콘솔 전환(Alt F1 ~ F6)
2) 마운트 되어 있는 iSCSI 장치(하드디스크) chroot 전환
3) iscsi 모듈 추가
파일 : /etc/initramfs-tools/modules
추가 : iscsi
4) 부트메뉴 설정(Legacy BIOS 기준)
파일 : /boot/grub/grub.cfg
추가 : iscsi_firmware ip=dhcp
5) 커널 업데이트
명령어 : update-initramfs -u
6) 설치 완료 단계 마무리
전편에서 다루었던 내용을 이용하여 인프라가 구축되었다면,
iSCSI Target 서버에 네트워크 부팅 가능한 OS 이미지를 업로드 한다.
iPXE & iSCSI 부팅 과정에 대한 간략한 동작 프로세스는 아래와 같다.
💡로컬하드디스크 부팅 아님 주의
1) 클라이언트는 DHCP 서버로부터 전달받은 IP 및 TFTP 서버 정보를 이용하여 네트워크 연결 이 후 TFTP 서버로부터 부트펌웨어를 다운로드
2) 다운받은 부트펌웨어를 통해 커널 파일을 로드
3) 내장 된 스크립트(Embedded Script)를 사용하여 기본동작을 재정의(네트워크 및 iSCSI 경로 등)
4) 사설 네트워크 정보를 재할당 후 iSCSI(ROOT PATH)를 이용하여 사전 준비된 부팅 가능한 iSCSI Linux OS GRUB 로드
5) 정의 된 커널 로드 및 iSCSI Linux OS 부팅 프로세스 시작
6) 개별 설정 또는 사전 정의된 설정파일을 이용하여 OS 배포(iSCSI Target 내 등록된 OS 이미지) 및 완료
위와 같은 OS 설치 자동화 인프라를 활용하여 서버 구축 시 설정 환경에 따라 OS별 설치 및 배포 등의 차이가 있으며, 다수의 서버 구축에 용이하다.