Symantec Software Virtualization Solution(SVS)이 언급된 경우는 드물게 있으나
아직 그 후속인 Symantec Workspace Virtualization을
한국 웹에 소개하는 것은 이 포스팅이 최초가 아닌가 한다.


한국에 비교적 널리 알려진 Thinstall이
변경 전 상태 검색, 변경 후 상태 검색을 통해
소프트웨어 설치 시 HDD가 바뀌는 모양을
매번 실행할 때마다 재현해주는 방식이라고 한다면

SWV는 가상의 레이어라는 개념을 소프트웨어에 도입하여,
설치 시 생겨나는 폴더, 파일, 레지스트리 등을 하나로 묶어
레이어라는 개념으로 다루는 것이다.


사용자들은 OS 위에 여러 프로그램을 설치하게 되는데
어떤 프로그램들은 OS를 침범하여 시스템 파일을 덮어쓰기도 하고,
여러 프로그램들을 설치하다보면 DLL 파일을 서로 덮어쓰기도 한다.
심지어는 삭제할 때, 다른 프로그램에서 필요한 파일을 묻지 않고 지워버리기도 한다.
이렇게 설치한 프로그램에 의해 문제가 생기면
그냥 모호하게 '최근에 잘 되던 상태로' 되돌리는 방법 밖에는 없다.
그마저도 제대로 되지 않는다면 결국 포맷을 하고 OS를 다시 설치하게 된다.


한편, SWV를 통해 어플리케이션, 데이터를
OS 위에 직접 설치하는 것이 아닌
독립적인 레이어 묶음으로 관리할 수 있다는 특징으로부터

일반 개인 사용자들에게는
프로그램 설치/삭제가 시스템 파일을 건드리거나 레지스트리를 더럽히거나 하지 않아
윈도우가 무거워진다거나 시스템이 꼬이는 문제를 원천적으로 해결할 수 있고

기업에서는 수많은 직원들의 PC에 패키지화된 스프트웨어들을 동일한 상태로 제공하고
동일하게 업데이트 할 수 있으며, 소프트웨어 고장을 즉시 고칠 수 있어
IT환경의 유지보수가 매우 간단해진다는 장점을 얻을 수 있다.

비록 이전의 SVS에 대한 설명이기는 하나,
이 명료한 데모를 보면, SWV의 간단한 원리와,
어떻게 활용할 수 있는 지를 볼 수 있다.

기본적인 동작 구조의 개념은 다음과 같다.

http://www.symantec.com/connect/sites/default/files/u4829/2220-1.jpg
즉, 레이어를 activate하는가, deactivate하는가에 따라,
filter driver를 통해 레이어를 읽을 지, 아니면 원래의 파일을 읽을 지를 결정하는 방식이다.
레이어의 파일 및 레지스트리는 C:\fslrdr\ 에 숨겨져 있으며
activate시에 시스템 환경변수로 등록되는 경로정보를 따라 이쪽의 파일을 읽게 된다.



기존의 제품은 Altiris Software Virtualization Solution이었고,
시만텍에서 Altiris를 인수한 후에도 SVS라는 이름을 유지하다가

레이어의 기능을 대폭 향상시키며
이름도 SWV로, 버전도 2.x에서 6.x로 크게 바뀌었다.

Dependent layer support
Layer Propery > Dependent layer 에 종속적인 레이어를 추가해두면
레이어를 활성화 시킬 때 함께 활성화 된다.
예를 들어, 자바 프로그램을 레이어로 만들고, JRE도 레이어로 만들어 둔 후
자바 프로그램의 dependent layer로 JRE 레이어를 설정해두면
JRE 레이어가 먼저 활성화 된 후 자바 프로그램 레이어가 활성화 된다.
비활성화나 layer 삭제 시에는 dependency가 작동하지는 않는다.

Layer patching
개인 사용자에게 크게 필요해 보이는 기능은 아니지만
기업 IT Environment에서
bitwise한 변경 부분만을 patching layer로 배포하여
업데이트 시간을 획기적으로 줄일 수 있다.

Layer isolation
레이어가 OS에, 또는 다른 레이어들에게 어떻게 보일 것인가에 대한 설정이 가능해졌다.
이로써, 각기 다른 레이어가 각각 다른 버전의 파일을 유지해야한다거나
서로서로 보이지 않아야 하는 경우를 설정할 수 있다.

예를 들어, 자바 버전 특성을 타는 자바 프로그램 두 개를
동시에 수행하려는 경우 이런 기능이 필요하며
dependent layer와 layer isolation 기능을 함께 사용하여
이런 문제를 해결하는 예시를 참조하면 약간 감을 잡을 수 있을 것 같다.


Multi-user (application virtualization for TS/Citrix)
다수의 사용자가 터미널 서버를 통해 가상 레이어 프로그램을 실행할 때,
사용자별로 고유한 설정을 지닌 채로 프로그램을 사용할 수 있어,
Server based computing을 구현한다.

Run normally installed applications through a virtual layer
이것은 사용하기에 따라서 상당히 획기적인 기능인데
가상 레이어를 통해서 일반 실행파일을 실행할 수 있다.
심지어는 빈 레이어를 하나 만들고,
레이어를 통해 바이러스 감염된 프로그램을 실행해도
레이어만 deactivate하면 바이러스는 사라진다.
이처럼 SandboxIE처럼 사용할 수 있게 되었다.

Clone a virtual layer
가상 레이어를 복사하는 기능인데, 버전이 달라지는 갈래길을 만들 수 있게 되었다.

Create new reset points
reset은 항상 설치 초기 상태로만 가능하여 SVS에서 매우 불만족스러웠던 부분인데
원하는 상태에서 reset point를 지정할 수 있게 됨에 따라서
좀 더 유연하게 레이어를 사용할 수 있게 되었다.

궁극적으로는 cloning이나 reset point 기능 보다는
분기가 지원되는 multi level snapshot 기능이 생겨야 할 것이다.

많은 기능이 생겨나고 기존의 기능이 향상되었음에도 불구하고
여전히 64bit를 지원하지 않고 있으며
대체 무엇을 해야 할 지 막막하게 만드는 불친절한 인터페이스도 그대로이다.
새로운 레이어를 생성할 때, 모든 layer를 deactivate 해야 하는 구조적 제약도 여전하다.

처음에는 불친절한 인터페이스 때문에 이 프로그램의 진가를 알기 어렵지만
이 뛰어난 사상과 동작방식을 이해하게 되고나면
이렇게 당연한 기능이 왜 OS에 포함되지 않았는가 오히려 의문이 든다.
Posted by in0de
,