Linux安装模式下,磁盘分区的选择(极重要)
在Windows 系统重新安装之前,你可能会事先考虑,到底系统盘C盘要有多大容量?而数据盘D盘又要给多大容量等,然后实际安装的时候,你会发现其实C盘之前会有个100MB的分区被独立出来,所以实际上你就会有三个分区,那Linux下面又该如何设计类似的东西呢?
1.目录树结构(directory tree)
我们前面有谈过Linux内的所有数据都是以文件的形式来呈现,所以,整个Linux系统最重要的地方就是在于目录树架构。
所谓的目录树架构(directory tree)就是以根目录为主,然后向下呈现为分支状的目录结构的一种文件架构。
所以,整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方法为一条斜线“/”,所有的文件都与目录树有关。
目录树的呈现方式如图所示。
所有的文件都是由根目录(/)衍生来的,而子目录之下还能够有其他的数据存在。长方形为目录,波浪形则为文件。
那当我们想要取得mydata那个又件时,系统就得由根目录开始找,然后找到home接下来找到dmtsai,最终的文件名为:/home/dmtsai/mydata。
我们现在知道整个 Linux 系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分区当中,现在的问题是“如何结合目录树的架构与磁盘内的数据”?
这个时候就牵扯到挂载(mount)的问题。
2.文件系统与目录树的关系(挂载)
我们说过, Linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。
因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。
也就是说, 挂载指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。
如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。
并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
我们看个例子来理解挂载
举个例子,我们想通过命令行访问某个 U 盘中的数据,图 1 所示为 U 盘文件目录结构和 Linux 系统中的文件目录结构。
图 1 中可以看到,目前 U 盘和 Linux 系统文件分属两个文件系统,还无法使用命令行找到 U 盘文件,需要将两个文件系统进行挂载。
接下来,我们在根目录下新建一个目录 /sdb-u,通过挂载命令将 U 盘文件系统挂载到此目录,挂载效果如图 2 所示。可以看到,U 盘文件系统已经成为 Linux 文件系统目录的一部分,此时访问 /sdb-u/ 就等同于访问 U 盘。
前面讲过,根目录下的 /dev/ 目录文件负责所有的硬件设备文件,事实上,当 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。
由于整个Linux 系统最重要的是根目录,因此根目录一定需要挂载到某个分区,至于其他的目录则可依用户自己的需求挂载到不同的分区,我们以下图作为一个说明:
上图中假设我的硬盘分为两个分区,分区1是挂载到根目录,至于分区2则是挂载到/home这个目录。这也就是说,当我的数据放置在/home内的各层目录时,数据是放置到分区2中的,如果不是放在 /home下面的目录,那么数据就会被放置到partition1。
Windows也是用挂载的概念。鸟哥上课经常谈到的范例就是,当你拿U盘连接到你的Windows时,系统会检测到一个F盘,那你想要读取U盘的数据,要去哪里?当然就去F盘,同样的这个U盘,当你拿到学校的Windows时,却显示的是H盘好了,那你要读取U盘的数据还是去F盘吗?当然不是,你会去H盘。
这个“设备与磁盘分区对应的关系,就是Windows概念下的挂载”。这样说,有没有比较容易理解呢?
其实判断某个文件在哪个分区下面是很简单的,通过反向追踪即可。以上图来说,当我想要知道home/vbird/test这个文件在哪个分区时,由test-->vbird-->home-->/,看哪个“进入点”先被查到那就是使用的进入点。所以test 使用的是/home这个进入点而不是/。
例题
现在让我们来想一想,我的计算机系统如何读取光盘内的数据?
在Windows里面使用的是“光驱”的代号方式处理(假设为E盘时),但在Linux下面我们依旧使用目录树。在默认的情况下,Linux是将光驱的数据放置到/media/cdrom里面。
如果光盘里面有个文件名为“我的文件”的文件,那么这个文件是在哪里?
答:这个文件最终会在如下的完整文件名中:
- Windows:桌面\我的计算机\E:\我的文件
- Linux:/media/cdrom/我的文件
如果光驱并非被挂载到/media/cdrom,而是挂载到/mnt这个目录时,刚刚读取的这个文件的文件名会变成:
- /mnt/我的文件
如果你了解这个文件名,这表示你已经知道了挂载的意义。初次接触Linux时,这里最容易搞混
因为它与Windows的分区代号完全不一样。
3.发行版安装时,挂载点与磁盘分区的规划
既然我们在 Linux 系统下使用的是目录树系统,所以安装的时候自然就得要规划磁盘分区与目录树的挂载。
实际上,在Linux安装的时候已经提供了相当多的默认模式让你选择分区的方式,不过,无论如何,分区的结果可能都不是很能符合自己主机的样子。
因为毕竟每个人的“想法”都不太一样。
因此,强烈建议使用“自定义安装(Custom)”这个安装模式。
在某些Linux发行版中,会将这个模式写得很厉害,称为“Expert,专家模式”,这个就厉害了,请相信您自己,了解上面的说明后,就请自称为专家了吧,没有问题。
自定义安装“Custom”
- A:初次接触Linux:只要划分“/”及“交换分区”即可
通常初次安装Linux 系统的朋友们,我们都会建议它直接以一个最大的分区“/”来安装系统。这样做有个好处,就是不怕分区错误造成无法安装的困境。例如/usr是Linux的可执行程序及相关的文件存放的目录,所以它的容量需求蛮大的,万一你划分了一块分区给/usr,但是却给得不够大,那么就伤脑筋了。因为会造成无法将数据完全写入的问题,就有可能会无法安装。因此如果你是初次安装的话,那么可以仅划分成两个分区“/与交换分区”即可。
- B:建议分区的方法;预留一个备用的剩余磁盘容量
在想要学习Linux的朋友中,最麻烦的可能就是得要常常处理分区的问题,因为分区是系统管理员很重要的一个任务。但如果你将整个硬盘的容量都用光了,那么你要如何练习分区呢?所以鸟哥在后续的练习中也会这样做,就是请你特别预留一些未划分的磁盘容量,作为后续练习时可以用来分区之用。
此外,预留的分区也可以拿来做为备份之用。我们在实际操作Linux 系统的过程中,如果发现某些脚本或是重要的文件很值得备份时,就可以使用这个剩余的容量划分出新的分区,并使用来备份重要的配置文件或是脚本。
这有个最大的好处,就是当我的Linux重新安装的时候,我的一些软件或工具程序马上就可以直接在硬盘当中找到,这样重新安装比较便利。
为什么要重新安装?因为没有安装过Linux十次以上,不要说你学会了Linux,慢慢体会这句话吧!
- 选择Linux安装程序提供的默认硬盘分区方式
对于首次接触Linux的朋友们,鸟哥通常不建议使用各个发行版所提供默认的Server安装方式,
因为会让你无法得知Linux在搞什么,而且也不见得可以符合你的需求。而且要注意的是,选择Senver的时候,请确定你的硬盘数据是不再需要,因为Linux会自动地把你的硬盘里面旧有的数据全部删除。