linux文件系统挂载

挂载mount

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

卸载:
    为解除此关联关系的过程

把设备关联挂载点:mount Point
mount

卸载时:
    可使用设备,也可以使用挂载点
    umount

挂载点下原有文件在挂载完成后会被临时隐藏

挂载点目录一般为空

用mount命令挂载文件系统

挂载方法:mount DEVICE MOUNT_POINT

mount 不带任何参数
通过查看/etc/mtab文件显示当前已挂载的所有设备

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:挂载点
        事先存在;建议使用空目录
        进程正在使用中的设备无法被卸载

    -o options 挂在选项开启关闭什么功能。  man mount FILESYSTEM INDEPENDENT MOUNT OPTIONS

mount常用命令选项

-r: readonly,只读挂载  光驱只能只读挂载,其他文件系统也可以挂载,防止文件被修改
-w: read and write, 读写挂载 (默认读写)
-n: 不更新/etc/mtab,默认挂载会卸载都会同步更新此文件。mtab的内容与mount命令内容基本一致。
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
-B, --bind: 绑定目录到另一个目录上  目录挂载到目录上
-t vsftype:指定要挂载的设备上的文件系统类型 多数情况下可省略。mount会自动通过

目录绑定
mount --bind 源目录 目标目录


blkid命令识别设备类型。
查看内核追踪到的已挂载的所有设备:
cat /proc/mounts

mount常用命令选项

-o options:(挂载文件系统的选项),多个选项使用逗号分隔
    async:异步模式
    sync:同步模式,内存更改时,同时写磁盘
    atime/noatime:包含目录和文件 是否更新访问时间。
    diratime/nodiratime:是否更新目录的访问时间戳
    auto/noauto:是否支持自动挂载,是否支持-a选项
    exec/noexec:是否支持将文件系统上运行应用程序
    dev/nodev:是否支持在此文件系统上使用设备文件
    suid/nosuid:不否支持suid和sgid权限
    remount:重新挂载 需要重新挂载的设备,不需要卸载再挂载。此参数可实现。
    ro:只读
    rw:读写
    user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载
    acl:启用此文件系统上的acl功能
    suid:是否允许特殊权限生效

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

使用技巧:

查看当前系统所有已挂载的设备
    mount
    cat /etc/mtab
    cat /proc/mounts  这个是最准确的。

卸载命令

查看挂载情况:
    #findmnt MOUNT_POINT

    [root@localhost ~]# findmnt
    TARGET                           SOURCE     FSTYPE     OPTIONS
    /                                /dev/sda2  xfs        rw,relatime,attr2,inode64,noquota
    ├─/sys                           sysfs      sysfs      rw,nosuid,nodev,noexec,relatime
    │ ├─/sys/kernel/security         securityfs securityfs rw,nosuid,nodev,noexec,relatime
    │ ├─/sys/fs/cgroup               tmpfs      tmpfs      ro,nosuid,nodev,noexec,mode=755
    │ │ ├─/sys/fs/cgroup/systemd     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd
    │ │ ├─/sys/fs/cgroup/memory      cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,memory
    │ │ ├─/sys/fs/cgroup/net_cls     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,net_cls
    │ │ ├─/sys/fs/cgroup/hugetlb     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,hugetlb
    │ │ ├─/sys/fs/cgroup/cpuset      cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,cpuset
    │ │ ├─/sys/fs/cgroup/blkio       cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,blkio
    │ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,cpuacct,cpu
    │ │ ├─/sys/fs/cgroup/perf_event  cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,perf_event
    │ │ ├─/sys/fs/cgroup/freezer     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,freezer
    │ │ └─/sys/fs/cgroup/devices     cgroup     cgroup     rw,nosuid,nodev,noexec,relatime,devices
    │ ├─/sys/fs/pstore               pstore     pstore     rw,nosuid,nodev,noexec,relatime
    │ ├─/sys/kernel/debug            debugfs    debugfs    rw,relatime
    │ └─/sys/kernel/config           configfs   configfs   rw,relatime
    ├─/proc                          proc       proc       rw,nosuid,nodev,noexec,relatime
    │ ├─/proc/sys/fs/binfmt_misc     systemd-1  autofs     rw,relatime,fd=34,pgrp=1,timeout=300,minproto=5,maxproto=5,direct
    │ └─/proc/fs/nfsd                nfsd       nfsd       rw,relatime
    ├─/dev                           devtmpfs   devtmpfs   rw,nosuid,size=486144k,nr_inodes=121536,mode=755
    │ ├─/dev/shm                     tmpfs      tmpfs      rw,nosuid,nodev
    │ ├─/dev/pts                     devpts     devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
    │ ├─/dev/mqueue                  mqueue     mqueue     rw,relatime
    │ └─/dev/hugepages               hugetlbfs  hugetlbfs  rw,relatime
    ├─/run                           tmpfs      tmpfs      rw,nosuid,nodev,mode=755
    │ └─/run/user/0                  tmpfs      tmpfs      rw,nosuid,nodev,relatime,size=100136k,mode=700
    ├─/var/lib/nfs/rpc_pipefs        sunrpc     rpc_pipefs rw,relatime
    ├─/usr                           /dev/sda3  xfs        rw,relatime,attr2,inode64,noquota
    └─/boot                          /dev/sda1  xfs        rw,relatime,attr2,inode64,noqu

