将 /var、/home 移动到单独的分区

tof*_*nns 64 security partition debian fstab

阅读本指南后,我试图将一些文件夹(例如/var/home)移动到单独的分区:

3.2.1 选择智能分区方案

我能够按照指南成功移动一个文件夹。

但是,它似乎不适用于多个文件夹,并且我所有的文件夹都被转储到没有正确文件夹的分区中。

我想将/var, /home, 和挂载/tmp到单独的分区上;有人可以指导我吗?

cio*_*y23 82

1. 首先,您需要一些未分配的空间来为每个挂载点(/var、/home、/tmp)创建分区。为此使用 Gparted。

2. 然后你需要为这些分区创建文件系统(也可以用 Gparted 完成)或使用:

mkfs.ext4 /dev/sdaX
Run Code Online (Sandbox Code Playgroud)

例如在 /dev/sdaX 设备上创建一个新的 ext4 文件系统(用你自己的设备替换 /dev/sdaX)

3. 在 /mnt 下挂载新的文件系统

mkdir /mnt/var        
mount /dev/sdaX /mnt/var
Run Code Online (Sandbox Code Playgroud)

4.进入单用户模式,以便在此过程中目录上没有rw活动

init 1
Run Code Online (Sandbox Code Playgroud)

5. 输入您的根密码。

6. 只备份 var 中的数据(不是 /var 目录本身)

cd /var
cp -ax * /mnt/var
Run Code Online (Sandbox Code Playgroud)

7. 成功传输数据后,重命名 /var 目录。

cd /
mv var var.old
Run Code Online (Sandbox Code Playgroud)

8.新建var目录

mkdir var
Run Code Online (Sandbox Code Playgroud)

9. 卸载新分区。

umount /dev/sdaX
Run Code Online (Sandbox Code Playgroud)

10. 重新挂载为 /var

mount /dev/sdaX /var
Run Code Online (Sandbox Code Playgroud)

11. 编辑/etc/fstab 文件以包含新分区,/var 是挂载点,以便在启动时自动挂载。

/dev/sdaX       /var     ext4    defaults    0 0
Run Code Online (Sandbox Code Playgroud)

12. 对 /home 和 /tmp 重复步骤 1-11。

13.最后回到多任务模式。

init 5
Run Code Online (Sandbox Code Playgroud)

  • 请在答案中添加最后的`init 5`。 (7认同)
  • 实际上,`cp -ax * /mnt/var` 是一个__坏主意__,因为它会忽略隐藏的文件/目录。更喜欢 `cp -ax 。/mnt/var`。(@cioby23,我认为你应该更新你的答案) (2认同)

Fab*_*ian 20

如果你想在同一个分区上使用它们,你可以使用LVM或三个简单的绑定安装。

要创建基于绑定的解决方案,您

  1. 创建一个带有文件系统的分区
  2. 进入救援模式(单用户仍然需要一些文件夹)
  3. 将其安装为 /mnt/data
  4. 移动您要移动的所有文件夹。使用cpandmv dir dir.old可能更安全,但因为我是在安装后这样做的,所以对我来说并不重要。

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在 fstab 中创建适当的绑定挂载条目,例如我有

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
    Run Code Online (Sandbox Code Playgroud)
  6. 重启


mre*_*hub 5

我个人要么使用@Fabian 的绑定安装解决方案,要么使用符号链接:

  1. /etc/fstab为新分区创建条目(用于为新分区blkid获取正确的 UUID,不要忘记mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用mount -a或类似的东西挂载新分区

  3. 将原始文件夹移动到新分区:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建符号链接

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    
    Run Code Online (Sandbox Code Playgroud)

虽然绑定贴装方法可能是最好的做法解决方案,我那种喜欢这一个,因为你不不必要地延长最终dfmount分区列表。