저번에 가상 머신을 설치해서 리눅스를 실행, QEMU를 설치하려 해 봤지만 수많은 에러와 함께 실패했었다. 인텔 칩을 사용하는 팀원은 설치가 되었고, M1 칩을 사용하는 나와 다른 팀원만 설치가 안 되는 것으로 보아 프로세서 문제였던 것 같다. 교수님께 이 부분에 대해 말씀드리니 학교 리눅스 서버를 원격 접속하게 해 주신다고 하셨고, 현재 SSH를 이용해 접속하는 중이다. 처음 서버에 접속하고 명령어를 딱 두 줄 입력했는데 갑자기 서버가 내려가서 크게 당황했었다. 조교님께 말씀드리니 리눅스 자체가 삭제되는 기이한 현상이 일어났고, 다행히도 빠르게 복구해주셨다.

 

QEMU 설치 과정

QEMU를 이용한 ZNS 개발 환경을 구축하는 방법을 정리해 주신 분이 있어 그 분의 블로그를 참고하였다.

https://blackinkgj.github.io/qemu-zns/

 

[ZNS] QEMU를 활용한 Zoned Namespace 개발 환경 구축

QEMU를 사용해서 Zoned Namespace 개발 환경을 생성해봅시다.

blackinkgj.github.io

과정을 정리해 보자면 이렇다.

 

1. QEMU 설치

2. Ubuntu Server 이미지 다운로드, 디스크 생성 및 Ubuntu 설치

3. VNC Viewer를 이용한 접속 및 QEMU 실행

4. ZNS SSD 에뮬레이션

 

그런데 여기서 문제가 발생했다. 우리는 리눅스 서버에 SSH를 이용해서 원격 접속하는데, 보안 정책에 따라 해당 서버는 포트를 한 개만 열어놓고 있다. 그래서 포트포워딩을 통해 VNC가 리눅스 서버에 접근할 수 있도록 해 줘야 했다. SSH, VNC에 대한 개념이 없어서 조금 헤맸다. 간만에 컴퓨터 네트워크에 대한 복습을 좀 할 필요가 있겠다. 정확하게는 아니더라도 대충 동작 원리를 이해할 정도로 적어 두겠다.

 

IP: 인터넷 상에서 사용하는 주소 체계. 쉽게 말해 컴퓨터를 가리키는 주소다.

Port: IP 내에서 프로세스 구분을 위해 사용하는 번호.

SSH: Secure Shell. 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜. KEY를 사용한다. 비대칭키와 대칭키 방식을 사용한다. 최초 접속 시 비대칭 키 방식을 통해 인증이 진행된다.

VNC: 원격 데스트톱 공유 시스템. 마우스와 자판 이벤트를 네트워크를 통해 다른 컴퓨터로 전송시켜 그래픽 화면을 갱신시킨다.

 

포트 포워딩을 위해 참고한 사이트는 다음과 같다.

https://www.2cpu.co.kr/network/5407?&page=4 

 

[VNC, SSH 강좌] ssh를 이용해 vnc 보안접속 하기 :: 2cpu, 지름이 시작되는 곳!

sfl 제목 내용 제목+내용 회원아이디 회원아이디(코) 이름 이름(코) stx sop and or 검색

www.2cpu.co.kr

먼저 리눅스 서버 내에서 VNC 서버를 열어준다. 이 때 포트 번호는 같은 리눅스 서버 사용자가 다수인 관계로 각자 다른 숫자를 사용했다. 이 VNC 서버는 Localhost에게만 열려 있다.

이후 SSH 비대칭키 인증 방식을 통해 내 컴퓨터에서 리눅스 서버로 비밀번호 없이 접근할 수 있도록 한다. 인증 절차가 완료되면 포트 포워딩을 실행한다. Port:127.0.0.1:Port 명령어가 내 컴퓨터에 Port를 로컬로 생성하도록 한다. 이렇게 되면 vnc 서버에 생성된 로컬 포트로 접속할 수 있고, VNC viewer를 통해 리눅스 서버 상에서 돌아가는 ubuntu에 접근할 수 있게 된다.

VNC viewer -> Local Port(내 컴퓨터) -> Linux Server -> VNC Server

 

이렇게 우여곡절 끝에 VNC 서버 설정까지 완료하고 블로그를 참고하여 ZNS 개발 환경 구축을 성공했다. 지금부터는 해당 환경 내에서 입출력 명령을 입력하여 동선을 추적하고, Linux Kernel의 Block Layer 구조에 대해 공부하려 한다.

 

'ZNS Isolation with Linux Container' 카테고리의 다른 글

VNC Server 설정하기  (0) 2022.06.23
Linux Shell Commands  (0) 2022.06.23
The Block I/O Layer  (0) 2022.05.24
착수보고서 작성, Cgroup과 조금 친해지다  (0) 2022.05.11
ZNS와 Linux Container  (0) 2022.04.28

+ Recent posts