我是靠谱客的博主 爱听歌太阳,最近开发中收集的这篇文章主要介绍CC00018.LinuxBasic——|Linux&常用命令.V12|——|挂载操作|...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、挂载命令:mount
### --- mount 命令基本格式
~~~     linux 所有存储设备都必须挂载使用,包括硬盘
~~~     命令名称:mount
~~~     命令所在路径:/bin/mount
~~~     执行权限:所有用户
~~~     说了这么多,命令的具体格式如下:

[root@localhost ~]# mount [-l]
### --- 查询系统中已经挂载的设备,-l 会显示卷标名称

[root@localhost ~]# mount –a
### --- 依据配置文件/etc/fstab 的内容,自动挂载
~~~     设备文件名 挂载点
~~~     代表这一行没有写完,换行
### --- 选项:
~~~     -t 文件系统:加入文件系统类型来指定挂载的类型,
~~~     可以 ext3、ext4、iso9660等文件系统。具体可以参考表 9-1
~~~     -L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载
~~~     -o 特殊选项:可以指定挂载的额外选项,
~~~     比如读写权限、同步异步等,如果不指定则默认值生效。具体的特殊选项,见表 9-4:
 
[root@localhost ~]# mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 
说明
atime/noatime更新访问时间/不更新访问时间,
访问分区文件时,是否更新文件的访问时间,默认为更新
async/sync异步/同步,默认为异步
auto/noauto自动/手动,mount -a命令执行时,
是否会自动安装/etc/fstab文件内容,挂载,默认为自动
defaults定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
remount重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
rw/ro读写/只读,文件系统挂载时,是否具有读写权限,默认是rw
suid/nosuid具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有
user/nouser允许/不允许普通用户挂载,
设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
usrquota写入代表文件系统支持用户磁盘配额,默认不支持
grpguota写入代表文件系统支持组磁盘配额,默认不支持
################################################################################
##############################---     案例一   ---##############################
################################################################################

### --- 案例一:
~~~     查看系统中已经挂载的文件系统,注意有虚拟文件系统
~~~     命令结果是代表:/dev/sda3 分区挂载到/目录,文件系统是 ext4,权限是读写

