本文共 8837 字,大约阅读时间需要 29 分钟。
我们通过上一节已经对磁盘进行了分区与格式化了,如果说在windows系统下,我们就能正常使用了,而在Linux系统上则不行,他需要挂载后才能正常的使用。那么,挂载就是我们今天学习的内容。
要学习挂载,先来看看什么是挂载点,他的作用是什么?
我们知道,在Linux的文件系统结构是一个倒树状的。如果我们要增加新的东西到这个树上,我们就需想办法系一个什么东西,那么我们就可以把这个东西叫做挂载点。这个挂载点就是让其他的文件系统进入我们的目录树。所以挂载点有一个特点,那就是必需是个目录。
下面我们来看个例子
[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6928372 7422356 49% /tmpfs 255784 0 255784 0% /dev/shm
从上面的信息可以看到,我的磁盘sda的第一个分区sda1,他的挂载点是/。如果说你是接着上一节进行的实验的话,那么我们的第二块磁盘的信息并没有显示在这里,原因就是:我们还没有对其进行挂载,所以我们的目录树上还没有。
mount命令格式
mount 参数 -t 文件系统 -o 选项 设备 挂载点
mount 后面什么也不加的话,会显示目前挂载的信息mount -a 会根据/etc/文件中的信息,将没有挂载全部挂载上mount -t 文件系统 文件系统包括的内容主要包括:ext3 ext4 vfat ntfs iso nfs smbfs -o 后面的选项内容很多,主要是一些挂载时候的权限限制类的。 ro/rw: 挂载文件系统时成为只读(ro)或可读写(rw) exec/noexec: 是否允许此文件系统上拥有可执行的文件 suid/nosuid: 是否允许此文件系统上含有suid的文件 dev/nodev: 是否允许此文件系统上建立设备文件 auto/noauto: 允许此文件系统用mount -a自动挂载 async/sync: 此文件系统是否使用同步(sync)或异步(async)写入硬盘的内存机制 user/nouser: 是否允许此文件系统让任何用户执行mount命令 defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async remount: 重新挂载。这个选项在系统修复,或重新更新参数时经常用到设备:系统中有哪些存储设备,主要通过fdisk -l或者查看/etc/fstab或dmesg。一般的情况下光驱设备是/dev/cdrom,软驱设备是/dev/fd0(好像现在没有软驱了),硬盘及移动硬盘以 fdisk -l 的输出为准。挂载点:这个就不用说了,自己建立一个空目录就OK了。
当然还有其他的一些参数和选项,这里大家可以通过MAN来查看更多的帮助信息。关键是要实践。那么下面我们就来通过例子熟悉此命令的使用。
我们还是以昨天分区的硬盘为例来给大家演示,我们只演示EXT4文件系统的挂载,其他的文件系统也是一样,只是-t 文件系统类型这里不一样而已。当然,我们注明一些其他的注意事项的。
[root@yufei ~]# fdisk -lDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273 Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 /dev/sdb2 133 183 409657+ 83 /dev/sdb3 184 2610 19494877+ 5 Extended/dev/sdb5 184 445 2104483+ 83 Linux/dev/sdb6 446 511 530113+ 82 Linux swap / Solaris
因为上一节课程中只对sdb1进行了格式化了,而其他的分区我们没有进行格式化。所以这里我们会给大家演示没有格式化挂载时候的情况。
先创建挂载点,我比较喜欢用系统的/mnt目录,所以这里我就不创建目录了。
然后进行挂载[root@yufei ~]# mount /dev/sdb1 /mnt
这里我没有指定文件系统的类型,为什么不指定也能被正确识别呢?主要是因为我们的系统中已经有了这些默认的类型驱动,那么我是怎么知道系统中到底有多少是默认的呢?你可以通过查看下面两个文件来得知。
/etc/filesystems:系统指定的默认挂载文件系统类型
/proc/filesystems:Linux系统已经加载的文件系统类型
这里面虽然是有了,但我怎么知道我的Linux系统有没有相关文件系统类型的驱动呢?我们可能通过 /lib/modules/$(uname -r)/kernel/fs/这个目录里面的信息来查看支持的文件系统驱动程序。
如果是在这之外的文件系统,就必需加上-t和相应的文件系统类型了。
我们用df来查看挂载情况,这个和一开始查看的结果进行对比
[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6928404 7422324 49% /tmpfs 255784 0 255784 0% /dev/shm/dev/sdb1 1033560 40980 939568 5% /mnt
我们看到最后一行得到了我们刚才挂载的分区了,现在可以在/mnt里面写东西了。
[root@yufei ~]# touch /mnt/testfile[root@yufei ~]# ls -l /mnt/total 16drwx------. 2 root root 16384 May 26 16:19 lost+found-rw-r--r--. 1 root root 0 May 26 23:15 testfile
ok,文件已经写入。接下来,我们来把挂载的选项来改一下,让他是只读的。
[root@yufei ~]# mount -o ro,remount /dev/sdb1[root@yufei ~]# touch /mnt/testfile2touch: cannot touch `/mnt/testfile2': Read-only file system
现在/mnt这个挂载点已经不能向里面写入任何的内容了。我没有卸载/dev/sdb1,只用了remount就能重新挂载了,加上ro选项,就变成只读了。关于其他的参数作用,各位自行测试吧。
注意:多个选项之间用英文的,分开。
光盘的挂载,这个和分区的挂载是一样的。
[root@yufei ~]# mkdir /media/cdrom[root@yufei ~]# mount /dev/cdrom /media/cdrom/mount: device /dev/sr0 is write-protected, mounting read-only
这里提示是只读的,因为是光盘啊!
[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6928416 7422312 49% /tmpfs 255784 0 255784 0% /dev/shm/dev/sdb1 1033560 40980 939568 5% /mnt/dev/sr0 2862360 2862360 0 100% /media/cdrom
最后一行又多出来一个cdrom。
注意:在上,光盘的设备名字变成了sr0了,不再是以前的cdrom了。
挂载光盘应该加上-t iso9660,因为我们的系统文件系统的驱动中已经有了,所以我就不用加参数,系统就能认识了。
U盘的挂载其实和硬盘的挂载是一样的,所以这里就不演示了,步骤也是一样的
1、fdisk -l2、建立挂载点
3、执行挂载命令
具体的演示这里略过,有条件的,自己实践吧!
下面演示一个没有格式化的分区挂载的情况
[root@yufei ~]# mkdir /test[root@yufei ~]# mount /dev/sdb2 /testmount: you must specify the filesystem type
就算我加上了文件系统类型也是不行的,不过,这里加上文件系统类型也是无意义的,毕竟没有格式化,这只是演示,所以我用ext4来演示一下
[root@yufei ~]# mount -t ext4 /dev/sdb2 /testmount: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so
我先来对其格式化,这次把我把格式化成VFAT格式的,所以我先转换分区类型
[root@yufei ~]# fdisk /dev/sdbCommand (m for help): tPartition number (1-6): 2Hex code (type L to list codes): bChanged system type of partition 2 to b (W95 FAT32)别忘记保存啊Command (m for help): w下面进行格式化[root@yufei ~]# mkfs.vfat /dev/sdb2mkfs.vfat 3.0.9 (31 Jan 2010)然后进行挂载[root@yufei ~]# mount /dev/sdb2 /test
再来查看挂载的情况
[root@yufei ~]# df -TFilesystem Type 1K-blocks Used Available Use% Mounted on/dev/sda1 ext4 15118728 6928520 7422208 49% /tmpfs tmpfs 255784 0 255784 0% /dev/shm/dev/sdb1 ext4 1033560 40980 939568 5% /mnt/dev/sr0 iso9660 2862360 2862360 0 100% /media/cdrom/dev/sdb2 vfat 409424 0 409424 0% /test
fat32格式的也挂载上了。
注意:在实际中操作中,直接加挂一个Windows的分区,中文的文件名和目录名可能会出现乱码,为了避免这种情况可以指定字符集,命令如下:
mount /dev/sdb2 /test -o codepage=936,iocharset=cp936
mount /dev/sdb2 /test -o codepage=936,iocharset=cp936
注:cp936是指简体中文,cp950是指繁体中文。
[root@yufei ~]# tune2fs -l /dev/sdb1 |moretune2fs 1.41.12 (17-May-2010)Filesystem volume name: opsers_tech
此处省略很多行
下面进行挂载操作
[root@yufei ~]# mount -L opsers_tech -o remount用df还是看到是原来的内容,为了让大家看明白,我们把这个先卸载了,[root@yufei ~]# umount /mnt[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6928544 7422184 49% /tmpfs 255784 0 255784 0% /dev/shm/dev/sr0 2862360 2862360 0 100% /media/cdrom/dev/sdb2 409424 0 409424 0% /test
然后用卷标的方式来挂载
[root@yufei ~]# mount -L opsers_tech /mnt[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6928544 7422184 49% /tmpfs 255784 0 255784 0% /dev/shm/dev/sr0 2862360 2862360 0 100% /media/cdrom/dev/sdb2 409424 0 409424 0% /test/dev/sdb1 1033560 40980 939568 5% /mnt
同样能挂载上,只是把设备名换成了卷标而已。
[root@yufei ~]# dd if=/dev/zero of=test.iso bs=1M count=5050+0 records in50+0 records out52428800 bytes (52 MB) copied, 0.513358 s, 102 MB/s
对其进行格式化
[root@yufei ~]# mkfs.ext4 test.isomke2fs 1.41.12 (17-May-2010)test.iso is not a block special device.Proceed anyway? (y,n) y此处省略很多行
进行挂载
[root@yufei ~]# mkdir /loop[root@yufei ~]# mount -o loop test.iso /loop[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6979752 7370976 49% /tmpfs 255784 0 255784 0% /dev/shm/dev/sr0 2862360 2862360 0 100% /media/cdrom/dev/sdb2 409424 0 409424 0% /test/dev/sdb1 1033560 40980 939568 5% /mnt/dev/loop0 49574 4906 42108 11% /loop
同样能正常写文件
[root@yufei ~]# touch /loop/test[root@yufei ~]# ls /loop/lost+found test
关于网络文件系统的挂载,我们会在后面的服务里面给大家讲解,这里先略过了。
OK,介绍了这么多挂载的内容,那么我想把挂载的内容卸载,我要怎么办呢?
那就是umount命令了,这个命令比较简单格式是
umount 参数 设备名或挂载点
-f :强制卸载。可用在类似网络文件系统 (NFS) 无法读取到的情况下
-n :不更新/etc/mtab 情况下卸载
[root@yufei ~]# umount /mnt #接的是挂载点[root@yufei ~]# umount /dev/sr0 #接的是设备[root@yufei ~]# umount /dev/sdb2#接的是设备[root@yufei ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 15118728 6928528 7422200 49% /tmpfs 255784 0 255784 0% /dev/shm
这样就把我刚才挂载的内容,全部卸载掉了。
我们前面不是向/mnt不是创建了一个文件了吗?现在我们来看看他还在不在/mnt中,
[root@yufei ~]# ls /mnthgfs
我们创建的文件不在这里,而hgfs这个目录,是系统自带的。这也验证文章开头给大家提到的,不会破坏目录里面的原有内容,当文件系统卸载后就还原了。而我们的挂载点起到的是桥梁作用,虽然是向挂载点中写内容,但实际上,写入的对象是对应的设备。我们把设备挂载上再看看是不是这样。
[root@yufei ~]# mount /dev/sdb1 /mnt[root@yufei ~]# ls /mntlost+found testfiletestfile又出来了。[root@yufei ~]# umount /mnt[root@yufei ~]# ls /mnthgfs/mnt又还原了
今天主要讲的是挂载,而且都是手动实现的,这样有点太麻烦,明天我们讲如何实现自动挂载
本文关键字:RHEL6 一天一点 学习Linux 文件系统 挂载 mount
转载地址:http://nblci.baihongyu.com/