查看正在访问指定文件系统的进程:

    #lsof MOUNT_POINT
    #fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程:

    # fuser -km MOUNT_POINT 谨慎使用

卸载:

    # umount DEVICE
    # umount MOUNT_POINT

挂载实例

查看分区信息
[root@localhost ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00026d95

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1001471      499712   83  Linux
/dev/sda2         1001472    84887551    41943040   83  Linux
/dev/sda3        84887552   126830591    20971520   83  Linux
/dev/sda4       126830592   251658239    62413824    5  Extended
/dev/sda5       126834688   131031039     2098176   82  Linux swap / Solaris
/dev/sda6       126832640   126834687        1024   83  Linux
/dev/sda7       131033088   172976127    20971520   83  Linux
/dev/sda8       172978176   193949695    10485760   83  Linux


查看已经挂载的分区
[root@localhost ~]# mount | grep "sda"
/dev/sda2 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda3 on /usr type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)

查看分区类型、卷标、uuid
root@localhost ~]# blkid /dev/sda7
/dev/sda7: LABEL="mydate" UUID="dfc6560a-aad9-4df1-b79a-b5316620bc1e" TYPE="ext4" 

挂载文件系统
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# mount /dev/sda7 /mydata

挂载点和/etc/fstab

配置文件系统体系
被mount、fsck和其它程序使用
系统重启时保留文件系统体系
可以在设备栏使用文件系统卷标
使用mount -a 命令挂载/etc/fstab中的所有文件系统

文件挂载配置文件

/etc/fstab每行定义一个要挂载的文件系统;
要挂载的设备或伪文件系统
挂载点
文件系统类型
挂载选项
转储频率
自检次序

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

处理交换文件和分区

交换分区是系统RAM的补充

基本设置包括:
    •创建交换分区或者文件
    •使用mkswap写入特殊签名
    •在/etc/fstab文件中添加适当的条目
    •使用swapon -a 激活交换空间

挂载交换分区

swap

linux上的交换分区必须使用独立的文件系统
    且文件系统的systemid必须为82
 mkswap [options] device [size] 创建交换分区文件系统
启用:swapon
    swapon[OPTION]... [DEVICE]
    -a:激活所有的交换分区;
    -p PRIORITY:指定优先级
    /etc/fstab:pri=value

禁用:swapoff[OPTION]... [DEVICE]

SWAP的优先级

用户可以给某个swap指定一个0到32767的优先级

如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一。

先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)。

优化性能:分布存放,高性能磁盘存放

移动介质

挂载(Mounting)意味着使外来的文件系统看起来如同是主目录树的一部分。
访问前、介质必须被挂载
摘除时,介质必须被卸载
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
挂载点通常在/media 或/mnt下

使用光盘

在图形环境下自动启动挂载 /run/media/<user>/<label>

否则就必须被手工挂载
    mount -r /dev/cdrom/ mnt/

eject命令卸载或弹出磁盘

创建ISO镜像文件
    cp /dev/cdrom /root/centos7.iso

    mkisofs -r -o /root/etc.iso /etc

刻录光盘
    wodim–v –eject centos.iso

挂载USB介质

被内核探测为SCSI设备
    •/dev/sdaX、/dev/sdbX、或类似的设备文件

在图形环境中自动挂载
    •图标在[计算机]窗口中创建
    •挂载在/run/media/<user>/<label>
    •手动挂载
    •mount /dev/sdb1 /mnt

常见工具

内存空间使用状态:
    free [OPTION]
    -m: 以MB为单位
    -g: 以GB为单位
文件系统空间占用等信息的查看工具:
    df[OPTION]... [FILE]...
    -H 1000
    -T 文件系统类型
    -h: human-readable
    -i:inodesinstead of blocks
    -P: 以Posix兼容的格式输出
查看某目录总体空间占用状态:
    du [OPTION]... DIR
    -h: human-readable
    -s: summary

工具dd

dd命令:convert and copy a file

用法:
    ddif=/PATH/FROM/SRC of=/PATH/TO/DEST
    bs=#:block size, 复制单元大小
    count=#:复制多少个bs

of=file写到所命名的文件而不是到标准输出
if=file从所命名文件读取而不是从标准输入
bs=size指定块大小(既是是ibs也是obs)
    ibs=size一次读size个byte
    obs=size 一次写size个byte

