diff --git a/.project b/.project
index c9ff485b..766e275f 100644
--- a/.project
+++ b/.project
@@ -37,5 +37,6 @@
 		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+		<nature>com.sysdeo.eclipse.tomcat.tomcatnature</nature>
 	</natures>
 </projectDescription>
diff --git a/WebContent/WEB-INF/config/config.properties b/WebContent/WEB-INF/config/config.properties
index 676e5527..c9d94dc3 100644
--- a/WebContent/WEB-INF/config/config.properties
+++ b/WebContent/WEB-INF/config/config.properties
@@ -17,6 +17,7 @@ jdbc.mysql.password=root
 gather-user-name=system
 # 密码
 gather-user-password=oracle
+
 #
 gather-port=1521
 #
@@ -40,11 +41,15 @@ jdbc.minEvictableIdleTimeMillis=300000
 #
 #==============================================================================================================
 table-suffix=_20152016
-extract-log-localtion=/home/log/
+extract-log-localtion=/home/web_manage/log/
 gather-tablespace-name=TS_TTSSS
+
 gather-tablespace-path=
 gather-table-user-password=
 kubeMasterUrl=http://192.168.191.23:8080/
+
 collect-user-name=system
 collect-password=oracle
 collect-service-name=orcl
+
+gfs_control_ip=192.168.191.23
\ No newline at end of file
diff --git a/WebContent/WEB-INF/config/log4j-config.xml b/WebContent/WEB-INF/config/log4j-config.xml
index 55b0cb0f..801540e5 100644
--- a/WebContent/WEB-INF/config/log4j-config.xml
+++ b/WebContent/WEB-INF/config/log4j-config.xml
@@ -8,17 +8,25 @@
 		<layout class="org.apache.log4j.TTCCLayout">
 			<param name="ConversionPattern" value="TTCCLayout"></param>
 		</layout>
+		<filter class="org.apache.log4j.varia.LevelRangeFilter">    
+		  <param name="LevelMin" value="DEBUG" />    
+		  <param name="LevelMax" value="ERROR" />    
+		</filter> 
 	</appender>
 
 	<!-- 输出日志到文件 每天一个文件 -->
 	<appender name="dailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender">
 		<param name="Threshold" value="info"></param>
 		<param name="ImmediateFlush" value="true"></param>
-		<param name="File" value="logs/dailyRollingFile.log"></param>
+		<param name="File" value="/home/web_manage/logs/dailyRollingFile.log"></param>
 		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
 		<layout class="org.apache.log4j.PatternLayout">
 			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
 		</layout>
+		<filter class="org.apache.log4j.varia.LevelRangeFilter">    
+		  <param name="LevelMin" value="ERROR" />    
+		  <param name="LevelMax" value="ERROR" />    
+		</filter> 
 	</appender>
 
 	<!-- 输出日志到文件 文件大小到达指定尺寸的时候产生一个新的文件 -->
diff --git a/WebContent/WEB-INF/config/mybatis-applicationConfig.xml b/WebContent/WEB-INF/config/mybatis-applicationConfig.xml
index 4bb8e731..ae09a182 100644
--- a/WebContent/WEB-INF/config/mybatis-applicationConfig.xml
+++ b/WebContent/WEB-INF/config/mybatis-applicationConfig.xml
@@ -18,5 +18,6 @@
 		<mapper resource="com/dao/mapper/dataInfoMoveTmpmapper.xml"/>
 		<mapper resource="com/dao/mapper/RegionalismMapper.xml"/>
 		<mapper resource="com/dao/mapper/SystemCodeMapper.xml"/>
+		<mapper resource="com/dao/mapper/VolumeMapper.xml"/>
 	</mappers>
 </configuration>    
