如何在 ubuntu 上重新定位可移动目录 /var 和 /usr?

如何在 ubuntu 上重新定位可移动目录 /var 和 /usr?

我正在使用 Ubuntu 10.10 - Maverick Meerkat。我的根分区太小,无法将这两个文件放在 / 上。有人能就如何做到这一点提出建议吗:

“”为大型可移动目录(如 home、var 或 usr)创建一个新分区。然后我将目录 rsync 到新分区并挂载它。“””

有一个类似的主题如何更改软件中心的默认安装路径?,但由于我对 ubuntu 还很陌生,所以我很难找到解决方案。

我想将 /usr 和 /var 移动到与 /home 相同的分区上,但我不想为每个分区创建单独的分区。对于移动 /home,我使用了这个解决方案:https://help.ubuntu.com/community/Partitioning/Home/Moving#Different_filesystems_on_the_same_disk 我认为我需要在我的 fstab 中添加标签,有人能告诉我这是否是一个好主意,或者给出一个更好的主意吗?

答案1

既然您说不想移动分区,那么您可以从实时 CD 中执行此操作:

  1. 挂载您的根分区和主分区(我假设分别是 /dev/sda1 和 /dev/sda2;使用 GParted 检查以确保)以及cd安装的根目录:

    sudo mount /dev/sda1 /mnt
    sudo mount /dev/sda2 /mnt/home
    cd /mnt
    
  2. 将目录移动到您想要的位置(正如您所说的,在 /home 上):

    sudo mkdir -p home/outside_stuff
    sudo mv var usr home/outside_stuff
    
  3. 现在,您有两个选项。选择其中一个:

    1. 使用符号链接。这是最简单的方法,但不太可靠:

      sudo ln -s home/outside_stuff/* .
      
    2. 绑定挂载目录:

      • 创建挂载点:

        sudo mkdir -p var usr
        
      • 添加以下内容/etc/fstab

        /home/outside_stuff/var /var none bind
        /home/outside_stuff/usr /usr none bind
        
      • chroot到您的系统并测试它:

        for i in sys proc dev; do sudo mount --bind "/$i" "/mnt/$i"; done
        sudo chroot /mnt
        mount -a    # hopefully there'll be no errors
        mount       # you should see entries for /var and /dev
        exit
        
  4. 重启:

    sudo reboot
    

答案2

您要做的是启动实时 CD,创建新的分区。

我假设你的 ubuntu 根分区位于 /dev/sad1,并且你在 /dev/sda2 和 /dev/sda3 为 /usr 和 /var 创建了两个新分区 ext4

然后,你将所有内容挂载到工作目录中,例如/mnt/root,,/mnt/usr/mnt/var

sudo mkdir /mnt/{root,usr,var}
sudo mount /dev/sda1 /mnt/root
sudo mount /dev/sda2 /mnt/usr
sudo mount /dev/sda3 /mnt/var

然后移动文件

sudo mv /mnt/root/usr/* /mnt/usr/
sudo mv /mnt/root/var/* /mnt/var/

然后编辑 /mnt/root/etc/fstab 并添加新分区

使用以下命令列出您的分区blkid

sudo blkid

然后您编辑/mnt/root/etc/fstab

# command line
sudo -e /mnt/root/etc/fstab

# graphical
gksu gedit /mnt/root/etc/fstab

添加新分区

UUID=uuid_sda2_here  /usr  ext4    errors=remount-ro  0  2
UUID=uuid_sda3_here  /var  ext4    errors=remount-ro  0  2

现在链接将起作用,mount --bind 也将不起作用。您可以使用诸如 LVM 之类的工具。

如果这不是您想要的,请澄清您的问题。如果不移动数据,您就无法节省磁盘空间,因此同步不会节省磁盘空间。您无法使用链接或挂载绑定向根分区添加空间,您需要使用 LVM。

相关内容