zoukankan      html  css  js  c++  java
  • 使用Vagrant 后发现虚拟机磁盘空间爆满的血泪填坑记

     
    现象: 
    用了几天vagrant后,发现docker 里的 Mysql5.7 服务无法启动,用docker ps 命令,发现mysql一直在反复重启, 查看mysql log 发现说磁盘空间不够, 导致mysql无法启动。
    觉得很奇怪, docker里只安装了redis和mysql两个image, 也没用几天mysql, 怎么会40G的空间都满了?
     
    于是一通百度查找, 都说是mysql日志过多,但是一个一个目录的用du -sh * 和 df -h 查看, 发现日志log并不大。 进一步查找发现是/var/lib/docker/overlay2下面的子目录里有文件过大,于是
    开始陷入了坑里, 一直怀疑是docker的问题, 但是网上的办法都说是log文件占用空间,使用 cat /dev/null > *-json.log 删除, 结果发现毫无卵用。
    实在无法解决,忍痛将docker的images全部删掉看看, 结果发现还是没用。。。
     
     
    转机:
    经过几个小时的死磕,终于发现了一个文件夹: /vagrant/AppData, 这个文件夹居然有32G? 再一细看不得了, 这个/vagrant下除了AppData文件夹,怎么还有一堆文件感觉跟我的PC电脑
    里的 user文件夹里的东西一模一样? 比如有 download ,  有document, 有music , 还有OneDrive, 虚拟机上怎么可能有微软的OneDrive? 于是突然灵光一现,难道vagrant把我电脑里的
    文件都复制到虚拟机里了? 顺着这个思路百度,果然柳暗花明又一村,彻底找到了问题所在,那就是:
     
    vagrant提供了将本机目录挂载到虚拟机目录下的功能,默认是将vagrant配置文件所在目录挂载到虚拟机/vagrant目录下。
     
    即: c:user ioth(这里是我电脑的用户名,你可以改成你的)Vagrantfile  所在的目录  与 虚拟机 /vagrant目录进行同步, 
     
    因此, 会将本机大量文件复制到虚拟机, 导致虚拟机空间爆满。 并不是docker的问题啊, 可怜我把docker里的image都删掉了,回头又得重装mysql,配置一堆数据库,郁闷啊~~~
     
     
     
    解决办法:
     
    一开始找到的是 C:Users iothVagrantfile 文件里有一行配置(默认是注释掉的):
      #config.vm.synced_folder ".", "/vagrant_data"
     
    于是修改这个文件,改成下面(MyVagrantSyncFolder是自己新建得文件夹,空的,放在C:Users ioth下面):
    (这里有一个失败的伏笔:为什么我看到虚拟机里的文件夹是叫vagrant,并不是叫vagrant_data啊。不管了,试试再说。)
     
      config.vm.synced_folder "./MyVagrantSyncFolder", "/vagrant_data"
     
    再用vagrant reload 重启, 果然发现没有用,心里一紧,不会吧, 再用Everything软件搜一遍,发现另外还有一个地方有一个vagrant配置文件:
     
    C:Users ioth.vagrant.doxescentos-VAGRANTSLASH-72004.01virtualboxVagrantfile
     
    原来如此: 每一个虚拟机的操作系统里还有自己的配置文件!!!啊啊啊!
     
     打开发现有如下配置:
     
    Vagrant.configure("2") do |config|
      config.vm.base_mac = "5254004d77d3"
      config.vm.synced_folder ".", "/vagrant", type: "rsync"
    end
     ( 话说configure("2")是什么鬼? 没有1吗? )
     
     终于找到你了! 
     于是,修改为:
     
    Vagrant.configure("2") do |config|
      config.vm.base_mac = "5254004d77d3"
      config.vm.synced_folder "./MyVagrantSyncFolder", "/vagrant", type: "rsync"
    end
      
    (原来那个文件里的配置还给它注释掉,恢复原样。)
     
    保存文件,再用vagrant reload, 大功告成!
    控制台显示:
    ==> default: Configuring and enabling network interfaces...
    ==> default: Rsyncing folder: /cygdrive/c/Users/nioth/MyVagrantSyncFolder/ => /vagrant
    ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
    ==> default: flag to force provisioning. Provisioners marked to run always will still run.
     
    现在是 ./MyVagrantSyncFolder 文件夹与 虚拟机中的/vagrant文件夹进行映射, 这样就不会将大量主机文件复制到虚拟机了。
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Cogs 452. Nim游戏!(博弈)
    Cogs 876. 游戏(DP)
    Cogs 2546. 取石块儿(博弈)
    Bzoj 4147: [AMPPZ2014]Euclidean Nim(博弈)
    Codevs 3002 石子归并 3(DP四边形不等式优化)
    洛谷 P1041 传染病控制
    洛谷 P1967 货车运输
    洛谷 P1038 神经网络
    洛谷 P1027 Car的旅行路线
    洛谷 P1054 等价表达式
  • 原文地址:https://www.cnblogs.com/nio-nio/p/13616415.html
Copyright © 2011-2022 走看看