Vmware虚拟机瘦身及Samba服务不可用问题解决

虚拟机磁盘空间膨胀是一个令人头疼的问题,特别是对许多搞开发的小伙伴。无论是做后台服务、嵌入式还是Android开发,都面临着这个难题。首先,操作系统本身就已占用不少空间,更新安装包,再下载一些开源软件,剩余空间立马就局促起来。要是进行Android开发,一个版本整下来,又是起步几十G的占用。对于Linux嵌入式开发,厂家SDK、编译工具链、构建系统(BuildRoot\Yocto)、再整个Ubuntu Arm版本,弄齐活了也得是几十G起步的占用。这样一来,怎么着也得预留100G的磁盘空间。

如果在安装系统时,没有选择分割磁盘文件模式,则上面所说的全部内容都会存放到一个虚拟磁盘文件上。也就是说,你在虚拟机系统中(比如Ubuntu)进行的下载行为,最终都会体现到物理机系统(比如Windows)上的一个vmdk文件中----这个文件会逐渐膨胀变大。但问题的关键是,即使在虚机系统中清理了部分空间,物理机系统这边的vmdk文件的空间占用并不会跟随减少。要解决这个问题,可以有下面几个办法:

1 安装系统时使用分割磁盘文件模式。但是很多小伙伴的遗留系统已经使用了单一磁盘文件模式,要改变模式,就需要重装系统。估计大家一想到要重装系统就头大,还是看看是否有其他临时措施可以比较好解决该问题。

2 通过Vmware自带的压缩磁盘功能。博主试了该功能,是能回收一些磁盘空间,但是杯水车薪,用处不大。几十G的空闲空间,通过该方法,仅能压缩3个G左右,这个结果不同的系统,不同的使用方式,可能会有些差异,但是从网上资料来看,大家的效果都一般。

3 使用Vmware自带的vmware-vdiskmanager工具。博主本人使用的是player免费版本,不带该工具,下载了pro版本,提取其中的工具测试,则总是提示磁盘空间不足。这样一来,这个方法也不是很好用。也许对原始pro版本安装的用户可能会友好一些,但对于免费版用户,估计还得寻找其他方法。

4 使用DiskGenius。该工具功能强大,支持常见虚拟机的虚拟磁盘格式,如下图所示:

使用DG工具缩减虚拟机磁盘文件空间占用的方法为:首先,新建虚拟磁盘文件,这样我们就有一个空白虚拟磁盘文件。然后再选择打开虚拟磁盘文件,将已有的虚拟磁盘文件导入DG工具。之后,再工具菜单中选择克隆磁盘,其中源选择导入的虚拟磁盘文件,目标为新建的虚拟磁盘文件。通过将实际虚拟机所用的虚拟磁盘内容按文件拷贝到新创建的空白虚拟磁盘中,可以解决磁盘文件占用虚胖的问题。

采用该方法的缺点主要是需要找到足够的空间存放新拷贝的虚拟磁盘文件。这个也可以通过移动硬盘来解决。另外,就是整个拷贝耗时会比较长,最好是在晚上不用虚拟机系统的时候做这项工作。

博主经过实际测试,确认该方法可行。拷贝的新的虚拟磁盘物理空间占用与虚机中系统实际占用是一致的(小于实际虚拟机磁盘物理空间占用)。使用该方法前先对虚拟机系统占用空间进行彻底的清理释放,因为做一次拷贝耗时是比较久的。

瘦身后的虚拟磁盘文件可以被虚拟机加载,系统运行也正常。为了保证可靠性。建议对原虚拟磁盘文件进行备份,确认新拷贝文件没有问题后再移除。博主在实际测试时出了一个小问题,就是Samba服务不可用。最初怀疑是拷贝出问题了,但是通过对问题分析并尝试一些方法后,最终还是解决了,这里就将博主的分析解决过程分享出来。

因为是做开发,Samba还是比较好用的。拷贝完后,发现额外占用的空间回来了,心情大好,马上就准备使用新拷贝的虚拟机。结果,发现共享目录打不开。

