Operating system 在操作系统虚拟机上使用JVM的好处?

Operating system 在操作系统虚拟机上使用JVM的好处?,operating-system,jvm,vmware,sysadmin,Operating System,Jvm,Vmware,Sysadmin,我看到许多部署中,IT组只在VM(vmware,&c)实例中的JVM应用程序堆栈中有效运行 我想JVM是一个形式化的VM:在另一个VM中运行java应用程序栈有什么实际的好处? < P>在同一个(真实的或虚拟的)机器中的两个JVM实例不会完全隔离:它们不能同时在相同的已知编号端口上监听套接字,如果它们都在同一个文件系统中写入,它们可能会相互干扰,等等 使用操作系统级别的虚拟机(vmware或其他)确实可以保证与物理上独立的系统一样的隔离,这是一个完全不同的主张。这是一个不幸的术语冲突 不幸的是,

我看到许多部署中,IT组只在VM(vmware,&c)实例中的JVM应用程序堆栈中有效运行


我想JVM是一个形式化的VM:在另一个VM中运行java应用程序栈有什么实际的好处?

< P>在同一个(真实的或虚拟的)机器中的两个JVM实例不会完全隔离:它们不能同时在相同的已知编号端口上监听套接字,如果它们都在同一个文件系统中写入,它们可能会相互干扰,等等

使用操作系统级别的虚拟机(vmware或其他)确实可以保证与物理上独立的系统一样的隔离,这是一个完全不同的主张。

这是一个不幸的术语冲突 不幸的是,这是两个不同的术语,它们使用相同的英语单词,但只有一个相当抽象的联系

IBM首先使用了“虚拟机”这个术语,所以我想我们不能将它重命名为“虚拟服务器”之类的东西

太糟糕了,“软件框架”的首字母中没有VM。如果您这样看待JVM,那么很明显,您实际上只是在VM中运行一个框架,而不是在同一类型的东西中运行一个框架

因此,真正的虚拟机可以随意地提供超级用户shell帐户、ssh访问、软件安装权限等等

在另一个VM中运行Java应用程序堆栈的真正好处是什么

通过这样做,您的JVM将在虚拟化硬件上运行,您可以修改这些硬件并与其他虚拟机并行运行。这是一种将大型服务器分割成“共享”的好方法,您可以根据需要进行分配

(编辑:我直接在回答中回答OP的评论)


我明白你的意思,但是为什么不能在主机操作系统上做与单独进程完全相同的事情呢


我可以提到,一个客户可以运行另一个操作系统,但这不是最重要的部分。正如在另一个答案中指出的,最大的区别在于虚拟机与其他虚拟机是隔离的,它是真正的专用环境。端口是一个很好的例子,但我更喜欢这样来说明:另一个进程不会占用“您的”CPU周期。这是一个非常重要的区别,尤其是对于通常不喜欢共享资源的IT团队。相反,您可以根据需要精确地调整虚拟机的大小(可能是动态的),并根据IT团队的实际使用情况对其进行调整。这就是IMO使资源共享成为可能(从而降低成本)的原因。

我明白你的意思,但为什么一个人不能在主机操作系统上做与单独进程完全相同的事情呢?我在回答中回答了这个问题是的,请叫我old,但在这种情况下,VM在我的术语中仍然是虚拟机。出于好奇而发问,对于端口冲突,为什么不使用虚拟网络接口而不是整个操作系统本身?@Xepoch,如果您只需要隔离某些特定方面的话(网络、文件系统或其他特定设备等),并且可以获得一个专门针对您关心的方面的轻量级解决方案,这很好;但一旦您开始积累多个这样的点解决方案,轻量级方面很快就会消失,而操作系统级虚拟化可以保证“吃得饱”的自助餐一个固定的、合理的价格的隔离解决方案!-)我正在考虑我的下一个项目,在操作系统级别限制JVM资源,以达到同样的效果:)