Linux操作系统将系统中的一切都作为文件来管理,例如硬件设备、磁盘分区等,我们需要将它们挂载到相关的目录下,才能对它们进行对应的操作。
在Linux下需要打开一个文件,那么必须挂载该文件所在的目录到包含该文件的文件系统必须先进行挂载的动作,此时使用者要对该文件系统下mount的指令以进行挂载。通常是使用在USB或其他可卸载存储设备上,而根目录则保持挂载的状态。但Unix文件系统可以对应一个文件而不一定要是硬件设备。
挂载点我们以磁盘为例,每块硬盘都分为若干个分区,每个分区都有自己的文件系统。GNU/Linux 使用唯一的树形结构来管理文件,而每个文件系统都挂载于树形结构的某个位置。
正如 Windows 需要有 C: 驱动器一样,GNU/Linux 必须能够将根文件系统挂载于文件树的根(/)上。当根挂载完成之后,您就可以将其它文件系统挂载于树形结构各种挂载点上。根结构下的任何目录都可以作为挂载点,而您也可以将同一文件系统同时挂载于不同的挂载点上。
挂载点实际上就是linux中的磁盘文件系统或者设备的入口目录。
Filesystem Hierarchy Standard 是在 Linux 或其他 UNIX® 类系统上指定目录公共布局的一个文档。通过将文件跨 Linux 发行版放置在同一个地方,FHS 简化了独立于发行版的软件开发。FHS 在 Linux Standard Base 中也有用到。FHS 允许用户和软件预测所安装文件和目录的位置。一个遵从 FHS 的文件系统假定操作系统支持大多数 UNIX 文件系统中找到的基本安全特性。
FHS 的核心是文件的两个独立特征: 可共享 vs. 不可共享
可共享文件可以位于一个系统上,而在另一个系统上使用。
不可共享文件必须位于要使用的同一个系统上。
静态 vs 变量
静态文件仅通过系统管理员进行变更,比如安装或更新一个包,且包含文档、库和二进制文件。
变量文件是所有其他文件,比如日志、打印后台文件、数据库和用户数据,这些文件都可由用户和系统进程进行更改。
这些特征可使带不同特征集的文件存储在不同的文件系统上。表 1 是一个 FHS 文档示例,显示遵循 FHS 的一个布局。
根文件系统中的 FHS 目录
FHS 目标是要尽量使根文件系统足够小。不过,它必须包含启动、还原、恢复或修复系统所需的所有文件,包括一个有经验的管理员执行这些任务所需的实用工具。注意,启动一个系统需要在根文件系统上有足够的空间,从而可以安装其他文件系统。
下表显示了 FHS 在根(或 /)文件系统下需要的目录的用途。目录或符号链接都是必需的,除了标记为可选的那些之外,这些可选项仅在相应的子系统存在时才需要。
挂载点解释
/ 根目录,唯一必须挂载的目录。/是衍生以下挂载点的根源
/bin 主要存放用户经常使用的命令。静态且不可共享。
/boot 主要存放着系统的内核以及启动时所需要的文件,比如Linux内核文件vmlinuz和核心解压缩所需的RAM Disk文件initrd都 在这里,如果安装了grub,这里还会有Grub目录。静态且不可共享。
/dev 存放设备文件,比如/dev/sda代表第一块IDE硬盘。正常情况下,每种设备有一个独立的子目录,其中存放这些设备的内容。静态且不可共享。
/etc 主要存放系统管理所需的配置文件和子目录。静态且不可共享。
/home 用户的个人数据存放在主目录中,比如有个用户ztg,它的主目录就是/home/ztg。变化的且可共享。(可选)
/lib 主要存放系统最基本的函数库,几乎所有的应用程序都要用到这些函数库。它也在其 /lib/modules/内核_版本号 子目录中存放内核模块。静态且不可共享。(可选)
/lib32 专门存放系统的32位函数库
/lib64 专门存放系统的64位函数库
/lost found 平时是空的,当系统不正常关机后,这里保存一些文件的片段
/media 用途同mnt,比如挂载u盘等
/mnt 可以将别的文件系统临时挂载到这里,比如挂载windows硬盘分区。变化的且不可共享。
/opt 包含对系统操作并非基本的软件包。一般是用户安装的应用程序。
/proc 是一个虚拟的目录,由系统运行时产生,是系统内存的映射,可以通过直接访问这个目录来获取系统信息。注意:这个目录的内容不在硬盘上而是在内存里
/root 超级用户(也叫系统管理员或root用户)的主目录。变化的且不可共享。(可选)
/sbin 主要存放系统管理员使用的管理程序,其他的还有有/usr/sbin、/nsf/local/sbin。静态且不可共享。
/selinux 使用selinux的Linux,其安全级别可以达到B1级
/srv 存放一些服务启动之后需要服务的文件
/sys 系统的核心文件,这个目录是2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个系统文件Sysfs,Sysfs文件系统集成了下面三种文件系统信息:针对进程信息的proc文件系统、针对设备的devfs文件系统、针对伪终端的derpts文件系统。
/tmp 存放临时文件,需要经常清理,这是除了/usr/local目录以外一般用户可以使用的—个目录,启动时系统并不自动删除这里的文件,所以需要经常清理这里的无用文件。变化的且不可共享。
/usr 包含系统的主要程序、用户自行安装的程序、图形界面需要的文件、共享的目录与文件、命令程序文件、程序库,手册和其他文件等,这些文件—般不需要修改。静态且可共享。
/var 含系统执行过程中的经常变化的文件.例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等。建议单独的放在一个分区。其中的各个子目录可以是可共享的,也可以是不可共享的。
Swap(交换分区) 类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
把Linux系统的挂载点想象成一棵大树,/为大树的根源,/衍生的其他挂载点为这颗大树的树枝,挂载点下的文件为树叶。
对于普通用户,一般来说都只是挂载和反挂载硬盘上的win分区,只需要打开文件管理器,在文件管理器左侧的树状图找到win分区,点击一下即可挂载. 反挂载只需要点击挂载分区时候参数的小三角符号即可。
Linux没有驱动器盘符来指代文件系统,所有的文件系统是挂载在目录下面的。
安装 Linux 基本系统的位置在 /,其他所有的都位于 / 的子目录。/mnt/hd 是临时挂载分区的的常见地方,所以我们在例子中会使用它。
mount
mount可将指定设备中指定的文件系统加载到Linux目录下(也就是挂载点)。可将经常使用的设备写入文件/etc/fstab,以使系统在每次启动时自动加载。 mount加载设备的信息记录在/etc/mtab文件中。使用umount命令卸载设备时,记录将被清除。
语法:mount [-afFhnrvVw] [-L] [-o] [-t] [设备名] [加载点] 参数和选项: -a 加载文件/etc/fstab中设置的所有设备。 -f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程。 -F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度。 -h 显示在线帮助信息。 -L 加载文件系统标签为的设备。 -n 不将加载信息记录在/etc/mtab文件中。 -o 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。 这些选项包括: async 以非同步的方式执行文件系统的输入输出动作。 ATIme 每次存取都更新inode的存取时间,默认设置,取消选项为noATIme。 auto 必须在/etc/fstab文件中指定此选项。执行-a参数时,会加载设置为auto的设备,取消选取为noauto。 defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。 dev 可读文件系统上的字符或块设备,取消选项为nodev。 exec 可执行二进制文件,取消选项为noexec。 noatime 每次存取时不更新inode的存取时间。 noauto 无法使用-a参数来加载。 nodev 不读文件系统上的字符或块设备。 noexec 无法执行二进制文件。 nosuid 关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。 nouser 使一位用户无法执行加载操作,默认设置。 remount 重新加载设备。通常用于改变设备的设置状态。 ro 以只读模式加载。 rw 以可读写模式加载。 suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。 sync 以同步方式执行文件系统的输入输出动作。 user 可以让一般用户加载设备。 -r 以只读方式加载设备。 -t 指定设备的文件系统类型。 常用的选项说明有: minix Linux最早使用的文件系统。 ext2 Linux目前的常用文件系统。 msdos MS-DOS 的 FAT。 vfat win85/98 的 VFAT。 nfs 网络文件系统。 iso9660 CD-ROM光盘的标准文件系统。 ntfs Windows NT的文件系统。 hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。 auto 自动检测文件系统。 -v 执行时显示详细的信息。 -V 显示版本信息。 -w 以可读写模式加载设备,默认设置。
实例:
1.挂载Linux能处理Lnux权限的文件系统
我们在第一个串口设备上的第三个分区有一个 ext3 文件系统,我们决定将其内容挂载到 /mnt/hd 目录下。
我们将其挂载为只读,所以对该分区上的内容不能作出更改。
为了挂载文件系统的内容,我们必须首先告诉 mount 文件系统的类型、挂载点及特殊选项。终端执行:
mount -t ext3 /dev/hda3 /mnt/hd -o ro分解命令: [-t ext3] 参数告诉 mount 我们使用的文件系统类型,在这里为 ext3。
/mnt/hd 告诉 mount 将文件系统的内容放在哪里。 [-o] 参数来声明我们需要使用的选项如果这是你第一次安装 Linux,你需要特别考虑的只有 [ro] 和 [rw]。
2.挂载不能处理传统 Linux 权限的如 vfat 或 NTFS 文件系统时。终端执行:
mount -t vfat /dev/hda4 /mnt/hd -o uid=alan在这样的情况下,你需要使用 [uid] 和 [gid] 选项来允许非 root 用户读取这些文件系统。
umount
umount可卸除目前挂在Linux目录中的文件系统。
语法:umount[-ahnrvV][-t<文件系统类型>][文件系统] 参数: -a卸除/etc/mtab中记录的所有文件系统。 -h显示帮助。 -n卸除时不要将信息存入/etc/mtab文件中。 -r若无法成功卸除,则尝试以只读的方式重新挂入文件系统。 -t<文件系统类型>仅卸除选项中所指定的文件系统。 -v执行时显示详细的信息。 -V显示版本信息。 [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。实例:
1.卸载的分区时,可直接用设备名或挂载点卸载文件系统,如:
umount /dev/sdb1 umount /media/disk fuser如果分区正在被使用,umount会报错:
umount: /dev/sdb1: device is busy此时可使用lsof命令打开正在使用该文件系统的进程,如:
lsof /dev/sdb1再按需操作相关进程即可。
fuser与lsof类似,另外提供向相关进程发送信号等功能。基本用法:
获取正在访问某文件的进程和访问方式:
fuser /media/disk更详细的信息:
fuser -l /media/disk向正访问 /media/disk 的进程发送 SIGKILL 信号:
fuser -k /media/disk注意: fuser与lsof不同的是,fuser只支持寻找正在访问某文件夹的进程,而不能得到正在访问某设备的进程。
lazy umount
lazy umount正是针对上面错误中的busy而提出的,即可以卸载“busy”的文件系统。
举个例子,假设/dev/sdb1被mount到/media/disk,且处于“busy”状态,那么可以执行:
umount -l /media/disk请注意,该方法并不是完全安全的,lazy umount主要完成如下操作:
1.立即从目录结构中实现卸载,即新进程将无法通过/media/disk访问/dev/sdb1 正在访问该文件系统的程序不受影响。即正在操作/media/disk的进程不会被打断,且仍可以读写/dev/sdb1中的所有文件。
2.如果所有进程对/media/disk的操作都执行完,那么才真正地umount 由此可知,lazy umount并没有真正实现umount,仅用于特殊需要的情况,而用这种方法来卸载U盘是不安全的。
/etc/fstab
/etc/fstab 文件被一些程序用来确定哪些文件系统默认要加载,哪些需要检查,顺序是怎样的。
fstab看起来像是一个包含要挂载的设备、文件系统类型及可选参数的表格。
$ cat /etc/fstab ## 文件系统 挂载点 类型 选项 转储 fsck /dev/hda1 / reiserfs defaults 1 1 /dev/hda2 /home reiserfs defaults 1 2 /dev/hda3 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom auto noauto,owner,ro,users 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0如果 fstab 下面有对于你的文件系统的条目,你只需要告诉 mount 该设备的节点及挂载点。
mount /dev/cdrom mount /homeuc电脑园提供的技术方案或与您产品的实际情况有所差异,您需在完整阅读方案并知晓其提示风险的情况下谨慎操作,避免造成任何损失。
未知的网友