![CentOS7 上设备上没有剩余空间](https://linux22.com/image/6470/CentOS7%20%E4%B8%8A%E8%AE%BE%E5%A4%87%E4%B8%8A%E6%B2%A1%E6%9C%89%E5%89%A9%E4%BD%99%E7%A9%BA%E9%97%B4.png)
我的机器的操作系统CentOS7
需要将50G数据备份到MySQL中。但是,设备上没有剩余空间。但上面有很多空格/home
。如何让用户知道MySQL有足够的空间来存储数据。我认为 中 没有空间/dev/mapper/centos-root
,我怎样才能将空间移动到 from/home
到/
。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 50G 20K 100% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 84K 7.8G 1% /dev/shm
tmpfs 7.8G 2.6G 5.2G 34% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-home 500G 20G 480G 4% /home
/dev/sda1 497M 241M 257M 49% /boot
tmpfs 1.6G 16K 1.6G 1% /run/user/42
tmpfs 1.6G 0 1.6G 0% /run/user/0
tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000
并且g++
编译代码失败。
$ g++ test.cpp
Cannot create temporary file in /tmp/: No space left on device
[1] 6642 abort (core dumped) g++ test.cpp
答案1
您首先需要将根分区(“/”)从已满的状态中删除,否则系统中会发生许多不好的事情。对于许多系统和用户任务来说,它需要 /tmp 是可写的。
您的根分区只有 50GB,因此在当前分区结构下您永远无法获得所需的空间。
您的选择是重新分区以获取单独的 /var(/home 空间不足),为自己提供 MySQL 数据文件的空间。实用程序分手了会那么做。如果它是一台托管计算机,可能不容易或不可能做到,并且如果您不确定自己在做什么,我不建议使用该实用程序。
如果做不到这一点,这有点麻烦,但你可以用符号链接来绕过它。通常不建议这样做,您可能需要将计算机切换到单用户模式,因为正在运行的守护进程将有文件锁阻止您移动。本质是:
mv /var /home
ln -s /home/var /var
如果你这样做,你可能需要重新启动机器才能干净地启动它:
shutdown -r now
请研究一下你想要做什么,如果你没有一个明确的计划,那么使用磁盘分区可能会变得非常混乱。
答案2
如果您存储仅有的在您的分区上备份 MySQL /
,然后很容易移动数据。
假设您将数据存储在/opt/backup/
:
停止备份写入该目录(如果您正在使用某些备份程序)
将备份文件夹移动
/
到(或您想要的/home/
任何文件夹)/home
# mv /opt/backup/ /home/
创建到旧目录的符号链接:
# ln -s /home/backup/ /opt/backup
授予适当的权限以确保您的备份程序具有对
/home/backup
with的写入权限chmod
。重新启动您的备份程序
答案3
使用专业工具(如 acronis)将操作系统克隆到具有更大分区的更大磁盘,因为硬链接可能会在后期造成问题。使用引导救援重建 grub,因为在移动到新的磁盘布局后 centos 可能无法引导。
答案4
永久解决方案:
fs.inotify.max_user_watches=1048576 #只需添加到这一行
到
/etc/sysctl.conf
永久固定极限值
然后做
系统控制-p