记一次Linux虚拟机分配内存不足的处理方案
记一次Linux虚拟机硬盘空间不足的处理方案
**起因:**公司的服务器是windows的,而我需要一个基于Linux的dev环境,于是用vmvare创建了一个centos7的系统实例,里面安装mysql5.7作为dev环境数据库,安装在根目录,后来由于数据量激增,将根目录塞满了,导致mysql无法继续增加数据。
环境: Centos7-64
目的:解决根目录空间不足问题,并且不损坏任何数据。
- 自己折腾了一天了,由于水平有限,跳了很多坑。坑就不写了,下面写解决方案。
一. 找到问题
- 使用命令:
df -hT
查看当前文件系统各种信息。
这里显示我的根目录已用100%,这就是我这次遇到的问题所在。
对根目录扩容和对非根目录扩容是两个概念,因为普通目录可以 先杀死目录下进程–>将分区移除挂载–>将分区扩容–>重新挂载–>恢复进程,但是根目录不行。根目录里都是系统核心进程。Linux
二. 用vmvare给虚拟机扩容
- 关闭虚拟机中的centos7的系统实例
- 右键–设置–参照下图
- 但是额外分的这部分存储,还没有应用到虚拟的Centos7实例中。
三. 分析
- 由
df -hT
命令可以看到根目录被挂载的分区是:/dev/sda3 - 使用命令:
fdisk -l
查看磁盘信息,这里我们重点关注/dev/sda3的system这个属性,我这里是Linux,表示是Linux默认的磁盘管理机制。
- 观察这一点很重要,据我所知,Linux默认的磁盘管理机制这种没办法直接动态扩容,除非杀死/dev/sda3这个分区的挂载点也就是根目录里面运行的进程。
- 如果是Linux LVM,恭喜你,非常容易扩容,具体操作自行百度,网上很多,简单的操作几个步骤即可。
鉴于以上分析。很明显,我在不损失任何数据的情况下,没办法对根目录扩容,这时候就准备换个思路。既然是mysql的数据量过大造成根目录满,那我可以新建一个文件夹,然后新建一个分区,将这个分区挂载到这个文件夹上,然后将mysql的数据文件搬过来不就行了。
四. 新建分区,格式化分区,新建文件夹,挂载
- 使用
fdisk /dev/sda
命令,然后输入p按回车,展示当前分区列表,输入m按回车,可以查看help操作,一看就懂的。【注意:我这里命令中的/dev/sda是分区名,请不要照抄,自行对号入座】 - 使用n新建分区,分区号默认是当前已有最大分区号+1,分区start,分区end都选默认就行。我这里新建的是sda4分区。【注意:这里的前提是你的主分区或者拓展分区还有空位置】
- 使用w保存你的操作,使用q退出
- 如果分区顺利建完,可以用
fdisk -l
看到你刚刚建的分区了 - 分区格式化:首先,通过
df -hT
查看分区的文件系统类型,因为我要转移的mysql数据文件来自/dev/sda3分区,它的类型是xfs,所以sda4分区就要使用xfs格式格式化了,格式化命令mkfs -f xfs /dev/sda4
- 新建文件夹:
mkdir /usr/mysql-data
,【这里你可以自定义】 - 挂载:
mount /dev/sda4 /usr/mysql-data
五. 将新建的分区,设置为开机自动挂载
- 查看分区id:
ls -l /dev/disk/by-uuid/
- 修改
vim /etc/fstab
, 最小码新写一行,如下【uuid请换掉】
UUID=4366aadb-6ee8-46cd-8708-b4e2f70b2860 /usr/mysql-data xfs defaults 0 0
- 1
- 重启:
reboot
- 使用
df -hT
查看,可以看到新建的分区挂载到新建的文件夹上了,完美,可以继续下一步
这一节很重要,另外,fstab里面的格式一定要对齐
六. 对mysql的一些操作
- 通知相关人员,我要暂时关闭mysql
- 停止mysql:
systemctl stop mysqld
- copy文件:```cp -r /var/lib/mysql /usr/mysql-data/mysql``
- 修改
/etc/my.cnf
文件中的两个属性,如下
#datadir=/var/lib/mysql
datadir=/usr/mysql-data/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/usr/mysql-data/mysql/mysql.sock
- 1
- 2
- 3
- 4
- 启动mysql:
systemctl start mysqld
- 尝试使用命令行或者navicat等连接mysql查看是否能连接,数据库是否缺失
七. 收尾工作
- 删除/var/lib/mysql下面的内容:
rm -rf /var/lib/mysql/
- 查看空间:
df -hT
,看根目录是否有空间了
- 再次确认无误后,通知相关人员,mysql可以继续使用了。
记一次Linux虚拟机分配内存不足的处理方案的更多相关文章
- Virtualbox修改虚拟机分配内存的大小
起因:因为虚拟机刚开始分配的内存太小,导致太卡, 解决方法:修改虚拟机分配内存的大小 方法一:必须在关闭ubuntu的前提下进行,否则无法修改 点击设置 系统选项 主板中的内存大小 之后开启即可 方法 ...
- Linux进程分配内存的两种方式--brk() 和mmap()
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...
- Linux内核分配内存的方式
page = alloc_pages(GFP_KERNEL, get_order(1234));分配失败返回NULLGFP_KERNEL ---> 分配标志,当没有足够内存分配时,睡眠阻塞,直 ...
- Linux虚拟机centos系统安装
linux 其他知识目录 安装完后如果虚拟机网络不通请参考:虚拟机网络不通故障解决 1.centos6.9安装 后面安装出了点问题,ip没有并且eth0网卡找不到,不过重新配置ifcfg-eth0后重 ...
- Linux内核笔记——内存管理之slab分配器
内核版本:linux-2.6.11 内存区和内存对象 伙伴系统是linux用于满足对不同大小块内存分配和释放请求的解决方案,它为slab分配器提供页框分配请求的实现. 如果我们需要请求具有连续物理地址 ...
- JDK1.8-Java虚拟机运行时数据区域和HotSpot虚拟机的内存模型
目录 介绍 官方文档规定的运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 虚拟机栈和本地方法栈溢出 Java堆 演示堆内存溢出 方法区 运行时常量池 演示方法区溢出 HotSpot虚拟机的内 ...
- 1 - JVM随笔分类(java虚拟机的内存区域分配(一个不断记录和推翻以及再记录的一个过程))
java虚拟机的内存区域分配 在JVM运行时,类加载器ClassLoader在加载到类的字节码后,交由jvm的执行引擎处理, 执行过程中需要空间来存储数据(类似于Cpu及主存),此时的这段空间的分 ...
- 《深入理解Java虚拟机》内存分配策略
上节学习回顾 1.判断对象存活算法:引用计数法和可行性分析算法 2.垃圾收集算法:标记-清除算法.复制算法.标记-整理算法 3.垃圾收集器: Serial:新生代收集器,采用复制算法,单线程. Par ...
- Linux内核笔记--内存管理之用户态进程内存分配
内核版本:linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作,内存分配是其中非常重要的一环,作为一个linux程序员必然会想要知道这个过程到底是怎么样的,内核源码会告诉你 ...
- linux设备驱动归纳总结(五):1.在内核空间分配内存【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-79134.html linux设备驱动归纳总结(五):1.在内核空间分配内存 xxxxxxxxxxxx ...
随机推荐
- 开源即时通讯IM框架 MobileIMSDK v6.4 发布
一.更新内容简介 本次更新为次要版本更新,进行了若干优化(更新历史详见:码云 Release Notes.Github Release Notes).MobileIMSDK 可能是市面上唯一同时支持 ...
- spark (五) RDD的创建 & 分区
目录 1. RDD的创建方式 1.1 从内存创建RDD 1.2 从外部存储(文件)创建RDD 1.3 从其他的RDD创建 1.4 直接 new RDD 2. 分区(partition) 2.1 mak ...
- 内华达大地测量实验室gnss数据半自动化下载
内华达大地测量实验室GNSS数据半自动化下载 前言 目的:继上篇GNSS时序形变位移数据下载,介绍了内华达网站GNSS位移数据如何手动交互进行下载.后面发现若自己需要下载很多站点的数据,我要通过手动一 ...
- 「V 曲闲谈」《万物与我同归于寂》——终与始
死亡, 胃酸逆流 失去最初模样 开端与结局颠倒 脉搏也摇晃 于强烈的动机下选定这首歌,但构思时又发觉,一个十六岁的青年,似乎在这个艰涩的哲学问题上难以开口. 那么先来说说我的动机.为什么我 ...
- JVM中线程的状态以及状态间的转换
线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 新建状态(New):新创建了一个线程对象. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的 ...
- CF div3 991(A~G)
蒟蒻的第一篇题解.由于正值期末周,只能匆忙地vp了一场div3,并只出了A~E. A 白给模拟题,但也是失误很大的一个题(7分钟时才出,属实是太慢了...) B 一道典题,之前做过类似的. 统计所有数 ...
- idea社区版本创建springboot项目的三种方式
文章目录一.前言一.方式1:spring 官方创建 springboot项目1.打开在线的 spring initializr2.选择项目的语言.版本.依赖等3. 解压源码包,并使用IDEA打开4.测 ...
- 项目PMP之六项目进度管理
项目PMP之六--项目进度管理 一.定义:用于沟通和管理相关方期望的工具,可作为报告绩效的基础,说明项目的交付时间和方式 迭代型进度计划(敏捷模式):接受存在未完成项,滚动式规划管理 按需进度计划 ...
- PDCA使用指南详解(史上最强)
PDCA循环,一个老话题了,大家都知道要这么做,但在平时的生活和工作当中,你是否真的都这样做呢? 当你发现你面对的困难重重,寸步难行时,是否反思过是因为自己一开始的方法就不正确? 本文包涵了PDCA循 ...
- 一文搞懂企业架构与DDD融合
大家好,我是汤师爷~ 今天聊聊企业架构与DDD如何进行融合. 企业架构TOGAF 什么是企业架构TOGAF? TOGAF(The Open Group Architecture Framework)是 ...