如果有光盘镜像文件,或者是使用文件作为磁盘的方式时,那就得要使用特别的方法来将他挂载起来,不需要烧录啦!

  • 挂载光盘/DVD镜像文件

想像一下如果今天我们从国家高速网络中心(http://ftp.twaren.net)或者是昆山科大(http://ftp.ksu.edu.tw)下载了 Linux 或者是其他所需光盘/DVD的镜像文件后, 难道一定需要烧录成为光盘才能够使用该文件里面的数据吗?当然不是啦!我们可以通过 loop 设备来挂载的!

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

[root@study ~]# ll -h /tmp/CentOS-7.0-1406-x86_64-DVD.iso
-rw-r--r--. 1 root root 3.9G Jul  7  2014 /tmp/CentOS-7.0-1406-x86_64-DVD.iso
# 看到上面的结果吧!这个文件就是镜像文件,文件非常的大吧!

[root@study ~]# mkdir /data/centos_dvd
[root@study ~]# mount -o loop /tmp/CentOS-7.0-1406-x86_64-DVD.iso /data/centos_dvd
[root@study ~]# df /data/centos_dvd
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/loop0       4050860 4050860         0 100% /data/centos_dvd
# 就是这个项目! .iso 镜像文件内的所有数据可以在 /data/centos_dvd 看到!

[root@study ~]# ll /data/centos_dvd
total 607
-rw-r--r--. 1  500  502     14 Jul  5  2014 CentOS_BuildTag 
&
lt;==瞧!就是DVD的内容啊!
drwxr-xr-x. 3  500  502   2048 Jul  4  2014 EFI
-rw-r--r--. 1  500  502    611 Jul  5  2014 EULA
-rw-r--r--. 1  500  502  18009 Jul  5  2014 GPL
drwxr-xr-x. 3  500  502   2048 Jul  4  2014 images
.....(下面省略).....

[root@study ~]# umount /data/centos_dvd/
# 测试完成!记得将数据给他卸载!同时这个镜像文件也被鸟哥删除了...测试机容量不够大!

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

  • 创建大文件以制作 loop 设备文件!

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

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

  • 创建大型文件

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

[root@study ~]# dd if=/dev/zero of=/srv/loopdev bs=1M count=512
512+0 records in   
&
lt;==读入 512 笔数据
512+0 records out  
&
lt;==输出 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 的意思。所以 bs*count 就是这个文件的容量了!

[root@study ~]# ll -h /srv/loopdev
-rw-r--r--. 1 root root 512M Jun 25 19:46 /srv/loopdev

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

  • 大型文件的格式化

默认 xfs 不能够格式化文件的,所以要格式化文件得要加入特别的参数才行喔!让我们来瞧瞧!

[root@study ~]# mkfs.xfs -f /srv/loopdev
[root@study ~]# blkid /srv/loopdev
/srv/loopdev: UUID="7dd97bd2-4446-48fd-9d23-a8b03ffdd5ee" TYPE="xfs"

其实很简单啦!所以鸟哥就不输出格式化的结果了!要注意 UUID 的数值,未来会用到!

  • 挂载

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

[root@study ~]# mount -o loop UUID="7dd97bd2-4446-48fd-9d23-a8b03ffdd5ee" /mnt
[root@study ~]# df /mnt
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/loop0        520876 26372    494504   6% /mnt

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

比较特别的是,CentOS 7.x 越来越聪明了,现在你不需要下达 -o loop 这个选项与参数,它同样可以被系统挂上来! 连直接输入 blkid 都会列出这个文件内部的文件系统耶!相当有趣!不过,为了考虑向下兼容性,鸟哥还是建议你加上 loop 比较妥当喔! 现在,请将这个文件系统永远的自动挂载起来吧!

[root@study ~]# nano /etc/fstab
/srv/loopdev  /data/file  xfs  defaults**,loop**   0 0
# 毕竟系统大多仅查询 block device 去找出 UUID 而已,因此使用文件创建的 filesystem,
# 最好还是使用原本的文件名来处理,应该比较不容易出现错误讯息的!

[root@study ~]# umount /mnt
[root@study ~]# mkdir /data/file
[root@study ~]# mount -a
[root@study ~]# df /data/file
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/loop0        520876 26372    494504   6% /data/file

results matching ""

    No results matching ""