十、mount挂载

一.挂载和卸载文件系统

将额外文件系统与根文件系统某现存的目录建立起关联关系。进而使得此目录做为其它文件访问入口的行为称之为挂载

根文件系统之外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;

挂载点:mount_point,用于作为另一个文件系统的访问入口;
(1) 事先存在;
(2) 应该使用未被或不会被其它进程使用到的目录;
(3) 挂载点下原有的文件将会被隐藏;

注意:1、一个挂载点同一时间只能挂一个设备!
      2、一个设备可以挂载在多个文件夹下,只不过看到的内容都是一样的
      3、挂载点最好是空文件夹,否则原来的文件会被暂时隐藏,直到被卸载后才会显现出来。

1.1 mount

mount [-fnrsvw] [-t vfstype] [-o options] device dir

  • device:指明要挂载的设备;

    • (1) 设备文件:例如/dev/sda5
    • (2) 卷标:-L ‘LABEL‘, 例如 -L ‘MYDATA‘
    • (3) UUID, -U ‘UUID‘:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘
    • (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
  • dir:挂载点
    • 事先存在;建议使用空目录
    • 进程正在使用中的设备无法被卸载

补充:
如何在不重启的情况阿霞在虚拟机识别新增的硬盘
echo "- - -" > /sys/class/scsi_host/host0/scan

mount      # 通过查看/etc/mtab文件显示当前已挂载的所有设备,该文件自动更新,记载设备挂载情况
mount  label=name   /data/mnt    # 用卷标挂载
mount   UUID="e206a05c-e04e-400c-8081-01fa18e079d4"   /data/mnt   # 用UUID挂载,由于uuid稳定唯一,所以尽量用uuid去挂载

# option:
    -t vsftype:指定要挂载的设备上的文件系统类型
    -r: readonly,只读挂载
    -w: read and write, 读写挂载
    -n: 不更新/etc/mtab,mount不可见 (cat /proc/mounts可见)
    -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
    -L ‘LABEL‘: 以卷标指定挂载设备
    -U ‘UUID‘: 以UUID指定要挂载的设备
    -B, --bind: 绑定目录到另一个目录上;
注:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
# -o options:(挂载文件系统的选项),多个选项使用逗号分隔 (启用和禁用的特性)
    async:异步模式,默认
    sync:同步模式,内存更改时,同时写磁盘
    atime/noatime:包含目录和文件
    diratime/nodiratime:目录的访问时间戳
    auto/noauto:是否支持自动挂载,是否支持-a选项
    exec/noexec:是否支持将文件系统上运行应用程序
    dev/nodev:是否支持在此文件系统上使用设备文件
    suid/nosuid:是否支持suid和sgid权限
    remount:重新挂载,不影响其他正在使用设备的用户
    ro:只读
    rw:读写
    user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用  禁止普通用户挂载
    acl:启用此文件系统上的acl功能
    noacl:关闭acl功能
        mount -o noacl,remount  /dev/sdb1  /data/mnt
    loop: 使用loop设备

    defaults:相当于rw, suid, dev, exec, auto, nouser, async

findmnt MOUNT_POINT|device   # 查看挂载情况,已经挂载显示相应挂载情况,无挂载则无输出;可用于写脚本
    findmnt /data/mnt  &> /dev/dull  ||  mount /dev/sdb2  /data/mnt

lsof MOUNT_POINT
fuser -v MOUNT_POINT   # 查看正在访问指定文件系统的进程

fuser -km MOUNT_POINT  # 终止所有在正访问指定的文件系统的进程

卸载umount DEVICE
umount MOUNT_POINT   # 卸载

因此,mount命令可将将分区、文件夹(-B)、文件(loop) 都可以挂载在空文件夹上

补充:loop设备,可以在文件系统中创建一个设备文件,该设备文件可以分区,可以挂载
centos6 最多只能挂8个loop设备
ls /dev/loop*
但是,可以创建
mknod /dev/loop8 b 7 8 centos6上创建第8个loop设备

dd if=/dev/zero  of=/data/test_loop  bs=1M  count=500  # 创建loop设备
mkfs.ext4  test_loop   # 格式化
mount -o loop  test_loop  /data/mnt   # 挂载,centos6上需加-o loop选项,即我们实现了将一个文件挂载在文件夹上。

二、 /etc/fstab

我们挂载的命令执行结束后仅仅只是在内存在结束,一旦重启原来的挂载关系都不存在,所以我们要修改配置文件/etc/fstab来保存修改,这样才永久挂载

该文件很重要,最好备份。
如果出现故障

要挂载的设备或伪文件系统
1.设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
2.挂载点
文件系统类型
3.挂载选项:defaults
4.转储频率:0:不做备份 1:每天转储 2:每隔一天转储
5.自检次序: 0:不自检 1:首先自检;一般只有rootfs才用1

mount -a 无需重启,挂载/etc/fstab中的所有文件系统

注意:对于loop、光盘、文件夹、一般在fatab中写设备名
一些特殊挂载在/etc/fatab:

补充:

mknod - make block or character special files   # 创建特殊文件
mknod  [OPTION]...  NAME  TYPE   [MAJOR MINOR]

# type:
b      # create a block (buffered) special file
c, u   # create a character (unbuffered) special file

mknod  zero  c 1 5  在 当前设备里创建zero文件,类似/dev/zero文件;注意,要提前cd至该设备的挂载目录里。
ll /dev/zero  /data/zero
crw-r--r--. 1 root root 1, 5 Dec 12 17:31 /data/zero
crw-rw-rw-. 1 root root 1, 5 Dec 12 14:54 /dev/zero

补充:
简单删除一块磁盘的分区

dd if=/dev/zero of=/dev/sdb bs=1 count=512

三、swap

交换文件、交换分区,也叫虚拟内存,是系统RAM的补充
  swapon -s # 查看swap信息
创建swap分区;
第一步:fidisk 一个单独的分区,注意将分区类型改为82!
第二步:makeswap 格式化
第三步:修改/etc/fatab配置文件
第四步:swapon -a 激活全部swap

swapon  [OPTION]...  [DEVICE]  # 启用swap
    -a:激活所有的交换分区;
    -p PRIORITY:指定优先级
禁用 :swapoff [OPTION]... [DEVICE]   # 禁用swap

/etc/fstab文件中,可以在defaults后面跟pri=value 设置优先级,值越高优先级越高

练习:
1、根据挂载文件名查出该设备名称。
  blkid -U `grep /data /etc/fstab | sed -r "s/UUID=([^ ]*) .*/\1/" `
  findfs `grep /data /etc/fstab | cut -d" " -f1 `

实验1:修改/etc/fstab 中的uuid,可能导致无法启动,怎么修复
1.根据提示,输入root的密码进入bash;
2.在修改/etc/fstab 文件时会提示我们该文件为只读文件,无法修改。
3.重新挂载/目录
  mount -o rw,remount /dev/sda2 / 重新挂载根目录
4.再 vim /etc/fstab 修改配置文件,将最后两位修改为0 0即可。
5.正常重启

实验2:将一个文件夹迁移至一个新的磁盘分区,如将/home目录迁移至新的分区/dev/sdc1。

为避免在cp过程中别的用户在修改/home,我们可以在操作cp前这么操作
init 1 切换至单用户,也就是说别的终端不允许访问,只允许单用户终端访问,结束操作后再切回至init 5

1 建立新分区
2 建立文件系统
3 mkdir /mnt/home
mount /dev/sda6 /mnt/home
4 cp -av /home/* /mnt/home
5 tar cvf /app/home.tar /home
scp remote
6 init 1 断开网络,在远程不要执行
7 rm -rf /home/*
8 vim /etc/fstab
UUID=b0421d9a-8072-4be5-9526-070535ac0a8e /home ext4 defaults 0 0
9 mount -a
umount /mnt/home
10 init 5 还到原有模式

注意:跟 “/” 目录无法迁移

3.将CentOS6的CentOS-6.9-x86_64-bin-DVD1.iso和CentOS-6.9-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.9-x86_64-Everything.iso文件,并将其配置为yum源.

首先现将两个光盘合成一个

mkdir /data/centos6.9    创建一个空文件夹
cp -av  /misc/cd/*   /data/centos6.9  # 将正在挂载这的光盘dvd1的内容复制进刚刚创建的centos6.9的空文件夹
eject #将dvd1弹出

再放入dvd2
\cp -av /misc/cd/*  /data/centos6.9  # 因为dvd1与dvd2有很多相同的文件,所以在cp前加\表示使用cp的原命令,否则复制过程中每一个相同的文件都会提醒是否覆盖

mkisofs -r -o  CentOS-6.9-x86_64-Everything.iso   /data/centos6.9  # 制作iso
注意:制作的这个iso文件只能当yum源使用,无法作为系统启动光盘,如果要作为系统启动盘使用还需要去官网下载mkdvdiso脚本制作。

然后挂载

mount  -o loop  /data/ CentOS-6.9-x86_64-Everything.iso      /data/mnt

修改配置文件/etc/yum.repo.d/base.repo
最后

yum clean all
yum repolist 

4.创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项.

fdisk  /dev/sdb   # 先分出一个2G的分区

mke2fs  -t ext4  -m 1  -b 2048  -L test   /dev/sdb1     # 创建文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST

vim  /etc/fstab      # 修改配置文件
UUID=cb17acad-ad9c-40b1-bab1-aa11a9ff9741 /test    ext4  defaults,acl  0 0    #添加此条

mount  -a

5.写一个脚本,完成如下功能:

(1) 列出当前系统识别到的所有磁盘设备

(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息

#!/bin/bash
a=`lsblk -l | grep "sd[a-z]\>"  |wc -l`
b=`lsblk -l | grep "sd[a-z]\>" |cut -d" " -f1  |head -n1`
c=`lsblk -l | grep "sd[a-z]\>" |cut -d" " -f1  |tail -n1`

[ $a -eq 1 ]  && echo "`fdisk -l /dev/$b`"  || echo "`fdisk -l /dev/$c`"

注意:跟 “/” 目录无法迁移

原文地址:https://www.cnblogs.com/liuzhiyun/p/11345281.html

时间: 2024-08-29 01:25:26

十、mount挂载的相关文章

客户端mount挂载优化(十)

★客户端mount挂载优化 在企业生产环境中,NFS客户端挂载的参数有noexec.nosuid.nodev.noatime.rsize.wsize.nodiratime等, 一般来说,NFS服务器共享的只是普通静态数据(图片.附件.视频),不需要执行suid.exec等权限,挂载的这个文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性,例如:很多木马修改站点文件都是由上传入口上传的程序存储目录,然后执行,因此在挂载时,用下面的命令是有必要的, 普遍安全挂载参数: mount

mount挂载,dd 工具,配置配额系统,RAID阵列,逻辑卷管理器LVM

mount mount挂载 vim /etc/fstab 将常用的挂载的设备写入系统表中 文件挂载配置文件 /etc/fstab /etc/fstab每行定义一个要挂载的文件系统: 要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序 要挂载的设备或伪文件系统: 设备文件.LABEL(LABEL="").UUID(UUID="").伪文件系统名称(proc, sysfs) 挂载选项:defaults 转储频率:0:不做备份 每天转储 每隔一天

NFS使用mount挂载无法挂载出问题后的排错思路(七)

NFS使用mount挂载无法挂载出问题后的排错思路 首先确认NFS服务端配置和服务是OK的, 在服务端使用showmount -e localhost  检查 [[email protected] ~]# showmount -e localhost Export list for localhost: /data/r_shared 192.168.221.1/24 /data/w_shared 192.168.221.1/24 2.确认NFS客户端showmount是否OK [[email p

mount挂载WINDOWS分区和目录

转自:http://blog.163.com/sg_liao/blog/static/29577083200942811445981/ 一,挂载共享目录 sudo mount -t cifs  -o username=liaoxiaohui,password=l23456,iocharset=utf8 //server/share /mnt sudo:切换管理员执行 mount:挂载命令 -t cifs  CIFS就是WINDOWS的共享协议, -o:用户信息 username=用户名,pass

linux使用mount挂载硬盘

linux使用mount挂载硬盘 有关linux系统中挂载硬盘,使用monut命令挂载硬盘. 例子:su /sbin/fdisk -l fdisk /dev/sdb n, p,1,<cr> ,<cr> 保存完成后重启服务器(www.jbxue.com 脚本学堂) /dev/sdb1 mkfs -t ext3 -c /dev/sdb1 如果不了解mount命令如何使用,可以参阅 linux挂载命令mount的用法,有关于mount命令的详细介绍. 手工 mount:mount /de

mount挂载img文件

使用mount挂载ubuntu虚拟机所在的img文件的时候,执行: "sudo mount -o loop xxx.img /mnt/xxx", 系统提示: "mount: you must specify the filesystem type" 加上"-t ext3″后仍然报错: mount  : wrong fs  type  , bad option, bad superblock on  /dev/loop2  ,    missing code

linux 下 用mount 挂载 samba 以及Linux 开机自动挂载 samba &nbsp;

linux 下 用mount 挂载 samba 以及Linux 开机自动挂载 samba 一.挂载匿名samba#mount -t cifs //192.168.2.2/share /151.2_share   -o guest#ls /151.2_share 二.挂载非匿名samba #mount -t cifs //192.168.2.2/share /151.2_share -o   username=samba,password=samba,iocharset=utf-8#ls /151

Mount 挂载错误mount:block device /dev/sr0 is write – protected , mounting read-only

Mount 挂载错误mount:block device /dev/sr0 is write – protected , mounting read-only 安装虚拟机出现以下提示: mount:block device /dev/sr0 is write - protected , mounting read-only 说明系统光驱加载成功,因为光驱是只读的,所以提示write-protected,mounting read-only,sr0是光驱设备名, 通过以下命令: ll /dev/c

linux下修改mount挂载目录名

有时根据情况需要更改mount挂载目录名来保持多个机器的统一,方便我们的分布式操作,下面是具体的操作细节. 修改前: [[email protected] ~]# df -h 文件系统       容量  已用  可用 已用%% 挂载点 /dev/mapper/VolGroup-lv_root 50G  3.3G   44G   7% / tmpfs                 7.7G     0  7.7G   0% /dev/shm /dev/sda2             485M

linux mount挂载设备(u盘,光盘,iso等 )使用说明

对于新手学习,mount 命令,一定会有很多疑问.其实我想疑问来源更多的是对linux系统本身特殊性了解问题. linux是基于文件系统,所有的设备都会对应于:/dev/下面的设备.如: [[email protected] dev]$ ls | grep -E  "^(sd|hd)"hdcsdasda1sda2sdbsdb1 sd*代表scic硬盘 因此,需要进行设备访问时候,我们需要进行系统挂载(mount). 那么mount到底能够挂载那些设备呢. 我们可以看一下. 一.moun