我刚刚安装了 Ubuntu 24.04,然后犯了一个错误:我将/var
目录放在了它自己的分区上,它的大小是 10 GB。几天后它就已经满了。
有没有办法解决这个问题,而不需要重新安装操作系统?
是否可以调整分区大小,即使丢失其内容?
该目录的建议大小是多少/var
?
这是我的分区表:
Model: WD_BLACK SN850X 2000GB (nvme)
Disk /dev/nvme0n1: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
8 1049kB 1075MB 1074MB fat32 boot boot, esp
1 1075MB 323GB 322GB xfs /
2 323GB 426GB 103GB linux-swap(v1) swap swap
3 426GB 437GB 10.7GB ext4 var
4 437GB 439GB 2147MB ext4 temp
6 439GB 547GB 107GB xfs 3rdp
5 547GB 1406GB 859GB ext4 home
7 1406GB 1427GB 21.5GB ext4 crypt
这是我的目录的内容/var
:
~> sudo bash -c 'shopt -s dotglob; du -hxs /var/*'
7.0M /var/backups
661M /var/cache
4.0K /var/crash
8.9G /var/lib
4.0K /var/local
0 /var/lock
49M /var/log
16K /var/lost+found
4.0K /var/mail
4.0K /var/metrics
4.0K /var/opt
0 /var/run
13M /var/snap
52K /var/spool
108K /var/tmp
4.0K /var/.updated
以下是有关我的分区的更多详细信息:
~> df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 5.9G 2.7M 5.9G 1% /run
/dev/nvme0n1p1 300G 29G 272G 10% /
tmpfs 30G 180M 30G 1% /dev/shm
tmpfs 5.0M 12K 5.0M 1% /run/lock
efivarfs 148K 62K 81K 44% /sys/firmware/efi/efivars
/dev/nvme0n1p6 100G 2.5G 98G 3% /opt
/dev/nvme0n1p7 20G 24K 19G 1% /crypt
/dev/nvme0n1p4 2.0G 103M 1.7G 6% /tmp
/dev/nvme0n1p3 9.8G 9.6G 0 100% /var
/dev/nvme0n1p5 787G 13G 734G 2% /home
/dev/nvme0n1p8 1022M 41M 982M 4% /boot/efi
tmpfs 5.9G 196K 5.9G 1% /run/user/1000
您的问题中没有足够的数据来得出除了“可能”之外的有意义的完整答案。
当前所在的磁盘上是否有未分配的空间
/var
?如果是,您可以使用parted
或等工具gparted
来扩展分区。如果驱动器上的另一个分区中有未使用的分配空间,则可以使用同一工具来缩小该分区以腾出空间进行/var
扩展。您是否使用 LVM 等工具来设置磁盘分配?如果是,则可能可以创建一个新的物理分区并使用 LVM 利用它来扩展
/var
。在不了解这些或其他可能的考虑因素的情况下,唯一正确的答案是“也许”。
顺便说一句,在您使用任何方法扩大
/var
分配之前,最好确保您有一个良好的备份,因为这些操作确实有非零(尽管很小)的导致数据丢失的可能性。的大小
/var
很大程度上取决于系统正在做什么。例如,如果系统是一个邮件服务器,/var/mail
并且/var/spool
可以根据用户群的大小任意增大;那么这些目录实际上就是系统存在的主要原因。的大小
/var/lib
取决于您安装的软件,并且/var/cache
可能/var/snap
还根据安装的应用程序及其使用方式而增长。您正在使用 GPT 和 UEFI 启动,但除此之外,这是一个非常经典的分区设置。(GPT 很好;这意味着我们不必处理 MBR 的大小限制和主/扩展/逻辑分区废话;所有分区都可以同样用于任何目的。)
如果我没记错的话,磁盘末端还有大约 500G 的未使用空间。在太小的
/var
分区旁边,有一个 103G 的交换分区。它可以重新利用以/var
相当容易地扩展。不幸的是,交换位于/var
分区之前,这让事情变得有点复杂。我将首先在未使用的空间中创建一个新的交换分区,并
mkswap
在其上运行。然后我将注释掉 中的旧交换分区/etc/fstab
,并添加新交换分区的信息。此时,我还将检查是否需要更新挂起/恢复配置以指向新的交换分区(/etc/initramfs-tools/conf.d/resume
在 Debian 中,在 Ubuntu 中可能类似)。然后sudo update-initramfs -u
重新启动。确认系统正在使用新的交换分区而不再使用旧的交换分区后,就该从旧的交换分区中删除交换标志,并将其分区类型设置为与
/var
has 相同。然后可以将旧的交换初始化为未来/var
使用的sudo mkfs.ext4
,并临时挂载到/mnt
。然后,是时候关闭可能正在主动写入 的所有应用程序
/var
,并使用简单的 将数据从旧分区复制到新分区cp -a /var/.updated /var/* /mnt/
。然后进行另一次编辑以/etc/fstab
使系统挂载/dev/nvme0n1p2
而不是/dev/nvme0n1p3
作为/var
(可能使用文件系统 UUID,这是当前推荐的做法),然后重新启动。如果系统现在能够使用新的、扩展的 成功启动,那么使用删除旧的、现在未使用的小空间并利用其空间进一步扩展(甚至在线!)新的空间
/var
就很简单了。gparted
/var
/var
在这种情况下我会这样做;你应该运用自己的判断力来决定这对你来说是否是一个好计划。
如果您需要比此大纲更具体的说明,您应该考虑与具有更多 Linux 经验的人一起完成此操作。