
iSCSI Internet Small Computer System Interface
인터넷 프로토콜 기반의 스토리지 네트워킹 표준이며 데이터 스토리지 장치의 연결에 사용하게 된다. 인터넷을 통해 데이터를 전송 보관된다. 자세한 이야기는 Storage 포스팅을 확인하면 된다.
이제 iSCSI를 구축을 진행해보겠다.
먼전 Storage OS가 필요한데 이를 위해 TrueNAS를 사용하겠다. 먼저 미리 VM을 생성하여 TrueNAS os를 집어넣는다.
참고로 VM의 하드웨어 스펙은 4코어 CPU, 8GB 메모리, 총 5개의 Thin Provisioning 된 디스크 가 존재한다.
TrueNAS 란?
미국 iXsystems 사에서 개발한 NAS 용 OS이다.
TrueNas는 다른 NAS OS와는 다르게 엔터프라이즈 고 가용성 오픈소스 NAS OS 엔터프라이즈급을 노리고 만든 OS이기 때문에 안정성은 높지만 하드웨어 요구사양이 높다.
트루나스를 설치해주기위해 VM에 접속해 트루나스 설치를 진행한다.

하드웨어 스펙을 설명하면서 총 5개의 디스크를 사용했다고 설명했다 그중 40GB로 되어있는 디스크에 TrueNAS의 os를 설치해보겠다.

그후 OS 설치는 쭉 진행하다보면 재부팅을 하고 다음과같은 화면이 나온다.

트루나스는 Web UI를 지원해서 네트워크 설정을 진행해줘야한다. 1번을 눌러 네트워크 설정을 진행해주고 DHCP가 아닌 정적으로 IP를 설정해준다. IPv4를 이용하여 10.10.11.10/24로 설정한다. IPv6는 사용하지 않는다.

그다음으로는 Default Gayteway를 설정해주고 다음으로 넘어가 설정해준 IP로 접속하게 되면 트루나스의 웹으로 접속이 가능하다. 트루나스를 설치할때 설정해준 root 패스워드로 로그인이 가능하다.

그러면 트루나스의 대시보드로 들어와 각종 리소스 점유율을 확인할 수 있다.

먼저 트루나스를 사용하려면 Storage pool을 생성해줘야한다. 트루나스의 OS만 설치되어있을 뿐이지 트루나스 os가 설치된다고 해서 자동으로 스토리지를 인식하고 만들어주지는 않는다.
좌측 Storage 항목에서 Pool 항목으로 들어가 생성을 진행해준다.

Create Pool 버튼을 클릭하면 다음과같은 화면이 나온다. 현재 경고문은 VM에 여러개의 가상 Storage가 존재하는데 이 디스크는 가상 Storage이기 때문에 시리얼 번호가 Uniqe하지 않아 경고문이 뜨고 있다. Uniqe 하지 않은 디스크도 포함되게 만들어주기 위해 Show disks with non-uniqe serial numbers 항목을 체크해준다.

그러면 VM에 있는 Storage 목록이 뜨게된다. SUGGEST LAYOUT을 눌러 사용할 디스크 대상으로 옯긴다.

다음으로는 레이드 구성이다. RAID-Z 시리즈는 우리가 알고있던 RAID-5를 ZFS 파일시스템에서 부르는 기능이다. RAID-Z2는 패리티비트 2개를 사용하여 저장하는 구조이며 디스크가 2개 까지 고장이 나도 복구가 가능하지만 알고리즘이 복잡해 속도가 느리고 disk 4개를 사용하고 있는 시점에서 RAID-Z2를 구성한다면 약 200G 정도를 사용하지 못하게 된다. 그래서 RAID-Z를 사용한다
RIAD-Z를 클릭하고 밑을 확인하면 사용할 수 있는 용량이 약 294G 4개의 디스크에서 1개의 디스크 용량을 뺸 용량이다. 즉 하나의 디스크를 패리티 디스크로 사용한다는 말이다.

다음으로 계속진행하면 Pools이 생성된것을 확인할 수 있다. Type은 FileSystem으로 되어있어 이대로도 NAS를 사용할 수 있다. Compression는 압축 방식인데 lz4형식으로 압축을 하고 있다.

이제 zvol을 생성해준다. zvol은 ZFS 파일시스템 전인 블록 단위 까지만 관리하는 영역이다. ZFS에서 파일시스템 까지 관리하는 영역은 Dataset을 생성해주면 된다. Add Zvol 을 눌러 생성해준다.

먼저 zvol 용량을 지정해준다. 100G로 설정해준다. 그리고 Sparse라는 항목을 체크해준다. 이 항목은 Thin provisioning을 지원한다는 뜻이다. 즉, 내가 사용한 만큼 용량을 차지하게 된다. 반대로 Thick provisioning 은 설정한 용량만큼 미리 차지해놓고 사용하는 것이다. 두 방식 장단점이 존재한다.

그럼 다음과 같이 볼륨으로 생성된 Zvol을 확인할 수 있다. LUN-0을 만들었으니 똑같은 방법으로 LUN-1을 만들어준다.
다만들고 확인하면 2개가 확인된다. used 항목을 확인해보면 81.39KiB만큼 사용중이라고 뜨는데 Sparese 항목을 체크해 용량을 작게 차지하는 중이다.

이제 iSCSI 설정을 해보도록 하겠다. vSphere에서 현재 생성한 볼륨까지 찾아오게 만들려면 iSCSI 작업을 진행해줘야한다. 왼쪽에서 sharing 항목에 iSCSI로 들어간다. Potals로 들어가 add 버튼으로 추가해준다.

