我是靠谱客的博主 爱听歌太阳,最近开发中收集的这篇文章主要介绍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|——|挂载操作|...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复