滚动浏览输出,直到识别出新驱动器。第一个驱动器名为/dev/sda,第二个驱动器名为/dev/sdb,依此类推,最后一个字母每次都在增加。因此,/dev/sde将是系统中的第五个硬盘。
在本例中,新驱动器是安装到系统中的第二个驱动器。因此,我们需要查找与/dev/sdb对应的条目。
上面突出显示了/dev/sdb。您会注意到,它上面没有一条描述分区的线。这是一个全新的硬盘,所以现在还不会有。我们需要创建分区。我们可以使用fdisk来完成此操作。如果您的硬盘不是/dev/sdb,请确保在命令中用新硬盘的实际驱动器标识符替换/dev/sdb。
sudo fdisk /dev/sdb
当fdisk提示您输入命令时,按字母p。这将打印硬盘的分区表。我们知道它不会有,但我们得到了一些关于驱动器的有用信息。这给了我们一个很好的机会来确保我们要为其创建分区的驱动器是我们想要使用的驱动器。
它告诉我们该驱动器是一个1TB的驱动器,这与我们在此测试机器中的预期相符,因此我们将继续。
创建分区
按字母n表示新分区,然后按p表示主分区。当系统要求您输入分区号时,请按数字1。
我们将为整个磁盘创建单个分区,因此当提示输入第一个扇区时,我们可以按Enter键接受默认值。然后,系统将提示您输入最后一个扇区,输入将接受默认值。
尽管fdisk确认它已经创建了一个1TB的Linux分区,即1号分区,但硬盘上还没有任何变化。在您向fdisk发出将更改写入驱动器的命令之前,驱动器保持不变。一旦您确定对我们的选择感到满意,请按字母w将更改写入驱动器。
该分区已写入/dev/sdb。我们来看看刚才发生了什么。我们将在/dev/sdb上再次使用fdisk。
sudo fdisk /dev/sdb
按字母p打印该分区表,您将看到现在为该驱动器列出了一个分区。因为它是该驱动器上的第一个分区,所以名为/dev/sdb1。第二个分区将称为/dev/sdb2,依此类推。
我们不想对分区进行任何更改,因此按字母Q退出。
在分区上创建文件系统
我们需要在分区上创建一个文件系统。这可以通过mkfs命令轻松实现。请注意,您必须在命令中包括分区号。注意键入/dev/sdb1(分区),而不是/dev/sdb(驱动器)。
sudo mkfs -t ext4 /dev/sdb1
将为您创建文件系统,并且您将返回到命令提示符。
挂载新驱动器
要使用新驱动器,我们必须将其上的分区挂载到文件系统中的挂载点。实际上,准确地说,我们既不是挂载驱动器,也不是挂载分区,而是通过将文件系统移植到系统的文件系统树上,将文件系统挂载到分区上。
/mnt点是一个和任何地方一样好的地方。它只是一个临时装载点,允许我们将数据复制到新驱动器。我们将使用mount命令在/dev/sdb的/mnt上的第一个分区上挂载文件系统。
sudo mount /dev/sdb1 /mnt
如果一切正常,您将返回到命令行,没有错误消息。让我们看看是否可以将目录切换到新挂载的文件系统。
cd /mnt
是的,我们可以。让我们看看这里有什么。
ls -ahl
我们在我们的新文件系统中。默认的“Lost+Found”目录不是必需的,因此我们可以将其删除。
sudo rm -rf lost+found
正在复制您的主文件夹
我们需要将旧主目录中的所有内容复制到新挂载的文件系统中。使用r(递归)和p(保留)选项将确保复制所有子目录,并保留文件所有权、权限和其他属性。
sudo cp -rp /home/* /mnt
复制完成后,使用ls查看一下,并验证您的数据是否在新文件系统中预期的位置。换句话说,如果/mnt是您的主目录,那么所有内容都存在并且正确吗?
ls
ls dave
您可能想要比我们在本文研究的测试机器上做得更全面一些。作为安全网,我们将重命名并保留您的旧/home目录,直到您满意删除它是安全的为止。
sudo mv /home /home.orig
我们将创建一个新的空的主目录。
sudo mkdir /home
我们将使用那个新的空主目录作为新硬盘上文件系统的挂载点。我们需要从/mnt卸载它,然后在/home上重新挂载它。注意,命令umount在“u”之后没有“n”。
sudo umount /dev/sdb1
sudo mount /dev/sdb1 /home/
相关:Linux目录结构,解释
测试您的新主目录
让我们看看/dev/sdb1分区现在有哪些属性:
df /dev/sdb1
我们将看到文件系统的名称、分区的大小、已用空间和可用空间,以及重要的是它的挂载位置。它现在是我们的/home目录。这意味着我们应该能够像引用旧的/home目录一样引用它。
如果我们移动到文件系统中的某个任意点,我们应该能够使用~代字号快捷方式改回/home。
cd /
cd ~
pwd
ls
cd /home
ls
cd dave
ls
ls -a
我们可以使用显式命令和~快捷键在文件系统中来回移动到/home。我们期望的文件夹、文件和点文件都存在。一切看起来都很好。
如果缺少任何内容,我们可以将其复制到/home.orig目录之外,我们仍然可以在文件系统的根目录中访问该目录。但是一切看起来都很好。
现在,我们需要在每次启动计算机时自动挂载/dev/sdb1。
编辑fstab
“fstab”文件包含系统引导时将要挂载的文件系统的描述。在我们对其进行任何更改之前,我们将对其进行备份,以便在出现问题时可以返回。
sudo cp /etc/fstab /etc/fstab.orig
现在我们可以编辑fstab文件了。
sudo gedit /etc/fstab
您必须在文件底部添加一行以挂载我们的新/home目录。*如果您的驱动器和分区标识符与本例中使用的不同,请用这些标识符替换此处显示的/dev/sdb1。
在行首键入分区名称,然后按Tab键。 键入挂载点/home,然后按Tab键。 键入ext4的文件系统描述,然后按Tab键。 键入装载选项的默认值,然后按Tab键。 键入文件系统转储选项的数字0,然后按Tab键。 键入数字0表示文件系统检查选项。
保存fstab文件。
重新启动系统
我们需要重新启动,以验证一切都按计划进行,并且您可以无缝连接到新的/home目录。
如果没有,您仍然拥有原始/home目录和fstab文件的安全网,如果需要,可以恢复它们。由于我们采取了预防措施-复制/home目录和fstab文件-您可以轻松地将系统恢复到启动前的状态。
sudo reboot now
相关:如何使用命令行重新启动或关闭Linux
最终检查
当您的系统重新启动时,让我们检查一下/home目录是否真的在您的新硬盘上,并且您的系统没有以某种方式(奇迹般地)恢复到使用旧的/home目录。
df /dev/sdb1
太好了,它装在家里了。任务完成。
完全确定不再需要旧/home目录的安全副本后,可以将其删除:
cd /
sudo rm -rf home.orig/
当然,如果您确实意识到有些东西没有从旧/主目录复制到新/主目录,您将能够从我们开始之前创建的备份中检索到它。
还是自己的家好
现在您已经将/home目录与操作系统分区的其余部分分开,您可以重新安装操作系统,并且您的数据将保持不变。您所要做的就是编辑fstab文件,将第二个驱动器挂载到/home上。
因为您的所有点文件都在您的/home目录中,所以当您启动各种应用程序时,它们会找到您的所有设置、首选项和数据。
它消除了重新安装的痛苦,降低了升级的风险。