1. 가상머신(Virtual Machine) 이란?

실제로 존재하지 않고 소프트웨어적으로 구현된 가상의 PC환경을 뜻합니다. 요즘은 핸드폰 게임을 PC에서 돌리기도 하죠. 그것들도 가상머신 기능을 통해 구현된 기능입니다.

그래서 이걸 어디에 쓰느냐...? 사실 저도 모르겠네요. 솔직히 업무용 노트북을 인텔 루나 CPU가 탑제된 서피스 프로를 구매하고자 했었는데 너무 비쌋어요. 성능도 거지같은게 도가 지나치게 비싸요... 250~300만원짜리 태블릿이라니... 그렇다고 엄청나게 그래픽이 좋지도 않고, 화면도 작고, 아이패드 or 안드로이드 태블릿과 동일한 화면크기 대비 무게도 약 1.5배 더 무겁습니다. 화면도 더 큰 그램과 무게가 다를바가 없어요. 저는 집에서 태블릿을 원래 자주 사용하는데, 태블릿을 별도로 돈주고 사느냐 업무용 노트북을 겸용으로 사용하느냐 선택의 갈림길에서 한줄기 빛을 발견했습니다.

"지금 만들고 있는 NAS에서 VM을 운용하면 안드로이드 태블릿으로 윈도우가 가능하잖아?!"

이제와서 생각해보면 저는 망각하고 있었습니다. 업무용이라고 하면 저에겐 사양과 물리적 디바이스가 필요했다는것을요...

2d, 3d CAD 작업을 하면서 장비와 USB로 연결하여 통신하고 프로그래밍을 해야 하는거였죠.... 이제 생각해보면 서피스로도 3d cad는 못돌렸을듯 하네요. 특히 문제는 vm을 통해 usb 연결이 안됩니다. 원격으로 usb를 연결해줄 물리적인 방법이 없어요. GTP는 NAS를 들고와서 장비와 연결하면 된다고 하네요.

usb를 패스스루 하면 vm에서도 usb를 연결할 수 있지만, 애지중지 해야 할 서버를 오프라인으로 들고 다니면서 장비와 연결하라니 말이 안되죠. 다른 방법으로 중계 PC를 통해 usb to Ethernet 기능을 추천하던데, 그럴 PC가 중간에 있을거면 연결한 PC로 작업을 하지 뭣하러 VM으로 연결하냐 싶죠.

이제와서는 계륵이 됐습니다... 아무 쓸모가 없어요. 그냥 안드로이드 태블릿으로 더럽고 지저분하게 사용해도 무방한 가짜 윈도우를 통해서 태블릿 os로는 만족할 수 없는 멀티테스킹 정도를 느껴보는 정도...? 네 이정도가 좋겠네요. 사실 안드로이드건 아이패드건 키보드+마우스를 통해 제어하기엔 턱없이 부족한 ux라서요, v3라던가 베라포트 같은게 필요한 금융이나 관공서 같은 그런 지저분한거 할때에나 막 쓰기 좋은게 생겼네요.

다른 전문적인 분들은 nas의 독커같은걸로 구현하기 힘든 것들을 vm에서는 손쉽게 구현이 가능한것들이 있어서 사용한다고 하던데, 과연 그것들이 뭘지 궁금하네요...

참고로, 실제 일반 PC와 동일한 성능으로 생성된 VM은 약 60~80% 정도의 성능을 발휘한다고 합니다. 고사양은 포기해야 합니다.

 

2. 설치 사전 준비

2.1. iso 설치파일 다운로드

- windows or linux 다운로드

제일 먼저 필요한건 iso 파일을 준비해야 합니다. 저는 윈도우밖에 사용하지 않아서 윈도우를 다운받을건데, 리눅스 등등인 경우는 해당 배포 iso이미지 파일을 준비해 주세요. windows는 마소 공홈에서 받으시거나, 유저 트윅 된 iso파일을 사용해도 됩니다. 저는 공홈에서 다운받았습니다.

현 시점 최신 버전 다운로드 주소는 다음과 같습니다. https://www.microsoft.com/ko-kr/software-download/windows11

 

Windows 11 다운로드

