文档库 最新最全的文档下载
当前位置:文档库 › Elasticsearch Java虚拟机配置详解

Elasticsearch Java虚拟机配置详解

Elasticsearch Java虚拟机配置详解
Elasticsearch Java虚拟机配置详解

JVM参数Elasticsearch默认值Environment变量

-Xms 256m ES_MIN_MEM

-Xmx 1g ES_MAX_MEM

-Xms and -Xmx ES_HEAP_SIZE

-Xmn ES_HEAP_NEWSIZE -XX:MaxDirectMemorySize ES_DIRECT_SIZE

-Xss 256k

-XX:UseParNewGC +

-XX:UseConcMarkSweepGC +

-XX:CMSInitiatingOccupancyFraction 75

-XX:UseCMSInitiatingOccupancyOnly +

-XX:UseCondCardMark (commented out)

首先你注意到的是,Elasticsearch预留了256M到1GB的堆内存。

这个设置适用于开发和演示环境。开发人员只需要简单的解压发行包,再执

行./bin/elasticsearch -f就完成了Elasticsearch的安装。当然这点对于开发来说非常棒,并且在很多场景下都能工作,但是当你需要更多内存来降低Elasticsearch负载的时候就不行了,你需要比2GB RAM更多的可用内存。

ES_MIN_MEM/ES_MAX_MEM是控制堆大小的配置。新的ES_HEAP_SIZE变量是一个更为便利的选择,因为将堆的初始大小和最大值设为相同。也推荐在分配堆内存时尽可能不要用内存的碎片。内存碎片对于性能优化来说非常不利。

ES_HEAP_NEWSIZE是可选参数,它控制堆的子集大小,也就是新生代的大小。

ES_DIRECT_SIZE控制本机直接内存大小,即JVM管理NIO框架中使用的数据区域大小。本机直接内存可以被映射到虚拟地址空间上,这样在64位的机器上更高效,因为可以规避文件系统缓冲。Elasticsearch对本机直接内存没有限制(可能导致OOM)。

由于历史原因Java虚拟机有多个垃圾收集器。可以通过以下的JVM参数组合启用:

JVM parameter Garbage collector

-XX:+UseSerialGC serial collector

-XX:+UseParallelGC parallel collector

-XX:+UseParallelOldGC Parallel compacting collector

-XX:+UseConcMarkSweepGC Concurrent-Mark-Sweep (CMS) collector

-XX:+UseG1GC Garbage-First collector (G1)

UseParNewGC和UseConcMarkSweepGC组合启用垃圾收集器的并发多线程模式。UseConcMarkSweepGC自动选择UseParNewGC模式并禁用串行收集器(Serial collector)。在Java6中这是默认行为。

CMSInitiatingOccupancyFraction提炼了一种CMS(Concurrent-Mark-Sweep)垃圾收集设置;它将旧生代触发垃圾收集的阀值设为75.旧生代的大小是堆大小减去新生代大小。这告诉JVM当堆内容达到75%时启用垃圾收集。这是个估计的值,因为越小的堆可能需要越早启动GC。

UseCondCardMark将在垃圾收集器的card table使用时,在marking之前进行额外的判断,避免冗余的store操作。UseCondCardMark不影响Garbage-First收集器。强烈推荐在高并发场景下配置这个参数(规避card table marking技术在高并发场景下的降低吞吐量的负面作用)。在ElasticSearch中,这个参数是被注释掉的。

有些配置可以参考诸如Apache Cassandra项目,他们在JVM上有类似的需求。

总而言之,ElastciSearch配置上推荐:

1. 不采用自动的堆内存配置,将堆大小默认最大值设为1GB

2.调整触发垃圾收集的阀值,比如将gc设为75%堆大小的时候触发,这样不会影响性能。

3.禁用Java7默认的G1收集器,前提是你的ElasticSearch跑在Java7u4以上的版本上。JVM进程的内存结果

JVM内存由几部分组成:

Java代码本身:包括内部代码、数据、接口,调试和监控代理或者字节码指令

非堆内存:用于加载类

栈内存:用于为每个线程存储本地变量和操作数

堆内存:用于存放对象引用和对象本身

直接缓冲区:用于缓冲I/O数据

堆内存的大小设置非常重要,因为Java的运行依赖于合理的堆大小,并且JVM需要从操作系统那获取有限的堆内存,用于支撑整个JVM生命周期。

如果堆太小,垃圾回收就会频繁发生,发生OOM的几率会很大。

如果堆太大,垃圾回收会延迟,但是一旦回收,就需要处理大量的存活堆数据。并且,操作系统的压力也会变大,因为JVM进程需要更大的堆,产生换页的可能性就会提高。

注意,使用CMS垃圾收集器,Java不会把内存还给操作系统,因此配置合理的堆初始值和最大值就非常重要。

非堆内存由Java应用自动分配。没有什么参数控制这里的大小,这是由Java应用程序代码

自己决定的。

栈内存在每个线程中分配,在Elasticsearch中,每个线程大小必须由128K增加到256K,因为Java7比Java6需要更大的栈内存,这是由于Java7支持新的编程语言特征来利用栈空间。比如,引入了continuations模型,编程语言的一个著名概念。Continuations模型对于

协同程序、绿色线程(green thread)、纤程(fiber)非常有用。当实现非阻塞I/O时,一个

大的优势是,代码可以根据线程实际使用情况编写,但是运行时仍然在后台采用非阻塞I/O。Elasticsearch使用了多个线程池,因为Netty I/O框架和Guava是Elasticsearch的基础组件,因此在用Java7时,可以考虑进一步挖掘优化线程的特性。

发挥增加栈空间大小的优势还是有挑战的,因为不同的操作系统、不同的CPU架构,甚至在

不同的JVM版本之间,栈空间的消耗不是容易比较的。取决于CPU架构和操作系统,JVM

的栈空间大小是内建的。他们是否在所有场景下都适合?例如Sloaris Sparc 64位的JVM Xss 默认为512K,因为有更大地址指针,Sloaris X86为320K。Linux降为256K。Windows 32

位Java6默认320K,Windows 64位则为1024K。

大堆的挑战

今天,几GB的内存是很常见的。但是在不久以前,系统管理员还在为多几G的内存需求泪

流满面。

Java垃圾收集器是随着2006年的Java6的出现而显著改进的。从那以后,可以并发执行多

