Linux就该这么学(六)
一、从“/”开始
Linux 系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、rooT 均代表不同的目录,并且文件名称中不得包含斜杠(/)。Linux 系统中的文件存储结构如下图所示。
在 Linux 系统中,最常见的目录以及所对应的存放内容如下表所示:
在 Linux 系统中另外还有一个重要的概念—路径。路径指的是如何定位到某个文件,分为绝对路径与相对路径。绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相对路径则指的是相对于当前路径的写法。
物理设备的命名规则
在 Linux 系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。
系统内核中的 udev 设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev 目录下的设备文件。Linux 系统中常见的硬件设备及其文件名称如下表所示。
由于现在的 IDE 设备已经很少见了,所以一般的硬盘设备都是以“/dev/sd”开头。而一台主机上可以有多块硬盘,因此系统采用 a~z 来代表 26 块不同的硬盘(默认从 a 开始分配),而且硬盘的分区编号也很有讲究:
➢ 主分区或扩展分区的编号从 1 开始,到 4 结束;
➢ 逻辑分区从编号 5 开始。
首先,/dev/目录中保存的应当是硬件设备文件;其次,sd 表示的是存储设备;然后,a表示系统中同类接口中第一个被识别到的设备;最后,5 表示这个设备是一个逻辑分区。一言以蔽之,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为 5 的逻辑分区的设备文件”。
二、挂载硬件设备
mount 命令
mount 命令用于挂载文件系统,格式为“mount 文件系统 挂载目录”。mount 命令中可用的参数及作用如下表所示。挂载是在使用硬件设备前所执行的最后一步操作。只需使用mount 命令把硬盘设备或分区与一个目录文件进行关联,然后就能在这个目录中看到硬件设备中的数据了。对于比较新的 Linux 系统来讲,一般不需要使用-t 参数来指定文件系统的类型,Linux 系统会自动进行判断。而 mount 中的-a 参数则厉害了,它会在执行后自动检查/etc/fstab文件中有无被疏漏挂载的设备文件,如果有,则进行自动挂载操作。
例如,要把设备/dev/sdb2 挂载到/backup 目录,只需要在 mount 命令中填写设备与挂载目录参数就行,系统会自动判断要挂载文件的类型,命令如下:
[root@linuxprobe ~]# mount /dev/sdb2 /backup
如果在工作中要挂载一块网络存储设备,该设备的名字可能会变来变去,这样再写为sdb 就不太合适了。这时推荐用 UUID(Universally Unique Identifier,通用唯一识别码)进行挂载操作。
UUID 是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备。那么,怎么才能得知独立硬盘的 UUID 呢?答案是使用 blkid命令。
blkid 命令用于显示设备的属性信息,英文全称为“block id”,语法格式为“blkid [设备名]”。使用 blkid 命令来查询设备 UUID 的示例如下:
[root@linuxprobe~]# blkid
/dev/sdb1: UUID="2db66eb4-d9c1-4522-8fab-ac074cd3ea0b" TYPE="xfs" PARTUUID="eb23857a-01"
/dev/sdb2: UUID="478fRb-1pOc-oPXv-fJOS-tTvH-KyBz-VaKwZG" TYPE="ext4" PARTUUID="eb23857a-02"
有了设备的 UUID 值之后,就可以用它挂载网络设备了:
[root@linuxprobe~]# mount UUID=478fRb-1pOc-oPXv-fJOS-tTvH-KyBz-VaKwZG /backup
虽然按照上面的方法执行 mount 命令后就能立即使用文件系统了,但系统在重启后挂载就会失效,也就是说需要每次开机后都手动挂载一下。这肯定不是我们想要的效果,如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”(各字段的意义见下表)写入到/etc/fstab 文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能一劳永逸了。
如果想将文件系统为 Ext4 的硬件设备/dev/sdb2 在开机后自动挂载到/backup 目录上,并保持默认权限且无须开机自检,就需要在/etc/fstab 文件中写入下面的信息,这样在系统重启后也会成功挂载。
由于后面需要使用系统镜像制作 Yum/DNF 软件仓库,我们提前把光盘设备挂载到/media/cdrom 目录中。光盘设备的文件系统格式是 iso9660:
写入到/etc/fstab 文件中的设备信息并不会立即生效,需要使用 mount -a 参数进行自动挂载:
[root@linuxprobe~]# mount -a
df 命令
df 命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。
如果想查看当前系统中设备的挂载情况,非常推荐大家试试 df 命令。它不仅能够列出系统中正在使用的设备有哪些,还可以用-h 参数便捷地对存储容量进行“进位”操作。例如,在遇到 10240K 的时候会自动进位写成 10M,非常方便我们的阅读。
对了!说到网络存储设备,建议您在 fstab 文件挂载信息中加上_netdev 参数。加上后系统会等联网成功后再尝试挂载这块网络存储设备,从而避免了开机时间过长或失败的情况。
umount 命令
挂载文件系统的目的是为了使用硬件资源,而卸载文件系统则意味不再使用硬件的设备资源。既然挂载操作就是把硬件设备与目录两者进行关联的动作,那么卸载操作只需要说明想要取消关联的设备文件或挂载目录的其中一项即可,一般不需要加其他额外
的参数。
umount 命令用于卸载设备或文件系统,英文全称为“un mount”,语法格式为“umount [设备文件/挂载目录]”。
[root@linuxprobe~]# umount /dev/sdb2
如果我们当前就处于设备所挂载的目录,系统会提示该设备繁忙,此时只需要退出到其他目录后再尝试一次就行了。轻松搞定。
[root@linuxprobe~]# cd /media/cdrom/
[root@linuxprobe cdrom]# umount /dev/cdrom
umount: /media/cdrom: target is busy.
[root@linuxprobe cdrom]# cd~
[root@linuxprobe~]# umount /dev/cdrom
[root@linuxprobe~]#
注意:挂载操作就像两人结为夫妻,双方需要同时到场,信息一旦被登记到民政局的系统中,再想重婚(重复挂载某设备)可就不行喽。
注意:开机后进入紧急模式,如何处理
没事闲着无聊给磁盘分区,导致Ubuntu载入时无法识别/路径,查找方法修改/etc/fstab文件夹,在里面增加UUID启动条目,但是却发现即使在root权限下也无法对此文件进行修改。解决办法如下:
mount -o remount,rw /
lsblk 命令用于查看已挂载的磁盘的空间使用情况,英文全称为“list block id”。
[root@linuxprobe~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part├─rhel-root 253:0 0 17G 0 lvm /└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 6.6G 0 rom /media/cdrom
2
2
2
2
2
2
2