一、光盘挂载、卸载
在挂载外围设备时一般习惯性地将挂载点放在/mnt目录下,光盘对应的设备文件通常为“/dev/cdrom”
[root@justin ~]# mkdir /mnt/cdroom [root@justin ~]# mount /dev/cdrom /mnt/cdroom/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@justin ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 9.9G 2.8G 6.6G 30% / tmpfs tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 ext4 194M 27M 158M 15% /boot /dev/sda5 ext4 7.7G 146M 7.2G 2% /home /dev/sr0 iso9660 2.9G 2.9G 0 100% /mnt/cdroom [root@justin ~]#
由于光盘是只读的存储介质,因此在挂载时系统会出现“mounting read-only”的提示信息。另外,在df命令显示的结果中可以发现,光盘(光驱)的实际设备文件是/dev/sr0,/dev/cdrom其实只是一个符号链接,光盘的文件系统iso9660,如果在图形界面下系统会将光盘自动挂载到“/media/RHEL_6.3 x86_64 Disc 1”目录下,Linux允许同一个存储设备同时被挂载到多个挂载点,并不影响使用。
通过/mnt/cdroom就可以查看或者使用光盘内容,在卸载的时候需要退出所在目录,否则会提示设备在繁忙的信息
[root@justin ~]# cd /mnt/cdroom/ && ls EULA RELEASE-NOTES-es-ES.html RELEASE-NOTES-ru-RU.html GPL RELEASE-NOTES-fr-FR.html RELEASE-NOTES-si-LK.html HighAvailability RELEASE-NOTES-gu-IN.html RELEASE-NOTES-ta-IN.html images RELEASE-NOTES-hi-IN.html RELEASE-NOTES-te-IN.html isolinux RELEASE-NOTES-it-IT.html RELEASE-NOTES-zh-CN.html LoadBalancer RELEASE-NOTES-ja-JP.html RELEASE-NOTES-zh-TW.html media.repo RELEASE-NOTES-kn-IN.html repodata Packages RELEASE-NOTES-ko-KR.html ResilientStorage README RELEASE-NOTES-ml-IN.html RPM-GPG-KEY-redhat-beta RELEASE-NOTES-as-IN.html RELEASE-NOTES-mr-IN.html RPM-GPG-KEY-redhat-release RELEASE-NOTES-bn-IN.html RELEASE-NOTES-or-IN.html Server RELEASE-NOTES-de-DE.html RELEASE-NOTES-pa-IN.html TRANS.TBL RELEASE-NOTES-en-US.html RELEASE-NOTES-pt-BR.html [root@justin cdroom]# umount /mnt/cdroom/ umount: /mnt/cdroom: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@justin cdroom]# cd [root@justin ~]# umount /mnt/cdroom/ [root@justin ~]#
参数-o
-o ro:用唯读模式挂上
-o rw:用可读写模式挂上
-o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统
-o remount:将一个已经挂下的档案系统重新用不同的方式挂上
[root@justin ~]# mount -o remount,ro /dev/ops/databases [root@justin ~]# mount -o loop /tmp/image.iso /mnt/cdrom
如果发现有提示“device is busy”,找到是什么进程使得他busy
[root@justin ~]# fuser -m /mnt/cdrom 将会显示使用这个模块的pid [root@justin ~]# fuser -mk /mnt/cdrom 将会直接kill那个pid
fuser
可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息。
-m 参数显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备
-v 参数给出详细的输出
-i 参数,交互模式,执行操作前询问
如下情况将导致文件系统处于“busy”状态:
1) 文件系统上面有打开的文件
2) 某个进程的工作目录在此文件系统上
3) 文件系统上面的缓存文件正在被使用
lsof也可以找出被特定进程所打开的文件,目录,套接字,设备.
二、挂载iso镜像文件
由于系统里没有iso镜像文件,这里把/home目录制作成光盘镜像文件
[root@justin ~]# mkisofs -r -J -V cdiso -o /usr/local/src/cdiso.iso /home I: -input-charset not specified, using utf-8 (detected in locale settings) Using _____000 for /home/justin/桌面 (图片) Using _____001 for /home/justin/图片 (视频) Using _____002 for /home/justin/视频 (音乐) Using _____003 for /home/justin/音乐 (模板) Using _____004 for /home/justin/模板 (文档) Using _____005 for /home/justin/文档 (下载) Using PREFE000.DES;1 for /home/justin/.local/share/applications/preferred-mail-reader.desktop (preferred-web-browser.desktop) Using 8665C000.;1 for /home/justin/.pulse/8665cfcff9c76f94fac16e0000000022-default-source (8665cfcff9c76f94fac16e0000000022-default-sink) Using 8665C001.;1 for /home/justin/.pulse/8665cfcff9c76f94fac16e0000000022-default-sink (8665cfcff9c76f94fac16e0000000022-runtime) Using 8665C000.TDB;1 for /home/justin/.pulse/8665cfcff9c76f94fac16e0000000022-card-database.tdb (8665cfcff9c76f94fac16e0000000022-stream-volumes.tdb) Using 8665C001.TDB;1 for /home/justin/.pulse/8665cfcff9c76f94fac16e0000000022-stream-volumes.tdb (8665cfcff9c76f94fac16e0000000022-device-volumes.tdb) Total translation table size: 0 Total rockridge attributes bytes: 28589 Total directory bytes: 202000 Path table size(bytes): 1456 Max brk space used 6b000 825 extents written (1 MB) [root@justin ~]# mkdir /mnt/cdroom [root@justin ~]# mount -o loop -t iso9660 /usr/local/src/cdiso.iso /mnt/cdroom/ [root@justin ~]# cd /mnt/cdroom/ [root@justin cdroom]# ll 总用量 49 dr-xr-xr-x 3 root root 2048 10月 11 15:21 default dr-xr-xr-x 3 root root 2048 10月 11 10:46 file -r--r--r-- 1 root root 4 9月 24 13:50 i dr-xr-xr-x 28 root root 6144 10月 14 22:12 justin dr-xr-xr-x 4 root root 2048 10月 14 22:12 justin1 dr-xr-xr-x 2 root root 2048 9月 18 15:30 lost+found dr-xr-xr-x 4 root root 2048 10月 10 11:08 study6 -r-xr-xr-x 1 root root 17 10月 11 15:14 test -r--r--r-- 1 root root 31991 10月 22 18:45 top1 [root@justin cdroom]#
三、移动硬盘、U盘挂载
移动硬盘、U盘挂载和以上类似,各自的文件名可以通过[root@justin ~]# fdisk -l查看
对ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,应使用-o iocharset=cp936参数
四、挂接Windows文件共享
在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba 软件包。这里还没安装,以下为挂载的一个例子
[root@CHINFO8 ~]# rpm -qa|grep samba samba-client-3.0.33-3.37.el5 samba-common-3.0.33-3.37.el5 [root@CHINFO8 ~]# [root@justin ~]# mount -t smbfs -o username=administrator,password=123 //10.15.72.73/d$ /mnt/samba
使用smb协议挂载很难解决乱码问题,使用cifs则没乱码问题
[root@justin ~]# mount -t cifs -o username=admin,password=123 //10.15.23.73/dmpfile /data
[root@localhost ~]# mount -t cifs -o username=app,password=app127 //10.10.2.21/d$/pdf/MRGG /opt/MRGG mount: //10.10.2.21/d$/pdf/MRGG is write-protected, mounting read-only mount: cannot mount //10.10.2.21/d$/pdf/MRGG read-only [root@localhost ~]# yum -y install cifs-utils samba-client [root@localhost ~]# smbclient -L //http://10.10.2.21 -U app 查看一下该用户共享权限下的共享情况 [root@localhost ~]# mount -t cifs -o username=app,password=app127 //10.10.2.21/d$/pdf/MRGG /opt/MRGG mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) [root@localhost ~]# mount --verbose -t cifs -o username=app,password=app127,vers=2.1,sec=krb5 //10.10.2.21/d$/pdf/MRGG /opt/MRGG [root@localhost ~]# tail -50 /var/log/messages Nov 22 13:30:05 localhost kernel: CIFS VFS: cifs_mount failed w/return code = -13 [root@localhost ~]# mount -t cifs -o username=app,password=app127 //10.10.2.21/pdf/MRGG /opt/MRGG
自动挂载、fstab
以上挂载方式在重启机器会丢失,再次使用需重新挂载,可以通过修改/etc/fstab文件来完成文件系统的自动挂载。/etc/fstab称为文件系统数据表(File System Table),Linux在每次开机的时候都会按照这个文件中的配置来自动挂载相应的文件系统。
[root@justin ~]# tail -2 /etc/fstab sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 [root@justin ~]#
以第二行说明各项租用
第1字段proc:需要挂载的设备文件名。
第2字段/proc:挂载点,挂载点必须是一个目录,而且必须用绝对路径。对于交换分区,这个字段定义为swap。
第3字段proc:文件系统的类型。如果是ext4文件系统,则写成ext4;如果是FAT32文件系统,则写成vfat;如果是光盘,可以写成auto,由系统自动检测,或者是iso9660这种标准格式。
第4字段defaults:挂载选项。一般都是采用“defaults”,等于rw,suid,dev,exec,auto,nouser,async
_netdev:代表该挂载的磁盘分区为网络磁盘分区,Centos7挂载存储盘需要加上此参数
intr参数为了解决当网络出现故障时,我们可以通过按下ctrl+c组合键来终止操作
soft 参数是为了向用户输出错误信息
noatime Do not update inode access times on this filesystem 挂载文件系统的时候设置 noatime 可以显著提高文件系统的性能
nodiratime Do not update directory inode access times on this filesystem.
载文件系统的时候设置 noatime 可以显著提高文件系统的性能。默认情况下,Linux ext2/ext3 文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间。因为系统运行的时候要访问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。Linux 提供了 noatime 这个参数来禁止记录最近一次访问时间戳。
inode 的标记位是 NOATIME 的话就直接返回了,根本就走不到 NODIRATIME 那里去,所以只设置 noatime 就可以了,不必再设置 nodiratime.
自动与手动挂载:
auto 在启动或在终端中输入mount -a时自动挂载
noauto 设备(分区)只能手动挂载
读写权限:
ro 挂载为只读权限
rw 挂载为读写权限
可执行:
exec 是一个默认设置项,它使在那个分区中的可执行的二进制文件能够执行
noexec 二进制文件不允许执行。千万不要在你的root分区中用这个选项!!!
I/O同步:
sync 所有的I/O将以同步方式进行
async 所有的I/O将以非同步方式进行
户挂载权限:
user 允许任何用户挂载设备。 Implies noexec,nosuid,nodev unless overridden.
nouser 只允许root用户挂载。这是默认设置。
请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto
第5字段0:文件系统是否需要dump备份(dump是一个备份工具),一般为1时表示需要,为0设表示忽略。
第6字段0:表示在系统启动时是否检查这个文件系统以及检查的顺序,设为0表示不检查,设为1表示优先检查,2表示其次检查。对于根分区应设为1,其他分区设为2或者是0
第四列:parameters:文件系统的参数
Async/sync |
设置是否为同步方式运行,默认为async |
auto/noauto |
当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto |
rw/ro |
是否以以只读或者读写模式挂载 |
exec/noexec |
限制此文件系统内是否能够进行"执行"的操作 |
user/nouser |
是否允许用户使用mount命令挂载 |
suid/nosuid |
是否允许SUID的存在 |
Usrquota |
启动文件系统支持磁盘配额模式 |
Grpquota |
启动文件系统对群组磁盘配额模式的支持 |
Defaults |
同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置 |
第五列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1
0 |
代表不要做dump备份 |
1 |
代表要每天进行dump的操作 |
2 |
代表不定日期的进行dump操作 |
第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。
0 |
不要检验 |
1 |
最早检验(一般根目录会选择) |
2 |
1级别检验完成之后进行检验 |
sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/cdrom /media iso9660 loop,ro 0 0 //10.15.23.73/dmpfile /data cifs username=admin,password=123,rw 0 0
挂载磁盘最好使用UUID号来挂载
[root@localhost libexec]# blkid /dev/sda3: UUID="eee214fe-4b64-44b6-8b3c-ed0f8e63e32a" TYPE="ext4" /dev/sda1: UUID="fc233792-7e59-487c-8359-a464b7b66097" TYPE="ext4" /dev/sda2: UUID="680ec16a-b4e9-4dc8-8bee-aaf45587e173" TYPE="swap" /dev/sdb1: UUID="0251d493-62de-4c4e-8b13-b82bfd344d69" TYPE="ext4" [root@localhost libexec]# vim /etc/fstab UUID=0251d493-62de-4c4e-8b13-b82bfd344d69 /sdb1 ext4 defaults 0 0