iSCSI 정보를 설정해주는데 현재 화면에 보이는 설정들이 인증에 관련된 설정들이다. 그중에 IP에 대한 설정만 해주는데 특정 IP 주소로 3260 포트로 찾아오는 사용자만 iSCSI를 사용하게 해주겠다 라는 뜻이다. 쉽게 말하면 특정 IP 주소 3260 포트로 Listen을 설정하는 것이다.

다음으로는 Initilators Group 설정을 해준다.

Authorized Networks 해당 네트워크로 들어오면 권한을 부여하겠다라는 말이 된다. 그래서 찾아오는 네트워크 대역을 적어주면 된다.

다음으로 Target을 추가해준다. 말그대로 사용자 즉 서버들이 Initilators Group 을 보고 찾아왔을때 어떤걸 줘야 하는지 설정해준다. ADD 버튼을 눌러준다.

먼저 Portal Group ID를 1번으로 둔다 이말은 아까 생성한 Portal IP으로 설정한 곳으로 오면 현재 타겟으로 간다.

Initilators Group ID는 10.10.11.0/27 대역으로 들어오는 IP만 허용해준다고 설정을 미리 했는데 그 설정값으로 사용하겠다 라는 뜻이다. 설정이 완료되면 SUBMIT 버튼까지 눌러 저장해준다.

다음으로 Extents를 추가해보겠다. 똑같이 Extents 탭으로 이동해 ADD 버튼을 눌러준다.
어떤 Zvol 볼륨을 사용할건지 선택해주고 저장해준다.현재 Zvol을 2개를 만들었기 때문에 2개다 Extents를 만들어준다.

Associated Targets을 추가해준다. 이 작업은 Target으로 오면 어떤 Extents로 이어줄지 설정하는 부분이다. 마찬가지로 Associated Targets 탭으로 이동해 ADD 버튼을 눌러준다.

Target을 설정해준다음 Extents를 설정해주고 저장을 해준다.

Etents를 2개만들었으니 이작업도 2번 해준다.(2개의 zvol을 사용하기 때문이다.)
그다음으로 이제 vSphere에서 iSCSI를 연결해주면 된다. 그전에 분산 스위치의 포트그룹 설정값을 바꿔야하는데 VMware측에서도 가장좋은 모범사례로 다음과같은 설정값을 설정해라고 나와있다. 그래서 다음과 같이 한번 설정값을 바꿔보도록하겠다.

먼저 DRP-iSCSI-1 포트그룹의 설정값을 바꿔보겠다. Teaming and faliover 탭으로 이동해 Use explicit failover 로 변경해준다.
다음으로 Fallback을 no로 변경해준다.

그다음으로 Uplink2를 Stanby로 내려준다.
그리고 DPG-iSCSI-2는 방금까지와 똑같은 설정값을 가지고 마지막으로 UPlink1을 Stanby로 내려주면 된다.

현재 해준 작업으로 하나의 라인으로만 사용하게 만들어 포트를 바인딩시켜주었다. 특정 포트에 바인딩되는 구성이다.
이제 ESXi 서버로 돌아가 서버의 구성 설정으로 들어가면 Storage Adapters를 설정해주는 부분이 존재하는데 여기서 iSCSI Adapter를 추가해줘야한다.

그러면 vmhba65라는 새로운 소프트웨어 어댑터가 생겨난다. 클릭해준다음 밑부분에 Network Port Binding 을 설정해줘야한다. 내가 어떤 커널어댑터를 이용해서 포트를 찾아갈지 정해줘야한다.

아까 설정한 분산 스위치의 포트가 보이는데 먼저 1번을 선택해준다.

그리고 추가적으로 나머지 2번 포트 그룹을 추가해준다.


그리고 Dynamic Discovery 와 Static Discovery가 존재하는데 단어의 의미처럼 동적으로 iSCSI의 Target을 동적으로 확인하느냐 아니면 정적으로 확인하느냐의 차이 이다.

트루나스의 서버를 적어주고 포트도 적어주면 된다.

그러면 RESCAN ADAPTER 버튼을 눌러주면 트루나스에서 추가한 iSCSI를 확인할 수 있다.

이와 비슷하게 ESXi-02, ESXi-03도 같은 작업을 진행해준다. 이제 블록 디바이스 장치가 잘 가져와진다면 파티셔닝 그리고 파일시스템을 입혀 사용할 수 있게 만들어주면된다. 클러스터 단위로 올라가서 우클릭 후 새로운 DataStore를 추가해준다.

어떤 파일 시스템을 입힐건지 물러본다. VMFS 옵션을 선택하고 다음으로 넘어간다.

클러스터 단위에서 DataStore를 생성할려고 시도하는 중이라 특정 호스트를 지정해줘야한다.
이때 아까 추가해준 iSCSI-0을 선택해줘야한다. 현재 Local Nvme도 있어 헷갈리면 안된다.
VMware 파일시스템은 6버전 과 5버전이 있는데 5버전은 2TB 이상의 LUN을 지원한다. 6버전은 512e 형식으로 4kb 형식으로 되어있는 것을 512e 방식으로 표현하여 32비트에서도 16TB까지 지원가능하다. 또한 자동으로 공간을 교정해준다. 6버전을 선택하야 다음으로 넘어간다.
파티셔닝은 100G 용량을 굳이 나누지 않고 그대로 둔 다음 넘어간다.

이제 최종 설정값을 다시 확인한 다음 넘어간다.

하나의 DataStore가 만들어진것을 확인할 수 있다. iSCSI로 만들어진 DataStore 이며 방금 작업으로 블록 디바이스를 파일시스템 까지 입혀 사용할 수 있게 만들어놨다. 이제 마운트까지 해서 가상머신들이 사용할 수있게 만들 수 있다.