最开始博主还以为是网络问题,重新配置IP地址,重新停用-启用虚拟网卡,重新配置主机端IP地址等,都试过了,结果是可以PING通,NFS服务也是好的,就是Samba共享用不了。

此时,选择重启Samba服务看看。结果,服务重启失败。那看来跟网络应该是没什么关系了。查看Samba启动日志,查找失败原因:

未找到明确原因后,继续查看Samba自己的日志记录:

从中发现部分文件的权限不对。进一步的查看nmbd 和smbd的状态,修改权限

修改后,再次启动服务,成功运行。

通过对问题的解决,发现这种瘦身方式可能存在一些隐患。因为是按文件拷贝,而非磁盘扇区,故有可能部分文件的信息可能会遗失,但是大的方面,文件本身的内容应该不会出问题。

看来后续的话,原始虚拟磁盘文件还需要保留一段时间,以便不时之需。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运行Spring Boot项目失败?显示java: 无法访问org.springframework.boot.SpringApplication,让我来看看~

idea项目运行报错截图: (1)查看错误提示“类文件具有错误的版本 61.0, 应为 52.0”,61.0对应的是jdk17,52.0对应1.8。 通过这个网址可以查询版本: https://stackoverflow.com/questions/9170832/list-of-ja…

14-串口通讯

串口通信简介 串口通信,设备间常用的串行通讯方式,简单便捷,大部分设备都支持。 本人使用的开发板默认使用串口终端。windows上使用串口通讯工具来来接开发板,如putty,xShell,MobaXterm等等。 使用工具时…

网络编程入门之UDP编程

欢迎各位帅哥美女来捧场,本文是介绍UDP网络编程。在这里,你会见到最详细的教程;细致到每一行代码,每一个api的由来和使用它的目的等。 目录 1.UDP相关API 1.1.两个类 1.2.两个类中的方法 2.UDP编程 2.1.大体框架 2.2.内容构…

【项目学习01_2024.05.08_Day06】

学习笔记 5 新增课程5.1 需求分析5.1.1 业务流程5.1.2 数据模型 5.2 接口定义5.3 接口开发5.3.1 保存课程基本信息5.3.2 保存营销信息 5.4 接口测试 5 新增课程 5.1 需求分析 5.1.1 业务流程 5.1.2 数据模型 5.2 接口定义 5.3 接口开发 根据需求分析,新增课程表…

MIMO和RIS的一些学习

1.Accurate Beam Training for RIS-Assisted Wideband Terahertz Communication(RIS 辅助宽带太赫兹通信的精确波束训练) 摘要:太赫兹 (THz) 通信被广泛认为是未来 6G 无线系统最有前途的技术之一。为了应对太赫兹系统中的高路径损耗&#x…

【智能楼宇秘籍】一网关多协议无缝对接BACnet+OPC+MQTT

在繁华的都市中心,一座崭新的大型商业综合体拔地而起,集购物、餐饮、娱乐、办公于一体,是现代城市生活的缩影。然而,这座综合体的幕后英雄——一套高度集成的楼宇自动化系统,正是依靠多功能协议网关,实现了…

韩国站群服务器提供高级安全防护以确保数据和网站的安全性

韩国站群服务器提供高级安全防护以确保数据和网站的安全性 在当今数字化时代,网站的安全性和数据保护已成为企业和个人不可忽视的重要议题。韩国站群服务器作为一个拥有发达科技和互联网基础设施的国家,通过提供高级安全防护措施,为用户的数…

多态的用法