任务,并且减少了GC停顿几率: stop - the - world阶段。CMS算法是革命性的,多任务,

并发,不需要移动的GC。但是不幸的是,对于堆的存活数据量来说,它是不可扩展的。Prateek Khanna 和 Aaron Morton给出了CMS垃圾收集器能够处理的堆规模的数字。

避免Stop-the-world阶段

我们已经学习了Elasticsearch如何配置CMS垃圾收集器。但这并不能组织长时间的GC停顿,它只是降低了发生的几率。CMS是一个低停顿几率的收集器,但是仍然有一些边界情况。当

堆上有MB级别的大数组,或者其他一些特殊的场景,CMS可能比预期要花费更多的时间。

MB级别数组的创建在Lucene segment-based索引合并时是很常见的。如果你希望降低CMS 的额外负载,就需要调整Lucene合并阶段的段数量,使用参数

index.merge.policy.segments_per_tier

减少换页

大堆的风险在于内存压力上。注意,如果Java JVM在处理大堆时,这部分内存对于系统其它部分来说是不可用的。如果内存吃紧,操作系统会进行换页,并且,在紧急情况下,当所有其他方式回收内存都失败时,会强制杀掉进程。如果换页发生,整个系统的性能会下降,自然GC的性能也跟着下降。所以,不要给堆分配太多的内存。

垃圾收集器的选择

从Java JDK 7u4开始,Garbage-First(G1)收集器是Java7默认的垃圾收集器。它适用于多核的机器以及大内存。它一方面降低了停顿时间,另一方面增加了停顿的次数。整个堆的操作,例如全局标记,是在应用线程中并发执行的。这会防止随着堆或存活数据大小的变化,中断时间也成比例的变化。

G1收集器目标是获取更高的吞吐量,而不是速度。在以下情况下,它能运行的很好:

1. 存活数据占用了超过50%的Java堆

2. 对象分配比例或者promotion会有明显的变化

3. 不希望gc或者compaction停顿时间长(超过0.5至1s)

注意,如果使用G1垃圾收集器,堆不再使用的内存可能会被归还给操作系统

G1垃圾收集器的不足是CPU使用率越高,应用性能越差。因此,如果在内存足够和CPU能力一般的情况下,CMS可能更胜一筹。

对于Elasticsearch来说,G1意味着没有长时间的stop-the-world阶段,以及更灵活的内存管理,因为buffer memory和系统I/O缓存能更充分的利用机器内存资源。代价就是小成本的最大化性能,因为G1利用了更多CPU资源。

性能调优策略

你读这篇博文因为你希望在性能调优上得到一些启示:

1. 清楚了解你的性能目标。你希望最大化速度,还是最大化吞吐量?

2. 记录任何事情(log everything),收集统计数据,阅读日志、分析事件来诊断配置

3. 选择你调整的目标(最大化性能还是最大化吞吐量)

4. 计划你的调整

5. 应用你的新配置

6. 监控新配置后的系统

7. 如果新配置没有改善你的处境,重复上面的一系列动作,反复尝试

Elasticsearch垃圾收集日志格式

Elasticsearch长时间GC下warns级别的日志如下所示:

[2012-11-26 18:13:53,166][WARN ][monitor.jvm ] [Ectokid] [gc][ParNew][1135087][11248] duration [2.6m], collections [1]/[2.7m], total [2.6m]/[6.8m], memory [2.4gb]->[2.3gb]/[3.8gb],

all_pools {[Code Cache] [13.7mb]->[13.7mb]/[48mb]}{[Par Eden Space] [109.6mb]-

>[15.4mb]/[1gb]}{[Par Survivor Space] [136.5mb]->[0b]/[136.5mb]}{[CMS Old Gen] [2.1gb]->[2.3gb]/[2.6gb]}{[CMS Perm Gen] [35.1mb]->[34.9mb]/[82mb]}

JvmMonitorService类中有相关的使用方式:

Logfile Explanation

gc 运行中的gc

ParNew new parallel garbage collector duration 2.6m gc时间为2.6分钟

collections [1]/[2.7m] 在跑一个收集,共花2.7分钟

memory [2.4gb]->[2.3gb]/[3.8gb] 内存消耗, 开始是2.4gb, 现在是2.3gb, 共有

3.8gb内存

Code Cache [13.7mb]->[13.7mb]/[48mb] code cache占用内存

Par Eden Space [109.6mb]-

>[15.4mb]/[1gb]

Par Eden Space占用内存

Par Survivor Space [136.5mb]-

>[0b]/[136.5mb]

Par Survivor Space占用内存CMS Old Gen [2.1gb]->[2.3gb]/[2.6gb] CMS Old Gen占用内存CMS Perm Gen [35.1mb]-

>[34.9mb]/[82mb]

CMS Perm Gen占用内存

JvmMonitorSer

一些建议

1. 不要在Java 6u22之前的发布版本中跑Elasticsearch。有内存方面的bug。那些超过两三年的bug和缺陷会妨碍Elasticsearch的正常运行。与旧的OpenJDK 6相比,更推荐

Sun/Oracle的版本,因为后者修复了很多bug。

2.放弃Java6,转到Java7。Oracle宣称Java6更新到2013年2月结束。考虑到Elasticsearch还是一个相对新的软件,应该使用更新的技术来提升性能。尽量从JVM中挤压

性能。检查操作系统的版本。在最新版本的操作系统中运行,有助于你的Java运行环境达到

最佳性能。

3. 定期更新Java运行环境。平均一个季度一次。告诉sa你需要及时更新Java版本,以获取Java性能的提升。

4. 从小到大。先在Elasticsearch单节点上进行开发。但是不要忘了Elasticsearch分布式的强大功能。单节点不能模拟生产环境的特征,至少需要3个节点进行开发测试。

5. 在调整JVM之前先做一下性能测试。对你的系统建立性能基线。调整测试时候的节点数量。如果索引时候负载很高,你可能需要降低Elasticsearch索引时候占用的堆大小,通过

index.merge.policy.segments_per_tierparameter参数调整段的合并。

6. 调整前清楚你的性能目标,然后决定是调整速度还是吞吐量。

7. 启用日志以便更好的进行诊断。在优化系统前进行小心的评估。

