第十七章:第29节Linux目录与文件——磁盘挂载

更新于:2019-01-02 14:56:50

挂载的理解:


我们用Windows操作系统电脑插入一个U盘,电脑会自动分配一个盘符:


1.png


点击E盘就进入了U盘。


在Linux中,比如说在腾讯云上为Linux服务器新买了一块云盘,在服务器上会多一个购买的云盘对应的设备文件,这个设备文件会放在/dev目录里。


我们怎么以目录的形式进入新云盘,那就需要给这个云盘设备分配一个目录。分配的命令就叫挂载。


挂载命令:


挂载一个设备大体流程:


1)第一步先检测存储设备名称


df -h
fdisk -l


fdisk命令需要root权限


来自腾讯云的演示图:


1.png


通过fdisk -l命令,可看到一共三块硬盘:/dev/vda、/dev/vdb、/dev/vdc


通过df -h命令,可看到已经使用的只有/dev/vda。


2)对存储设备进行分区和格式化


以/dev/vdb为例:

1.png

fdisk /dev/vdb

按照界面的提示,依次输入“n”(新建分区)、“p”(新建主分区)、“1”(使用第1个主分区),两次回车(使用默认配置),输入“wq”(保存分区表),回车开始分区。

这里是以创建 1 个分区为例,开发者也可以根据自己的需求创建多个分区。


使用“fdisk -l”命令,即可查看到,新的分区 vdb1 已经创建完成。

1.png


运行mkfs.ext4 device_name命令格式化并创建 ext4 文件系统。用设备名称(例如,/dev/vdb)替换 device_name。根据应用程序的要求或操作系统的限制,您可以选择其他文件系统类型,如 ext3 或 XFS。


1.png


3)把存储设备挂载到/mnt目录


挂载方式:

mount [可选参数] 设备名  挂载目录


mkdir /mnt/vdb 创建挂载目录
mkdir /mnt/vdc 创建挂载目录
mount /dev/vdb1 /mnt/vdb 把设备挂载到vdb目录
mount /dev/vdc1 /mnt/vdc 把设备挂载到vdc目录


挂载成功后,点击进入/mnt/vdb、/mnt/vdc目录就可以进入那两块硬盘的空间了。


mount命令的参数就不做介绍了,自己去了解吧。


注意:


我们挂载时,尽量挂载到/mnt根目录、/media根目录


系统默认挂载目录:/media

手动挂载目录:/mnt


挂载到/mnt以外的目录 -- 挂载成功后会遮蔽掉目录中原来的东西,卸载设备之后才能看到目录中原来的数据。


来自腾讯云更详细的教程:腾讯云Linux 系统分区、格式化


磁盘设备命名一般规则:


在Linux中,设备名称通常都保存在/dev里,/dev下的文件是特殊的设备文件,和特定的驱动程序相关联。而这些设备的命名有一定的规则,可以使用“推理”方式把设备名称找出来。


例如:/ dev/ sda1,“sd”是 SCSI Device (hd是 Hard Disk硬盘,fd是 Floppy Disk软盘)。其中“a”代表第一块硬盘,如果主机上装有4块硬盘,那么他们应该依次编号sda、sdb、sdc、sdd。而sda1中的“1”代表sda的第一个主分区,sda2代表第二个主分区。由于一块硬盘的主分区最多允许有4个,因此扩展分区的第一个逻辑分区从sda5开始向后依次编号。


1.png


3)挂载卸载


umount可卸除目前挂在Linux目录中的文件系统。


下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:

# umount -v /dev/sda1          通过设备名卸载  
/dev/sda1 umounted  
# umount -v /mnt/mymount/      通过挂载点卸载  
/tmp/diskboot.img umounted


如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:

# umount -v /mnt/mymount/  
umount: /mnt/mymount: device is busy  
umount: /mnt/mymount: device is busy


所以,要注意卸载的时候,用户的当前位置一定不能在 /mnt(/media)或者其子目录下,否则无法卸载。



我们再看下df -ahT命令:


好多文件系统,除了/dev/vda1是系统盘,都是在内存里的。每个文件系统都挂载到了一个目录里,当我们访问这个这些目录,其实就直接从内存中读取了这些文件系统内容。


1.png