从目录创建分区

xra*_*alf 5 partition directory hard-disk

我有一个 Linux 系统,磁盘上只有一个分区/dev/sda1/dev/sda带有/挂载点。安装后是否可以创建分区?

例如/dev/sda2用挂载点创建/home/

如何从命令行实现它?它是如何物理实现的?(如果我稍后删除/dev/sda1它是否会删除我的/home/目录,因为它是 的子目录/?我希望这个分区能够继续存在,并且有一天我可以安装新系统。

enz*_*tib 7

要在已分区的系统中创建新分区,您应该从 livecd 开始,然后使用gparted缩小sda1分区(我假设占用磁盘上的所有空间,不包括交换),然后在创建的可用空间中创建一个新分区.

它当然可以在命令行上完成,但是GParted会处理许多难以跟踪的细节。

创建分区后,您应该将当前 home 的内容移动到新分区上,然后修改/etc/fstab以将新分区挂载到/home.

这是将文件从 sda1 实际移动到 sda2 的一种方法。所有这些都是以 root 身份完成的:

  1. 备份一下。您是否尝试过恢复备份?在您这样做之前,它们不是备份。并确保它们存储在不同的机器上(未安装)或当前已分离的外部驱动器上。关键是,rm -Rf /不应该删除它们。也不应该mkfs放在错误的分区上。
  2. 在开始之前,请阅读所有步骤并确保您完全理解它们。除了备份。如果你还没有这样做,你应该立即这样做。
  3. 在 sda2 上创建文件系统。类似于mkfs.ext4 /dev/sda2(假设您对 ext4 没问题,这可能是您目前在 sda1 上使用的)。
  4. 挂载sda2到不是 /home 的地方。例如,你可以mkdir /mnt/new_home然后mount -text4 /dev/sda2 /mnt/new_home
  5. 确保没有用户登录 - 否则他们可能会在您执行此操作时尝试更改他们的文件。
  6. 复制文件。首先,确认/家庭没有任何隐藏的(仅点条目应该是...)这样做ls -l /home。如果是这样,您需要单独复制(*不会匹配它们,并且.*不会执行您想要的操作):cp -a /home/* /mnt/new_home/
  7. 如果复制有任何错误,请立即停止。
  8. 卸载SDA2: umount /mnt/new_home。现在就做,以确保你不会不小心弄错了。
  9. 这是不归路。rm -Rf /home/*. 绝对,积极,不要/home/.*在这里尝试。另外,请确保不要在该路径中意外添加空格。你至少应该有点害怕输入这个命令,这是一个可怕的命令,你应该三重检查你是否正确输入了它(否则,你将需要那个备份)。
  10. 如果 /home 中有任何点文件或文件夹,请按名称删除它们。请记住,您永远不能运行rm -Rf .*. 那将匹配..,这意味着父目录,最终导致文件系统完全破坏(尽管某些版本rm可能拒绝这样做,但您不应该依赖于此)。
  11. 编辑/etc/fstab并添加一个条目为您的新SDA2分区,就像这样:/dev/sda2 /home ext4 relatime,user_xattr,errors=remount-ro 0 2。如果您愿意,您可以使用不同的标志,这些是我使用的标志。此外,该pass数字 (2) 假定您在 sda 上只有两个文件系统,这似乎很有可能,因为这是 sda2。
  12. 最后,安装您的新家mount /home。这应该没有错误地运行,并且您的文件应该在那里。如果出现错误,请检查您的 fstab 行。如果您收到有关挂载点下的文件被隐藏的警告,则您没有在最后几个步骤中删除所有内容:卸载/home并删除其余部分。如果文件丢失,请参阅第一步。