8. 如果使用CMS垃圾收集器,你可能需要加上合理的 -XX:CMSWaitDuration 参数。

9. 如果你的堆超过6-8GB,超过了CMS垃圾收集器设计容量,你会遇到长时间的stop-the-world阶段,你有几个方案:调整CMSInitiatingOccupancyFraction参数降低长时间GC的几率减少最大堆的大小;启用G1垃圾收集器。

10. 学习垃圾收集调优艺术。如果你想精通的话,列出可用的JVM选项,在java命令中加入java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version,然后调优。

VMware网络虚拟化产品NSX安装配置指南

NSX for vSphere Getting Started Guide VMware NSX for vSphere, release 6.0.x July 21, 2014 Table of Contents NSX for vSphere Getting Started Guide (1) Introduction (3) Installation of NSX for vSphere (4) Infrastructure requirements for NSX-v (4) NSX-v Installation overview (6) Step 1: Install NSX Manager (6) Step 2: Install the NSX Controller Cluster (8) Step 3: Prepare ESXi hosts for NSX (10) L2 Logical Switching (14) Goal of the L2 logical switching lab (14) Create four Logical Switches (14) Add VMs on Web/App/DB Logical Switches (15) Validate that VMs on the same Logical Switch can communicate (16) Distributed Logical Routing (18) Goal of the logical routing lab (18) Create a single Distributed Logical Router (18) Validate that VMs in the different Logical Switches can communicate (21) Distributed Firewalling (23) Goal of the Distributed Firewalling lab (23) Create the Distributed Firewall rules (23) Validate the Distributed Firewall rules (25) Logical Centralized Routing (26)

Windows 7中虚拟机VMware无线网络设置

