`

第八章 配置启动挂载

 
阅读更多
手动处理 mount 不是很人性化,我们总是需要让系统『自动』在启动时进行挂载的!本小节就是在谈这玩意儿! 另外,从 FTP 服务器捉下来的映像档能否不用刻录就可以读取内容?我们也需要谈谈先!

启动挂载 /etc/fstab 及 /etc/mtab

刚刚上面说了许多,那么可不可以在启动的时候就将我要的文件系统都挂好呢?这样我就不需要每次进入 Linux 系统都还要在挂载一次呀!当然可以啰!那就直接到 /etc/fstab 里面去修修就行啰!不过,在开始说明前,这里要先跟大家说一说系统挂载的一些限制:

1 根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
2 其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则
3 所有 mount point 在同一时间之内﹐只能挂载一次。
4 所有 partition 在同一时间之内﹐只能挂载一次。
如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。

让我们直接查阅一下 /etc/fstab 这个文件的内容吧!

[root@www ~]# cat /etc/fstab
# Device        Mount point   filesystem parameters    dump fsck
LABEL=/1          /           ext3       defaults        1 1
LABEL=/home       /home       ext3       defaults        1 2
LABEL=/boot       /boot       ext3       defaults        1 2
tmpfs             /dev/shm    tmpfs      defaults        0 0
devpts            /dev/pts    devpts     gid=5,mode=620  0 0
sysfs             /sys        sysfs      defaults        0 0
proc              /proc       proc       defaults        0 0
LABEL=SWAP-hdc5   swap        swap       defaults        0 0
# 上述特殊字体的部分与实际磁盘有关!其他则是虚拟文件系统或
# 与内存置换空间 (swap) 有关。


其实 /etc/fstab (filesystem table) 就是将我们利用 mount 命令进行挂载时, 将所有的选项与参数写入到这个文件中就是了。除此之外, /etc/fstab 还加入了 dump 这个备份用命令的支持! 与启动时是否进行文件系统检验 fsck 等命令有关。

这个文件的内容共有六个字段,这六个字段非常的重要!你『一定要背起来』才好! 各个字段的详细数据如下:

第一栏:磁盘装置文件名或该装置的 Label:

这个字段请填入文件系统的装置文件名。但是由上面表格的默认值我们知道系统默认使用的是 Label 名称! 在鸟哥的这个测试系统中 /dev/hdc2 标头名称为 /1,所以上述表格中的『LABEL=/1』也可以被取代成为『/dev/hdc2』的意思。 至于Label可以使用 dumpe2fs 命令来查阅的。

第二栏:挂载点 (mount point):

就是挂载点啊!挂载点是什么?一定是目录啊~要知道啊!

第三栏:磁盘分区槽的文件系统:

在手动挂载时可以让系统自动测试挂载,但在这个文件当中我们必须要手动写入文件系统才行! 包括 ext3, reiserfs, nfs, vfat 等等。

第四栏:文件系统参数:

记不记得我们在 mount 这个命令中谈到很多特殊的文件系统参数? 还有我们使用过的『-o iocharset=cp950』?这些特殊的参数就是写入在这个字段啦! 虽然之前在 mount 已经提过一次,这里我们利用表格的方式再汇整一下:

tu

第五栏:能否被 dump 备份命令作用:

dump 是一个用来做为备份的命令(我们会在第二十五章备份策略中谈到这个命令), 我们可以透过 fstab 指定哪个文件系统必须要进行 dump 备份! 0 代表不要做 dump 备份, 1 代表要每天进行 dump 的动作。 2 也代表其他不定日期的 dump 备份动作, 通常这个数值不是 0 就是 1 啦!

第六栏:是否以 fsck 检验扇区:

启动的过程中,系统默认会以 fsck 检验我们的 filesystem 是否完整 (clean)。 不过,某些 filesystem 是不需要检验的,例如内存置换空间 (swap) ,或者是特殊文件系统例如 /proc 与 /sys 等等。所以,在这个字段中,我们可以配置是否要以 fsck 检验该 filesystem 喔。 0 是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,不过 1 会比较早被检验啦! 一般来说,根目录配置为 1 ,其他的要检验的 filesystem 都配置为 2 就好了。

例题:
假设我们要将 /dev/hdc6 每次启动都自动挂载到 /mnt/hdc6 ,该如何进行?
答:
首先,请用 nano 将底下这一行写入 /etc/fstab 当中;

[root@www ~]# nano /etc/fstab
/dev/hdc6  /mnt/hdc6    ext3    defaults   1 2


再来看看 /dev/hdc6 是否已经挂载,如果挂载了,请务必卸除再说!

[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6
# 竟然不知道何时被挂载了?赶紧给他卸除先!

[root@www ~]# umount /dev/hdc6


最后测试一下刚刚我们写入 /etc/fstab 的语法有没有错误!这点很重要!因为这个文件如果写错了, 则你的 Linux 很可能将无法顺利启动完成!所以请务必要测试测试喔!

[root@www ~]# mount -a
[root@www ~]# df


最终有看到 /dev/hdc6 被挂载起来的信息才是成功的挂载了!而且以后每次启动都会顺利的将此文件系统挂载起来的! 由于这个范例仅是测试而已,请务必回到 /etc/fstab 当中,将上述这行给他批注或者是删除掉!

[root@www ~]# nano /etc/fstab
# /dev/hdc6  /mnt/hdc6    ext3    defaults   1 2


/etc/fstab 是启动时的配置文件,不过,实际 filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts 这两个文件当中的。每次我们在更动 filesystem 的挂载时,也会同时更动这两个文件喔!但是,万一发生您在 /etc/fstab 输入的数据错误,导致无法顺利启动成功,而进入单人维护模式当中,那时候的 / 可是 read only 的状态,当然您就无法修改 /etc/fstab ,也无法升级 /etc/mtab 啰~那怎么办? 没关系,可以利用底下这一招:

[root@www ~]# mount -n -o remount,rw /


特殊装置 loop 挂载 (映象档不刻录就挂载使用)

挂载光盘/DVD映象文件

想象一下如果今天我们从国家高速网络中心(http://ftp.twaren.net)或者是义守大学(http://ftp.isu.edu.tw)下载了 Linux 或者是其他所需光盘/DVD的映象文件后, 难道一定需要刻录成为光盘才能够使用该文件里面的数据吗?当然不是啦!我们可以透过 loop 装置来挂载的!

那要如何挂载呢?鸟哥将整个 CentOS 5.2 的 DVD 映象档捉到测试机上面,然后利用这个文件来挂载给大家参考看看啰!

[root@www ~]# ll -h /root/centos5.2_x86_64.iso
-rw-r--r-- 1 root root 4.3G Oct 27 17:34 /root/centos5.2_x86_64.iso
# 看到上面的结果吧!这个文件就是映象档,文件非常的大吧!

[root@www ~]# mkdir /mnt/centos_dvd
[root@www ~]# mount -o loop /root/centos5.2_x86_64.iso /mnt/centos_dvd
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/root/centos5.2_x86_64.iso
                       4493152   4493152         0 100% /mnt/centos_dvd
# 就是这个项目! .iso 映象文件内的所有数据可以在 /mnt/centos_dvd 看到!

[root@www ~]# ll /mnt/centos_dvd
total 584
drwxr-xr-x 2 root root 522240 Jun 24 00:57 CentOS <==瞧!就是DVD的内容啊!
-rw-r--r-- 8 root root    212 Nov 21  2007 EULA
-rw-r--r-- 8 root root  18009 Nov 21  2007 GPL
drwxr-xr-x 4 root root   2048 Jun 24 00:57 images
.....底下省略.....

[root@www ~]# umount /mnt/centos_dvd/
# 测试完成!记得将数据给他卸除!


非常方便吧!如此一来我们不需要将这个文件刻录成为光盘或者是 DVD 就能够读取内部的数据了! 换句话说,你也可以在这个文件内『动手脚』去修改文件的!这也是为什么很多映象档提供后,还得要提供验证码 (MD5) 给使用者确认该映象档没有问题!

创建大文件以制作 loop 装置文件!

想一想,既然能够挂载 DVD 的映象档,那么我能不能制作出一个大文件,然后将这个文件格式化后挂载呢? 好问题!这是个有趣的动作!而且还能够帮助我们解决很多系统的分割不良的情况呢!举例来说,如果当初在分割时, 你只有分割出一个根目录,假设你已经没有多余的容量可以进行额外的分割的!偏偏根目录的容量还很大! 此时你就能够制作出一个大文件,然后将这个文件挂载!如此一来感觉上你就多了一个分割槽啰! 用途非常的广泛啦!

底下我们在 /home 下创建一个 512MB 左右的大文件,然后将这个大文件格式化并且实际挂载来玩一玩! 这样你会比较清楚鸟哥在讲啥!

创建大型文件


首先,我们得先有一个大的文件吧!怎么创建这个大文件呢?在 Linux 底下我们有一支很好用的程序 dd !他可以用来创建空的文件喔!详细的说明请先翻到下一章 压缩命令的运用 来查阅,这里鸟哥仅作一个简单的范例而已。 假设我要创建一个空的文件在 /home/loopdev ,那可以这样做:

[root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512
512+0 records in   <==读入 512 笔数据
512+0 records out  <==输出 512 笔数据
536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s
# 这个命令的简单意义如下:
# if 是 input file ,输入文件。那个 /dev/zero 是会一直输出 0 的装置!
# of 是 output file ,将一堆零写入到后面接的文件中。
# bs 是每个 block 大小,就像文件系统那样的 block 意义;
# count 则是总共几个 bs 的意思。

[root@www ~]# ll -h /home/loopdev
-rw-r--r-- 1 root root 512M Oct 28 02:29 /home/loopdev


dd 就好像在迭砖块一样,将 512 块,每块 1MB 的砖块堆栈成为一个大文件 (/home/loopdev) ! 最终就会出现一个 512MB 的文件!粉简单吧!

格式化

很简单就创建起一个 512MB 的文件了吶!接下来当然是格式化啰!

[root@www ~]# mkfs -t ext3 /home/loopdev
mke2fs 1.39 (29-May-2006)
/home/loopdev is not a block special device.
Proceed anyway? (y,n) y  <==由于不是正常的装置,所以这里会提示你!
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
.....以下省略.....


挂载

那要如何挂载啊?利用 mount 的特殊参数,那个 -o loop 的参数来处理!

[root@www ~]# mount -o loop /home/loopdev /media/cdrom/
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/home/loopdev           507748     18768    462766   4% /media/cdrom


透过这个简单的方法,感觉上你就可以在原本的分割槽在不更动原有的环境下制作出你想要的分割槽就是了! 这东西很好用的!尤其是想要玩 Linux 上面的『虚拟机』的话, 也就是以一部 Linux 主机再切割成为数个独立的主机系统时,类似 VMware 这类的软件, 在 Linux 上使用 xen 这个软件,他就可以配合这种 loop device 的文件类型来进行根目录的挂载, 真的非常有用的喔! ^_^

转自:http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem_4.php
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Ubuntu系统下挂载新硬盘

    为了让新硬盘在每次系统启动时都能自动挂载,需要编辑`/etc/fstab`文件,添加相应的挂载信息。 - **查看UUID**: `sudo blkid /dev/sdb1` - 使用这条命令可以获取`/dev/sdb1`的UUID,用于后续配置中。 - 假设UUID...

    centsos 磁盘挂载.docx

    为了确保新磁盘在每次系统启动时都能自动挂载,需要按照第五步中的方法设置永久挂载。这样就无需每次启动后手动输入挂载命令了。 #### 七、注意事项 1. 如果设置了永久挂载,但在某一时刻需要拔掉磁盘,则可能会...

    系统分区及挂载点

    ### 系统分区及挂载点详解 #### 一、Linux分区概述 在Linux系统中,硬盘分区的方式和管理机制与传统的DOS或Windows系统有所不同。为了更好地理解Linux下的分区和挂载点概念,我们需要从以下几个方面进行深入探讨:...

    Ubuntu 20.04.2 LTS 挂载新硬盘.pdf

    8. 设置开机自动挂载:为了让新硬盘在每次系统启动时自动挂载,需要在/etc/fstab文件中添加相应的配置信息。在该文件中添加一行/dev/vdb /mnt/vdb ext4 defaults 0 0,其中dev/vdb是硬盘设备文件,/mnt/vdb是挂载点...

    Linux磁盘挂载实战步骤

    为了使磁盘在每次启动时都能自动挂载,需要将其配置到 `/etc/fstab` 文件中。 **配置方法:** - **直接用磁盘名称配置:** 在 `/etc/fstab` 文件末尾添加一行配置 `" /dev/sdb1 /data ext4 defaults 0 0 "`. - **使用...

    CentOs如何挂载硬盘.zip

    这行表示设备/dev/sdb1挂载到/mnt/newdisk,文件系统类型为ext4,使用默认挂载选项,并且在启动时自动挂载。 7. **验证挂载** 通过`df -h`命令检查挂载是否成功,可以看到新硬盘的信息出现在输出中。 8. **其他...

    linux下,san存储多路径软件的安装及配置

    八、设置 multipathd 服务自动启动 使用 chkconfig multipathd on 命令将 multipathd 服务设置为自动启动。 Linux 下 SAN 存储多路径软件的安装及配置需要安装相应的软件包,配置多路径服务,修改配置文件,删除...

    CentOS挂载exFAT和NTFS格式的U盘.docx

    自动挂载是指在系统启动时自动挂载 U 盘的过程。可以使用 vi 编辑器(其他的编辑器同理)修改 /etc 路径下的 fstab 文件: ``` #vi /etc/fstab ``` 有两种自动挂载方式,第一种为设置磁盘格式为自动(auto),第二...

    Linux启动步骤讲解

    - 这一步骤涉及网络配置、服务启动等,为用户提供一个可用的运行环境。 6. **依赖于硬件的启动环境** - Linux启动过程会根据硬件的不同而略有差异。 - 对于嵌入式平台,通常会有一个引导监视器,它驻留在目标...

    《网络系统管理--Linux实训篇》 课件下载第八章

    虽然课程提供了第七章的课件,但第八章的具体内容可能包括以上这些主题的扩展和深化,实践中可能会涉及更复杂的案例和实际问题的解决方案。通过这些学习,你将不仅理解Linux的基础知识,还能掌握解决实际网络系统...

    UNIX和Linux操作系统(第八章).ppt

    本章重点讨论了在这些系统中如何管理和配置NFS(Network File System)文件系统。NFS是一种分布式文件系统协议,允许网络上的计算机之间共享文件和目录,极大地促进了跨平台的数据交换和资源共享。 首先,我们探讨...

    详解嵌入式linux启动信息

    它的任务是根据 `/etc/inittab` 或 `/etc/systemd/system` 配置启动系统服务和初始化脚本。 - 在System V init系统中,`/etc/inittab` 文件定义了不同的运行级别,每个级别对应一组启动服务。 - 在Systemd系统中,...

    鸟哥Linux私房菜

    11. **free**:在第八章第5.1节及第十七章第3.4节中描述。free命令用于显示系统内存状态。 12. **file**:在第七章第4.4节中提及。file命令用于识别文件的类型。 13. **find**:在第七章第5.2节中介绍。find命令...

    rhce系统管理ppt教程

    第八单元 核心编译 核心简介 核心编译初步 编译核心的可能原因 核心编译 核心编译 核心编译 使用编译好的核心 用RPM包升级核心 /proc目录 软Raid设置 逻辑卷管理器(LVM)设置 第九单元 X window 进阶 X协议 X安全 ...

    S3C2440启动代码的实现

    8. **用户Bootloader阶段**:此阶段可执行更复杂的任务,如设备检测、文件系统挂载、网络通信、引导操作系统等。 在开发S3C2440启动代码时,需要了解其硬件特性、内存映射以及Bootloader的基本结构。通过阅读《S3C...

    统信uos操作系统环境部署配置

    (2)设置U盘为第一启动项,并保存设置。 (3)重启计算机,并从U盘引导进入统信操作系统安装界面。 (4)在安装界面,选择“安装”选项,并等待系统安装完成。 二、JDK安装 JDK安装是指在统信uos操作系统上安装...

    Red Hat Linux 启动流程图

    当内核完成基本配置后,它会启动init进程(在Red Hat Linux中,通常为Systemd),这是系统的第一个用户级进程,拥有进程ID 1。Systemd负责管理系统启动的服务,按照特定的顺序启动守护进程和服务单元。 7. Runlevel...

    linux_kernel启动过程

    - 守护进程和服务组:根据 `/etc/inittab` 或 Systemd 的配置启动对应的服务和守护进程。 9. 用户登录 经过以上步骤,系统已经准备好接受用户登录。控制台或图形界面(如X Window System)会被启动,用户可以通过...

    Linux启动流程3-3

    - 内核同时会挂载根文件系统,这是启动过程中非常关键的步骤。 4. **init进程启动** - 内核启动完成后,会创建第一个用户态进程,即init。在传统的SysV启动模型中,init是系统的父进程,负责管理系统的服务和进程...

    linux之鸟哥的私房菜

    `fstab` 在第八章第4.1节中介绍,用于定义系统启动时自动挂载的文件系统。 #### G - **gcc**:在第二十二章第2.4节中介绍。GCC(GNU Compiler Collection)是GNU项目的一部分,提供了一套支持多种编程语言的编译...

Global site tag (gtag.js) - Google Analytics