\ No newline at end of file
diff --git a/src/com/base/BaseController.java b/src/com/base/BaseController.java
index 88ef5f48..804f833a 100644
--- a/src/com/base/BaseController.java
+++ b/src/com/base/BaseController.java
@@ -45,6 +45,7 @@ public class BaseController {
         System.out.println("URI"+request.getRequestURI());
         request.setAttribute("ex", ex);  
         System.err.println("BaseController --exp " + ex);
+        new CustomException("base_code_", ex);
         // 根据不同错误转向不同页面  
         if(ex instanceof CustomException) {
         	CustomException cuse = (CustomException) ex;
diff --git a/src/com/base/Custom4exception.java b/src/com/base/Custom4exception.java
index a5bc8540..0e109c86 100644
--- a/src/com/base/Custom4exception.java
+++ b/src/com/base/Custom4exception.java
@@ -27,8 +27,11 @@ public class Custom4exception {
 	public final static String threadVolume_Thread_Except = "3001001002";
 	
 	/**
-	 * 抽取汇总
+	 * 抽取汇总--的-获取抽取动作异常
 	 */
 	public final static String threadVolume_Oracle_Except = "3002001002";
 	
+	/**	 * SQL执行错误	 */
+	public final static String OracleSQL_Except = "3002001002";
+	
 }
diff --git a/src/com/base/CustomException.java b/src/com/base/CustomException.java
index 08b75248..e40f5697 100644
--- a/src/com/base/CustomException.java
+++ b/src/com/base/CustomException.java
@@ -4,6 +4,9 @@ package com.base;
 
 import org.apache.log4j.Logger;
 
+import com.platform.controller.DataModelController;
+import com.platform.utils.Configs;
+
 /**
  * <一句话功能简述>
  * <功能详细描述>
@@ -16,7 +19,7 @@ import org.apache.log4j.Logger;
 public class CustomException extends Exception {
 	
 	/** log4j  */
-	public static Logger log = Logger.getRootLogger();
+	public static Logger log = Configs.DAILY_ROLLING_LOGGER;
 	
 	/** 自定义异常信息-错误信息  */
 	private String msg;
@@ -44,7 +47,6 @@ public class CustomException extends Exception {
 	public CustomException(String code,Exception e,Object... obj) {
 		super(code);
 		StringBuffer sbuf= new StringBuffer();
-		sbuf.append(msg);
 		this.code = code;
 		sbuf.append(code);
 		sbuf.append("\r\n");
@@ -56,6 +58,8 @@ public class CustomException extends Exception {
 		}
 		// 记录原始的异常
 		if (null != e) {
+			sbuf.append(e.getMessage());
+			sbuf.append("\r\n");
 			StackTraceElement[] array = e.getStackTrace();
 			cause = e.getCause();
 			for (StackTraceElement stackTraceElement : array) {
@@ -68,6 +72,7 @@ public class CustomException extends Exception {
 			Object[] array = obj;
 			sbuf.append("Object[] size :  ");
 			sbuf.append(array.length);
+			sbuf.append("\r\n");
 			int forSize = 0;
 			if (Constant.CustomException_log_object_size < array.length) {
 				forSize = Constant.CustomException_log_object_size;
@@ -89,7 +94,7 @@ public class CustomException extends Exception {
 		
 		sbuf.append("\r\n");
 		// 是否 写入 文件
-		log.error(sbuf.toString());
+		log.debug(sbuf.toString());
 	}
 
 	/**
diff --git a/src/com/base/i18n.properties b/src/com/base/i18n.properties
index e69de29b..eee66963 100644
--- a/src/com/base/i18n.properties
+++ b/src/com/base/i18n.properties
@@ -0,0 +1,4 @@
+3001001001=ThreadVolume\u7C7B\u67E5\u8BE2 volume\u5F02\u5E38
+3001001002=ThreadVolume\u7C7B\u7EBF\u7A0B\u4F11\u7720\u5F02\u5E38
+3002001002= \u62BD\u53D6\u6C47\u603B--\u7684-\u83B7\u53D6\u62BD\u53D6\u52A8\u4F5C\u5F02\u5E38
+3002001002=SQL\u6267\u884C\u9519\u8BEF
\ No newline at end of file
diff --git a/src/com/dao/mapper/VolumeMapper.xml b/src/com/dao/mapper/VolumeMapper.xml
new file mode 100644
index 00000000..29f0a59b
--- /dev/null
+++ b/src/com/dao/mapper/VolumeMapper.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>    
+<!DOCTYPE mapper    
+PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"    
+"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
+
+<mapper namespace="com.platform.dao.VolumeDao">
+	<resultMap id="getEntityByText" type="com.platform.entities.VolumeInitEntity">
+		<id property="id" column="id" javaType="int" jdbcType="INTEGER" />
+		<result property="name" column="name" javaType="string"
+			jdbcType="VARCHAR" />
+		<result property="ip" column="ip" javaType="string"
+			jdbcType="VARCHAR" />
+		<result property="path" column="path" javaType="string"
+		jdbcType="VARCHAR" />
+		<result property="mark" column="mark" javaType="string"
+		jdbcType="VARCHAR" />
+	</resultMap>
+	
+	<!-- 获取数据全部记录信息 -->
+	<select id="findAll" resultType="com.platform.entities.VolumeInitEntity">
+		SELECT
+		 id,name,ip,path,mark
+		FROM 
+			volume_info
+		ORDER BY id
+	</select>
+	
+	<update id="update" parameterType="com.platform.entities.VolumeInitEntity">
+		UPDATE
+		volume_info
+		<set >
+			<trim suffixOverrides=",">
+				<if test="name != null and name != ''">
+					name= #{name},
+				</if>
+				<if test="ip != null and ip != ''">
+					ip= #{ip},
+				</if>
+				<if test="path != null and path != ''">
+					path= #{path},
+				</if>
+				<if test="mark != null and mark != ''">
+					mark= #{mark},
+				</if>
+			</trim>
+		</set>
+		<where>
+			id = #{id}
+		</where>
+	</update>
+	
+	<insert id="save" parameterType="com.platform.entities.VolumeInitEntity">
+		INSERT INTO
+		volume_info(
+		<trim suffixOverrides=",">
+			<if test="name != null and name != ''">
+				name,
+			</if>
+			<if test="ip != null and ip != ''">
+				ip,
+			</if>
+			<if test="path != null and path != ''">
+				path,
+			</if>
+			<if test="mark != null and mark != ''">
+				mark,
+			</if>
+		</trim>
+		)
+		VALUES(
+		<trim suffixOverrides=",">
+			<if test="name != null and name != ''">
+				#{name},
+			</if>
+			<if test="ip != null and ip != ''">
+				#{ip},
+			</if>
+			<if test="path != null and path != ''">
+				#{path},
+			</if>
+			<if test="mark != null and mark != ''">
+				#{mark},
+			</if>
+		</trim>
+		)
+	</insert>
+	
+	<delete id="remove" parameterType="java.lang.String">
+		DELETE FROM
+			volume_info 
+		WHERE
+			name = #{name}
+	</delete>
+
+</mapper>  
\ No newline at end of file
diff --git a/src/com/dao/mapper/data-details-mapper.xml b/src/com/dao/mapper/data-details-mapper.xml
index 217885ca..61071bd0 100644
--- a/src/com/dao/mapper/data-details-mapper.xml
+++ b/src/com/dao/mapper/data-details-mapper.xml
@@ -44,11 +44,16 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 			jdbcType="VARCHAR" />
 		<result property="volumePath" column="volume_path" javaType="string"
 			jdbcType="VARCHAR" />
+		<result property="mark" column="mark" javaType="string"
+		jdbcType="VARCHAR" />
 	</resultMap>
 	<sql id="conditionsFilters">
 		<if test="dataType!=null">
 			AND data_details.data_type=#{dataType}
 		</if>
+		<if test="mark!=null and mark != ''">
+			AND data_details.mark=#{mark}
+		</if>
 		<if test="submittedBatch!=null">
 			AND
 			data_details.submitted_batch=#{submittedBatch}
@@ -80,7 +85,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 	<select id="getLimitedDataInfoEntities" parameterType="com.platform.entities.PagerOptions"
 		resultMap="getEntityByText">
 		SELECT
-		id,regionalism_code,city_name,district_name,system_code,system_name,data_type,data_version,submitted_batch,data_path,data_charset,collection_time,collector_name,collector_contacts,extract_status,data_year,start_year,end_year,volume_ip,volume_path
+		id,regionalism_code,city_name,district_name,system_code,system_name,data_type,data_version,submitted_batch,data_path,data_charset,collection_time,collector_name,collector_contacts,extract_status,data_year,start_year,end_year,volume_ip,volume_path,mark
 		FROM data_details
 			<where>
 				<include refid="conditionsFilters" />
@@ -99,6 +104,14 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 				LIMIT #{limit}
 			</if>
 	</select>
+	
+	<!-- 获取数据符合筛选条件的全部记录信息 -->
+	<select id="findAll" resultMap="getEntityByText">
+		SELECT
+		id,regionalism_code,city_name,district_name,system_code,system_name,data_type,data_version,submitted_batch,data_path,data_charset,collection_time,collector_name,collector_contacts,extract_status,data_year,start_year,end_year,volume_ip,volume_path,mark
+		FROM data_details
+		ORDER BY data_details.id
+	</select>
 
 	<!-- 获取数据符合筛选条件的总记录条数 -->
 	<select id="getLimitedDataCount" resultType="java.lang.Integer"
@@ -207,10 +220,10 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 				#{year},
 			</if>
 			<if test="startYear != null and startYear != ''">
-				#{start_year},
+				#{startYear},
 			</if>
 			<if test="endYear != null and endYear != ''">
-				#{end_year},
+				#{endYear},
 			</if>
 			<if test="volumeIp != null and volumeIp != ''">
 				#{volumeIp},
@@ -245,5 +258,15 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 		</foreach>
 		and remove ='0'
 	</update>
+	
+	<update id="updateExtract" parameterType="com.platform.entities.DataInfoEntity">
+		UPDATE
+		data_info
+		set extract_status = #{extractStatus}
+		<where>
+			id = #{id}
+			AND remove ='0'
+		</where> 
+	</update>
 
 </mapper>  
\ No newline at end of file
diff --git a/src/com/dao/mapper/dataInfoMoveTmpmapper.xml b/src/com/dao/mapper/dataInfoMoveTmpmapper.xml
index e35029a5..6d7b843d 100644
--- a/src/com/dao/mapper/dataInfoMoveTmpmapper.xml
+++ b/src/com/dao/mapper/dataInfoMoveTmpmapper.xml
@@ -49,7 +49,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 	</resultMap>
 	
 	<sql id="Base_Column_List">
-		regionalism_code,system_code,dst_path,lasttime,fkid
+		regionalism_code,system_code,dst_path,lasttime,fkid,dst_volume_ip,dst_volume_path
 	</sql>
 	
 	<!-- 获取数据全部记录信息 -->
@@ -120,6 +120,12 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 			<if test="fkid > 0 ">
 				fkid,
 			</if>
+			<if test="dstVolumeIp != null and dstVolumeIp != ''">
+				dst_volume_ip,
+			</if>
+			<if test="dstVolumePath != null and dstVolumePath != ''">
+				dst_volume_path,
+			</if>
 		</trim>
 		)
 		VALUES(
@@ -146,7 +152,13 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 				#{lastTime},
 			</if>
 			<if test="fkid > 0 ">
-				#{fkid),
+				#{fkid},
+			</if>
+			<if test="dstVolumeIp != null and dstVolumeIp != ''">
+				#{dstVolumeIp},
+			</if>
+			<if test="dstVolumePath != null and dstVolumePath != ''">
+				#{dstVolumePath},
 			</if>
 		</trim>
 		)
@@ -156,7 +168,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 	    INSERT INTO move_data_tmp ( <include refid="Base_Column_List" /> ) 
 	    VALUES 
 	    <foreach collection="list" item="item" index="index" separator=",">
-	        (#{item.regionalismCode,jdbcType=VARCHAR},#{item.systemCode,jdbcType=INTEGER},#{item.dstPath,jdbcType=VARCHAR},#{item.lastTime,jdbcType=VARCHAR},#{item.fkid})
+	        (#{item.regionalismCode,jdbcType=VARCHAR},#{item.systemCode,jdbcType=INTEGER},#{item.dstPath,jdbcType=VARCHAR},#{item.lastTime,jdbcType=VARCHAR},#{item.fkid},#{item.dstVolumeIp},#{item.dstVolumePath})
 	    </foreach>
 	</select> 
 	
diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java
index 418ed466..528aa89a 100644
--- a/src/com/platform/controller/DataModelController.java
+++ b/src/com/platform/controller/DataModelController.java
@@ -11,8 +11,6 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import net.sf.json.JSONObject;
-
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Controller;
@@ -27,45 +25,48 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import com.base.BaseController;
 import com.platform.entities.DataInfoEntity;
 import com.platform.entities.DataInfoEntityMoveTmp;
-import com.platform.entities.FolderNode;
 import com.platform.entities.GatherOracleInfo;
 import com.platform.entities.PagerOptions;
 import com.platform.entities.VolumeEntity;
+import com.platform.entities.oracleForm;
 import com.platform.entities.volumeMoveForm;
 import com.platform.service.DataInfoService;
 import com.platform.service.ICodeService;
 import com.platform.service.IGfsService;
+import com.platform.service.ILogRead;
 import com.platform.service.IMoveDataService;
 import com.platform.service.IMySqlService;
 import com.platform.service.IOracleExtractService;
 import com.platform.service.OracleStatusService;
-import com.platform.utils.Bean2MapUtils;
 import com.platform.utils.Configs;
 import com.platform.utils.UtilsHelper;
 
 @Controller
-public class DataModelController extends BaseController{
-	
-	public static Logger log = Logger.getLogger(DataModelController.class);
-	
+public class DataModelController extends BaseController {
+
+	public static Logger log = Configs.DAILY_ROLLING_LOGGER;
+
 	@Resource(name = "dataInfoService")
 	private DataInfoService dfs;
-	
+
 	@Resource(name = "gfsService")
 	private IGfsService gfsService;
-	
+
 	@Resource(name = "mySqlService")
 	private IMySqlService mySqlService;
-	
+
 	@Resource(name = "OracleExtract")
 	private IOracleExtractService OracleExtract;
-	
+
 	@Resource(name = "moveDataService")
 	private IMoveDataService moveDataService;
-	
+
 	@Resource(name = "codeService")
 	private ICodeService codeService;
-	
+
+	@Resource(name = "logReadService")
+	private ILogRead logReadService;
+
 	public void setDfsImp(DataInfoService dfs) {
 		this.dfs = dfs;
 	}
@@ -92,12 +93,14 @@ public class DataModelController extends BaseController{
 				.append("}").toString());
 		PagerOptions pagerOptions = (PagerOptions) UtilsHelper
 				.newObjAndSetAttrsByClass(PagerOptions.class, params);
-		
+		//冷热区查询字段mark
+		pagerOptions.setMark(pagerOptions.getVolumeType());
 		return dfs.getPagerTableData(pagerOptions);
 	}
 
-	@RequestMapping(value="/delete/data", method= RequestMethod.POST)
-	public void deleteData(HttpServletRequest res, HttpServletResponse req) throws Exception {
+	@RequestMapping(value = "/delete/data", method = RequestMethod.POST)
+	public void deleteData(HttpServletRequest res, HttpServletResponse req)
+			throws Exception {
 		res.setCharacterEncoding("UTF-8");
 		Map<String, String[]> paramMap = res.getParameterMap();
 		String[] data = paramMap.get("data");
@@ -106,13 +109,14 @@ public class DataModelController extends BaseController{
 	}
 
 	@RequestMapping("/connectOracle")
-	public void connectOracle(HttpServletRequest res, HttpServletResponse req) throws UnsupportedEncodingException {
+	public void connectOracle(HttpServletRequest res, HttpServletResponse req)
+			throws UnsupportedEncodingException {
 		res.setCharacterEncoding("UTF-8");
 		Map<String, String[]> paramMap = res.getParameterMap();
 		String[] oraclesName = paramMap.get("oracleName");
 		if (oraclesName != null)
 			for (String rcName : oraclesName) {
-				Configs.CONSOLE_LOGGER.info("连接成功\t" + rcName);
+				Configs.CONSOLE_LOGGER.info("执行连接\t" + rcName);
 				new OracleStatusService().connectToOracle(rcName);
 			}
 		req.setStatus(200);
@@ -134,211 +138,163 @@ public class DataModelController extends BaseController{
 		req.setStatus(200);
 	}
 
-	@RequestMapping(value="/oracle/{name}/extract", method= RequestMethod.POST)
-	public void oracleExtract(HttpServletRequest res,
-			HttpServletResponse req,@PathVariable String name) throws Exception {
+	@RequestMapping(value = "/oracle/{name}/extract", method = RequestMethod.POST)
+	public void oracleExtract(HttpServletRequest res, HttpServletResponse req,
+			@RequestBody oracleForm form) throws Exception {
+		Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
 		res.setCharacterEncoding("UTF-8");
-		System.out.println("------extract-------");
-		System.out.println(name);
-		Map<String, String[]> paramMap = res.getParameterMap();
-		//汇总库 对象信息--带有tableName-
-		String[] nodes = paramMap.get("target");
-		Map map = null;
-		for (String string : nodes) {
-			JSONObject jsonobject = JSONObject.fromObject(string);
-			map = jsonobject;
-			System.out.println(map);
-		}
-		
-		// 采集库对象--(多个采集库抽取到1个汇总库的1个tableName下)
-		String[] inneed = paramMap.get("inneed");
-		List<Map<String, String>> colleclist = new ArrayList<Map<String,String>>();
-		for (String string : nodes) {
-			JSONObject jsonobject = JSONObject.fromObject(string);
-			 Map inneedMap = jsonobject;
-			colleclist.add(inneedMap);
+		if (null != form.getInneed() && form.getInneed().size() > 0) {
+			OracleExtract.extractOracle(form.getName(), form.getInneed(),
+					form.getTarget());
 		}
-		OracleExtract.extractOracle(name, colleclist, map);
 		req.setStatus(200);
 	}
-//	public void oracleExtract(HttpServletRequest res,
-//			HttpServletResponse req, String name, @RequestBody GatherOracleInfo gather, @RequestBody List<OracleConnectorParams> collectOracles)
-//					throws Exception {
-////		res.setCharacterEncoding("UTF-8");
-//		log.debug("------extract-------");
-////		Map<String, String[]> paramMap = res.getParameterMap();
-////		log.debug(paramMap);
-////		//汇总库 对象信息--带有tableName-
-////		String[] nodes = paramMap.get("target");
-////		Map map = null;
-////		for (String string : nodes) {
-////			JSONObject jsonobject = JSONObject.fromObject(string);
-////			map = jsonobject;
-////			System.out.println(map);
-////		}
-////		
-////		// 采集库对象--(多个采集库抽取到1个汇总库的1个tableName下)
-////		String[] inneed = paramMap.get("inneed");
-////		List<Map<String, String>> colleclist = new ArrayList<Map<String,String>>();
-////		for (String string : nodes) {
-////			JSONObject jsonobject = JSONObject.fromObject(string);
-////			 Map inneedMap = jsonobject;
-////			colleclist.add(inneedMap);
-////		}
-//		OracleExtract.extractOracle(name, collectOracles, gather);
-//	}
-
-	@RequestMapping(value="/volume/list", method= RequestMethod.POST)
+
+	// public void oracleExtract(HttpServletRequest res,
+	// HttpServletResponse req, String name, @RequestBody GatherOracleInfo
+	// gather, @RequestBody List<OracleConnectorParams> collectOracles)
+	// throws Exception {
+	// // res.setCharacterEncoding("UTF-8");
+	// log.debug("------extract-------");
+	// // Map<String, String[]> paramMap = res.getParameterMap();
+	// // log.debug(paramMap);
+	// // //汇总库 对象信息--带有tableName-
+	// // String[] nodes = paramMap.get("target");
+	// // Map map = null;
+	// // for (String string : nodes) {
+	// // JSONObject jsonobject = JSONObject.fromObject(string);
+	// // map = jsonobject;
+	// // System.out.println(map);
+	// // }
+	// //
+	// // // 采集库对象--(多个采集库抽取到1个汇总库的1个tableName下)
+	// // String[] inneed = paramMap.get("inneed");
+	// // List<Map<String, String>> colleclist = new
+	// ArrayList<Map<String,String>>();
+	// // for (String string : nodes) {
+	// // JSONObject jsonobject = JSONObject.fromObject(string);
+	// // Map inneedMap = jsonobject;
+	// // colleclist.add(inneedMap);
+	// // }
+	// OracleExtract.extractOracle(name, collectOracles, gather);
+	// }
+
+	@RequestMapping(value = "/volume/list", method = RequestMethod.POST)
 	@ResponseBody
 	public List<VolumeEntity> volumeList() throws Exception {
 		log.debug("-----/volume/list------");
 		List<VolumeEntity> result = gfsService.getAllVolumes();
 		return result;
 	}
-	
-	@RequestMapping(value = "/volume/{name}/move", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/volume/{name}/move", method = RequestMethod.POST)
 	@ResponseBody
-	public void volumeMove(HttpServletRequest res, HttpServletResponse req,@RequestBody volumeMoveForm form) throws Exception {
-//		res.setCharacterEncoding("UTF-8");
-//		System.out.println("get Request");
-//		Map<String, String[]> paramMap = res.getParameterMap();
-////		System.out.println(paramMap);
-//		String[] nodes = paramMap.get("selectNode");
-//		Map map = null;
-//		for (String string : nodes) {
-//			System.out.println(string);
-//			JSONObject jsonobject = JSONObject.fromObject(string);
-//			map = jsonobject;
-//		}
-//		String dstVolume = (String) map.get("volume");
-		
-//		List<String> listItemPath = new ArrayList<String>();
-//		String[] items = paramMap.get("selectItems");
-//		System.out.println("selectItems");
+	public void volumeMove(HttpServletRequest res, HttpServletResponse req,
+			@RequestBody volumeMoveForm form) throws Exception {
 		List<DataInfoEntity> datas = new ArrayList<DataInfoEntity>();
-//		List<String> srcVolumes = new ArrayList<String>();
-//		for (String string : items) {
-//			System.out.println(string);
-//			JSONObject jsobj = JSONObject.fromObject(string);
-//			Map itemmap = jsobj;
-//			DataInfoEntity data = (DataInfoEntity) Bean2MapUtils.convertMap(DataInfoEntity.class, itemmap);
-//			datas.add(data);
-//		}
 		List<DataInfoEntity> selectItems = form.getSelectItems();
 		if (null == selectItems) {
 			req.setStatus(200);
 			return;
 		}
 		datas.addAll(selectItems);
-		
+
 		System.out.println("------/volume/{name}/move--------");
-		if (datas.size() >0) {
+		if (datas.size() > 0) {
 			moveDataService.moveData(datas, form.getSelectNode());
 		}
 		req.setStatus(200);
 	}
-//	public Object volumeMove(HttpServletRequest res, HttpServletResponse req, String name, 
-//			@RequestBody FolderNode selectNode, @RequestBody List<DataInfoEntity> selectItems) throws Exception {
-//		log.debug("-----/volume/{name}/move------");
-////		Map<String, String[]> paramMap = res.getParameterMap();
-////		System.out.println(paramMap);
-//		Map<String, String[]> paramMap = res.getParameterMap();
-//		log.debug(paramMap);
-//		//汇总库 对象信息--带有tableName-
-//		String[] nodes = (String[]) paramMap.get("selectNode");
-//		Map map = null;
-//		JSONObject jsonobject = JSONObject.fromObject(string);
-//		map = jsonobject;
-//		
-//		
-//		log.debug(selectItems);
-//		log.debug(selectNode);
-//		boolean result = false ;
-//		if (selectItems.size() >0) {
-//			result = moveDataService.moveData(selectItems, selectNode.getPath());
-//		}
-//		return result;
-//	}
-	
-	@RequestMapping(value="/oracle/list", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/oracle/list", method = RequestMethod.POST)
 	@ResponseBody
 	public List<GatherOracleInfo> oracleList() throws Exception {
 		log.debug("----------getOracleInfo-----------------------");
-		List<GatherOracleInfo> result = mySqlService.findAllMySql(); 
+		List<GatherOracleInfo> result = mySqlService.findAllMySql();
 		return result;
 	}
-	
-	@RequestMapping(value="/oracle/{id}/delete", method= RequestMethod.POST)
-	public void oracleDelete(HttpServletRequest req, HttpServletResponse res, @PathVariable String id) throws Exception {
+
+	@RequestMapping(value = "/oracle/{id}/delete", method = RequestMethod.POST)
+	public void oracleDelete(HttpServletRequest req, HttpServletResponse res,
+			@PathVariable String id) throws Exception {
 		log.debug("----------deleteOracleInfo----------------");
 		Integer num = Integer.valueOf(id);
-		Integer result = mySqlService.deleteMySql(num); 
+		Integer result = mySqlService.deleteMySql(num);
 		log.info("oracleDelete : " + result);
 		res.setStatus(200);
 	}
-	
-	@RequestMapping(value="/oracle/{id}/insert", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/oracle/{id}/insert", method = RequestMethod.POST)
 	@ResponseBody
-	public void oracleInsert(HttpServletRequest res, HttpServletResponse req, @PathVariable String id, @RequestBody GatherOracleInfo oracle) throws Exception {
+	public void oracleInsert(HttpServletRequest res, HttpServletResponse req,
+			@PathVariable String id, @RequestBody GatherOracleInfo oracle)
+			throws Exception {
 		log.debug("----------insertOracleInfo----------------");
 		oracle.setId(Integer.valueOf(id));
 		mySqlService.insertOracle(oracle);
 		req.setStatus(200);
 	}
-	
-	@RequestMapping(value="/oracle/{id}/update", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/oracle/{id}/update", method = RequestMethod.POST)
 	@ResponseBody
-	public void oracleUpdate(HttpServletRequest res, HttpServletResponse req, @PathVariable("id") String id, @RequestBody GatherOracleInfo oracle) throws Exception {
+	public void oracleUpdate(HttpServletRequest res, HttpServletResponse req,
+			@PathVariable("id") String id, @RequestBody GatherOracleInfo oracle)
+			throws Exception {
 		log.debug("----------updateOracleInfo-----------------------");
 		log.debug(oracle);
-		mySqlService.updateOracle(oracle); 
+		mySqlService.updateOracle(oracle);
 		req.setStatus(200);
 	}
-	
-	@RequestMapping(value="/task/transfer/list", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/task/transfer/list", method = RequestMethod.POST)
 	@ResponseBody
 	public Object taskTransferList() throws Exception {
 		log.debug("----------/task/transfer/list-----------------------");
 		List<DataInfoEntityMoveTmp> result = moveDataService.findAll();
 		return result;
 	}
-	
-	@RequestMapping(value="/task/transfer/{id}/delete", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/task/transfer/{id}/delete", method = RequestMethod.POST)
 	@ResponseBody
-	public Object taskTransferDelete(HttpServletRequest res, HttpServletResponse req, @PathVariable String id) throws Exception {
+	public Object taskTransferDelete(HttpServletRequest res,
+			HttpServletResponse req, @PathVariable String id) throws Exception {
 		log.debug("----------/task/transfer/{id}/delete-----------------------");
 		DataInfoEntityMoveTmp move = new DataInfoEntityMoveTmp();
 		move.setId(Integer.valueOf(id));
-		int result = moveDataService.delete(move );
+		int result = moveDataService.delete(move);
 		req.setStatus(200);
 		return result;
 	}
-	
-	@RequestMapping(value="/task/transfer/save", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/task/transfer/save", method = RequestMethod.POST)
 	@ResponseBody
-	public Object taskTransferSave(HttpServletRequest res, HttpServletResponse req, @RequestBody DataInfoEntity move) throws Exception {
+	public Object taskTransferSave(HttpServletRequest res,
+			HttpServletResponse req, @RequestBody DataInfoEntity move)
+			throws Exception {
 		log.debug("---------/task/transfer/save-----------------------");
 		int result = dfs.save(move);
 		req.setStatus(200);
 		return result;
 	}
-	
-	@RequestMapping(value="/code/list", method= RequestMethod.POST)
+
+	@RequestMapping(value = "/code/list", method = RequestMethod.POST)
 	@ResponseBody
 	public Object findCodeList() throws Exception {
 		log.debug("---------/findSystemCode-----------------------");
 		Map<String, Object> result = codeService.findAll();
 		return result;
 	}
-	
-	@RequestMapping(value = "/oracle/extract/log", method= RequestMethod.POST )
+
+	@RequestMapping(value = "/oracle/extract/log", method = RequestMethod.POST)
 	@ResponseBody
-	public Object getExtractLog(@RequestParam("rcName") String name, HttpServletRequest res, HttpServletResponse req){
+	public Object getExtractLog(@RequestParam("rcName") String name,
+			HttpServletRequest res, HttpServletResponse req) throws Exception {
 		log.info("---------/oracle/extract/log-------------------");
-		StringBuilder sb = new StringBuilder();
-		sb.append("查看相应日志").append("\n").append("看到了");
+		String result = logReadService.readLog(name);
+		// StringBuilder sb = new StringBuilder();
+		// sb.append("查看相应日志").append("\n").append("看到了");
 		Map<String, String> log = new HashMap<>();
-		log.put(name, sb.toString());
+		log.put(name, result);
 		return log;
 	}
 }
diff --git a/src/com/platform/controller/VolumeController.java b/src/com/platform/controller/VolumeController.java
new file mode 100644
index 00000000..a787ce07
--- /dev/null
+++ b/src/com/platform/controller/VolumeController.java
@@ -0,0 +1,68 @@
+package com.platform.controller;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.base.BaseController;
+import com.platform.entities.VolumeInitEntity;
+import com.platform.service.IVolumeService;
+import com.platform.utils.Configs;
+
+@Controller
+public class VolumeController extends BaseController{
+	
+	public static Logger log = Configs.DAILY_ROLLING_LOGGER;
+
+	@Resource(name = "volumeService")
+	private IVolumeService volumeService;
+	
+	
+	@RequestMapping(value = "/volume/insert", method = RequestMethod.POST)
+	@ResponseBody
+	public void volumeInsert(HttpServletRequest res, HttpServletResponse req,
+			@RequestBody VolumeInitEntity entity) throws Exception {
+		Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
+		volumeService.save(entity);
+		req.setStatus(200);
+	}
+	
+	@RequestMapping(value = "/volume/{name}/delete", method = RequestMethod.POST)
+	@ResponseBody
+	public void volumeDelete(HttpServletRequest res, HttpServletResponse req,
+			@RequestBody VolumeInitEntity entity) throws Exception {
+		Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
+		volumeService.delete(entity);
+		req.setStatus(200);
+	}
+	
+	
+	@RequestMapping(value = "/volume/{name}/start", method = RequestMethod.POST)
+	@ResponseBody
+	public void volumeStart(HttpServletRequest res, HttpServletResponse req,
+			@RequestBody VolumeInitEntity entity) throws Exception {
+		Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
+		res.setCharacterEncoding("UTF-8");
+		volumeService.start(entity);
+		req.setStatus(200);
+	}
+	
+	
+	@RequestMapping(value = "/volume/{name}/stop", method = RequestMethod.POST)
+	@ResponseBody
+	public void volumeStop(HttpServletRequest res, HttpServletResponse req,
+			@RequestBody VolumeInitEntity entity) throws Exception {
+		Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
+		res.setCharacterEncoding("UTF-8");
+		volumeService.stop(entity);
+		req.setStatus(200);
+	}
+
+}
diff --git a/src/com/platform/dao/DataInfoDao.java b/src/com/platform/dao/DataInfoDao.java
index 5b9419b0..d1c3fba8 100644
--- a/src/com/platform/dao/DataInfoDao.java
+++ b/src/com/platform/dao/DataInfoDao.java
@@ -20,8 +20,12 @@ public interface DataInfoDao {
 
 	List<String> getIdIsExist(List<Integer> list)throws Exception;
 	
+	List<DataInfoEntity> findAll()throws Exception;
+	
 	int removes(List<Integer> list)throws Exception;
 	
 	int save(DataInfoEntity data) throws Exception;
+	
+	int updateExtract(DataInfoEntity data) throws Exception;
 
 }
diff --git a/src/com/platform/dao/VolumeDao.java b/src/com/platform/dao/VolumeDao.java
new file mode 100644
index 00000000..1d1d0232
--- /dev/null
+++ b/src/com/platform/dao/VolumeDao.java
@@ -0,0 +1,27 @@
+package com.platform.dao;
+
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import com.platform.entities.VolumeInitEntity;
+
+/**
+ * @author chen
+ * 数据迁移状态 临时 存放 ,
+ */
+@Repository(value = "volumeDao")
+public interface VolumeDao {
+
+	/** 查
+	 * @return
+	 * @throws Exception
+	 */
+	List<VolumeInitEntity> findAll() throws Exception;
+	
+	int update(VolumeInitEntity data) throws Exception;
+	
+	int save(VolumeInitEntity data) throws Exception;
+	
+	int remove(String name) throws Exception;
+}
diff --git a/src/com/platform/entities/DataInfoEntity.java b/src/com/platform/entities/DataInfoEntity.java
index 062db3ce..45a64a36 100644
--- a/src/com/platform/entities/DataInfoEntity.java
+++ b/src/com/platform/entities/DataInfoEntity.java
@@ -35,6 +35,10 @@ public class DataInfoEntity {
 	/**	volume的path	 */
 	private String volumePath;
 	
+	private String volumeType;
+	
+	private String mark;
+	
 	public DataInfoEntity() {
 	}
 
@@ -251,6 +255,34 @@ public class DataInfoEntity {
 		this.volumePath = volumePath;
 	}
 
+	/**
+	 * @return the volumeType
+	 */
+	public String getVolumeType() {
+		return volumeType;
+	}
+
+	/**
+	 * @param volumeType the volumeType to set
+	 */
+	public void setVolumeType(String volumeType) {
+		this.volumeType = volumeType;
+	}
+
+	/**
+	 * @return the mark
+	 */
+	public String getMark() {
+		return mark;
+	}
+
+	/**
+	 * @param mark the mark to set
+	 */
+	public void setMark(String mark) {
+		this.mark = mark;
+	}
+
 	@Override
 	public String toString() {
 		return "id=" + this.id + " ,regionalismCode=" + this.regionalismCode
diff --git a/src/com/platform/entities/OracleConnectorParams.java b/src/com/platform/entities/OracleConnectorParams.java
index 8391a84a..7fcefd5e 100644
--- a/src/com/platform/entities/OracleConnectorParams.java
+++ b/src/com/platform/entities/OracleConnectorParams.java
@@ -6,6 +6,8 @@ import com.platform.utils.ConfigPropertyReader;
 import com.platform.utils.Configs;
 
 public class OracleConnectorParams {
+	
+	private String dataId;
 	private String port;
 	private String ip;
 	private String name;
@@ -43,6 +45,20 @@ public class OracleConnectorParams {
 		this.databaseName = properties.getProperty("collect-service-name");
 	}
 
+	/**
+	 * @return the dataId
+	 */
+	public String getDataId() {
+		return dataId;
+	}
+
+	/**
+	 * @param dataId the dataId to set
+	 */
+	public void setDataId(String dataId) {
+		this.dataId = dataId;
+	}
+
 	public String getPort() {
 		return port;
 	}
diff --git a/src/com/platform/entities/PagerOptions.java b/src/com/platform/entities/PagerOptions.java
index e69e560a..39a68d35 100644
--- a/src/com/platform/entities/PagerOptions.java
+++ b/src/com/platform/entities/PagerOptions.java
@@ -1,9 +1,8 @@
 package com.platform.entities;
 
-import java.util.List;
 
 public class PagerOptions {
-	private Integer currentPageNum; //当前页码
+	private Integer currentPageNum = 1; //当前页码
 
 	private String dataType; //数据类型
 
@@ -28,9 +27,13 @@ public class PagerOptions {
 	private Integer priorTableSize; //前一次操作一页显示的数据条数
 	
 	private String keyQuery;
-	
+	//模糊查询字段
 	private String[] array;
 	
+	private String volumeType;
+	//冷热区字段
+	private String mark;
+	
 	public Integer getCurrentPageNum() {
 		return currentPageNum;
 	}
@@ -154,5 +157,33 @@ public class PagerOptions {
 	public void setArray(String[] array) {
 		this.array = array;
 	}
+
+	/**
+	 * @return the volumeType
+	 */
+	public String getVolumeType() {
+		return volumeType;
+	}
+
+	/**
+	 * @param volumeType the volumeType to set
+	 */
+	public void setVolumeType(String volumeType) {
+		this.volumeType = volumeType;
+	}
+
+	/**
+	 * @return the mark
+	 */
+	public String getMark() {
+		return mark;
+	}
+
+	/**
+	 * @param mark the mark to set
+	 */
+	public void setMark(String mark) {
+		this.mark = mark;
+	}
 	
 }
diff --git a/src/com/platform/entities/VolumeInitEntity.java b/src/com/platform/entities/VolumeInitEntity.java
new file mode 100644
index 00000000..fef17763
--- /dev/null
+++ b/src/com/platform/entities/VolumeInitEntity.java
@@ -0,0 +1,120 @@
+package com.platform.entities;
+
+import java.util.List;
+
+public class VolumeInitEntity {
+	
+	private int id;
+	
+	private String name;
+	
+	private String ip;
+	
+	private String path;
+	
+	private String mark;
+	
+	private List<String> bricks;
+	
+	private String mountPoint;
+
+	/**
+	 * @return the id
+	 */
+	public int getId() {
+		return id;
+	}
+
+	/**
+	 * @param id the id to set
+	 */
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	/**
+	 * @return the name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @param name the name to set
+	 */
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	/**
+	 * @return the ip
+	 */
+	public String getIp() {
+		return ip;
+	}
+
+	/**
+	 * @param ip the ip to set
+	 */
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	/**
+	 * @return the path
+	 */
+	public String getPath() {
+		return path;
+	}
+
+	/**
+	 * @param path the path to set
+	 */
+	public void setPath(String path) {
+		this.path = path;
+	}
+
+	/**
+	 * @return the mark
+	 */
+	public String getMark() {
+		return mark;
+	}
+
+	/**
+	 * @param mark the mark to set
+	 */
+	public void setMark(String mark) {
+		this.mark = mark;
+	}
+
+	/**
+	 * @return the bricks
+	 */
+	public List<String> getBricks() {
+		return bricks;
+	}
+
+	/**
+	 * @param bricks the bricks to set
+	 */
+	public void setBricks(List<String> bricks) {
+		this.bricks = bricks;
+	}
+
+	/**
+	 * @return the mountPoint
+	 */
+	public String getMountPoint() {
+		return mountPoint;
+	}
+
+	/**
+	 * @param mountPoint the mountPoint to set
+	 */
+	public void setMountPoint(String mountPoint) {
+		this.mountPoint = mountPoint;
+	}
+	
+
+}
diff --git a/src/com/platform/entities/oracleForm.java b/src/com/platform/entities/oracleForm.java
new file mode 100644
index 00000000..1ea62bd4
--- /dev/null
+++ b/src/com/platform/entities/oracleForm.java
@@ -0,0 +1,55 @@
+package com.platform.entities;
+
+import java.util.List;
+
+public class oracleForm {
+	
+	private GatherOracleInfo target;
+	
+	private List<OracleConnectorParams> inneed;
+	
+	private String name;
+
+	/**
+	 * @return the totalOracle
+	 */
+	public GatherOracleInfo getTarget() {
+		return target;
+	}
+
+	/**
+	 * @param totalOracle the totalOracle to set
+	 */
+	public void setTarget(GatherOracleInfo target) {
+		this.target = target;
+	}
+
+	/**
+	 * @return the collOracle
+	 */
+	public List<OracleConnectorParams> getInneed() {
+		return inneed;
+	}
+
+	/**
+	 * @param collOracle the collOracle to set
+	 */
+	public void setInneed(List<OracleConnectorParams> inneed) {
+		this.inneed = inneed;
+	}
+
+	/**
+	 * @return the totalOracleName
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @param totalOracleName the totalOracleName to set
+	 */
+	public void setName(String name) {
+		this.name = name;
+	}
+
+}
diff --git a/src/com/platform/glusterfs/ShowData.java b/src/com/platform/glusterfs/ShowData.java
index 0ca8b438..8eb694c2 100644
--- a/src/com/platform/glusterfs/ShowData.java
+++ b/src/com/platform/glusterfs/ShowData.java
@@ -26,7 +26,7 @@ public class ShowData {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public Map<String,String> showVolumeFiles(String volumeName){
-		log.info("start show the data");		
+//		log.info("start show the data");		
 		Map<String,String> data_type=new HashMap<String, String>();
 		/**
 		 * get mount point of volumeName
@@ -45,14 +45,13 @@ public class ShowData {
 	 * @return
 	 */
 	public Map<String,String> showFolderData(String folderName){
-		log.info(" start get "+folderName+" data");		
+//		log.info(" start get "+folderName+" data");		
 
 
 		Map<String,String> data_type=new HashMap<String, String>();
 		String command="ls -l "+folderName;
 		
 		/*
-<<<<<<< HEAD
 		 * RunCommand runCommand=new RunCommand(); List<String>
 		 * reStrings=runCommand.runCommandWait(command);
 		 */
@@ -86,7 +85,7 @@ public class ShowData {
 			data_type.put(keyValue[8], keyValue[1]);
 						
 		}
-		log.info(" get "+folderName+" data successed");	
+//		log.info(" get "+folderName+" data successed");	
 		return data_type;
 	}
 	
@@ -98,7 +97,7 @@ public class ShowData {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public long getFolderSize(String folderPath) {
-		log.info("get " + folderPath + " Size ");
+//		log.info("get " + folderPath + " Size ");
 
 		String command = "du -k -d 0 "+folderPath+" | grep  " + folderPath + "|awk  \'{print $1}\'";
 		List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(command);
@@ -111,8 +110,6 @@ public class ShowData {
 			return -1;
 		} 
 		long size = Long.valueOf(reStrings.get(0));
-		
-
 		return size;
 	}
 	
diff --git a/src/com/platform/glusterfs/VolumeInfo.java b/src/com/platform/glusterfs/VolumeInfo.java
index e2ece069..f3583102 100644
--- a/src/com/platform/glusterfs/VolumeInfo.java
+++ b/src/com/platform/glusterfs/VolumeInfo.java
@@ -37,7 +37,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public List<String> showAllVolumeName() {
-		log.info("get volume name");
+//		log.info("get volume name");
 		List<String> volNames = new ArrayList<String>();
 
 		/*
@@ -84,7 +84,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public String getVolumeType(String volumeName) {
-		log.info("get volume type");
+//		log.info("get volume type");
 		String volType = "";
 
 		List<String> reStrings = Constant.ganymedSSH
@@ -123,7 +123,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public String getVolumeStatus(String volumeName) {
-		log.info("get volume status");
+//		log.info("get volume status");
 		String volStatus = "";
 		String cmd = Constant.glusterVolumeInfo + " " + volumeName + " |grep ^Status";
 		List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
@@ -162,7 +162,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public Long getVolumeAvailableSize(String volumeName) throws Exception{
-		log.info("get volume availableSize");
+//		log.info("get volume availableSize");
 		Long allSize = 0L;
 
 		String cmd = Constant.df + " | grep " + volumeName + "|awk '{print $4}'";
@@ -188,7 +188,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public Long getVolumeUseSize(String volumeName) throws Exception{
-		log.info("get volume used size");
+//		log.info("get volume used size");
 		Long usedSize = 0L;
 		if (volumeIsExists(volumeName) == false) {
 			log.error("1901 " + volumeName + " is not exists!");
@@ -219,7 +219,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public List<String> getVolumeBricks(String volumeName) {
-		log.info("get volume bricks");
+//		log.info("get volume bricks");
 
 		String cmd = "gluster volume info " + volumeName + " |grep ^Brick'[0-9]\\+' |awk '{print $2}'";
 		List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
@@ -243,7 +243,7 @@ public class VolumeInfo {
 	 * @see [类、类#方法、类#成员]
 	 */
 	public List<String> getVolumeMountPoint(String volumeName) {
-		log.info("get volume MountPoint");
+//		log.info("get volume MountPoint");
 		List<String> mountPoints = new ArrayList<>();
 		String cmd=Constant.df + "|grep " + volumeName + "|awk '{print $6}'";
 		List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
@@ -265,7 +265,7 @@ public class VolumeInfo {
 	}
 
 	public String getOneVolumeMountPoint(String volumeName) {
-		log.info("get one volume MountPoint");
+//		log.info("get one volume MountPoint");
 		
 		String mountPoint=null;
 		
diff --git a/src/com/platform/kubernetes/SimpleKubeClient.java b/src/com/platform/kubernetes/SimpleKubeClient.java
index ab1ab367..28c0da14 100644
--- a/src/com/platform/kubernetes/SimpleKubeClient.java
+++ b/src/com/platform/kubernetes/SimpleKubeClient.java
@@ -4,6 +4,7 @@ import io.fabric8.kubernetes.api.model.Container;
 import io.fabric8.kubernetes.api.model.ContainerPort;
 import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.api.model.ReplicationController;
+import io.fabric8.kubernetes.client.Client;
 import io.fabric8.kubernetes.client.Config;
 import io.fabric8.kubernetes.client.ConfigBuilder;
 import io.fabric8.kubernetes.client.DefaultKubernetesClient;
@@ -19,7 +20,7 @@ import com.platform.utils.UtilsHelper;
 
 public class SimpleKubeClient {
 	private KubernetesClient client;
-	private final static String DEFAULT_NAMESPACE = "default";	
+	private final static String DEFAULT_NAMESPACE = "default";
 
 	public SimpleKubeClient() {
 		this.client = new DefaultKubernetesClient(Configs.KUBE_MASTER_URL);
@@ -32,18 +33,22 @@ public class SimpleKubeClient {
 	public SimpleKubeClient(Config config) {
 		Config cf = config;
 		if (null == config) {
-			cf = new ConfigBuilder().withMasterUrl(Configs.KUBE_MASTER_URL).build();
+			cf = new ConfigBuilder().withMasterUrl(Configs.KUBE_MASTER_URL)
+					.build();
 		}
+
 		this.client = new DefaultKubernetesClient(cf);
 	}
 
+	// RollingUpdatercline
+
 	public void updateOrAddReplicasLabelById(String namespace,
 			String resourceId, String key, String value) {
 		KubernetesClient kubeClient = client;
 		if (checkClientNull())
 			kubeClient = new DefaultKubernetesClient(Configs.KUBE_MASTER_URL);
 		kubeClient.replicationControllers().inNamespace(namespace)
-				.withName(resourceId).edit().editMetadata()
+				.withName(resourceId).rolling().edit().editMetadata()
 				.addToLabels(key, value).endMetadata().done();
 	}
 
diff --git a/src/com/platform/oracle/OracleConnector.java b/src/com/platform/oracle/OracleConnector.java
index c7749648..923d578b 100644
--- a/src/com/platform/oracle/OracleConnector.java
+++ b/src/com/platform/oracle/OracleConnector.java
@@ -1,76 +1,112 @@
-package com.platform.oracle;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import com.platform.utils.Configs;
-
-public class OracleConnector {	
-	static {
-		try {
-			Class.forName("oracle.jdbc.driver.OracleDriver");
-			Configs.CONSOLE_LOGGER.info("Oracle驱动加载成功");
-		} catch (ClassNotFoundException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-	}	
-	
-
-	public static Connection ConnectionBuilder(String url, String user,
-			String password) {	
-		Connection conn=null;
-		try {
-			conn = DriverManager.getConnection(url, user, password);
-		} catch (SQLException e) {		
-			Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage() + "]");
-		}
-		return conn;
-	}
-
-	public static boolean canConnect(String url, String user, String password) {
-		return (null != ConnectionBuilder(url, user, password));
-	}
-
-	public ResultSet getSQLExecResultSet(Connection conn, String sql) {
-		ResultSet resultSet = null;
-		try {
-			Statement statement = conn
-					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
-							ResultSet.CONCUR_UPDATABLE);
-			resultSet = statement.executeQuery(sql);
-		} catch (SQLException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-
-		return resultSet;
-	}
-
-	public ResultSet getSQLExecResultSet(String url, String user,
-			String password, String sql) {
-		return getSQLExecResultSet(ConnectionBuilder(url, user, password), sql);
-	}
-
-	/**
-	 * 执行对oracle数据库的增、删
-	 * @param conn
-	 * @param sql
-	 * @return 是否执行成功
-	 */
-	public boolean execOracleSQL(Connection conn, String sql) {
-		boolean flag = false;
-		try {
-			Statement statement = conn.createStatement();
-			if (statement.executeUpdate(sql) > 0)
-				flag = true;
-		} catch (SQLException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return flag;
-	}	
+package com.platform.oracle;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import com.base.Custom4exception;
+import com.base.CustomException;
+import com.platform.utils.Configs;
+import com.platform.utils.FileOperateHelper;
+
+public class OracleConnector {	
+	static {
+		try {
+			Class.forName("oracle.jdbc.driver.OracleDriver");
+			Configs.CONSOLE_LOGGER.info("Oracle驱动加载成功");
+		} catch (ClassNotFoundException e) {
+			// TODO Auto-generated catch block
+			new CustomException(Custom4exception.OracleSQL_Except, e);
+			e.printStackTrace();
+		}
+	}	
+	
+
+	public synchronized static Connection ConnectionBuilder(String url, String user,
+			String password) {	
+		Connection conn=null;
+		try {
+			conn = DriverManager.getConnection(url, user, password);
+		} catch (SQLException e) {		
+			new CustomException(Custom4exception.OracleSQL_Except, e);
+			Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage() + "]");
+		}
+		return conn;
+	}
+
+	public synchronized static boolean canConnect(String url, String user, String password) {
+		return (null != ConnectionBuilder(url, user, password));
+	}
+
+	public synchronized static ResultSet getSQLExecResultSet(Connection conn, String sql, String filePath) {
+		ResultSet resultSet = null;
+		try {
+			Statement statement = conn
+					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
+							ResultSet.CONCUR_UPDATABLE);
+			resultSet = statement.executeQuery(sql);
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+"OK \r\n");
+		} catch (SQLException e) {
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+e.getMessage()+"\r\n");
+			new CustomException(Custom4exception.OracleSQL_Except, e);
+		}
+
+		return resultSet;
+	}
+
+	public synchronized static ResultSet getSQLExecResultSet(String url, String user,
+			String password, String sql, String filePath) {
+		return getSQLExecResultSet(ConnectionBuilder(url, user, password), sql, filePath);
+	}
+
+	/**
+	 * 执行对oracle数据库的增、删
+	 * @param conn
+	 * @param sql
+	 * @return true:执行的不返回集合数据的sql成功,  是否执行成功
+	 */
+	public synchronized static boolean execOracleSQL(Connection conn, String sql, String filePath) {
+		boolean flag = false;
+		try {
+			Statement statement = conn.createStatement();
+			statement.execute(sql);
+			flag = true;
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+"OK \r\n");
+		} catch (SQLException e) {
+			flag = false;
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+e.getMessage()+"\r\n");
+			new CustomException(Custom4exception.OracleSQL_Except, e);
+		}
+		return flag;
+	}
+	/**
+	 * 执行对oracle数据库的增、删
+	 * @param conn
+	 * @param sql
+	 * @return true:执行结果大于1,即有数据    是否执行成功
+	 */
+	public synchronized static boolean execUpdateOracleSQL(Connection conn, String sql, String filePath) {
+		boolean flag = false;
+		try {
+			Statement statement = conn.createStatement();
+			if(statement.executeUpdate(sql) > 0)
+			{
+				flag = true;
+				FileOperateHelper
+				.fileWrite(filePath, sql+ "\r\n"+"OK \r\n");
+			}
+		} catch (SQLException e) {
+			flag = false;
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+e.getMessage()+"\r\n");
+			new CustomException(Custom4exception.OracleSQL_Except, e, sql);
+		}
+		return flag;
+	}
 }
\ No newline at end of file
diff --git a/src/com/platform/service/DataInfoServiceImp.java b/src/com/platform/service/DataInfoServiceImp.java
index 95f79c0f..4baf7db0 100644
--- a/src/com/platform/service/DataInfoServiceImp.java
+++ b/src/com/platform/service/DataInfoServiceImp.java
@@ -46,6 +46,11 @@ public class DataInfoServiceImp implements DataInfoService {
 			pagerOptions.setOffset(offset + 1);
 			List<DataInfoEntity> result = dfdDao
 					.getLimitedDataInfoEntities(pagerOptions);
+			if (null != result) {
+				for (DataInfoEntity dataInfoEntity : result) {
+					dataInfoEntity.setVolumeType(dataInfoEntity.getMark());
+				}
+			}
 			modelMap.addAttribute("data", result);
 			modelMap.addAttribute("length", count);
 		} catch (Exception e) {
diff --git a/src/com/platform/service/ILogRead.java b/src/com/platform/service/ILogRead.java
new file mode 100644
index 00000000..3b42fca3
--- /dev/null
+++ b/src/com/platform/service/ILogRead.java
@@ -0,0 +1,7 @@
+package com.platform.service;
+
+public interface ILogRead {
+	
+	public String readLog(String filename) throws Exception;
+
+}
diff --git a/src/com/platform/service/IOracleExtractService.java b/src/com/platform/service/IOracleExtractService.java
index 87386f82..77cabccd 100644
--- a/src/com/platform/service/IOracleExtractService.java
+++ b/src/com/platform/service/IOracleExtractService.java
@@ -18,5 +18,5 @@ public interface IOracleExtractService {
 	 */
 //	public boolean extractOracle(String name, List<OracleConnectorParams> dataInfos, GatherOracleInfo oracleConnect) throws Exception;
 //	public boolean extractOracle(String name, List<DataInfoEntity> dataInfos, Map<String, String> oracleConnect) throws Exception;
-	public boolean extractOracle(String name, List<Map<String, String>> dataInfo, Map<String, String> oracleConnect) throws Exception;
+	public boolean extractOracle(String name, List<OracleConnectorParams> dataInfo, GatherOracleInfo oracleConnect) throws Exception;
 }
diff --git a/src/com/platform/service/IVolumeService.java b/src/com/platform/service/IVolumeService.java
new file mode 100644
index 00000000..15e211a7
--- /dev/null
+++ b/src/com/platform/service/IVolumeService.java
@@ -0,0 +1,15 @@
+package com.platform.service;
+
+import com.platform.entities.VolumeInitEntity;
+
+public interface IVolumeService {
+	
+	public int save(VolumeInitEntity entity) throws Exception;
+	
+	public int delete(VolumeInitEntity entity) throws Exception;
+	
+	public int start(VolumeInitEntity entity) throws Exception;
+	
+	public int stop(VolumeInitEntity entity) throws Exception;
+
+}
diff --git a/src/com/platform/service/OracleExtractHelper.java b/src/com/platform/service/OracleExtractHelper.java
index b8c919ad..26d5643d 100644
--- a/src/com/platform/service/OracleExtractHelper.java
+++ b/src/com/platform/service/OracleExtractHelper.java
@@ -1,180 +1,186 @@
-package com.platform.service;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-import com.base.Custom4exception;
-import com.base.CustomException;
-import com.platform.entities.GatherOracleInfo;
-import com.platform.entities.OracleConnectorParams;
-import com.platform.oracle.OracleConnector;
-import com.platform.utils.Configs;
-import com.platform.utils.FileOperateHelper;
-
-public class OracleExtractHelper {
-
-	private OracleConnector oConnector;
-
-	/**
-	 * 判断dblink是否已经存在
-	 * 
-	 * @param conn
-	 * @param linkName
-	 *            dblink的名称
-	 * @return
-	 */
-	private boolean hasSameNameDBLink(Connection conn, String linkName) {
-		boolean flag = false;
-		String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK=" + linkName;
-		ResultSet rSet = oConnector.getSQLExecResultSet(conn, sql);
-		try {
-			rSet.last();
-			if (rSet.getRow() > 0)
-				flag = true;
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return flag;
-	}
-
-	/**
-	 * 创建dblink
-	 * 
-	 * @param conn 汇总库的连接
-	 * @param oc 采集库
-	 *            dblink连接参数实体
-	 */
-	public void createDBLink(Connection conn, OracleConnectorParams oc) {
-		String linkName = "LinkTo" + oc.getName();
-		String sql = "CREATE PUBLIC DATABASE LINK "
-				+ linkName
-				+ " CONNECT TO "
-				+ oc.getUser()
-				+ " IDENTIFIED BY "
-				+ oc.getPassword()
-				+ " USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = "
-				+ oc.getIp() + ")(PORT = " + oc.getPort()
-				+ ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName()
-				+ ")))';";
-		if (null != oc) {
-			if (hasSameNameDBLink(conn, linkName)) { // 如果dblink已经存在,先删除dblink,在创建dblink
-				String deleteSql = "DROP PUBLIC DATABASE LINK LinkTo"
-						+ linkName;
-				FileOperateHelper
-						.fileWrite(
-								Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-								deleteSql+"\r\n");
-				if (oConnector.execOracleSQL(conn, deleteSql)) {
-					FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
-							+ oc.getName(), sql+"\r\n");
-					oConnector.execOracleSQL(conn, sql);
-				} else {
-					Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!");
-					FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
-							+ oc.getName(), "删除已有的DBLink失败,无法创建新的DBLink!"+"\r\n");
-				}
-
-			} else {
-				// 否则,创建dblink
-				oConnector.execOracleSQL(conn, sql);
-				FileOperateHelper.fileWrite(
-						Configs.EXTRACT_LOG_LOCALTION + oc.getName(), sql);
-			}
-		}
-	}
-
-	/**
-	 * 创建表空间
-	 * 
-	 * @param conn 汇总库连接
-	 * @param oc 汇总库信息
-	 * @return
-	 */
-	public boolean createTableSpace(Connection conn, GatherOracleInfo oc) {
-		String tmpSql = "select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = '"
-				+ Configs.GATHER_TABLESPACE_NAME + "'";
-		if (oConnector.execOracleSQL(conn, tmpSql)) {
-			FileOperateHelper
-			.fileWrite(
-					Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-					tmpSql+"\r\n");
-			return true;
-		} else {
-			String sql = "create tablespace " + Configs.GATHER_TABLESPACE_NAME
-					+ " datafile '" + Configs.GATHER_TABLESPACE_PATH
-					+ Configs.GATHER_TABLESPACE_NAME + ".dbf"
-					+ "' size 512M autoextend on next 512M maxsize unlimited";
-			FileOperateHelper
-			.fileWrite(
-					Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-					sql+"\r\n");
-			return oConnector.execOracleSQL(conn, sql);
-		}
-	}
-
-	/**
-	 * 创建用户并授权
-	 * 
-	 * @param conn 汇总库连接
-	 * @param oc  汇总库信息
-	 */
-	public void createUser(Connection conn, GatherOracleInfo oc) {
-		String strTUser = oc.getName() + Configs.TABLE_SUFFIX;
-		String sql = "Create user " + strTUser + " default tablespace "
-				+ Configs.GATHER_TABLESPACE_NAME + " identified by "
-				+ Configs.GATHER_TABLE_PASSWORD;
-		String grantSql = "grant connect, resource, dba to " + strTUser;
-		
-		oConnector.execOracleSQL(conn, sql);
-		FileOperateHelper
-		.fileWrite(
-				Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-				sql+"\r\n");
-		
-		oConnector.execOracleSQL(conn, grantSql);
-		FileOperateHelper
-		.fileWrite(
-				Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-				grantSql+"\r\n");
-	}
-
-	/**
-	 * 执行汇总操作
-	 * 
-	 * @param conn 汇总库连接
-	 * @param oc 采集库
-	 */
-	public void extractColleDB(Connection conn, OracleConnectorParams oc) {
-		String strTUser = oc.getName() + Configs.TABLE_SUFFIX;
-		String sql = "SELECT 'create table "
-				+ strTUser
-				+ ".J'|| substr(t.OWNER||'_'||t.TABLE_NAME,0,29)||' as select * from '||t.OWNER||'.'||t.TABLE_NAME||"
-				+ "'@linkTo"
-				+ oc.getName()
-				+ ";' FROM dba_tables@linkTo"
-				+ oc.getName()
-				+ " t WHERE t.TABLESPACE_NAME NOT IN ('SYSTEM','SYSAUX')"
-				+ " and t.owner||t.table_name not in (select owner||table_name from dba_tables@linkTo"
-				+ oc.getName() + " where 'data_type'='CLOB')";
-		ResultSet rsSet = oConnector.getSQLExecResultSet(conn, sql);
-		FileOperateHelper
-		.fileWrite(
-				Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-				sql+"\r\n");
-		try {
-			while (rsSet.next()) {
-				String resultSql = rsSet.getString(0);
-				oConnector.execOracleSQL(conn, resultSql);
-				FileOperateHelper
-				.fileWrite(
-						Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
-						resultSql+"\r\n");
-			}
-		} catch (SQLException e) {
-			new CustomException(Custom4exception.threadVolume_Oracle_Except, e);
-		}
-
-	}
-}
+package com.platform.service;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import com.base.Custom4exception;
+import com.base.CustomException;
+import com.platform.entities.GatherOracleInfo;
+import com.platform.entities.OracleConnectorParams;
+import com.platform.oracle.OracleConnector;
+import com.platform.utils.Configs;
+import com.platform.utils.FileOperateHelper;
+
+public class OracleExtractHelper {
+
+	/**
+	 * 判断dblink是否已经存在
+	 * 
+	 * @param conn
+	 * @param linkName
+	 *            dblink的名称
+	 * @return
+	 */
+	private boolean hasSameNameDBLink(Connection conn, String linkName, String filePath) {
+		boolean flag = false;
+		String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK='" + linkName+"'";
+		ResultSet rSet = null;
+		try {
+			rSet = OracleConnector.getSQLExecResultSet(conn, sql, null);
+			rSet.last();
+			if (rSet.getRow() > 0)
+				flag = true;
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+"OK \r\n");
+		} catch (Exception e) {
+			FileOperateHelper
+			.fileWrite(filePath, sql+ "\r\n"+ e.getMessage() + " \r\n");
+			new CustomException(Custom4exception.threadVolume_Oracle_Except, e, rSet);
+		}
+		return flag;
+	}
+
+	/**
+	 * 创建dblink
+	 * 
+	 * @param conn 汇总库的连接
+	 * @param oc 采集库
+	 *            dblink连接参数实体
+	 */
+	public void createDBLink(Connection conn, OracleConnectorParams oc) {
+		String linkName = "LINKTO" + oc.getName();
+		String sql = "CREATE PUBLIC DATABASE LINK "
+				+ linkName
+				+ " CONNECT TO "
+				+ oc.getUser()
+				+ " IDENTIFIED BY "
+				+ oc.getPassword()
+				+ " USING \'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = "
+				+ oc.getIp() + ")(PORT = " + oc.getPort()
+				+ ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName()
+				+ ")))\'";
+		if (null != oc) {
+			if (hasSameNameDBLink(conn, linkName, Configs.EXTRACT_LOG_LOCALTION + oc.getName())) { // 如果dblink已经存在,先删除dblink,在创建dblink
+				String deleteSql = "DROP PUBLIC DATABASE LINK "
+						+ linkName;
+//				FileOperateHelper
+//						.fileWrite(
+//								Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
+//								deleteSql+"\r\n");
+				if (OracleConnector.execOracleSQL(conn, deleteSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName())) {
+//					FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
+//							+ oc.getName(), sql+"\r\n");
+					OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
+				} else {
+					Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!");
+					FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
+							+ oc.getName(), "删除已有的DBLink失败,无法创建新的DBLink!"+"\r\n");
+				}
+
+			} else {
+				// 否则,创建dblink
+				OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
+//				FileOperateHelper.fileWrite(
+//						Configs.EXTRACT_LOG_LOCALTION + oc.getName(), sql);
+			}
+		}
+	}
+
+	/**
+	 * 创建表空间
+	 * 
+	 * @param conn 汇总库连接
+	 * @param collectOracle 
+	 * @param oc 汇总库信息
+	 * @return
+	 */
+	public boolean createTableSpace(Connection conn, OracleConnectorParams collectOracle, GatherOracleInfo oc) {
+		String tmpSql = "select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = '"
+				+ oc.getTableName() + "'";
+		if (OracleConnector.execUpdateOracleSQL(conn, tmpSql, Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName())) {
+//			FileOperateHelper
+//			.fileWrite(
+//					Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
+//					tmpSql+"\r\n");
+			return true;
+		} else {
+			String sql = "create tablespace " + oc.getTableName()
+					+ " datafile '" + Configs.GATHER_TABLESPACE_PATH
+					+ oc.getTableName() + ".dbf"
+					+ "' size 512M autoextend on next 512M maxsize unlimited";
+//			FileOperateHelper
+//			.fileWrite(
+//					Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
+//					sql+"\r\n");
+			return OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName());
+		}
+	}
+
+	/**
+	 * 创建用户并授权
+	 * 
+	 * @param conn 汇总库连接
+	 * @param oc  汇总库信息
+	 */
+	public void createUser(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
+		String strTUser = oc.getName() + totalOracle.getSuffix();
+		
+		String sql = "Create user " + strTUser + " default tablespace "
+				+ totalOracle.getTableName() + " identified by "
+				+ Configs.GATHER_TABLE_PASSWORD;
+		String grantSql = "grant connect, resource, dba to " + strTUser;
+		
+		OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
+//		FileOperateHelper
+//		.fileWrite(
+//				Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
+//				sql+"\r\n");
+		
+		OracleConnector.execOracleSQL(conn, grantSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
+//		FileOperateHelper
+//		.fileWrite(
+//				Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
+//				grantSql+"\r\n");
+	}
+
+	/**
+	 * 执行汇总操作
+	 * 
+	 * @param conn 汇总库连接
+	 * @param oc 采集库
+	 */
+	public void extractColleDB(Connection conn, OracleConnectorParams oc) {
+		String strTUser = oc.getName() + Configs.TABLE_SUFFIX;
+		String sql = "SELECT 'create table "
+				+ strTUser
+				+ ".J'|| substr(t.OWNER||'_'||t.TABLE_NAME,0,29)||' as select * from '||t.OWNER||'.'||t.TABLE_NAME||"
+				+ "'@LINKTO"
+				+ oc.getName()
+				+ ";' FROM dba_tables@LINKTO"
+				+ oc.getName()
+				+ " t WHERE t.TABLESPACE_NAME NOT IN ('SYSTEM','SYSAUX')"
+				+ " and t.owner||t.table_name not in (select owner||table_name from dba_tables@LINKTO"
+				+ oc.getName() + " where 'data_type'='CLOB')";
+		ResultSet rsSet = OracleConnector.getSQLExecResultSet(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
+//		FileOperateHelper
+//		.fileWrite(
+//				Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
+//				sql+"\r\n");
+			try {
+				while (rsSet.next()) {
+					try {
+						rsSet.getRow();
+						String resultSql = rsSet.getString(1).replace(";", "");
+						OracleConnector.execUpdateOracleSQL(conn, resultSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
+					} catch (SQLException e) {
+						new CustomException(Custom4exception.threadVolume_Oracle_Except, e, rsSet.getString(1));
+					}
+				}
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+
+	}
+}
diff --git a/src/com/platform/service/OracleStatusService.java b/src/com/platform/service/OracleStatusService.java
index d9b006e7..c1265c90 100644
--- a/src/com/platform/service/OracleStatusService.java
+++ b/src/com/platform/service/OracleStatusService.java
@@ -10,10 +10,13 @@ import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
 
+import org.apache.commons.lang.text.StrBuilder;
+
 import com.platform.entities.OracleConnectorParams;
 import com.platform.kubernetes.SimpleKubeClient;
 import com.platform.oracle.OracleConnector;
 import com.platform.utils.Configs;
+import com.platform.utils.Constant;
 
 public class OracleStatusService {
 	private static Map<String, Timer> alliveTask = new Hashtable<String, Timer>();
@@ -29,16 +32,24 @@ public class OracleStatusService {
 		OracleConnectorParams orp = new OracleConnectorParams();
 		Timer timer = new Timer();
 		alliveTask.put(replicasName, timer);
-		timer.schedule(new connectTask(replicasName, orp, sKubeClient), DELAY_TIME,
-				INTERVAL_TIME);
+		timer.schedule(new connectTask(replicasName, orp, sKubeClient),
+				DELAY_TIME, INTERVAL_TIME);
 
 	}
 
 	public void cancelToOracle(String replicasName, String operate) {
 		if (operate.equals("stop")) {
-			SimpleKubeClient sKubeClient = new SimpleKubeClient();
-			sKubeClient.updateOrAddReplicasLabelById(replicasName, "status",
-					"0");
+			String cmd = "kubectl label --overwrite rc " + replicasName
+					+ " status=0";
+			List<String> rList = Constant.ganymedSSH
+					.execCmdWaitAcquiescent(cmd);
+			StringBuffer sb = new StringBuffer();
+			for (String str : rList)
+				sb.append(str).append("\n");
+			Configs.CONSOLE_LOGGER.info(sb.toString());
+			// SimpleKubeClient sKubeClient = new SimpleKubeClient();
+			// sKubeClient.updateOrAddReplicasLabelById(replicasName,
+			// "status","0");
 		}
 		killAlliveTask(replicasName);
 	}
@@ -85,8 +96,9 @@ public class OracleStatusService {
 		private int count;
 		private OracleConnectorParams ocp;
 		private SimpleKubeClient client;
-		
-		public connectTask(String taskName, OracleConnectorParams ocp, SimpleKubeClient client){
+
+		public connectTask(String taskName, OracleConnectorParams ocp,
+				SimpleKubeClient client) {
 			this.taskName = taskName;
 			this.ocp = ocp;
 			this.count = 0;
@@ -102,12 +114,20 @@ public class OracleStatusService {
 
 		@Override
 		public void run() {
-			if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { //如果任务已经执行10次,则任务oracle启动失败,并取消oracle连接
+			if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { // 如果任务已经执行10次,则任务oracle启动失败,并取消oracle连接
 				killAlliveTask(taskName);
-				client.updateOrAddReplicasLabelById(taskName, "status", "1"); //更新ReplicationController标签,将oracle状态标示未1(0:启动中,1:失败,2:成功)
+				// client.updateOrAddReplicasLabelById(taskName, "status", "1");
+				// //更新ReplicationController标签,将oracle状态标示未1(0:启动中,1:失败,2:成功)
+				String cmd = "kubectl label --overwrite rc " + taskName
+						+ " status=1";
+				List<String> rList = Constant.ganymedSSH
+						.execCmdWaitAcquiescent(cmd);
+				StringBuffer sb = new StringBuffer();
+				for (String str : rList)
+					sb.append(str).append("\n");
 				Configs.CONSOLE_LOGGER.info("更新replicationController标签: "
 						+ taskName + "\t[标签更新为: 失败]");
-			} else { //否则,执行连接oracle任务,判断oracle是否启动成功
+			} else { // 否则,执行连接oracle任务,判断oracle是否启动成功
 				Pod pod = filterPod();
 				if (pod != null) {
 					String ip = client.getPodHostIp(pod);
@@ -115,15 +135,23 @@ public class OracleStatusService {
 					if (ip != null && port != 0) {
 						String url = "jdbc:oracle:thin:@" + ip + ":" + port
 								+ ":" + ocp.getDatabaseName();
-						boolean flag = OracleConnector.canConnect(url, //连接结果返回参数,true标示连接成功,false标示连接失败
+						boolean flag = OracleConnector.canConnect(url, // 连接结果返回参数,true标示连接成功,false标示连接失败
 								ocp.getUser(), ocp.getPassword());
 						Configs.CONSOLE_LOGGER.info("url:" + url + ",user:"
 								+ ocp.getUser() + ",password:"
 								+ ocp.getPassword());
 						String message = "失败";
 						if (flag && alliveTask.containsKey(taskName)) {
-							client.updateOrAddReplicasLabelById(taskName,
-									"status", "2");
+							String cmd = "kubectl label --overwrite rc "
+									+ taskName + " status=2";
+							// client.updateOrAddReplicasLabelById(taskNSyame,
+							// "status", "2");
+							List<String> rList = Constant.ganymedSSH
+									.execCmdWaitAcquiescent(cmd);
+							StringBuffer sb = new StringBuffer();
+							for (String str : rList)
+								sb.append(str).append("\n");
+							Configs.CONSOLE_LOGGER.info(sb.toString());
 							message = "成功";
 							killAlliveTask(taskName); // 连接成功,取消连接
 							Configs.CONSOLE_LOGGER
@@ -140,6 +168,7 @@ public class OracleStatusService {
 
 		/**
 		 * 获取oracle的连接ip地址和端口号
+		 * 
 		 * @return
 		 */
 		private Pod filterPod() {
diff --git a/src/com/platform/service/impl/LogReadServiceImpl.java b/src/com/platform/service/impl/LogReadServiceImpl.java
new file mode 100644
index 00000000..2d9dff31
--- /dev/null
+++ b/src/com/platform/service/impl/LogReadServiceImpl.java
@@ -0,0 +1,19 @@
+package com.platform.service.impl;
+
+import org.springframework.stereotype.Service;
+
+import com.platform.service.ILogRead;
+import com.platform.utils.Configs;
+import com.platform.utils.FileOperateHelper;
+
+@Service(value = "logReadService")
+public class LogReadServiceImpl implements ILogRead {
+	
+
+	@Override
+	public String readLog(String filename) throws Exception {		
+		String result = FileOperateHelper.fileReader(Configs.EXTRACT_LOG_LOCALTION + "J" + filename.replace("-", "_")+".log");		
+		return result;
+	}
+
+}
\ No newline at end of file
diff --git a/src/com/platform/service/impl/MoveDataServiceImpl.java b/src/com/platform/service/impl/MoveDataServiceImpl.java
index 163d86b3..b3aca0e8 100644
--- a/src/com/platform/service/impl/MoveDataServiceImpl.java
+++ b/src/com/platform/service/impl/MoveDataServiceImpl.java
@@ -14,9 +14,11 @@ import org.springframework.stereotype.Service;
 
 import com.platform.dao.DataInfoDao;
 import com.platform.dao.DataInfoMoveTmpDao;
+import com.platform.dao.VolumeDao;
 import com.platform.entities.DataInfoEntity;
 import com.platform.entities.DataInfoEntityMoveTmp;
 import com.platform.entities.FolderNode;
+import com.platform.entities.VolumeInitEntity;
 import com.platform.glusterfs.CheckoutMD5;
 import com.platform.glusterfs.CopyData;
 import com.platform.glusterfs.RemoveData;
@@ -32,6 +34,9 @@ public class MoveDataServiceImpl implements IMoveDataService {
 
 	@Resource(name = "dataInfoDao")
 	private DataInfoDao dataInfoDao;
+	
+	@Resource(name = "volumeDao")
+	private VolumeDao volumeDao;
 
 	private RemoveData removeservice = new RemoveData();
 
@@ -57,12 +62,23 @@ public class MoveDataServiceImpl implements IMoveDataService {
 	public boolean moveData(List<DataInfoEntity> data, FolderNode node)
 			throws Exception {
 		boolean isSuccess = false;
+		if (null ==node.getName() ||"".equals(node.getName())) {
+			return false;
+		}
+		if (null ==node.getPath() ||"".equals(node.getPath())) {
+			return false;
+		}
+		List<VolumeInitEntity> listVolume = volumeDao.findAll();
+		if (null == listVolume || listVolume.size() == 0) {
+			return false;
+		}
 		String tailPath = "";
 		if (null != data) {
 			// XXX/320198_16/1,or XXX/320122KFQ_15/1 ---> /320198_16/1, or
 			// /320122KFQ_15/1
 			List<DataInfoEntityMoveTmp> exist = dataInfoMoveTmpDao.findAll();
 			List<String> existIds = new ArrayList<String>();
+			List<Integer> fkIds = new ArrayList<Integer>();
 			if (null != exist) {
 				for (DataInfoEntityMoveTmp dataInfoEntityMoveTmp : exist) {
 					if ("0".equals(dataInfoEntityMoveTmp.getCompleteStatus())
@@ -71,6 +87,7 @@ public class MoveDataServiceImpl implements IMoveDataService {
 						if (null != dataInfoEntityMoveTmp.getDataPath()) {
 							existIds.add(dataInfoEntityMoveTmp.getDataPath());
 						}
+						fkIds.add(dataInfoEntityMoveTmp.getFkid());
 					}
 				}
 			}
@@ -89,6 +106,12 @@ public class MoveDataServiceImpl implements IMoveDataService {
 				if (existIds.contains(dataInfoEntity.getDataPath())) {
 					continue;
 				}
+				if (dataInfoEntity.getId() == 0) {
+					continue;
+				}
+				if (fkIds.contains(dataInfoEntity.getId())) {
+					continue;
+				}
 				// TODO 正则:取出 data 的后面 的 路径,eg: XXX/320198_16/1,or
 				// XXX/320122KFQ_15/1)
 				Matcher matcher = pattern.matcher(dataInfoEntity.getDataPath());
@@ -108,11 +131,30 @@ public class MoveDataServiceImpl implements IMoveDataService {
 				dataMove.setDstPath(finalDestPath);
 				dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
 				dataMove.setFkid(dataInfoEntity.getId());
-				dataMove.setVolumePath(node.getName());
+				// 末尾 含有 /
+				Matcher matcher3 = pattern2.matcher(node.getPath());
+				// 去掉 最后 的 / 符合
+				String volumePath = ""; 
+				if (!matcher3.find()) {
+					volumePath = node.getPath()+"/";
+				}
+				else {
+					volumePath = node.getPath();
+				}
+				for ( VolumeInitEntity ve : listVolume) {
+					if (volumePath.contains(ve.getPath())) {
+						dataMove.setDstVolumePath(ve.getPath());
+						dataMove.setDstVolumeIp(ve.getIp());
+						break;
+					}
+				}
 				moveList.add(dataMove);
 			}
 			if (moveList.size() > 0) {
 				dataInfoMoveTmpDao.insertBatch(moveList);
+//				for (DataInfoEntityMoveTmp dataInfoEntityMoveTmp2 : moveList) {
+//					dataInfoMoveTmpDao.save(dataInfoEntityMoveTmp2);
+//				}
 				isSuccess = true;
 			}
 		}
diff --git a/src/com/platform/service/impl/OracleExtractServiceImpl.java b/src/com/platform/service/impl/OracleExtractServiceImpl.java
index 053001e9..908dc4c9 100644
--- a/src/com/platform/service/impl/OracleExtractServiceImpl.java
+++ b/src/com/platform/service/impl/OracleExtractServiceImpl.java
@@ -1,22 +1,30 @@
 package com.platform.service.impl;
 
 import java.sql.Connection;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
+
+import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
 
+import com.base.Custom4exception;
+import com.base.CustomException;
+import com.platform.dao.DataInfoDao;
+import com.platform.entities.DataInfoEntity;
 import com.platform.entities.GatherOracleInfo;
 import com.platform.entities.OracleConnectorParams;
 import com.platform.kubernetes.SimpleKubeClient;
 import com.platform.oracle.OracleConnector;
 import com.platform.service.IOracleExtractService;
 import com.platform.service.OracleExtractHelper;
-import com.platform.utils.Bean2MapUtils;
+import com.platform.utils.Configs;
+import com.platform.utils.Constant;
 
 @Service(value = "OracleExtract")
 public class OracleExtractServiceImpl implements IOracleExtractService {
+	
+	@Resource(name = "dataInfoDao")
+	private DataInfoDao dataInfoDao;
 	/**
 	 * kubernetes client
 	 */
@@ -32,35 +40,55 @@ public class OracleExtractServiceImpl implements IOracleExtractService {
 	private OracleConnector connect = new OracleConnector();
 	
 	@Override
-	public boolean extractOracle(String name, List<Map<String, String>> dataInfoMap,
-			Map<String, String> oracleConnect) throws Exception {
+	public boolean extractOracle(String name, List<OracleConnectorParams> dataInfolist,
+			GatherOracleInfo oracleConnect) throws Exception {
 		boolean isSuccess = false;
 		try{
 			//map转  bean(汇总库信息-带tableName的)
-			GatherOracleInfo oracleModel = (GatherOracleInfo) Bean2MapUtils.convertMap(GatherOracleInfo.class, oracleConnect);
-			
+			GatherOracleInfo oracleModel =  oracleConnect;
 			//采集库连接参数
-			List<OracleConnectorParams> datainfos = new ArrayList<OracleConnectorParams>();
-			for (Map<String, String> map : dataInfoMap) {
-				OracleConnectorParams dataInfoEntity = (OracleConnectorParams) Bean2MapUtils.convertMap(OracleConnectorParams.class, oracleConnect);
-				datainfos.add(dataInfoEntity);
-			}
-			
-			Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + "/"
+			List<OracleConnectorParams> datainfos = dataInfolist;
+			Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + ":"
 					+ oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword());			
 			for (OracleConnectorParams collectOracle : datainfos) {	
-				client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成
-				oracleExtract.createDBLink(conn, collectOracle); //创建dblink
-				oracleExtract.createTableSpace(conn, oracleModel); //创建表空间
-				oracleExtract.createUser(conn, oracleModel);//创建用户并授权
-				oracleExtract.extractColleDB(conn, collectOracle);//执行抽取
-				client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成
+				
+				if(null != collectOracle.getDataId() && !"".equals(collectOracle.getDataId())){
+					DataInfoEntity data = new DataInfoEntity();
+					data.setId(Integer.valueOf(collectOracle.getDataId()));
+					data.setExtractStatus(1);
+					dataInfoDao.updateExtract(data);
+					String replicasName = collectOracle.getName();
+					collectOracle.setName("J" + collectOracle.getName().replace("-", "_"));
+						String cmd = "kubectl label --overwrite rc "
+							+ replicasName + " isExtract=1";
+					List<String> rList = Constant.ganymedSSH
+							.execCmdWaitAcquiescent(cmd);
+					StringBuffer sb = new StringBuffer();
+					for (String string : rList)
+						sb.append(string).append("\n");
+					Configs.CONSOLE_LOGGER.info(sb.toString());
+	//				client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成
+					oracleExtract.createDBLink(conn, collectOracle); //创建dblink
+					oracleExtract.createTableSpace(conn, collectOracle, oracleModel); //创建表空间
+					oracleExtract.createUser(conn, collectOracle, oracleModel);//创建用户并授权
+					oracleExtract.extractColleDB(conn, collectOracle);//执行抽取
+	//				client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成
+					cmd = "kubectl label --overwrite rc "
+							+ replicasName + " isExtract=2";
+					rList = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+					sb = new StringBuffer();
+					for (String string : rList)
+						sb.append(string).append("\n");
+					Configs.CONSOLE_LOGGER.info(sb.toString());
+					data.setExtractStatus(2);
+					dataInfoDao.updateExtract(data);
+				}
 			}
 			isSuccess = true;
 		}catch(Exception e){
-			
+			new CustomException(Custom4exception.OracleSQL_Except, e);
 		}
-		return false;
+		return isSuccess;
 	}
 
 //	@Override
diff --git a/src/com/platform/service/impl/VolumeServiceImpl.java b/src/com/platform/service/impl/VolumeServiceImpl.java
new file mode 100644
index 00000000..c674f4db
--- /dev/null
+++ b/src/com/platform/service/impl/VolumeServiceImpl.java
@@ -0,0 +1,59 @@
+package com.platform.service.impl;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.platform.dao.VolumeDao;
+import com.platform.entities.VolumeInitEntity;
+import com.platform.glusterfs.SetVolume;
+import com.platform.service.IVolumeService;
+
+@Service(value = "volumeService")
+public class VolumeServiceImpl implements IVolumeService {
+	
+	/**	 gfs的api 	 */
+	SetVolume volumeService = new SetVolume();
+	
+	@Resource(name = "volumeDao")
+	private VolumeDao volumeDao;
+	
+
+	@Override
+	public int save(VolumeInitEntity entity) throws Exception {
+		//createVolume("lili_test1", 0, "distributed", bricksToCreate, "/home/lili_test1_point")
+		if (null == entity.getBricks()) {
+			return -1;
+		}
+		volumeService.createVolume(entity.getName(), 0, "distributed", entity.getBricks(), entity.getMountPoint());
+		volumeDao.save(entity);
+		return 0;
+	}
+
+	@Override
+	public int delete(VolumeInitEntity entity) throws Exception {
+		if (null == entity.getName() || "".equals(entity.getName())) {
+			return -1;
+		}
+		volumeService.deleteVolume(entity.getName());
+		volumeDao.remove(entity.getName());
+		return 0;
+	}
+
+	@Override
+	public int start(VolumeInitEntity entity) throws Exception {
+		if (null == entity.getName() || "".equals(entity.getName())) {
+			return -1;
+		}
+		return volumeService.startVolume(entity.getName());
+	}
+
+	@Override
+	public int stop(VolumeInitEntity entity) throws Exception {
+		if (null == entity.getName() || "".equals(entity.getName())) {
+			return -1;
+		}
+		return volumeService.stopVolume(entity.getName());
+	}
+
+}
diff --git a/src/com/platform/service/thread/ThreadMoveData.java b/src/com/platform/service/thread/ThreadMoveData.java
index 4096107d..9967e056 100644
--- a/src/com/platform/service/thread/ThreadMoveData.java
+++ b/src/com/platform/service/thread/ThreadMoveData.java
@@ -83,6 +83,8 @@ public class ThreadMoveData{
 					DataInfoEntityMoveTmp dataMove = result.get(i);
 					//如果拷贝进度超过20分钟未进行-- 判断为 迁移失败。
 					// "1" :正在上传,0:等待 迁移, 2:成功 3:失败
+					long srcSizeTemp = 0;
+					long dstSize = 0;
 					if ("1".equals(dataMove.getCompleteStatus())) {
 						long nowTime = new Date().getTime();
 						long timelong = nowTime - DateForm.string2DateBysecond(dataMove.getLastTime()).getTime();
@@ -96,8 +98,9 @@ public class ThreadMoveData{
 							isNoMove = false;
 						}
 						// 查询大小:。//gfs  获取size,
-						long srcSize = show.getFolderSize(dataMove.getDataPath());
-						long dstSize = show.getFolderSize(dataMove.getDstPath());
+						srcSizeTemp = show.getFolderSize(dataMove.getDataPath());
+						long srcSize = (long) (srcSizeTemp * 0.998);
+						dstSize = show.getFolderSize(dataMove.getDstPath());
 						if (srcSize < 0) {
 							log.error(dataMove.getDataPath() + " : 路径不存在! ");
 							continue;
@@ -118,6 +121,9 @@ public class ThreadMoveData{
 					if("1".equals(dataMove.getCompleteStatus()) && dataMove.getRate() > 0){
 						//传输完毕:进行校验
 						if (realRate == 100) {
+							int difSize = (int) (srcSizeTemp-dstSize);
+							Thread.sleep(10*difSize);
+							//TODO 查看当前拷贝目录进程是否结束?
 							//TODO 进行MD5校验
 							int resl = check.checkoutMD5Folder(dataMove.getDataPath(), dataMove.getDstPath());
 							//TODO 校验成功--则删除数据库记录
@@ -133,10 +139,13 @@ public class ThreadMoveData{
 								data.setVolumeIp(dataMove.getDstVolumeIp());
 								data.setVolumePath(dataMove.getDstVolumePath());
 								data.setYear(DateForm.date2StringByMin(new Date()));
+								data.setVolumeIp(dataMove.getVolumeIp());
+								data.setId(0);
 								dataInfoDao.save(data);
 							}
 							else {
 								// 3:表示 迁移失败
+								dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
 								dataMove.setCompleteStatus("3");
 							}
 						}
diff --git a/src/com/platform/utils/Configs.java b/src/com/platform/utils/Configs.java
index 2160662d..c3754d5c 100644
--- a/src/com/platform/utils/Configs.java
+++ b/src/com/platform/utils/Configs.java
@@ -21,7 +21,7 @@ public class Configs {
 
 	public static final Logger LOGGER = Logger.getLogger(Configs.class);
 
-	public static String KUBE_MASTER_URL = "http://192.168.0.113:8080/"; // kubernetes集群的maser
+	public static String KUBE_MASTER_URL = "http://192.168.0.110:8080/"; // kubernetes集群的maser
 																			// URl
 
 	public static int ORACLE_DEFAULT_PORT = 1521; // oracle的默认端口号
@@ -42,11 +42,11 @@ public class Configs {
 	
 	public static String TABLE_SUFFIX = "_20152016";  //汇总库汇总表的后缀名	
 	
-	public static String EXTRACT_LOG_LOCALTION = "/home/log"; //数据汇总日志保存位置
+	public static String EXTRACT_LOG_LOCALTION = "D:\\log"; //数据汇总日志保存位置
 	
 	public static String GATHER_TABLESPACE_NAME=""; //表空间名
 	
 	public static String GATHER_TABLESPACE_PATH=""; //表空间路径
 	
-	public static String GATHER_TABLE_PASSWORD=""; //登入密码
+	public static String GATHER_TABLE_PASSWORD="1"; //登入密码
 }
diff --git a/src/com/platform/utils/ConfigsLoader.java b/src/com/platform/utils/ConfigsLoader.java
index 56745ce0..868198ac 100644
--- a/src/com/platform/utils/ConfigsLoader.java
+++ b/src/com/platform/utils/ConfigsLoader.java
@@ -60,6 +60,8 @@ public class ConfigsLoader implements ServletContextListener {
 				.getProperty("gather-tablespace-path");
 		
 		Configs.GATHER_TABLE_PASSWORD=properties.getProperty("gather-table-user-password");
+		
+		Constant.hostIp=properties.getProperty("gfs_control_ip");
 	}
 
 	public ConfigPropertyReader getcReader() {
diff --git a/src/com/platform/utils/Constant.java b/src/com/platform/utils/Constant.java
index 438285bc..4d230460 100644
--- a/src/com/platform/utils/Constant.java
+++ b/src/com/platform/utils/Constant.java
@@ -5,8 +5,8 @@ package com.platform.utils;
 public class Constant {
 	public static String rootUser = "root";
 	public static String rootPasswd = "root";
-	public static String hostIp = "192.168.191.23";
-//	public static String hostIp = "127.0.0.1";
+//	public static String hostIp = "192.168.191.23";
+	public static String hostIp = "";
 	public static int port = 22;
 	public static String glusterPeerStatus = "gluster peer status";
 	public static String glusterVolumeInfo = "gluster volume info ";
@@ -44,6 +44,6 @@ public class Constant {
 		/**
 		 * volume 获取的线程休眠时间
 		 */
-		public final static int update_dataInfo_sleep_time = 30000;
+		public final static int update_dataInfo_sleep_time = 1500;
 
 }
diff --git a/src/com/platform/utils/FileOperateHelper.java b/src/com/platform/utils/FileOperateHelper.java
index 6773436c..e3dc4830 100644
--- a/src/com/platform/utils/FileOperateHelper.java
+++ b/src/com/platform/utils/FileOperateHelper.java
@@ -25,13 +25,17 @@ public class FileOperateHelper {
 	 */
 	@SuppressWarnings("resource")
 	public static void fileWrite(String path, String message) {
+		if (null == path || "".equals(path)) {
+			return;
+		}
 		try {
+			path = path+".log";
 			File file = new File(path);
 			if (file.exists())
 				file.createNewFile();
 			FileOutputStream out = new FileOutputStream(file, true); // 如果追加方式用true
 			StringBuffer sb = new StringBuffer();
-			sb.append(message).append("\n");
+			sb.append(message);
 			out.write(sb.toString().getBytes("utf-8"));
 		} catch (IOException e) {
 			// TODO: handle exception
@@ -44,20 +48,20 @@ public class FileOperateHelper {
 	 * @return
 	 */
 	@SuppressWarnings("resource")
-	public static String fileReader(String path) {
+	public static String fileReader(String path) {		
 		StringBuffer sb = new StringBuffer();
 		String tempString = "";
 		try {
-			File file = new File(path);
+			File file = new File(path);			
 			if (!file.exists())
-				return "";
+				return "当前没有日志信息!";
 			FileInputStream fis = new FileInputStream(file);
-			BufferedReader br = new BufferedReader(new InputStreamReader(fis));
+			BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8"));
 			while ((tempString = br.readLine()) != null) {
-				sb.append(tempString);
+				sb.append(tempString).append("\r\n");
 			}
 		} catch (Exception e) {
-			// TODO: handle exception
+			Configs.CONSOLE_LOGGER.info(e.getMessage());
 		}
 		return sb.toString();
 	}
diff --git a/test/com/platform/test/TestWriteFile.java b/test/com/platform/test/TestWriteFile.java
new file mode 100644
index 00000000..e232da75
--- /dev/null
+++ b/test/com/platform/test/TestWriteFile.java
@@ -0,0 +1,16 @@
+package com.platform.test;
+
+import com.platform.utils.Configs;
+import com.platform.utils.FileOperateHelper;
+
+public class TestWriteFile {
+	
+	public static void main(String[] args) {
+		FileOperateHelper
+		.fileWrite(
+				Configs.EXTRACT_LOG_LOCALTION +"\\test.log",
+				"Hello! \r\n");
+		System.out.println("Hello!");
+	}
+
+}