默认情况下,VMware Workstation的虚拟网卡使用 192.168.1.0 ---- 192.168.254.0 范围中的(子网掩码为 255.255.255.0)两个网段(对应于第一块网卡 VMnet1 和第二块网卡 VMnet8)。由于每块网卡使用的网段是随机的,不固定。在用VMware做网络实验时,很不方便,一般把VMware使用的网段固定在一定范围。 机器配置:Windows7 中文家庭版,64位系统,Dell笔记本,虚拟机Windows server 2003 中文版SP2 网络适配器如下 Dell Wireless 1397 WLAN Mini-Card Microsoft Virtual WiFi Miniport Adapter Realtek PCIe FE Family controller 成功联网的前提: 首先,设备管理器里面要有VMware Virtual Ethernet Adapter for VMnet1和VMware Virtual Ethernet Adapter for VMnet8(其实只需要8,不需要1也行)。且显示无问题。 其次,控制面板\网络和 Internet\网络连接里面,你的网卡属性里面,VMware Bridge Protocol协议需要打钩(注意是你的物理网卡,而不是虚拟网卡的属性,虚拟网卡可以不打勾)如图3 另外,系统服务中没有更改默认VMware所续启动的三个必要服务。 如果上述必要设置有问题,只要重新运行一下安装程序,选择修复安装,一般问题都会解决。 设置虚拟机联网的详细步骤:(以下设置最好是都用管理员身份运行) 1、打开开始菜单,所有程序,VMware,Virtual Network Editor 2、打开NAT标签页,把VMnet Host的下拉菜单设置成VMnet8,记下下面的Gateway IP Address,比如说我的就是192.168.32.2 3、打开DHCP标签页,选择下面列表中的VMnet8,并点击列表右下角的Properties按钮,记下Start IP Address和End IP Address,比如说我的就是192.168.32.128和192.168.32.254 4、关闭VMware,Virtual Network Editor,运行VMware Workstation,更改虚拟机的硬件,设置网卡的运行方式为第二种(NAT:Used to share the host's IP address 5、启动虚拟机,比如说我的是Windows server 2003 中文版,并打开控制面板\网络和Internet连接\网络连接 6、更改本地连接属性里面的TCP/IP属性,选择使用下面的IP地址,其中,IP地址填刚才DHCP页面里面记下的两个IP地址中的随便一个IP,也就是说从192.168.40.128到192.168.32.254,随便选一个,我选的是192.168.32.202。子网掩码是自动填的255.255.255.0,默认网关和下面的DNS是填刚才NAT 页面记下的IP,比如我的是192.168.32.2。 7、打开浏览器,输入 https://www.wendangku.net/doc/2910586216.html,/ ,能上网了。 而我的情况还比较特殊,有两台虚拟机,并且无限上网使用了代理 https://www.wendangku.net/doc/2910586216.html, 一台:192.168.32.202 数据库服务器 一台:192.168.32.203 应用程序和前端服务器 203与202不同的地方时 203 的多配置一个DNS,ip位202的 这样以后,

Java虚拟机工作原理(JVM)

As the Java V irtual Machine is a stack-based machine, almost all of its instructions involve the operand stack in some way. Most instructions push values, pop values, or both as they perform their functions. Java虚拟机是基于栈的(stack-based machine)。几乎所有的java虚拟机的指令,都与操作数栈(operand stack)有关.绝大多数指令都会在执行自己功能的时候进行入栈、出栈操作。 1Java体系结构介绍 Javaís architecture arises out of four distinct but interrelated technologies, each of which is defined by a separate specification from Sun Microsystems: 1.1 Java体系结构包括哪几部分? Java体系结构包括4个独立但相关的技术 the Java programming language →程序设计语言 the Java class file format →字节码文件格式 the Java Application Programming Interface→应用编程接口 the Java V irtual Machine →虚拟机 1.2 什么是JVM java虚拟机和java API组成了java运行时。 1.3 JVM的主要任务。 Java虚拟机的主要任务是装载class文件并执行其中的字节码。 Java虚拟机包含了一个类装载器。 类装载器的体系结构 二种类装载器 启动类装载器 用户定义的类装载器 启动类装载器是JVM实现的一部分 当被装载的类引用另外一个类时,JVM就是使用装载第一个类的类装载器装载被引用的类。 1.4 为什么java容易被反编译? ●因为java程序是动态连接的。从一个类到另一个类的引用是符号化的。在静态连接的 可执行程序中。类之间的引用只是直接的指针或者偏移量。相反在java的class文件中,指向另一个类的引用通过字符串清楚的标明了所指向的这个类的名字。

java虚拟机详解 免费

深入理解JVM 1 Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示: 图1 Java四个方面的关系 运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。从上图也可以看出Java平台由Java虚拟机和Java应用程序接口搭建,Java 语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。这个平台的结构如下图所示:

在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Java操作系统, 其中依赖于平台的部分称为适配器;JVM 通过移植接口在具体的平台和操作系统上实现;在JVM 的上方是Java的基本类库和扩展类库以及它们的API,利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离,从而实现了Java 的平台无关性。 那么到底什么是Java虚拟机(JVM)呢?通常我们谈论JVM时,我们的意思可能是: 1. 对JVM规范的的比较抽象的说明; 2. 对JVM的具体实现; 3. 在程序运行期间所生成的一个JVM实例。 对JVM规范的的抽象说明是一些概念的集合,它们已经在书《The Java Virtual Machine Specification》(《Java虚拟机规范》)中被详细地描述了;对JVM的具体实现要么是软件,要么是软件和硬件的组合,它已经被许多生产厂商所实现,并存在于多种平台之上;运行Java程序的任务由JVM的运行期实例单个承担。在本文中我们所讨论的Java虚拟机(JVM)主要针对第三种情况而言。它可以被看成一个想象中的机器,在实际的计算机上通过软件模拟来实现,有自己想象中的硬件,如处理器、堆栈、寄存器等,还有自己相应的指令系统。 JVM在它的生存周期中有一个明确的任务,那就是运行Java程序,因此当Java程序启动的时候,就产生JVM的一个实例;当程序运行结束的时候,该实例也跟着消失了。下面我们从JVM的体系结构和它的运行过程这两个方面来对它进行比较深入的研究。 2 Java虚拟机的体系结构 刚才已经提到,JVM可以由不同的厂商来实现。由于厂商的不同必然导致JVM在实现上的一些不同,然而JVM还是可以实现跨平台的特性,这就要归功于设计JVM时的体系结构了。 我们知道,一个JVM实例的行为不光是它自己的事,还涉及到它的子系统、存储区域、数据类型和指令这些部分,它们描述了JVM的一个抽象的内部体系结构,其目的不光规定实现JVM时它内部的体系结构,更重要的是提供了一种方式,用于严格定义实现时的外部行为。每个JVM都有两种机制,一个是装载具有合适名称的类(类或是接口),叫做类装载子系统;另外的一个负责执行包含在已装载的类或接口中的指令,叫做运行引擎。每个JVM又包括方法区、堆、Java栈、程序计数器和本地方法栈这五个部分,这几个部分和类装载机制与运行引擎机制一起组成的体系结构图为:

Elasticsearch Java虚拟机配置详解

JVM参数Elasticsearch默认值Environment变量 -Xms 256m ES_MIN_MEM -Xmx 1g ES_MAX_MEM -Xms and -Xmx ES_HEAP_SIZE -Xmn ES_HEAP_NEWSIZE -XX:MaxDirectMemorySize ES_DIRECT_SIZE -Xss 256k -XX:UseParNewGC + -XX:UseConcMarkSweepGC + -XX:CMSInitiatingOccupancyFraction 75 -XX:UseCMSInitiatingOccupancyOnly + -XX:UseCondCardMark (commented out) 首先你注意到的是,Elasticsearch预留了256M到1GB的堆内存。 这个设置适用于开发和演示环境。开发人员只需要简单的解压发行包,再执 行./bin/elasticsearch -f就完成了Elasticsearch的安装。当然这点对于开发来说非常棒,并且在很多场景下都能工作,但是当你需要更多内存来降低Elasticsearch负载的时候就不行了,你需要比2GB RAM更多的可用内存。

ES_MIN_MEM/ES_MAX_MEM是控制堆大小的配置。新的ES_HEAP_SIZE变量是一个更为便利的选择,因为将堆的初始大小和最大值设为相同。也推荐在分配堆内存时尽可能不要用内存的碎片。内存碎片对于性能优化来说非常不利。 ES_HEAP_NEWSIZE是可选参数,它控制堆的子集大小,也就是新生代的大小。 ES_DIRECT_SIZE控制本机直接内存大小,即JVM管理NIO框架中使用的数据区域大小。本机直接内存可以被映射到虚拟地址空间上,这样在64位的机器上更高效,因为可以规避文件系统缓冲。Elasticsearch对本机直接内存没有限制(可能导致OOM)。 由于历史原因Java虚拟机有多个垃圾收集器。可以通过以下的JVM参数组合启用: JVM parameter Garbage collector -XX:+UseSerialGC serial collector -XX:+UseParallelGC parallel collector -XX:+UseParallelOldGC Parallel compacting collector -XX:+UseConcMarkSweepGC Concurrent-Mark-Sweep (CMS) collector -XX:+UseG1GC Garbage-First collector (G1) UseParNewGC和UseConcMarkSweepGC组合启用垃圾收集器的并发多线程模式。UseConcMarkSweepGC自动选择UseParNewGC模式并禁用串行收集器(Serial collector)。在Java6中这是默认行为。 CMSInitiatingOccupancyFraction提炼了一种CMS(Concurrent-Mark-Sweep)垃圾收集设置;它将旧生代触发垃圾收集的阀值设为75.旧生代的大小是堆大小减去新生代大小。这告诉JVM当堆内容达到75%时启用垃圾收集。这是个估计的值,因为越小的堆可能需要越早启动GC。 UseCondCardMark将在垃圾收集器的card table使用时,在marking之前进行额外的判断,避免冗余的store操作。UseCondCardMark不影响Garbage-First收集器。强烈推荐在高并发场景下配置这个参数(规避card table marking技术在高并发场景下的降低吞吐量的负面作用)。在ElasticSearch中,这个参数是被注释掉的。 有些配置可以参考诸如Apache Cassandra项目,他们在JVM上有类似的需求。 总而言之,ElastciSearch配置上推荐: 1. 不采用自动的堆内存配置,将堆大小默认最大值设为1GB 2.调整触发垃圾收集的阀值,比如将gc设为75%堆大小的时候触发,这样不会影响性能。 3.禁用Java7默认的G1收集器,前提是你的ElasticSearch跑在Java7u4以上的版本上。JVM进程的内存结果 JVM内存由几部分组成: Java代码本身:包括内部代码、数据、接口,调试和监控代理或者字节码指令 非堆内存:用于加载类 栈内存:用于为每个线程存储本地变量和操作数

Linux虚拟机NAT网络连接设置

2010-04-17 Linux虚拟机NAT网络连接设置 文章分类:操作系统 1.打开VMware,Fedora 4关机状态,在Devices区域中鼠标双击Ethernet,选择"NAT"。 2.2.在VMware中,Edit-〉Virtual Network Settings,看到如下两张图的设置,说明VMnet8启用。VMnet8的启用说明VMware软件虚拟了一台网络交换机,带有DHCP功能,本身起到NAT服务器的作用。 请注意第二张图VMnet8的Gateway IP Address。

3.打开Fedora 4虚拟机,以root账号登入系统,如果是图形界面的话,请按"Ctrl+Alt+F1"切换到终端命令行模式。

4.设置主机名称与默认网关(通过vi编辑器打开/etc/sysconfig/network文件)[root@hostname root]# vi /etc/sysconfig/network 按照下图设置,注意HOSTNAME这里设置成https://www.wendangku.net/doc/2910586216.html,,配置完成后,重启机器后hostname会变成daquan。 5.设置网卡参数(通过vi编辑器打开 /etc/sysconfig/network-scripts/ifcfg-eth0文件) [root@hostname root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 按照下图设置即可

6.设置DNS主机的IP(通过vi编辑器打开/etc/resolv.conf文件) [root@hostname root]# vi /etc/resolv.conf 下图无需设置,大家看一下即可,如果不是如下,重新启动机器应该就会自动设置,因为已经设置为DHCP,nameserver会自动设置成 VMnet8的Gateway IP Address,nameserver就起到Windows下的DNS Server作用,这种设置类似于Windows域环境下的DNS转发器,说明这个地址会自动转发DNS查询到主机的DNS。 7.重新启动网络设置 因为更改了/etc/sysconfig/network这个文件,按照如下三个命令重新启动,不行就reboot虚拟机。 参看下图

VMware虚拟机安装、配置、搭建网络全程图解

VMware Workstation是VMware公司的专业虚拟机软件,可以虚拟现有任何操作系统,而且使用简单、容易上手。现如今有很多人都拥有电脑,但多数人都只有一两台,想组建一个自己的局域网或者是做个小规模的实验一台机器是不够的,最少也要个两三台,可为了这再买电脑就太不值了。好在有许多虚拟机可以帮我们解决这个问题。虚拟机可以在一台电脑上虚拟出很多的主机,只要真实主机的配置足够就可以。 下面将把VMware Workstation软件的完整使用过程分为:建立一个新的虚拟机、配置安装好的虚拟机、配置虚拟机的网络这三个部分,使用的是最新的VMware4。 一、安装建立一个新的虚拟机 首先让大家看看VMware的界面 2.我们来建立一个新的虚拟机向导 3.选择普通安装或者是自定义。这里大家选自定义,后面可以自行规划设备,内存和硬盘容量

4.选择想要虚拟的系统 5.给虚拟机起个名字,指定它的存放位置

6.分配内存大小 7.网络设置模式。这里比较复杂,安装的时候可以先随便选一个,装好后也可以改,但千万不要选最后一个,否则你将无法创建网络了。关于这三者之间的区别和怎样使用虚拟机连接到internet会在后面介绍。

8.创建一块磁盘。当第一次建立虚拟机时,请选择第一项,第二项适用于建立第二个或更多虚拟机,即使用已经建立好的虚拟机磁盘,这样可以减少虚拟机占用的真实磁盘空间。第三项则允许虚拟机直接读写磁盘空间,比较危险,所以适合熟悉使用磁盘的高级用户,如果操作失误会把真实磁盘里的内容删掉的。 9.设置虚拟机磁盘容量。第一项可以定义磁盘大小。第二项允许虚拟机无限使用磁盘空间,但需要真实磁盘足够大。第三项则限制了每块虚拟磁盘的最大容量为2G。

深入理解Java虚拟机笔记(带目录)

目录 1.虚拟机内存结构 (1) 2.对象在内存中的布局 (3) 3.判断对象是否死亡 (4) 4.引用的4中情况 (4) 5.垃圾收集算法 (5) 6.HotSpot虚拟机算法实现 (6) 7.如何在GC发生时让所有线程都要附近的安全点停下 (6) 8.垃圾收集器 (7) 9.GC日志 (9) 10.内存分配 (10) 11.Class类文件的结构 (10) 12.类的生命周期 (13) 13.类加载器 (15) 14.运行时栈帧的结构 (16) 15. 方法调用 (18) 16. 分派 (19) 17.虚方法表 (19) 18.Java内存模型(JMM) (19) 19.内存间的交互 (20) 20.volatile变量 (20) 21.原子性 (21) 22.可见性 (22) 23.有序性 (22) 24.先行发生原则 (22) 25.Java线程调度 (23) 26.线程的状态 (24) 27.线程安全 (25) 28.线程安全的实现方法 (26) 29.锁优化 (27) 30.编译优化技术 (29) 1.虚拟机内存结构 线程私有:虚拟机栈,本地方法栈,程序计数器 线程共享:堆,方法区(包括运行时常量池)

1.1程序计数器 当前程序锁执行的字节码行号指示器,记录下一条需要执行的 指令。 1.2虚拟机栈 生命周期与线程相同,每个方法在执行时都会创建一个栈帧。 方法执行的过程,就是栈帧入栈到出栈的过程。 栈帧用于存放局部变量表,操作数栈,动态链接,方法出口等 信息。 局部变量表存放了编译期可知的基本数据类型和对象引用。1.3 本地方法栈 为虚拟机使用到的Native方法服务。 目前HotSpot虚拟机将本地方法栈和虚拟机栈合二为一。 1.4堆 存放对象实例,所有线程共享。 1.5 方法区(永久代) 存放被虚拟机加载的类信息,常量,静态变量,即时编译器编 译后的代码等。

VMWare虚拟机上网设置保证你能连接网络

个人建议除了能用下述以不同方式实现 VMWare 上网外,最好能了解VMWare 的三个虚拟交换机的工作原理,即 NAT、桥接、Host-Only 三种方式下的 VMWare 的网络工作原理,网上有很多相关文章,这里不再详说。(Host-Only已测试完毕,稍后将补充完整) 一、外网篇 [ 1 ] NAT 首先确认主机已经连接网络可以正常上网,设置虚拟机网络连接方式为“NAT”,然后启动虚拟机,在虚拟系统里打开“网上邻居”的属性,双击“Internet 协议(TCP/IP)”,在弹出框中选择“自动获得 IP 地址”和“自动获得 DNS 服务器地址”,点“确定”,修复一下虚拟系统的“本地连接”就可以上网了。 [ 2 ] 桥接 在外网虚拟机使用桥接上网,只需启用主机的宽带连接共享功能即可,但是启用宽带连接共享的主机必须启用 DHCP Client 和 RPC 服务。 如果 DHCP Client 启动失败,可以打开“设备管理器”,点击“查看 - 显示隐藏的设备”,然后展开列表中的“非即插即用驱动

程序”,查看其下的 IPSEC driver 和 NetBIOS over TCP/IP 是否被停用,将其启用并重启即可。 1、断开宽带连接,禁用”本地连接“,打开“本地连接”的属性,双击“Internet协议(TCP/IP)”,修改IP 地址为192.168.0.1 ,子网掩码为 255.255.255.0 ,DNS 填写主机所在地的DNS 。 2、启用“本地连接”,在主机“网上邻居”的“属性”窗口中的右击宽带拨号连接的图标上,点“属性”,在弹出框点“高级”,将“Internet 连接共享”中的三个复选框选上。

Java虚拟机的内存结构

我们都知道虚拟机的内存划分了多个区域,并不是一张大饼。那么为什么要划分为多块区域呢,直接搞一块区域,所有用到内存的地方都往这块区域里扔不就行了,岂不痛快。是的,如果不进行区域划分,扔的时候确实痛快,可用的时候再去找怎么办呢,这就引入了第一个问题,分类管理,类似于衣柜,系统磁盘等等,为了方便查找,我们会进行分区分类。另外如果不进行分区,内存用尽了怎么办呢?这里就引入了内存划分的第二个原因,就是为了方便内存的回收。如果不分,回收内存需要全部内存扫描,那就慢死了,内存根据不同的使用功能分成不同的区域,那么内存回收也就可以根据每个区域的特定进行回收,比如像栈内存中的栈帧,随着方法的执行栈帧进栈,方法执行完毕就出栈了,而对于像堆内存的回收就需要使用经典的回收算法来进行回收了,所以看起来分类这么麻烦,其实是大有好处的。 提到虚拟机的内存结构,可能首先想起来的就是堆栈。对象分配到堆上,栈上用来分配对象的引用以及一些基本数据类型相关的值。但是·虚拟机的内存结构远比此要复杂的多。除了我们所认识的(还没有认识完全)的堆栈以外,还有程序计数器,本地方法栈和方法区。我们平时所说的栈内存,一般是指的栈内存中的局部变量表。下面是官方所给的虚拟机的内存结构图

从图中可以看到有5大内存区域,按照是否被线程所共享可分为两部分,一部分是线程独占区域,包括Java栈,本地方法栈和程序计数器。还有一部分是被线程所共享的,包括方法区和堆。什么是线程共享和线程独占呢,非常好理解,我们知道每一个Java进行都会有多个线程同时运行,那么线程共享区的这片区域就是被所有线程一起使用的,不管有多少个线程,这片空间始终就这一个。而线程的独占区,是每个线程都有这么一份内存空间,每个线程的这片空间都是独有的,有多少个线程就有多少个这么个空间。上图的区域的大小并不代表实际内存区域的大小,实际运行过程中,内存区域的大小也是可以动态调整的。下面来具体说说每一个区域的主要功能。

VM虚拟机网络设置解释很好

VM虚拟机网络设置 VMWare中的几种网络设置 (1)Bridged方式 用这种方式,虚拟系统的IP可设置成和本机系统在同一网段,虚拟系统相当于网络内的一台独立的机器,和本机一起插在一个Hub上,网络内其他机器可访问虚拟系统,虚拟系统也可访问网络内其他机器,当然和本机系统的双向访问也不成问题。 (2)NAT方式 这种方式也能实现本机系统和虚拟系统的双向访问。但网络内其他机器不能访问虚拟系统,虚拟系统可通过本机系统用NAT协议访问网络内其他机器。 NAT方式的IP地址设置方法:虚拟系统先用DHCP自动获得IP地址,本机系统里的VMware services会为虚拟系统分配一个IP,之后如果想每次启动都用固定IP的话,在虚拟系统里直接设定这个IP即可。 (3)host-only方式 顾名思义这种方式只能进行虚拟机和主机之间的网络通信,既网络内其他机器不能访问虚拟系统,虚拟系统也不能访问其他机器。 (4)not use方式 既是不使用网络,虚拟系统为一个单机。 一般来说,Bridged方式最方便好用。但如果本机系统是win2000而网线没插(或根本没有网卡),网络非常可能不可用(大部分用PCI网卡的机器都如此),此时就只能用NAT方式或host-only,之前所说的那两块虚拟网卡就是适应这两种网络准备的。 vmware虚拟机的网络设置 虚拟机的网络设置(原理篇) 在正式开始之前,我想有必要先来学习一些必要的网络知识。否则,在不懂得所有原理的情况下依葫芦画瓢虽然可解一时之需要,但遇见具体情况改动的情况下就只能干瞪眼了。由于篇幅限制,这里只讲和VMware设置有关的一点简单网络知识。 1,什么是网络? Internet是指“互连网”,好象这句话说的有点多余,不过确实有非常多人对他有错误的理解,“互连网”是指一个个网络互连,而不是像有些人想象的那样把一台台计算机杂乱无章的互连。当我们需要用计算机和远方的计算机通讯的时候,先把本地计算机组成一个网络,当然,远方的计算机也要组成一个网络,在把这两个网络“互连”起来,组成“互连网”。用电话线和MODEM拨号上网的时候是通过电话线先把自己的计算机连到ISP(Internet Service Provider 网络服务提供商)的网络中,再经过ISP的网络和世界各地的计算机通信。 2,计算机怎么通过网络传递数据? 每一个网络需要一个网络地址,网络中的计算机需要一个在网络中唯一确定的标识,网络号和计算机的标识号组成了IP地址,所以IP地址是由网络号和主机号

java实验报告实验1答案

实验一熟悉NetBeans IDE 平台,开发环境及Java编程 实验目的: 1、我们使用的开发平台是NetBeans IDE,希望通过本次实验同学们能对NetBeans IDE 的开发环境有一个清楚的了解并能熟练运用,对Java语法进行初步运用,对面向对象的编程有一个直观的认识和深入理解,对于Java的基础知识进行理解运用和巩固。为以后的实验中能够进行开发程序打下基础。 2、通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP方式进行程序设计的方法,了解类的继承性和多态性的作用。 实验内容: ● 1. 编写一个体现面向对象思想的程序。 ● 2. 编写一个创建对象和使用对象的方法的程序。 ● 3. 编写一个显示当前日期和时间的程序。 ● 4. 编写不同成员变量修饰方法的程序。 ● 5. 编写不同成员方法修饰方法的程序。 ● 6. 编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。 ●7. 编写体现类的多态性(成员方法重载、构造方法重载)的程序。 实验步骤: ●双击桌面上的NetBeans IDE 6.5.1快捷方式或在文件菜单中打开它。 图1-1 点击文件,创建新项目,创建一个项目名:experiment1。

点击按钮下一步: 在项目名称处输入:experiment1 然后点击完成:

在experiment1 下实现 程序 项目experiment1

样例1:编写应用程序输出如下三角形。 * *** ***** ******* 【参考程序】 public class Star { public static void main(String a[]) { System.out.println(" *"); System.out.println(" ***"); System.out.println(" *****"); System.out.println("*******"); } } 程序运行结果如图1-2所示。 【编程技巧】 (1) main方法是应用程序执行入口; (2) 如何在命令控制台输出字符串。 (3) 输出杨辉三角的前10行;进一步用参数传递的方式输出,例如,shuchu(n)表示 输出杨辉三角的前n行。 样例2:编写Applet程序绘制一个红色三角形,三角形中央绘制兰色文字“三角形”。 【参考程序】

VMware虚拟机_如何设置网络

VMware虚拟机如何设置网络 软件社区> VMware > VMware 论坛>正文 本主题共有 1 页[刷新]本文构建的是这样一个网络,有两台winXP系统的PC,处于同一局域网内,PC里都装有VMw are虚拟机,虚拟机上跑的是Redhat Linux 9,我们想要在winXP系统下访问本机的虚拟机lin ux系统,以及也要能够访问另一台PC里的虚拟linux系统。由于我们这个局域网又不允许再分配同一网段的IP地址,因此不能用桥接方式给虚拟操作系统分配一个与PC处于同一网段的IP 地址,而本文即是采用NAT连接方式来实现这种配置。 相关文章: VMware辅助软件把当前系统直接转换为虚拟系统 VMware漏洞将会是虚拟化的危机吗 1,在WinXP系统下安装VMware软件 在这里我装的是VMware workstation 4.5.2版,对于安装没什么可说的,安装完毕,会多出两个网络连接:VMware Network Adapter VMnet1和VMware Network Adapter VMnet8。 2,打开VMware安装Redhat linux 9 3,都就绪完毕,开始网络配置

4,让VMware Network Adapter VMnet8自动获取IP地址以及DNS服务器地址,然后我们打开MS-DOC控制台,执行ipconfig /all命令,看看VMnet8的IP分配情况。 我的VMware Network Adapter VMnet8虚拟网卡的IP地址配置如下: 5,打开VMware软件,选择菜单VM->Settings,选中网卡查看其属性,将network connecti on设置为Custom:Special virtual network -- VMnet8(NAT)。OK返回软件主界面。启动Redh at Linux 9系统,这时我们要将虚拟系统的IP设置成与之同网段(我这里是192.168.65.0,你的可能不同,这是VMware自动随机指定的一个IP地址)。 如果在命令行下,可以编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,内容如下: DEVICE=eth0 BOOTPROTO=none BROADCAST=192.168.65.255

Java的类一些常识

Java的类一些常识 “1、请解释Java语言的跨平台特性。 解析:虽然不知道什么是跨平台也可以使用Java语言进行编程,但是对于一个Java编程员来说,理解跨平台特性能够更深入掌握Java语言,所以企业中往往要求应聘者至少理解这个特性。 参考答案:Java的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。他的意思就是如果用Java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上都能运行。 “2、请列举JAVA语言的主要特点 解析:了解一门语言,往往从熟悉该语言的主要特点开始入手,所以企业也常常通过应聘者对JAVA语言特点的掌握程度而判断其语言基础是否扎实。 参考答案:JAVA语言有很多特点,主要包括:①跨平台性:一个应用可以不经过修改直接运行到不同的平台上。②面向对象:JAVA语言是一门面向对面的语言,可以使用对象的属性和行为,可以使用面向对象的思想进行分析设计,并实现整个应用。③解释执行JAVA应用时,JVM中的解释器将解释类文件,生成符合当前平台的字节码。④自动回收:JAVA 应用中的垃圾回收是自动进行的,JVM中的后台线程将监视内存中数据的使用,当内存中的数据不再被引用时,将被作为垃圾回收,而不需要程序员动手回收。 “3、请说明一个JAVA类中主要包含哪几个元素?并说明每种元素的作用。 解析:无论简单还是复杂的JAVA应用,都是由若干个类组成,所以类是JAVA应用的组成单位。了解一个类中包含的主要元素能够对类有一个清晰的认识。一个类中往往会有五种元素,即属性、方法、构造方法、块以及内部类、其实块和内部类比较少见。 参考答案:JAVA类中主要包含属性、方法、构造方法、块以及内部类。

java虚拟机的原理和作用

Java虚拟机 一、什么是Java虚拟机 Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。 1.为什么要使用Java虚拟机 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 2.谁需要了解Java虚拟机 Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java 虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。 3.Java虚拟机支持的数据类型 Java虚拟机支持Java语言的基本数据类型如下: byte://1字节有符号整数的补码 short://2字节有符号整数的补码 int://4字节有符号整数的补码 long://8字节有符号整数的补码 float://4字节IEEE754单精度浮点数 double://8字节IEEE754双精度浮点数 char://2字节无符号Unicode字符 几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。*作这些原始数据类型数据的字节码(指令)本身就已经指出了*作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其*作数类型别是int、long、 float和double。虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer 返回来处理的。boolean型的数组则是用byte数组来处理的。虚拟机使用IEEE754格式的浮点数。不支持IEEE格式的较旧的计算机,在运行 Java数值计算程序时,可能会非常慢。 虚拟机支持的其它数据类型包括: object//对一个Javaobject(对象)的4字节引用 returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令 注:Java数组被当作object处理。 虚拟机的规范对于object内部的结构没有任何特殊的要求。在Sun公司的实现中,对object的引用是一个句柄,其中包含一对指针:一个指针指向该object的方法表,另一个指向该object的数据。用Java

VMWare IP配置的三种方式

VMware网络设置的三种方式 1 Host-only连接方式 让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,且保证该IP地址与各虚机IP地址位于同一网段。最终结果是新建了一个由所有虚机与宿主主机所构成的局域网,但该局域网与宿主主机本身所处的现有局域网是相互独立的,如果不做额外路由设置,这两个局域网之间不会连通,因此新建的局域网可以认为是一个单独从属于当前宿主主机的私有网络,其成员为当前宿主主机和相关的所有虚机,这也是Host-only命名的由来。 从网络技术上相当于为宿主主机增添了一个虚拟网卡,让宿主主机变成一台双网卡主机(宿主网卡+虚拟网卡)。同时在宿主主机后端加设一个虚拟交换机,让宿主主机和所有虚机构成另一个虚拟的局域网。由于具备双网卡,宿主主机可同时参与两个局域网(现有的宿主局域网+新建的虚拟局域网),只不过缺省情况下两个局域网不连通。 2 Bridge(桥接)连接方式 让虚机具有与宿主机不同的各自独立IP地址,但与宿主机保持在同一网段,最终结果是所有虚机都加入宿主主机所在的局域网,这与在该局域网中添加入其他宿主主机在效果上没什么区别。 从网络技术上相当于在宿主主机前端加设了一个虚拟交换机,然后宿主主机和所有虚机共享这个交换机;或者干脆理解成在宿主主机上作点增强,使其兼具一个交换机(当然是虚拟的)功能,供该宿主主机和网段内其他虚机使用。 3 NAT连接方式 虽然从表面现象看,虚机无自己的IP地址,而是共享宿主主机的IP地址,但技术本质上却是基于Host-only方式的(即,虚机还是有自己独立IP地址的,只不过实际中不投入使用),与Host-only方式一样,宿主主机成为双网卡主机,同时参与现有的宿主局域网和新建的虚拟局域网,但由于加设了一个虚拟的NAT服务器,使得虚拟局域网内的虚机在对外访问时,完全“冒用”宿主主机的IP地址,这样从外部网络来看,只能看到宿主主机,完全看不到新建的虚拟局域网。 二总结 (1)Bridged方式 用这种方式,虚拟系统的IP可设置成与本机系统在同一网段,虚拟系统相当于网络内的一台.独立的机器,与本机共同插在一个Hub上,网络内其他机器可访问虚拟系统,虚拟系统也可访问网络内其他机器,当然与本机系统的双向访问也不成问题. (2)NAT方式 这种方式也可以实现本机系统与虚拟系统的双向访问.但网络内其他机器不能访问虚拟系统,虚拟系统可通过本机系统用NAT协议访问网络内其他机器. NAT方式的IP地址配置方法:虚拟系统先用DHCP自动获得IP地址,本机系统里的ware services 会为虚拟系统分配一个IP,之后如果想每次启动都用固定IP的话,在虚拟系统里直接设定这个

虚拟机上网设置

配置安装好的虚拟机 我这里所指的配置,就是对已经装好的虚拟机的内存容量,硬盘大小和数量,网络类型等进行修改,这样可以很方便地“变”出许多需要的 点击后就会出现设备的具体设置,是可以改的。

添加一个设备也含简单,只要add就可以,添加过程就像刚开始配置安装虚拟机过程一样。

需要提一下share folder这个功能,这是VMware4的新功能,是为了在与真实主机共享文件时方便一些设定的,它会在虚拟机理添加一个名为share folder的磁盘,盘符为Z,添加起来很简单,点击那个add,选择一个真是主机的文件夹即可。这个功能在bridge 模式下可以用UNC名访问的方式代替,然而在NAT和host only模式下这个功能就显得很有用了,因为在这两种模式下直接使用IP地址变得很困难。最后还要提醒以下,在win98(含以下)的系统不能支持Shared Folder功能

在下一篇文章中,我们将向大家介绍“配置虚拟机的网络” 三、配置虚拟机的网络 光有虚拟机是不够的,我们需要使用虚拟机和真实主机以及其他的虚拟机进行通讯。通讯分两个部分,一个是局域网内的,另一个是连接到公网的。这一部分是重点,三种不同模式的用途就要揭晓。 (1)桥接模式: 拓扑: 如果你的真实主机在一个以太网中,这种方法是将你的虚拟机接入网络最简单的方法。虚拟机就像一个新增加的、与真实主机有着同等物理地位的一台电脑,桥接模式可以享受所有可用的服务;包括文件服务、打印服务等等,并且在此模式下你将获得最简易的从真实主机获取资源的方法。

(2)host only模式: 拓扑: Host-only模式用来建立隔离的虚拟机环境,这这种模式下,虚拟机与真实主机通过虚拟私有网络进行连接,只有同为Host-only模式下的且在一个虚拟交换机的连接下才可以互相访问,外界无法访问。host only模式只能使用私有IP,IP,gateway,DNS都由VMnet 1来分配。 (3)NAT模式: 拓扑: NAT(network address translation)模式其实可以理解成为是方便地使虚拟机连接到公网,代价是桥接模式下的其他功能都不能享用。凡是选用NAT结构的虚拟机,均由VMnet 8提供IP,gateway,DNS。 下面讲讲具体操作。 桥接模式: 前面我已经提到,桥接模式是最简单的,使用桥接模式后虚拟机和真实主机的关系就好像两台接在一个hub上的电脑,想让他们俩进行通讯,你需要为双方配置IP地址和子网掩码,从图中可以看出,如果你不配置虚拟机,虚拟机也没有办法得到DHCP分到的IP地址,所以只能使用169.254.这个段。曾经有些朋友试图改在真实主机中安装VM后生成的VMnet1和VMnet8这两块网卡的IP,这种做法是错误的,作为连接底层硬件的驱动程序它们不需要、也不能作修改。

相关文档