点击访问 Linux 命令大全 >>
本章节主要介绍 Linux 下文件系统的使用。尽管在安装 Linux 时已经自动为用户配置了整个文件系统,但有些时候任然需要我们手动挂载一些设备,例如:光盘、U盘等
现在的 Linux 发行版本都能够自动识别插入的光盘、U盘等外部设备,而不需要手动运行挂载命令。我了学习,我们还是可以手动挂载一下光盘。
根据上图,设置 VMWare 的光驱,将 iso 文件挂载到光驱中。
实例:将设置的光驱挂载到 /mnt/cdrom 目录,然后查看目录下面的文件内容。如下:
## 查找 cdrom 文件,Linux 下面所有的设备均被当做文件处理,且放到了 /dev 目录下面 [root@localhost ~]# ls /dev/ | grep cd cdrom ## 创建 /mnt/cdrom 目录,用来挂载光驱 [root@localhost ~]# mkdir /mnt/cdrom ## 将光驱挂载到 /mnt/cdrom 目录下 [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 ## 查看光驱的内容 [root@localhost ~]# ll /mnt/cdrom/ 总用量 1 -r-xr-xr-x. 1 root root 11 8月 3 22:15 readme.txt ## 查看光驱中 readme.txt 文件内容 [root@localhost ~]# cat /mnt/cdrom/readme.txt hello Linux
Linux 下所有的设备都被当做文件来操作。对于刚刚接触 Linux 的用户来说,使用软驱、光驱、磁盘、打印机等外部设备简直就是一场噩梦,因为 Linux 根本就没有提供设备管理器,都需要用户使用命令进行手动挂载。
在 Linux 中,每个设备都被映射为一个特殊文件,这个文件被称作“设备文件”。对于上层应用程序而言,所有对这个设备的操作都是通过读写这个文件实现的。Linux 将所有设备文件都放在 /dev 目录下面。如下:
[root@localhost ~]# ls /dev/ agpgart disk input oldmem sg1 tty13 tty26 tty39 tty51 tty7 vcs1 vga_arbiter autofs dm-0 kmsg port shm tty14 tty27 tty4 tty52 tty8 vcs2 vhci block dm-1 log ppp snapshot tty15 tty28 tty40 tty53 tty9 vcs3 vhost-net bsg dmmidi loop-control ptmx snd tty16 tty29 tty41 tty54 ttyS0 vcs4 vmci btrfs-control dri mapper pts sr0 tty17 tty3 tty42 tty55 ttyS1 vcs5 vsock bus fb0 mcelog random stderr tty18 tty30 tty43 tty56 ttyS2 vcs6 zero cdrom fd mem raw stdin tty19 tty31 tty44 tty57 ttyS3 vcsa centos full midi rfkill stdout tty2 tty32 tty45 tty58 uhid vcsa1 char fuse mqueue rtc tty tty20 tty33 tty46 tty59 uinput vcsa2 console hidraw0 net rtc0 tty0 tty21 tty34 tty47 tty6 urandom vcsa3 core hpet network_latency sda tty1 tty22 tty35 tty48 tty60 usbmon0 vcsa4 cpu hugepages network_throughput sda1 tty10 tty23 tty36 tty49 tty61 usbmon1 vcsa5 cpu_dma_latency hwrng null sda2 tty11 tty24 tty37 tty5 tty62 usbmon2 vcsa6 crash initctl nvram sg0 tty12 tty25 tty38 tty50 tty63 vcs vfio
上面大部分是块设备文件和字符设备文件。块设备可以随机读写,如 /dev/hda1、/dev/sda2 等就是典型的块设备文件。而字符设备智能按顺序接收“字符流”,如:打印机等。
硬盘在 Linux 中遵循一种特定的命名规则,如 sda1 表示第 1 块硬盘上的第 1 个主分区,sdb6 表示 第 2 块硬盘上的第 2 个逻辑分区。
注意
硬盘一般分为 IDE 硬盘、SCSI 硬盘和 SATA 硬盘。在 Linux 中,IDE 接口的设备被称为 hd,SCSI 和 SATA 接口的设备被称为 sd。第一块硬盘被称作 sda,第二块硬盘被称作 sdb……依次类推。
Linux 规定,一块硬盘上智能存在 4 个主分区,分别被命名为 sda1、sda2、sda3 和 sda4。逻辑分区则从 5 开始标识,每多一个逻辑分区,就在末尾分区号上加 1。逻辑分区没有数量限制。
用户不能直接通过设备文件访问存储设备,所有的存储设备(包括硬盘、光盘等)在使用前必须首先被挂载到一个目录下,然后就可以像操作目录一样使用这个存储设备了。
通过 mount 命令可以挂载文件系统。这个命令非常有用,几乎在使用所有的存储设备前都要用到它。例如:
## 创建 /mnt/cdrom 目录,用来挂载光驱 [root@localhost ~]# mkdir /mnt/cdrom ## 将光驱挂载到 /mnt/cdrom 目录下 [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 ## 查看光驱内容 [root@localhost ~]# cd /mnt/cdrom/ [root@localhost cdrom]# ll 总用量 1 -r-xr-xr-x. 1 root root 11 8月 3 22:15 readme.txt
也可以使用 -t 选项明确指定设备所使用的文件系统类型。常见文件系统如下表:
表 示 方 法 | 描 述 |
ext2 | Linux 的 ext2 文件系统 |
ext3 | Linux 的 ext3 文件系统 |
vfat | Windows 的 FAT16/FAT32 文件系统 |
ntfs | Windows 的 NTFS 文件系统 |
iso9660 | CD-ROM 光盘的标准文件系统 |
如果不指明类型,mount 会自动检测设备上的文件系统,并以相应的类型进行挂载。因此在大多数情况下,-t 选项不是必要的。
另外两个常用的选项是 -r 和 -w,分别指定以只读模式和刻度模式挂载设备。其中,-w 选项是默认值。
可以使用 umount 命令卸载文件系统,该命令帮助信息如下:
用法: umount [-hV] umount -a [选项] umount [选项] <源> | <目录> 选项: -a, --all 卸载所有文件系统 -A, --all-targets 卸载当前名字空间内指定设备 对应的所有挂臷点 -c, --no-canonicalize 不对路径规范化 -d, --detach-loop 若挂臷了回环设备,也释放该回环设备 --fake 空运行;跳过 umount(2) 系统调用 -f, --force 强制卸载(遇到不响应的 NFS 系统时) -i, --internal-only 不调用 umount.<类型> 辅助程序 -n, --no-mtab 不写 /etc/mtab -l, --lazy 立即断开文件系统,所有清理以后执行 -O, --test-opts <列表> 限制文件系统集合(和 -a 选项一起使用) -R, --recursive 递归卸载目录及其子对象 -r, --read-only 若卸载失败,尝试以只读方式重新挂臷 -t, --types <列表> 限制文件系统集合 -v, --verbose 打印当前进行的操作 -h, --help 显示此帮助并退出 -V, --version 输出版本信息并退出
实例:卸载 /dev/cdrom 光驱,如下:
## 卸载 /dev/cdrom 光驱 [root@localhost ~]# umount /dev/cdrom ## 查看 /mnt/cdrom 目录,发现已经没有任何内容,卸载光驱成功 [root@localhost ~]# ls /mnt/cdrom/
系统如何在开机时自动挂载硬盘?系统又是怎样知道哪些分区是需要挂载的?这些信息均有 Linux 的 /etc/fstab 文件来确定。该文件内容如下:
[root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Jul 12 19:13:37 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=3b7b0039-5da1-44de-a64b-0dc644913074 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0
fstab 配置文件说明:
UUID或路径:表示每个文件系统的唯一ID或者设备路劲
挂载点,如:/、/boot
文件系统类型,如:xfs、swap
各种挂载参数,如:defaults,取值如下
auto:开机自动挂载
defaults、noauto:开机不自动挂载
nouser:只有 root 可挂载
ro:只读挂载
rw:可读可写挂载
user:任何用户都可以挂载
备份频度,如:0
在重启动过程中文件系统的检查顺序