이 옵션은 부팅 가능한 설치 미디어(USB 플래시 드라이브, DVD)를 만들거나 가상 컴퓨터(.ISO 파일)을 만들어 Windows 11을 설치하려는 사용자를 위한 옵션입니다. 이 다운로드는 제품 키를 통해 올바

www.microsoft.com

주의해야 할 점은, 맨 아래에 있는 x64 디바이스용 Windows 11 디스크 이미지(ISO) 다운로드 로 다운받아야 하는겁니다. 그냥 눈에 띄는걸 받으면 iso가 아닌 다른걸 다운로드 받게 될텐데, TrueNAS는 ISO가 아니면 설치가 안돼요.

이렇게 된걸 다운받아 주시고, 혹시나 그럴리가 있긴 쉽지 않은데... 본인의 nas가 ARM CPU를 사용한 경우 잘 확인하고 받아주세요.

리눅스의 경우 리눅스 공식 홈페이지에서 손쉽게 iso 파일을 다운받을 수 있어요.

 

- virtIO 드라이버 다운로드

이 드라이버는 우리의 VM에서 사용될 가상 디스크와 랜 카드의 드라이버 입니다. 기본적인 호환 드라이버를 사용해도 되긴 하는데요, 속도가 너무 느려요. 하단에서 설정하겠지만, virtIO 타입의 드라이버는 가상머신에서 높은 속도를 보장하는 드라이버로 확실히 좀 더 빠릿빠릿 한 느낌을 받기 위해서는 필수 조건이에요.

해당 드라이버는 리눅스의 경우 기본으로 지원되어 필요가 없구요, 윈도우를 설치하실때에만 필요합니다. 다음 링크에서 다운 받아주세요.

https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers

 

Windows VirtIO Drivers - Proxmox VE