场景: 目前的一个功能F在一个平台a配置下是Fa()。 void C(Config c){ PreF(); if(c is a){ Fa(); } PostF(); } 现在要添加对另一个平台b的配置。 现在最直接的办法是修改F的调用代码C。 void C(Config a){ PreF(); if(c is a) { Fa(); } else if(c is b) { …

GPU系列(四)-常用 GPU 运维及故障处理

1 XID 错误事件 XID 是 NVIDIA 的错误码,可以通过命令: dmesg -T | grep -i "NVRM: Xid" 根据 XID 可以定位故障,下面是一些常见的 XID 事件: XID说明13Graphics Engine Exception。通常是数组越界、指令错误,小概率是硬件问题…

Web服务器和Tomcat

Web介绍 对于http协议操作进行封装、简化web程序开发 部署web项目,对外提供上网信息浏览 Tomcat介绍 一个轻量级的web服务器 也称为web容器 Tomcat的文件夹介绍 下载地址:Apache Tomcat - Apache Tomcat 9 Software Downloads 安装:直…

十个数据安全最佳实践:保护数据的简单方法

在德迅云安全将介绍数据安全的主要原则,并了解适用于大多数行业的 10 种数据安全最佳实践,以及云端安全检测的重要性。 数据威胁和维护数据安全的好处 什么是数据安全? 数据安全是旨在保护组织敏感资产的流程和工具的组合。有价值的数据在…

计算方法实验2(补充):列主元消元法解线性方程组

C源代码 #include<bits/stdc.h> using namespace std;// 列主元消去法求解线性方程组 vector<long double> Column_Elimination(vector<vector<long double>> A, vector<long double> b);int main() {vector<vector<long double>> …

梯度下降及其可视化

目录 一、算法思想 二、算法思路 三、算法实现 四、代码实现 一、算法思想 梯度下降算法是一种优化算法&#xff0c;用于寻找函数的局部最小值。其基本思想是通过迭代的方式&#xff0c;逐步调整参数&#xff0c;使得函数的输出值减小。以下是梯度下降算法的主要思想&…

JavaScript快速入门系列-1(JavaScript简介)

第一章:JavaScript简介 1. JavaScript简介1.1 什么是JavaScript1.2 JavaScript的历史与应用1.3 环境搭建:浏览器与Node.js2. JavaScript语言基础2.1 变量声明:let, const, var2.2 数据类型:字符串、数字、布尔值、对象、数组、null与undefined2.3 运算符:算术、比较、逻辑…

将图像特征和CSV中的特征保存到h5文件中

这个脚本的任务是&#xff1a;从mask中提取最大的ROI&#xff0c;然后映射到DCE原图中&#xff0c;获取原图最大ROI的上一层及下一层&#xff0c;共三层。然后去除掉周围的0像素&#xff0c;再利用双线性插值到224*224大小的图像。再映射到T2序列的原图中&#xff0c;得到224*2…

二叉树的前序、中序、后序遍历的C++实现

二叉树的前序、中序、后序 遍历属于深度优先搜索方式&#xff0c;本文使用递归法实现前序、中序、后序的遍历方法&#xff0c;代码如下&#xff1a; #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …

初识C++ · 模板初阶

目录 1 泛型编程 2 函数模板 3 类模板 1 泛型编程 模板是泛型编程的基础&#xff0c;泛型我们碰到过多次了&#xff0c;比如malloc函数返回的就是泛型指针&#xff0c;需要我们强转。 既然是泛型编程&#xff0c;也就是说我们可以通过一个样例来解决类似的问题&#xff0c…

leetcode1290-Convert Binary Number in a Linked List to Integer

题目 给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101) 转化为…

Java基础之《mybatis-plus多数据源配置》

1、pom文件引入依赖 引入MyBatis-Plus之后请不要再次引入MyBatis以及mybatis-spring-boot-starter和MyBatis-Spring&#xff0c;以避免因版本差异导致的问题 <!--引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 mybatis-spring-boot-starter和MyBatis-Spring&#xff0…

【C++】STL_ string的使用 + 模拟实现

前言 目录 1. STL简介&#xff08;1&#xff09;什么是STL&#xff08;2&#xff09;STL的版本&#xff08;3&#xff09;STL的六大组件 2. string的使用2.1 npos2.2 遍历字符串string的每一个字符2.3 迭代器&#xff1a;2.4 string的内存管理2.5 string模拟实现2.5.1 深拷贝&a…