如何将 /var 移动到宽敞的分区或增加分区的大小(在本例中为 /dev/sda3)到 30G?

如何将 /var 移动到宽敞的分区或增加分区的大小(在本例中为 /dev/sda3)到 30G?

我正在 Debian 9 系统上工作。当我尝试安装软件包时,dpkg失败并出现以下错误:

Selecting previously unselected package mariadb-server-10.1.
Preparing to unpack .../3-mariadb-server-10.1_10.1.38-0+deb9u1_amd64.deb ...
/var/lib/mysql: found previous version 10.1
ERROR: There's not enough space in /var/lib/mysql/
dpkg: error processing archive /tmp/apt-dpkg-install-ShVFUI/3-mariadb-server-10.1_10.1.38-0+deb9u1_amd64.deb (--unpack):

这是df -h

Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           791M  9.1M  782M   2% /run
/dev/sda2        55G  9.8G   43G  19% /
tmpfs           3.9G  158M  3.8G   4% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1       511M  132K  511M   1% /boot/efi
/dev/sda5       844G  540G  261G  68% /home
/dev/sda3       9.2G  8.7G   32K 100% /var
tmpfs           791M   12K  791M   1% /run/user/1001

fdisk -l输出:

Disk /dev/sda: 931.5 GiB, Disklabel type: gpt
Disk identifier: AAF695F1-3DA1-4E89-86F4-59439A75BCBB
   Device      Start        End    Sectors Size   Type
/dev/sda1       2048    1050623    1048576 512M   EFI System
/dev/sda2    1050624  118237183  117186560 55.9G  Linux filesystem
/dev/sda3 1933993984 1953523711   19529728 9.3G   Linux filesystem
/dev/sda4 1917392896 1933993983   16601088 7.9G   Linux swap
/dev/sda5  118237184 1917392895 1799155712 857.9G Linux filesystem

如何移动/var到宽敞的分区(如果可能的话)?或者,如何将大小增加到/dev/sda330G?

答案1

您的文件系统位于磁盘分区上,而不是lvm(逻辑卷管理)或其他灵活的配置系统上,因此我建议不要尝试移动/调整分区大小,这太棘手且风险太大。

关于移动/var到另一个分区:

第一个解决方案

由于根文件系统上有相当多的可用空间,因此/您可以移/var回它。不幸的是,当系统运行时,/var 无法被卸载或修改。我的建议是使用 USB 驱动器或 CD 上的救援实时 Linux 发行版来启动系统,例如gparted,打开 shell 并或多或少遵循以下准则修改硬盘上的系统设置:

mkdir /tmp/root
mkdir /tmp/var
# mount the filesystems
mount /dev/sda2 /tmp/root
mount /dev/sda3 /tmp/var
# copy everything in /var
# do not forget the / after var in /tmp/var/
rsync -aHXA /tmp/var/ /tmp/root/var

然后,使用文本编辑器注释掉#或删除静态挂载列表中与 /dev/sda3 /var 相关的行/tmp/root/var/etc/fstab。请注意,在实时系统中,设备可能与主系统中的设备不同,因此sda可能会出现问题sdb,请在进行任何修改之前检查。

修改后 /dev/sda3 是一个未使用的分区,有可用空间。

第二种解决方案

如果您预见到下面的空间需求/var/主要来自 mariadb 包和所有相关的数据库文件,那么明智的做法是安装第二个硬盘驱动器或 SSD 并仅移动/var/lib/mysql该磁盘/分区上的目录。在这种情况下,您不需要停止系统并从另一个发行版启动来移动数据,而只需停止 mariadb 服务(如果已经安装并处于活动状态)。

从您的帖子中不清楚您是否已经安装了包含珍贵文件的 mariadb 或 mysql 软件包/var/lib/mysql,因为一方面我们看到Selecting previously unselected package mariadb-server-10.1.,另一方面/var/lib/mysql: found previous version 10.1。假设你已经有一个,那么:

# prepare and format somehow a new disk/partition, let's call it $MYSQLDEV
# mount it in a temporary place
mkdir /tmp/mysql
mount $MYSQLDEV /tmp/mysql
# copy existing data on new partition
rsync -aHXA /var/lib/mysql /tmp/mysql
# if you are really sure you have copied everything,
# type with care and double check
rm -rf /var/lib/mysql/*
# mount filesystem in the final position
umount $MYSQLDEV
rm -f /tmp/mysql
mount $MYSQLDEV /var/lib/mysql/

之后,您应该在 yout 文件中添加一行,告诉系统必须在每次启动时安装新分区,通过替换并假设您将其格式化为 ext4 格式,/etc/fstab它看起来或多或少像这样:$MYSQLDEV

$MYSQLDEV /var/lib/mysql ext4 defaults 1 2

相关内容