[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
################################################################################
##############################---     案例二   ---##############################
################################################################################

### --- 案例二:修改特殊权限
~~~     我们查看到/boot 分区已经被挂载,而且采用的 defaults 选项,
~~~     那么我们重新挂载分区,并采用 noexec
~~~     权限禁止执行文件执行,看看会出现什么情况(注意不要用/分区做试验,
~~~     #不然系统命令也不能执行了)。

[root@localhost ~]# mount
…省略部分输出…
/dev/sda1 on /boot type ext4 (rw)
…省略部分输出…

### --- 重新挂载/boot 分区,并使用 noexec 权限
[root@localhost ~]# mount -o remount,noexec /boot
### --- 写个 shell 吧

[root@localhost sh]# cd /boot/
[root@localhost boot]# vi hello.sh
~~~     脚本参数
#!/bin/bash
echo "hello!!"
~~~     虽然赋予了 hello.sh 执行权限,但是任然无法执行
~~~     记得改回来啊,要不会影响系统启动的
~~~     如果我们做试验修改了特殊选项,一定要记得住,而且确定需要修改,
~~~     否则非常容易出现系统问题,而且还找不到哪里出现了问题。

[root@localhost boot]# chmod 755 hello.sh
[root@localhost boot]# ./hello.sh
-bash: ./hello.sh: 权限不够
[root@localhost boot]# mount -o remount,exec /boot
################################################################################
##############################---     案例三   ---##############################
################################################################################

### --- 案例三:挂载分区
~~~     建立挂载点目录
[root@localhost ~]# mkdir /mnt/disk1
 
~~~     挂载分区
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1
~~~     media:挂载光盘的目录
~~~     mnt:挂U盘或者移动硬盘的;习惯于用于挂在mnt目录下
~~~     misc:挂网络存储的目录
~~~     mount直接查看已经挂载的文件

[root@server11 ~]# ls /m*
[root@server11 ~]# mount
/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sr0 on /mnt/cdrom type iso9660 (ro,relatime)                   // 挂载的光盘
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
二、光盘挂载
### --- 光盘挂载
~~~     光盘挂载的前提依然是指定光盘的设备文件名,不同版本的 Linux,设备文件名并不相同:
~~~     CentOS 5.x 以前的系统,光盘设备文件名是/dev/hdc
~~~     CentOS 6.x 以后的系统,光盘设备文件名是/dev/sr0
~~~     不论哪个系统都有软连接/dev/cdrom,与可以作为光盘的设备文件名

[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
### --- 挂载光盘
### --- 用完之后记得卸载:
~~~     因为设备文件名和挂载点已经连接到一起,卸载哪一个都可以
~~~     注意:卸载的时候需要退出光盘目录,才能正常卸载

[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# umount /mnt/cdrom
### --- 创建一个空目录,作为挂载点

[root@server11 ~]# mkdir /mnt/cdrom/
[root@server11 ~]# ll /dev/sr0 /dev/cdrom 
lrwxrwxrwx 1 root root      3 Feb  5 02:06 /dev/cdrom -> sr0        // cdrom是sr0的软连接,推荐使用sr0
brw-rw---- 1 root cdrom 11, 0 Feb  5 02:06 /dev/sr0
[root@server11 ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/            // -t:指定文件系统;默认是9660,可以不写
mount: /dev/sr0 is write-protected, mounting read-only
[root@server11 ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only              // sr0想要挂载为读写权限但是被迫挂载为只读权限光盘,光盘为只读权限;
### --- 查看挂载结果

[root@server11 ~]# mount
/dev/sr0 on /mnt/cdrom type iso9660 (ro,relatime)
[root@server11 ~]# ls /mnt/cdrom/
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
### --- 光盘不卸载;物理机是拿不出光盘的;虚拟机不卸载光盘可能会损坏
 
[root@server11 cdrom]# pwd
/mnt/cdrom
[root@server11 cdrom]# umount /dev/sr0 
umount: /mnt/cdrom: target is busy.                                 // 设备正忙;因为你在挂载目录下,所以失败
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
### --- 退出到root目录下

[root@server11 ~]# umount /dev/sr0 
[root@server11 ~]# umount /mnt/cdrom/
### --- 挂载光盘时,非空目录可以挂载吗

[root@server11 ~]# touch /mnt/cdrom/yanqi
[root@server11 ~]# touch /mnt/cdrom/yanqi1
[root@server11 ~]#  mount -t iso9660 /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
### --- 原因:
~~~     并不是把挂载点下的文件覆盖掉,而是把挂载点直接抽出来;
~~~     作为另外一个分区的入口进行挂载;此刻,挂载点原有的数据就无法访问,
~~~     就会变成一个顽固的垃圾放在这里,删除操作不执行,只会占用空间。不合理。
### --- 所以:
~~~     最好使用空目录作为挂载点。

### --- 挂载后这两个文件是不存在的
[root@server11 ~]# ls /mnt/cdrom/                                   
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
### --- 卸载后文件还是存在
[root@server11 ~]# umount /mnt/cdrom/
[root@server11 ~]# ls /mnt/cdrom/                                   
yanqi  yanqi1
三、挂载 U 盘
### --- 挂载 U 盘
### --- U 盘会和硬盘共用设备文件名,
### --- 所以 U 盘的设备文件名不是固定的,需要手工查询,查询命令:

[root@localhost ~]# fdisk -l
### --- 查询硬盘
### --- 然后就是挂载了,挂载命令如下:
~~~     挂载 U 盘。因为是 Windows 分区,所以是 vfat 文件系统格式
~~~     如果 U 盘中有中文,会发现中文是乱码。Linux 要想正常显示中文,需要两个条件:
~~~     安装了中文编码和中文字体
~~~     操作终端需要支持中文显示(纯字符终端,是不支持中文编码的)

[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
### --- 而我们当前系统是安装了中文编码和字体,而 xshell 远程终端是 Windows 下的程序,
### --- 当然是支持中文显示的。那之所以挂载 U 盘还出现乱码,
### --- 是需要在挂载的时候,手工指定中文编码,例如:
~~~     挂载 U 盘,指定中文编码格式为 UTF-8
~~~     如果需要卸载,可以执行以下命令:

[root@localhost ~]# mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
[root@localhost ~]# umount /mnt/usb/
### --- U盘的设备文件名,并不是固定的。
### --- 在:计算机——>管理——>服务管理——>VMware USB Arbitration Service:启动状态——>END

[root@server11 ~]# fdisk -l
Disk /dev/sdc: 31.2 GB, 31205621760 bytes, 60948480 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe713a2b1
[root@server11 ~]# lsblk
sdc      8:32   1 29.1G  0 disk 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *      614400    60334079    29859840    7  HPFS/NTFS/exFAT
/dev/sdc2        60334080    60944382      305151+  16  Hidden FAT16
### --- 挂载
 
[root@server11 ~]# mkdir /mnt/usb
[root@server11 ~]# mount -t vfat /dev/sdc2 /mnt/usb/                // FAT32在Linux识别为Vfat
[root@server11 ~]# ll /mnt/usb/
total 24
drwxr-xr-x 4 root root 8192 Oct 14 04:57 EFI
drwxr-xr-x 2 root root 8192 Oct 14 04:57 System Volume Information
drwxr-xr-x 3 root root 8192 Oct 14 04:57 WEPE
[root@server11 ~]# ls /mnt/usb/                                     // 挂载成功,可以正常查看到文件
EFI  System Volume Information  WEPE
### --- 更改为中文语系字体
 
[root@server11 ~]# echo $LANG                                       // 查看当前系统默认语系
en_US.UTF-8
[root@server11 ~]# LANG=zh_CN.UTF-8                                 // 强制改为中文语系
[root@server11 ~]# echo $LANG
zh_CN.UTF-8
### --- 卸载

[root@server11 ~]# umount /mnt/usb/
### --- 手工加载字符编码    
 
[root@server11 ~]# mount -t vfat -o iocharset=utf8 /dev/sdc2 /mnt/usb/  // 加入语言选项;中文字符集编码
[root@server11 ~]# ls /mnt/usb/
EFI  System Volume Information  WEPE 
[root@server11 ~]# umount /mnt/usb/
### --- 移动存储设备不建议作为开机自动挂载;
### --- 若是开机自动挂载,移动存储设备不在线,在开机的时候系统会自动查找该设备,
### --- 找不到设备可能导致系统启动失败
### --- 开机自动挂载配置文件

[root@server11 ~]# cat /etc/fstab 
UUID=3231fa8f-6bcc-4daa-8f0e-0b6f9bad6260 /                       xfs     defaults        0 0
UUID=2963589e-ee22-4822-a307-e01305341801 /boot                   xfs     defaults        0 0
UUID=d381d373-ef34-4eb0-b5ca-068b7b72590b swap                    swap    defaults        0 0
### --- 修复是需要拿到物理设备的,代价机器昂贵 
~~~     mount -a比系统纠错级别是要低的,很多错误是查找不到的。
~~~     不要盲目的信任mount -a选项
~~~     什么样的错误是导致真正启动不起来。
~~~      在linux中是换行符 
 
[root@server11 ~]# mount -a                                         // 检查挂载源的正确性的
mount: /dev/sr0 is write-protected, mounting read-only
### --- 拿boot分区做实验

[root@server11 ~]# mount -o remount,noexec /boot/                   // 临时挂载/boot分区
[root@server11 boot]# pwd
/boot
[root@server11 boot]# vim hello.sh
#!/bin/bash                                                         // 不可以省略,linux默认是shell;可以执行;但是在非shell环境下就会报错
echo "hello"
[root@server11 boot]# chmod 755 hello.sh
### --- 执行脚本

[root@server11 boot]# ./hello.sh 
hello
### --- boot目录是可以正确执行shell脚本的
### --- 默认选项不建议修改

[root@server11 ~]# mount -o remount,noexec /boot/ 
[root@server11 ~]# mount                                            // boot分区多了一个exec权限
/dev/sda1 on /boot type xfs (rw,noexec,relatime,attr2,inode64,noquota)
[root@server11 ~]# /boot/hello.sh
-bash: /boot/hello.sh: Permission denied                            // 权限不够
[root@server11 ~]# mount -o remount,exec /boot/                     // 改为原有的权限
[root@server11 ~]# /boot/hello.sh                                   // 正确执行
hello
四、挂载 NTFS 分区
### --- 挂载 NTFS 分区
### --- Linux 的驱动加载顺序:
~~~     驱动直接放入系统内核之中。这种驱动主要是系统启动加载必须的驱动,数量较少。
~~~     驱动以模块的形式放入硬盘。大多数驱动都已这种方式保存,保存位置在/lib/modules/3.10.0-862.el7.x86_64/kernel/中。
~~~     驱动可以被 Linux 识别,但是系统认为这种驱动一般不常用,默认不加载。如果需要加载这种驱动,需要重新编译内核,而 NTFS 文件系统的驱动就属于这种情况。
~~~     硬件不能被 Linux 内核识别,需要手工安装驱动。当然前提是厂商提供了该硬件针对 Linux的驱动,否则就需要自己开发驱动了。

### --- 使用 NTFS-3G 安装 NTFS 文件系统模块
~~~     下载 NTFS-3G 插件
~~~     我们从网站 http://www.tuxera.com/community/ntfs-3g-download/下载 NTFS-3G 插件到 Linux服务器上。
~~~     安装 NTFS-3G 插件
~~~     在编译安装 NTFS-3G 插件之前,要保证 gcc 编译器已经安装。具体安装命令如下:
### --- 在编译安装 NTFS-3G 插件之前,要保证 gcc 编译器已经安装。具体安装命令如下:
[root@localhost ~]# tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz
 
### --- 解压
[root@localhost ~]# cd ntfs-3g_ntfsprogs-2013.1.13
### --- 进入解压目录
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# ./configure

### --- 编译器准备。没有指定安装目录,安装到默认位置中
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make

### --- 编译
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make install

### --- 编译安装
~~~     安装就完成了,已经可以挂载和使用 Windows 的 NTFS 分区了。
~~~     不过需要注意挂载分区时的文件系统不是 ntfs,而是 ntfs-3g。挂载命令如下:
[root@localhost ~]# mount -t ntfs-3g 分区设备文件名 挂载点
 
### --- 例如:
[root@localhost ~]# mount –t ntfs-3g /dev/sdb1 /mnt/win
### --- #NTFS只能是只读的;是不能写入数据的;
### --- linux安装完后,不安装驱动直接可以使用
~~~     驱动直接放入系统内核之中,系统启动或加载必须的驱动;但是导致内核庞大,性能下降
~~~     驱动以模块的形式放入硬盘,大多数驱动都已这种方式保存,保存位置在/lib/modules/3.10.0-862.e17.x86_64/kernel/中

[root@server21 kernel]# pwd
/lib/modules/2.6.32-642.el6.x86_64/kernel
### --- 移动存储设备不可以设置为开机自动挂载
### --- 安装ntfs
~~~     驱动可以被 Linux 识别,但是系统认为这种驱动一般不常用,默认不加载。
~~~     如果需要加载这种驱动,需要重新编译内核,而 NTFS 文件系统的驱动就属于这种情况。
~~~     硬件不能被 Linux 内核识别,需要手工安装驱动。
~~~     当然前提是厂商提供了该硬件针对 Linux的驱动,否则就需要自己开发驱动了。

[root@server11 ~]# wget -c https://jp-andre.pagesperso-orange.fr/ntfs-3g_ntfsprogs-2017.3.23AR.6.tgz
[root@server11 ~]# tar -zxvf ntfs-3g_ntfsprogs-2017.3.23AR.6.tgz
[root@server11 ~]# cd ntfs-3g_ntfsprogs-2017.3.23AR.6/
[root@server11 ntfs-3g_ntfsprogs-2017.3.23AR.6]# ./configure
[root@server11 ntfs-3g_ntfsprogs-2017.3.23AR.6]# make && make install
[root@server11 ~]# mount -t ntfs-3g /dev/sdb1 /mnt/win/

最后

以上就是爱听歌太阳为你收集整理的CC00018.LinuxBasic——|Linux&常用命令.V12|——|挂载操作|...的全部内容,希望文章能够帮你解决CC00018.LinuxBasic——|Linux&常用命令.V12|——|挂载操作|...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部