跳到主要内容

23、Linux 教程:挂载与swap空间

挂载与swap空间

挂载

挂载与卸载

直接执行mount或加-l会显示当前挂载信息,每行都是一个挂载设置,第一个字段代表设备文件名,第二个字段是on,然后是挂载点位置、文件系统、权限。

 

/proc和/sys都是挂载在内存。

挂载命令mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点文件系统是固定的,如果是硬盘就是iso9660,卷标名可以没有,特殊选项有两个要注意的,一个是remount表示重新挂载,修改特殊权限后需要进行该操作;还有一个是exec/noexec表示该文件系统中可执行文件可以执行或不能执行,默认是可以执行的。

挂载点就是一个空目录,这个空目录可以是根目录下的mnt(建议U盘和移动硬盘)或media(软盘或光盘),也可以在mnt下新建空目录进行挂载,因为早期只有mnt一个建议挂载目录。(这个目录下如果有文件那么在挂载完成后这些信息会被隐藏,直至卸载又重新出现)

挂载光盘命令:mount -t iso9660 /dev/cdrom /mnt/cdrom/设备文件名是固定的,就是/dev/cdrom,或者写/dev/sr0,cdrom是指向sr0的软链接文件,如果有两个光驱另一个就对应cdrom1和sr1。挂载光盘命令也可以省略文件系统:mount /dev/cdrom /mnt/cdrom/

linux真实机直接按光盘弹出按钮是无效的,必须先进行卸载。卸载时要先退出光盘文件,然后执行:

umount 挂载点或设备文件名

挂载U盘时首先要把U盘插入,注意如果此时是用虚拟机操控linux的话就必须鼠标点击到虚拟机内部,然后再插入U盘,否则是windows识别U盘。因为U盘的设备文件名和硬盘用同一个,所以要先执行fdisk -l来查询此时U盘的设备文件名,执行后显示sda为linux中的硬盘,而sdb是识别的U盘,设备文件名应该是sdb1。然后执行挂载U盘命令mount -t vfat /dev/sdb1 /mnt/usb/

 

如果硬盘是NTFS系统,则linux不能识别,必须安装对应的驱动。

用mount挂载时也可以用mount UUID=xx 挂载点,这样该命令就会重复使用,而不会因为系统每次识别设备的装置名不同而修改挂载命令。mount也可以用LABEL来挂载。

在CentOS7中已经无需指定文件系统类型,直接mount命令后加设备文件名和挂载点即可,linux会自动分析最恰当的文件系统来挂载。

mount命令也可以把一个目录挂载到另一个目录下:mount --bind 目录a 目录b,这样进入目录a就相当于进入目录b,而且如果这样做的话两个目录的inode也会相同,这和硬链接非常像,但是对于某些不支持链接的程序而言,只能用mount命令挂载目录。

自动挂载

要进行自动挂载需要修改/etc/fdisk文件。

文件每一行的字段的意义:

 

查看分区的UUID需要执行dumpe2fs 设备文件名,执行结果中的FilesystemUUID就是分区的UUID。

要进行自动挂载只需要把要挂载的写入该文件中即可,注意要遵循该文件格式:

/dev/sdb5 /disk5 ext4 defaults 1 2

然后执行重新挂载命令查看是否文件中有错误:mount -a如果没有错误就没有提示,如果文件错误且不修改那么开机时系统就会崩溃。如果开机时有错误,那么就输入root的密码,然后执行修复命令:

mount -o remount,rw /,最后修改/etc/fdisk文件即可。(不能直接修改的原因是挂载时该文件被设置为只能读,故要重挂载修改其权限)

设置开机挂载

设置开机挂载需要修改配置文件/etc/fstab:

 

从左到右的字段分别是磁盘装置文件名/UUID/LABLE、挂载点、文件系统、文件系统参数(mount命令后的参数)、能否能被dump备份(一般设置为0即可,因为现在备份方案太多了)、是否以fsck检查扇区(在开机中检查文件系统是否完整,xfs系统并不适用这个命令,所以一般为0),每次要设置自动挂载时都要把挂载信息写到该文件中,开机之后就会自动挂载了,挂载完成后还会吧挂载信息写入/etc/mtab和/proc/mounts中。

如果该配置文件写入有误导致无法顺利挂载开机,就要进入单人模式,然后修改根目录挂载点的权限为读写,然后修改该配置文件即可:

mount -n -o remount,rw /

特殊装置loop挂载

挂载iso映像文件:mount -o loop 映像文件路径 挂载点

使用完iso映像文件记得卸除:umount 挂载点

不仅可以用loop挂载映像文件,还可以挂载大文件,相当于创造一个分区槽,下面是大文件挂载的步骤:

1、 首先建立大型文件,可以用dd命令:;

ddif=/dev/zero of=/sev/loopdev bs=1M count=512

if是输入文件,意思是一个一直输出0的装置;of是输出文件,也就是即将生成的大文件路径;bs是block的大小;count是block的数量。

执行完毕后就生成了一个512M的大文件。

2、 然后格式化大文件:mkfs.xfs-f大文件路径

可以用blkid加大文件路径来查看装置的UUID值

3、 最后进行挂载:mount-oloopUUID="xx"挂载点这里也可以用装置名来挂载;

swap内存置换空间

当内存不足时,为了让后续的程序可以继续执行,就会将暂时不用的程序和数据移动到硬盘的内存置换空间中,一般来说,硬件资源充足时一般用不到swap,但是最好还是预留一部分用来应对特殊情况。

此外,休眠时也会将运行状态记录到swap中,而且有些程序在运行时,会利用swap来存放一些数据段。

如果安装系统时没设置swap,就需要设置一个swap分区,或者当分区不足时用大文件来充当swap。

执行命令查看swap空间的情况free -m

 

Mem是内存,buffers是缓冲区(指写入数据时先将数据写入内存中的缓冲区,然后再一次性写入磁盘中),cached是缓存区(指读取数据时将数据存在内存,下次读时就直接读取内存中的数据即可)。

分配swap空间就是在进行分区时修改分区ID(分区默认是83,应该改成82就是swap分区),在分区时输入t修改分区ID,然后指定分区编号即可。swap分区设置完成之后需要进行重启,或执行partprobe命令,然后再执行mkswap /dev/sdb1格式化,其中sdb1就是刚刚设置swap空间的那个分区。

然后将空间加入swap分区:swapon /dev/sdb1,将swap分区释放swapoff /dev/sdb1

但是这种设置只能维持到关机,想要永久生效还是要修改文件/etc/fstab,加入一行:

/dev/sdb1 swap swap defaults 0 0