Introduction VirtIO Drivers are paravirtualized drivers for kvm/Linux (see http://www.linux-kvm.org/page/Virtio). In short, they enable direct (paravirtualized) access to devices and peripherals for virtual machines using them, instead of slower, emulated,

pve.proxmox.com

내용의 중간 즈음에 최신버전(download the latest stable) 버튼을 누르면 iso로 된 파일을 다운받을 수 있어요.

 

2.2. 데이터셋 설정

다운 받는 동안 우리는 밑작업을 하러 갑시다. VM을 설치할 전용 공간을 만들어줘야 해요. 바로 데이터 세트죠.

Main 폴 하위에 설치하시거나, 새로운 폴을 구성하셔서 하위 데이터세트에 설치하거나 자유입니다.

vm은 아무리 가상 환경이라고 하지만, 실제 PC와 아주 유사해요. HDD에 vm을 설치하면 진짜 속터지는 속도를 경험할 수 있을거예요. 가급적 ssd로 구성된 스토리지 폴에 설치를 해주세요.

저는 VM이라는 1개짜리 스토리지 폴에 하위 ISO라는 데이터셋을 하나 만들었어요. 이 ISO 데이터 세트에다가 다운받고 있는 iso 파일들을 넣어줄거예요.

 

2.3. ssh 활성화

우리는 ssh를 통해 sftp를 이용할거예요. nextCloud는 userData로 지정된 한정된 공간만을 클라우드 시스템에서 이용할 수 있게 돼요. 하지만 때때로 클라우드 저장공간 외에 유지관리용으로 NAS의 모든 영역을 관리해야 할 필요가 있어요. 일전에 말한것처럼 대용량 파일을 업로드 하는 중간에 창을 꺼버리면 찌꺼기 파일이 남게 되는것처럼요. 때문에 원격 접속 프로그램을 이용해 모든 디렉토리를 관리할 수 있도록 합시다.

먼저 SSH 기능을 활성화 해줄게요. TrueNAS의 좌측 시스템 -> 서비스로 들어가시면 SSH 라는 항목이 있죠. 기본적으로 사용하지 않았으면 꺼져있을 텐데, 사용을 켜주고 자동으로 시작 역시 켜줍니다.

다음, SSH는 포트 번호 22번을 사용합니다. 공유기에서 포트포워딩 해줘야 해요. 굳이 내부 포트 바꾸기 귀찮으니까 공유기의 포트포워딩 설정에서 외부포트를 사용자포트 5~6만번대로 설정해 주고, 내부포트를 22번으로 지정해 줍시다.

 

이제 SFTP를 사용하는 프로그램이 필요해요. 저는 파일질라를 사용합니다. 설치 없이 깨끗하고 간편한 포터블 버전을 추천해요. 실행 하신 후, 파일 -> 사이트 관리자를 열어줍니다.

New site를 눌러 새로운 항목을 추가시켜주고 다음과 같이 입력해 주세요.

프로토콜 : SFTP - SSH File Transfer Protocol
호스트 : (내 도메인 주소)(ex1: asdf.domain.com)(ex2: domain.iptime.org)
포트 : (포트포워딩에서 외부 포트 번호)(ex: 45678)
로그온 유형 : 일반
사용자 : TrueNAS 로그인 아이디
비밀번호 : TrueNAS 로그인 비밀번호

연결 버튼을 누르면 내 NAS와 연결 될 거예요. 그러면 SSH로 인증된 FTP로 연결되어 내 NAS안의 모든 파일과 폴더에 접근할 수 있게 됩니다. 물론, TrueNAS의 데이터 세트에 지정된 권한에 따른 접근만 가능합니다. 그 권한은 로그인에 사용한 사용자 아이디의 권한입니다.

요즘은 인터넷 속도가 빠르니까, 이쯤 됐으면 iso는 전부 다운받았을 거예요. 파일질라에서 아까 만든 데이터세트까지 경로를 찾아갑니다. 리모트 사이트의 폴더 트리에서 mnt/VM/ISO 로 이동해 주세요. 해당 폴더에서 무언가 작업을 하려고 하면 실패합니다. 권한 문제인데요. TrueNAS의 데이터 세트 -> 방금 만든 ISO 데이터 세트의 권한을 다음처럼 수정합니다.

핵심은 Other의 권한을 일기/쓰기/실행 다 주는거예요. 그래야 아무나 편집이 가능해서 문제가 해결됩니다.

이제 파일질라를 이용해 다운받은 iso파일들을 해당 폴더에 넣어주시고, 업로드가 다 끝나면 해당 파일을 우클릭 해주세요. 파일 권한이라고 있는데, 해당 파일의 권한도 위와 마찬가지로 3*3개 모두 체크 해 주세요.

그러면 설치를 위해 필요한 밑작업이 모두 끝났습니다.

 

3. VM 설치

TrueNAS 좌측의 가상 머신으로 들어가서 [추가]를 눌러 새로 만들어 봅시다.

딱히 설명이 없는 경우 기본값으로 설정합니다.

3.1. Operation System

Guest Operating System : 사용할 운영체제가 Windows 인지 Linux인지, 그 외 인지 선택해 줍니다.

Enable Hyper-V Enlightenments : 체크 해주세요. 윈도우의 경우 성능이 좋아집니다. 아무래도 가능하다면 필수옵션일듯 합니다.

이름 : 여러 VM이 생성될 경우 구분할 수 있도록 적절한 별명을 입력해 주세요.

Enable Trusted platform Module(TPM) : 윈도우 11인 경우 체크해야 합니다.

비밀번호 : 원격 접속할 비밀번호입니다. 적당히 입력해 주세요.

3.2. CPU And Memory

TrueNAS 시스템의 스펙에 따라 달라집니다. CPU의 경우 전체 코어&스레드의 2/3 정도를 할당하면 되구요, 램은 평상시 여유분의 절반정도를 설정합니다. 물리적인 사양을 초과하는 값을 입력하면 큰 문제가 될 수 있으니 조심해 주세요.

- 제 시스템 6코어 12스레드 때의 예 입니다.

virtual CPUs : 8 (VM의 전체 가상 논리 스레드 수)

코어 : 4 (실제 NAS의 CPU 코어 중 할당할 코어의 수)

스레드 : 2 (코어 1개당 스레드 수. 12스레드라고 8 입력하면 코어당 8개라서 4코어면 32스레드가 되어버립니다.)

CPU Mode : 인텔이거나 ARM인 경우 Host Model로 해주세요. AMD 인 경우 win11에서 문제가 있어서 사용자 정의로 해야 합니다. 사용자 정의인 경우 CPU 모델을 선택할 수 있는데, EPYC 를 선택하면 됩니다.

- 제 시스템 30G 램에서 상시 여유 약 20G 때의 예 입니다.

메모리 크기 : 8 GiB

Minimum Memory Size : 8 GiB

3.3. 디스크

Select Disk Type : VirtIO로 설정해 주세요. 빠르고 좋습니다. 윈도우에서 자동인식이 안되지만 우리는 드라이버를 준비했으니 문제 없습니다. 만약, 드라이버를 구할 방법이 없는 경우 AHCI를 선택하면 되긴 합니다만, SSD에 설치하더라도 좀 느릿느릿 해요.

Zvol Location : VM으로 생성한 스토리지 폴 or 데이터세트를 선택해 주세요. 저는 별도로 데이터세트를 만들지 않고, 새로 생성한 VM 스토리지폴을 선택했습니다.

크기 : 해당 스토리지 폴의 최대 80% 미만으로 설정해 주세요. 저는 500G SSD에 이것저것 하고나서 약 300 GiB로 설정했습니다.

3.4. Network Interface

Adapter Type : VirtIO로 설정해 주세요. VM에서는 훨씬 빠릅니다. 역시 드라이버를 구할 수 없는 상황이라면 e1000 등의 다른 드라이버를 선택하면 답답하더라도 사용은 가능합니다.

Attach NIC : 물리적인 렌포트를 지정해주는데요, 대부분의 경우 랜카드가 1개 뿐이니 1개 선택할 수 있을겁니다. 무선 연결도 있는경우 여러개중 선택할 수 있을텐데, 사용중인 랜카드를 선택해 주세요.

3.5. Installation Media

아까 힘들게 우겨넣은 iso 파일을 드디어 선택합니다. 여기서 선택하는건 운영체제의 iso입니다.

경로를 찾아 들어가 해당 windows.iso 파일을 선택해 주세요. 리눅스의 경우 linux.iso를 선택해야겠죠. 만약 경로 탐색기에서 iso파일을 찾을 수 없다면 어딘가에서 권한 설정이 누락되었을 겁니다. 무조건 여기서 해당 iso파일을 찾아야 해요.

[Upload New Image File] 버튼으로 업로드 할 수 있기도 한데, 무슨 이유에서인지 대용량 파일은 업로드 할 수 없는 모양입니다. 아무래도 용량이 커서 업로드가 실패했다는듯 한데요, 저는 이게 해결이 안되어서 파일질라를 통해 권한 문제를 해결했어요.

3.6. GPU

이부분이 유의해야 할 부분이 있는데요, NAS에 외장 그래픽카드를 별도로 추가 장착한 경우 여기서 GPU를 선택해 주세요. 그리고 Ensure Display Device를 체크 해제 해야 할 것으로 예상됩니다.

저의 경우 오로지 스토리지 확장을 위해 모든 PCIe 슬롯은 전부 SATA와 NVMe로 구성되어 있어서 GPU를 꼽질 못했어요. 그래서 내장그래픽인 경우에는 여기서 GPU를 선택하지 않고 빈칸으로 둡니다.

Hide from MSR은 체크 해제 해주시고, 내장그래픽인 경우 Ensure Display Device는 체크 해주세요.


이제 저장 버튼을 눌러 생성하면 순식간에 VM이 생겨납니다. 딱히 iso 파일에 대한 권한 문제와 스토리지 폴 용량의 80% 이상으로 설정하지 않았다면 문제가 없을거에요.

리스트에 추가된 vm을 클릭해 자세히 보기로 들어가 주세요. 시작 버튼이 있긴 한데, 아직 시작하지 않을겁니다.

설치한 OS가 윈도우인 경우 먼저 [장치]로 들어가 주세요. 이것저것 있을텐데, 우상단의 [추가] 버튼을 눌러 주세요.

유형은 CD-ROM으로 해주시고, 아까 다운받은 virtIO dirver.iso를 선택해 마운트 해 줍시다.

Device Order는 딱히 중요하지 않은데요, 저는 1000번으로 했어요. 번호가 겹치더라도 알아서 재분배 해줍니다.

시디롬 추가도 끝났으면 이제 모든것이 준비가 완료 됐습니다.


시작버튼을 누르고 [<..> Display] 라는 버튼을 눌러봅시다. 비밀번호를 물어보는데, VM을 생성하면서 입력한 패스워드를 입력해 주세요.

그러면 VM에서 검은 화면이 나타나거나, 트윅된 iso 파일이라면 자동으로 설치하기로 넘어갈 거예요.

만약 이런 화면을 보게된다면 살짝 난감하죠. 마소 공홈에서 받은 iso인 경우 일단 cd-rom으로 부팅은 성공적으로 했는데, 유저 키보드 입력을 대기하고 있던 중, 우리가 display 버튼을 눌러 패스워드를 입력하고 있는 동안 시간이 지나서 cd로 부팅을 하지 않은 경우에 속할겁니다.

Shell> 을 통해 다음의 명령어를 입력해 주세요. 설치를 다시 실행합니다.

reset -w

화면에 상단에 Press any key to boot from CD or DVD ..... 이라는 글자가 보이면 냉큼 키보드의 아무 키나 눌러줘야 합니다. ... 이 계속 늘어나다가 시간이 되면 실행에 실패하고 원래대로 돌아오거든요. 아래 화면이 보인다면 이제 키보드와 마우스를 통해 설치를 진행해 주세요.


설치 도중 윈도우를 설치할 공간을 선택해달라고 하는데, 우리가 할당한 용량의 드라이브가 보이질 않아서 설치가 불가능 할거예요. 리눅스라면 기본으로 virtIO 드라이버가 내장되어 있어 아무 문제가 없을테지만요. 위에서 선택한 virtIO 타입의 디스크는 윈도우가 읽을 수 없어서 그래요. 드라이버 로드 버튼을 눌러 아래 그림과 같이 우리가 추가한 virtIO.iso가 들어있는 CD 드라이브(예: D드라이브)에서 amd64\w11 폴더를 선택해 주면 드라이버 목록에 드라이버가 하나 나타납니다. 선택 하고 설치 해주세요.

해당 드라이버를 설치해주시면 할당되지 않은 하드디스크가 하나 보일것이고, 해당 디스크에 설치를 진행해 주세요.


디스크가 드라이버가 필요했으면 네트워크도 마찬가지 입니다. 이더넷 드라이버도 설치를 해줘야 하지만... 여기서 드라이버를 설치 하지 않습니다. Windows11의 TPM 보안때문에 온라인 계정으로는 로그인이 안돼요. 재부팅 마다 PIN 데이터가 부서져서 매번 재설정을 해줘야 합니다. 때문에 로컬 계정을 이용해 사용할겁니다.

(만약 win10 이하인 경우에는 TPM과 관계가 없어서 이더넷 드라이버를 설치하고 진행하시면 됩니다.)

인터넷 접속이 필요하다고 진행이 안되는 시점에서, win+F10 키를 동시에 누르면 명령 프롬프트 창이 나타날 거예요. 여기에 다음의 명령어를 입력해 줍니다.

oobe\bypassnro

그러면 설치 프로세스가 중단되고 갑자기 재부팅이 되는데, 국가 선택부터 다시 시작할 거예요. 다시 인터넷이 필요하다는 창 까지 진행하게 되면 이번엔 아까 못보던 버튼이 생겨있어요. "인터넷에 연결되어 있지 않음" 이라는 글자가 추가되어 있는데, 그것을 눌러주세요. 그러면 로컬 계정 생성단계로 넘어가면서 끝까지 진행이 가능해요. 이후에도 온라인 계정으로 전환해서는 안돼요.

이후 모든 설치가 끝나고 바탕화면이 나오면 내 컴퓨터 -> virtIO CD-ROM 으로 이동하셔서 virtio-win-gt-x64.msi 를 실행해 모든 드라이버를 설치해 주세요. 만약 32bit 운영체제를 설치했다면 x86으로 설치해 주시면 됩니다.

마지막으로 VM을 종료하고, 장치에서 CD-ROM 2개를 삭제해주시면 됩니다. 이 부분은 해도되고 안해도 되고 사용에 문제가 되진 않아요.

 

4. 원격 접속

일단 VM 시스템의 PC 이름을 알맞게 바꿔줍시다.

설정에 들어가서 맨 위에 보이는 이름 바꾸기를 눌러 구분이 쉬운 이름으로 바꿔준 후에 재부팅을 해주세요. VM이라 재부팅이 엄청 빨라요. 아마도 SSD라서

재부팅 후 다시, 설정 -> 시스템 -> 원격 데스크톱을 들어가 원격 데스크톱 기능을 활성화 해주세요.

그다음, 이 VM PC를 내부의 고정 IP를 할당해 줄거예요. 설정 -> 네트워크 및 인터넷 -> 이더넷으로 들어가 주세요. 조금만 내리면 IPv4 주소부터 게이트웨이, DNS서버 등을 확인할 수 있어요. 이 내용을 기록해 주세요. 그 위에 IP 할당: 항목이 자동(DHCP)로 되어 있을건데요, [편집]을 눌러주세요. 수동으로 바꾸고, IPv4를 켜주면 값을 입력할 수 있는데요, 여기에 방금 기록한 값들을 입력할 거예요. 대신 IP 주소를 원하는 고정 IP로 바꿔 기입해 주는거예요.

다음은 공유기에서 포트포워딩을 해줘야 해요... 외부에서 접속은 무조건 포트포워딩이 필수죠. 위에서 고정시킨 IP를 외부 포트와 내부 포트를 이용해 포워딩 할건데요, 원격 데스크톱 연결로 접속되는 내부 포트는 TCP 3389 입니다. 외부 포트는 적당한 5~6만번 대 프라이빗한 포트로 설정해 주세요.

그러면 VM에서 원격으로 접속 가능한 환경이 마련됐어요!  지금까지 TrueNAS의 [<...> Display] 버튼은 찾아 들어가기도 번거로웠고, 이 뷰어는 잠깐만 다른 활동을 하다보면 컨트롤이 불가능해서 매번매번 새로고침을 해줘야 했었는데요, 이제 해방이예요.

이제 원격으로 접속할 외부의 컴퓨터에서 "원격 데스크톱 연결" 을 실행해 줍시다. 윈도우라면 얼추 WinXP 부터 컴퓨터에 계산기와 그림판처럼 기본으로 설치되어있는 유서깊은 기본 유틸리티 입니다.

원격지 컴퓨터의 주소를 입력해 주는데, 우리는 IP주소가 아니라 주소가 있죠. mpn에 등록한 도메인 혹은 ddns 주소와 포트포워딩 했던 포트 번호를 함께 적어 연결을 눌러 줍니다.

암호를 입력하라고 하는데요, 우리 VM은 로컬 계정으로 이용중인 관계로 "다른 옵션 선택"을 눌러 다른 계정 사용을 눌러야 합니다. VM의 로컬 ID와 비밀번호를 입력하고 확인을 누르면 인증서에 대해 묻지만, 신뢰한다고 하면 접속이 됩니다. TrueNAS 내장 뷰어에서는 단축키도 안먹고 몹쓸 뷰어였는데, 이건 엄청 어색하지 않고 빠르고 쓸만해요.

폰이나 태블릿의 경우에도 마찬가지로 접속할 수 있어요.

https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=ko

 

Windows App - Google Play 앱

Windows App allows you to connect to remote PCs and virtual apps.

play.google.com

원래는 전용 리모트 앱이 별도로 있었지만 최근 앱이 통합되었다고 하네요.

위 앱을 통해 PC 커넥션 항목을 추가, PC Name에 원격지 도메인과 포트번호, User Account에 로컬 계정 ID와 패스워드, Friendly Name에 구분하기 좋은 별명을 입력해 주면 접속이 됩니다.

 

 


windows11이 VM에서 이렇게 쓰기 어려운건지 처음 알았네요... 어릴때는 VMWare 가지고 XP를 몇개씩 띄워서 게임 돌리고 했었는데요. 그때 생각하고 덤볐다가 이거 왜이래, 저거 왜저래 찾느라고 구글에서 영어 울렁증 걸려버렸어요...

다음에는 마지막으로 실제 사용을 위해 유지보수 관련된 내용으로 끝맺음을 지어 볼까 합니다.

TrueNAS... 만만하게 봤는데 생각보다 쉽지 않은 녀석이네요. 왜 다들 해놀로지를 쓰는지 이해가 됩니다. 이녀석은 Gemini가 멱살 잡고 캐리 한겁니다.