首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对ubuntu 18.04的零树

对ubuntu 18.04的零树
EN

Ask Ubuntu用户
提问于 2018-11-14 10:17:09
回答 8查看 37.3K关注 0票数 34

我正在使用Ubuntu18.04在Windows10pro主机上开发VM VirtualBox,我之前通过以下步骤压缩了虚拟硬盘驱动器:https://www.howtogeek.com/312883/how-to-shrink-a-virtualbox-virtual-machine-and-free-up-disk-space/

除了通常的更新-我没有乱动它,(最近刚刚安装了更新的virtualbox加载项)

以前,我只出现了一个/dev/sda1 1--今天我有三个/dev/sda1 1,当我尝试对其中的任何一个运行零树时,我知道设备被安装在rw中。

我也按照这里的一些指示来停止一些服务并尝试重新安装,但是它没有工作。

https://unix.stackexchange.com/questions/42015/mount-is-busy-when-trying-to-mount-as-read-only-so-that-i-can-run-zerofree

它仍然说挂载点很忙

我不确定这是不是因为最近的一次更新?我还通过卸载vmware客户添加程序进行了测试--但它没有工作

建议?

EN

回答 8

Ask Ubuntu用户

回答已采纳

发布于 2019-07-03 06:46:56

什么对我有用(综合了来自几个相关问题和论坛的答案):

  • VirtualBox 5.2.10
  • Windows 10作为主机操作系统
  • Ubuntu 18.04作为客服操作系统

首先安装零树:

代码语言:javascript
运行
复制
sudo apt-get install zerofree

创建0以获得要回收的空间(删除所有不需要的文件,并清空垃圾)

重新启动到GRUB菜单(在Ubuntu启动时按Esc )

代码语言:javascript
运行
复制
Advanced options for Ubuntu > Recovery Mode (choose highest version number)

Recovery Menu中选择Drop to root shell prompt

获得分区的df (查看要收缩的分区,例如sda1、sda 4等,通常是它的/dev/sda1)

代码语言:javascript
运行
复制
df

尝试运行zerofree

代码语言:javascript
运行
复制
zerofree /dev/sda1

分区是读写的,需要以只读方式挂载零树才能运行错误:

如果从零树(如/dev/sda1被挂载为rw )获得错误,则需要将其挂载为只读才能继续。

若要将/dev/sda1或所需分区挂载为只读,只需在其上使用zerofree

注1:在服务和套接字重新使用并再次开始写入磁盘之前,您应该执行以下相对较快的步骤,以便能够将驱动器挂载为ro。否则,您可能需要再次执行systemctl步骤,以确保停止对磁盘的写入。

注2:(跳过阅读直到此失败后的步骤).Depending在您的系统上,您可能还有其他服务和套接字仍在写入磁盘,而不是systemd-journald。如果下面的步骤不起作用,请在运行这些步骤之后,尝试查看仍在写入磁盘的内容,然后以同样的方式停止它们。

代码语言:javascript
运行
复制
systemctl --type=service
systemctl --type=socket

步骤:

Update: User @Kevin给出了一个很好的建议,在一个线性命令中执行这些步骤(参见下文),以防服务和套接字恢复使用得太快:

代码语言:javascript
运行
复制
systemctl stop systemd-journal* \
&& sudo swapoff -a && mount -n -o remount,ro -t ext2 /dev/sda1 / \
&& zerofree -v /dev/sda1

首先,停止所有进程写入磁盘,这样您就不会得到mount /: mount busy错误

代码语言:javascript
运行
复制
systemctl stop systemd-journald.socket
systemctl stop systemd-journald.service

检查是否启用了任何交换分区:

代码语言:javascript
运行
复制
swapon -s

如果启用,则禁用它们。

代码语言:javascript
运行
复制
sudo swapoff -a

最后,您应该能够将dev/sda1挂载为只读。(您的文件系统类型可能与ext2不同。要查找文件系统,请运行df -T)

代码语言:javascript
运行
复制
mount -n -o remount,ro -t ext2 /dev/sda1 /

最后运行zerofree

代码语言:javascript
运行
复制
zerofree -v /dev/sda1

zerofree完成时,关闭Ubuntu

代码语言:javascript
运行
复制
halt

最后,在Host (在我的例子中是Windows 10)上,压缩vdi以回收空间:

代码语言:javascript
运行
复制
VBoxManage.exe modifymedium disk "C:\path\to\disk.vdi" --compact
票数 40
EN

Ask Ubuntu用户

发布于 2020-03-27 08:40:04

安装零树

sudo apt install zerofree

重新启动到ubuntu恢复控制台,按住右移

advanced options -> recovery mode -> root console

找到根目录

mount | grep "sda"

运行零树

代码语言:javascript
运行
复制
echo "u" > /proc/sysrq-trigger
mount /dev/mapper / -o remount,ro
zerofree -v /dev/sda1

重启

shutdown -r now

压缩驱动器

VBoxManage modifyhd /path/to/VDI/VM.vdi --compact

来源:来自ubuntuforums.org的cyplex

票数 20
EN

Ask Ubuntu用户

发布于 2019-11-06 12:57:06

我使用了Emmanuels的解决方案,它只在停止两个套接字之后才起作用:

代码语言:javascript
运行
复制
systemctl stop systemd-journald.socket 

新项目:

代码语言:javascript
运行
复制
systemctl stop systemd-journald-dev-log.socket
systemctl stop systemd-journald-audit.socket
代码语言:javascript
运行
复制
systemctl stop systemd-journald.service
sudo swapoff -a 
mount -n -o remount,ro -t ext4 /dev/sda1 / 
zerofree /dev/sda1

注意:我使用Ubuntu18.04.3和EXT4

把我的磁盘从40 GB缩小到7 GB。谢谢。:)

票数 13
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1092812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档