얼마전 JVM 기반의 미들웨어 상에서 어플케이션의 이주에 관한 프로젝트를 진행했었습니다.
관련자료를 보다가
"Pervasive personal computing in an internet suspend and resume"
이라는 논문을 봤는데 XEN 기반의 프로세스 이주에 관한 논문이더군여 ... 또한 Vmware 의
Vmotion 이라는 기술의 기반이 됐다는데 현재 저 논문의 기술이나 아니면 다른 프로세스 이주에
관한 기술이 Xen 소스에 기본적으로 적용된 것이 있는지 궁금합니다.
댓글 8
-
백창우
2008.11.06 14:19
-
이정우
2008.11.07 09:03
vmotion 기술은 일종의 memory 이동이라고 하는군요. 그래서 시스템을 많이 타는 기능이라고하네요. microsoft에도 이러한 기술이 있다고 하고...아직 릴리즈는 않되었다고 저번 세미나에서 들은 것 같습니다. 테스트때문에 늦어진 거라고 했었던 것 같군요. 그리고 xen 에도 비슷한 내용이 있네요. 자세히 살펴보지는 않았지만 network storage 나오고 하는것 보니까 vmotion 기능과 유사한 것 같아 보이는군요.
target=_blank>http://www.google.co.kr/url?sa=t&source=web&ct=res&cd=2&url=http%3A%2F%2Fstreaming.linux-magazin.de%2Fvirtualization%2Fkgarloff%2Fpdf%2Fkgarloff.pdf&ei=bYETSYOVCImasQOKsPXeBg&usg=AFQjCNEqA4g-8QksRxuKdtx8sRebGJpmqA&sig2=nLpKBc4xVD6LB6tcLGd_Fw
-
백창우
2008.11.07 11:34
충분히 있을거라 봅니다. 그다지 어려운 기술이 아니기 때문에. 제가 말한 관점은 vmotion이 가상화를 이용한 응용의 일부라는 것입니다. 특별히 뭔가를 지원해야 되는것이 아닌 응용이라는거죠. 물론 어느 정도는 VMM에서 지원해주어야겠지만 핵심은 '응용'이라는 거죠. -
이정우
2008.11.07 13:31
네, 알겠습니다. 저는 단지 수연씨가 vmotion 이라는 기능과 유사한 기능이 XEN 소스에 포함되어 있는지 알고 싶어하는 것 같아서 그러한 기능이 있는 것 같으니 xen 소스를 레퍼런스로 사용할 수 있을 것 같다는 의미에서 글을 적었습니다. 뭔가 반론을 제기하자는 의미는 아니었습니다. 오해가 있었던건 아닌가 싶어서 글을 적었습니다. 즐거운 주말되세요. -
이수연
2008.11.07 17:29
저는 프로세스 이주에 관해 Xen에서 지원해주면 좋은 부분이 상당히 많을꺼라고 생각하고 있는데요..
일단은 하나의 프로세스가 이주할때 양단의 시스템의 상태가 동일하지 않은 것이 첫번째 문제이구여.. 프로세스가 사용하는 시스템 자원들 및 프로세스과 연동하고 있는 다른 프로세스에 대한 처리 등을 Xen 자체에서 어느정도 지원해주면 좋지 않을까 하고 생각하고 있습니다. <-- 이게 질문의 이유이지여..
간단히 생각해 보아도 프로세스가 다른 프로세스와 IPC를 사용하거나 Network Connection 을 사용한다고 생각해 볼때 이 자원들을 그대로 끌고 갈수는 없는 노릇이기 때문에 프로세스는 이주한 곳에서 새로 생성하거나 Proxy적인 방법을 쓰거나 하는등의 방법을 써야할 듯한데여.. 개인적인 생각으로는 내부적인 지원없이는 쉽지 않아 보입니다.
물론 위의 질문에서 언급한 논문에서는 이런 시스템의 차이를 가정하지는 않은듯합니다. -
백창우
2008.11.07 19:02
ㅎㅎㅎ 반론이라니요. 첨부해주신 자료는 잘보았습니다.
서로의 관점이 약간씩 달랐다고 생각합니다. 이정우님은 XEN에서의 vmotion 코드가 있는가 없는가에 촛점을 맞춘 반면, 저는 XEN에서 vmotion 지원이 vmotion 기능 지원에 있어 얼마나 의미가 있는가에 촛점을 맞추었던것 같습니다. 제 표현 방식이 다소 불편했다면 사과드립니다.
덕분에 정말 깔끔하게 정리된 자료를 잘 보았습니다. 해당 자료의 링크에 대해서 고맙게 생각합니다.
즐거운 스터디 되십시요.
-
백창우
2008.11.07 19:08
수연님의 말씀하신 내용이 쉽다고 생각하는 것은 아닙니다. 제가 말씀드린것은 VMM의 핵심 기능을 구현하는것 보다는 그 부분의 구현이 쉽다는것입니다.
현재 저희쪽에서 HVM을 구현하고 있는데 그 과정에서 들어가는 이론들이 프로세스를 옮길때도 그대로 적용될수 있으며 그기에 +a로써 말씀하신 내용이 첨가 되면 되지 않을까 쉽은게 제 생각이라서 그렇습니다.
설계 및 구현 관점에서 볼때 말씀하신 내용은 주가 아닌 부라는 것이 HVM을 만들고 있는 입장에서 보는 생각이라서 말씀드린겁니다.
-
이정우
2008.11.07 22:59
일단 제 생각에는 프로세스 재생성은 아닌것 같아요. 왜냐하면 프로세스 재생성의 경우는 메타데이터를 옮기고 프로세스를 메타데이터에 맞게 세팅해 주는 작업이 이어질 것으로 여겨지는데, VMM에서는 그냥 메모리를 통으로 옮겨 버리기 때문에 프로세스를 재생성 시키면 오히려 이주해 온 메모리 정보를 이용할 수 없어질 것입니다. 그리고 프로세스를 재생성시킬 경우는 시스템을 비교적 적게 탈 것이구요, 시스템을 심하게 타는 것이 프로세스를 재생성 시키지 않는다고 판단하는 또 다른 이유입니다. 프로세스를 재생성 시키게 되면 이주해온 쪽의 시스템에 맞춰서 프로세스가 실행될테니까요.
그리고 network connection 의 경우는 가상머신이 자신만의 mac address를 가지고 있기 때문에 이주한다고 해서 바뀌지 않습니다. 때문에 connection은 계속 유지될 수 있습니다. 다만 vmdk 와 같은 것들 ( 용어를 모르겠습니다. 죄송. ) 은 용량이 매우 큰 관계로 옮길 수 없기 때문에 공용 스토리지를 이용해야 한다고 하는군요.
요컨데 VMM의 프로세스 이동(보통, VMM 쪽에서는 이주(migration) 이라고 표현하는 것 같더군요.)이라는 것은 하나의 시스템을 옮기는 과정이기 때문에 수연씨가 원하는 프로세스 이동과는 조금 차이가 있어보입니다.
내일 스터디 하는거죠? ㅋ
.
시스템 내부에 가상화만 지원하는 형태랄까요? 외부까지 넘어가는 것은 XEN의 적용범위를 넘어가는 응용 기술인것 같습니다. XEN을 이용하면 가능하게 되는 그러한 파생기술이요. 그럼으로 XEN내에 포함될수 없겠죠.