cbs=size 一次转化size个byte
skip=blocks从开头忽略blocks个ibs大小的块
seek=blocks从开头忽略blocks个obs大小的块
count=n只拷贝n个记录
conv=conversion[,conversion...] 用指定的参数转换文件。
转换参数:
    ascii 转换EBCDIC 为ASCII。
    ebcdic 转换ASCII 为EBCDIC。
    block 转换为长度为cbs 的记录,不足部分用空格填充。
    unblock 替代cbs长度的每一行尾的空格为新行。
    lcase 把大写字符转换为小写字符。
    ucase 把小写字符转换为大写字符。
    swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。  直接替换内容而不是给短输出文件,不改变文件大小
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

注意:skip=xxx是在备份时对if 后面的部分也就是原文件跳过多少块再开始备份;seek=xxx则是在备份时对of 后面的部分也就是目标文件跳过多少块再开始写。

磁盘拷贝:
    dd if=/dev/sdaof=/dev/sdb

备份MBR:
    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloader:
    dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

有二进制文件fileA,size>2K。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,请问如何实现?
    #dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
        notrunc 不截短输出文件。  直接替换内容而不是给短输出文件,不改变文件大小


备份:
    dd if=/dev/sdx of=/dev/sdy
    将本地的/dev/sdx整盘备份到/dev/sdy  设备对拷

    dd if=/dev/sdx of=/path/to/image
    将/dev/sdx全盘数据备份到指定路径的image文件  将整个设备里的二进制内容保存为一个文件

    dd if=/dev/sdx | gzip >/path/to/image.gz
    备份/dev/sdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

恢复:
    dd if=/path/to/image of=/dev/sdx
    将备份文件恢复到指定盘
    gzip -dc /path/to/image.gz | dd of=/dev/sdx
    将压缩的备份文件恢复到指定盘


拷贝内存资料到硬盘
    dd if=/dev/mem of=/root/mem.bin bs=1024
    将内存里的数据拷贝到root目录下的mem.bin文件

从光盘拷贝iso镜像
    dd if=/dev/cdrom of=/root/cd.iso
    拷贝光盘数据到root文件夹下,并保存为cd.iso文件

销毁磁盘数据
    dd if=/dev/urandom of=/dev/sda1
    利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行。


得到最恰当的block size
    dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
    dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
    dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
    dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

    通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

测试硬盘读写速度
    dd if=/root/1Gb.file bs=64k | dd of=/dev/null
    dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
    通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

修复硬盘
dd if=/dev/sda of=/dev/sda

当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。

原创文章,作者:yyw,如若转载,请注明出处:http://www.178linux.com/40807

(0)
上一篇 2016-08-29 08:49
下一篇 2016-08-29 08:49

相关推荐

  • 第五周作业

    1、显示当前系统上root,fedora或user1用户的默认shell。 [root@hostname ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 root:/bin/bash 2、找出/etc/rc.d/init.d/functions文件中某词后面跟一组小括号的行,形如:…

    Linux干货 2017-08-04
  • linux 记忆命令心得

    新开始学linux,要记住很多的命令,毕竟这是linux的根本,没有这些命令,连操作都没办法进行。所以我写这个的目的是我自己记忆,也是想帮助一下一同学习linux的同学们,提供自己记忆这些的方法,抛砖引玉,大家共同讨论一下。 我的记忆方法就是分类,把命令分成输出类,名词累,操作类。 输出类就是说的例如w,who,whoami,echo,ifcogfig,wh…

    Linux干货 2017-07-15
  • Linux简介,计算机基础

    计算机系统   计算机系统分为:  硬件(Hardware)系统和软件(Software)系统  硬件系统:    主机、外部设备  软件系统:  系统软件、应用软件  主机:  中面处理器CPU、内存储器  外部设备:  外部存储器、输入…

    Linux干货 2017-02-14
  • PHP的类自动加载机制

    在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且require_once的代价很大。 在PHP5之前,各个…

    Linux干货 2015-04-10
  • vim实用技能

    vim编辑器 简介 vi: Visual Interface,文本编辑器 文本:ASCII, Unicode 文本编辑种类: 行编辑器: sed 全屏编辑器:nano, vi VIM – Vi IMproved 使用 vim:模式化的编辑 基本模式: 编辑模式,命令模式 输入模式 末行模式: 内置的命令行接口 打开文件: # vim [OPTIO…

    Linux干货 2018-01-16
  • iptables介绍和使用

    iptables/netfilter:    Packets Filter Firewall:          包过滤型防火墙:  Firewall:隔离工具,工作于主机或网络的边缘处,对经由的报文根据预先定义的规则(识别标准)进行检测,对于能够被规则匹配到的报文实行…

    Linux干货 2017-04-29