Linux学习之路-Linux-挂载【6】---20171213

#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:挂载点

    事先存在;建议使用空目录
    进程正在使用中的设备无法被卸载

  • mount常用命令选项

    -t:vsftype:指定要挂载的设备上的文件系统类型
    -r:readonly,只读挂载
    -w:read and write, 读写挂载
    -n:不更新/etc/mtab,mount不可见
    -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab 文件中,且挂载选项中有auto功能)
    -L 'LABEL':以卷标指定挂载设备
    -U 'UUID': 以UUID指定要挂载的设备
    -B, --bind:绑定目录到另一个目录上
    查看内核追踪到的已挂载的所有设备

    cat /proc/mounts

  • mount 命令 -o 选项

    -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功能
    loop: 使用loop设备
    defaults:相当于rw, suid, dev, exec, auto, nouser, async

  • 卸载命令

    卸载前要注意是否有用户正在使用,并且仔细看下要卸载的设备目前挂载情况
    查看挂载情况命令:findmnt MOUNT_POINT|device
    查看正在放音指定文件系统的进程

    lsof MOUNT_POINT
    fuser -v MOUNT_POINT
    终止所有正在访问指定的文件系统的进程
    fuser -km MOUNT_POINT
    卸载命令
    umount DEVICE
    umount MOUNT_POINT

    [root@Centos6~]# lsof /mnt
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    3196 root  cwd    DIR   8,17     4096    2 /mnt
    [root@Centos6~]#fuser -v /mnt
    用户     进程号 权限   命令
    /mnt:                root       3196 ..c.. bash
    [root@Centos6~]#w
    07:39:29 up 14:29,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1     -                Sat17    9.00s  0.13s  0.13s -bash
    root     pts/0    192.168.245.1    22:12    0.00s  0.93s  0.01s w
    [root@Centos6~]#echo Please get out > /dev/tty1
  • 挂载点和/etc/fstab

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

  • 文件挂载配置文件

    /etc/fstab 每行定义一个要挂载的文件系统
    要挂载的设备或伪文件系统

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

其他挂载程序最好不要自检,因为如果有问题,会导致系统无法正常启动

[root@Centos6app]#mkfs.ext4 /app/f1
mke2fs 1.41.12 (17-May-2010)
/app/f1 is not a block special device.
无论如何也要继续? (y,n) y
.......

[root@Centos6app]#blkid f1
f1: UUID="23a4efe2-aae8-4dd6-961e-c547896e9079" TYPE="ext4"

[root@Centos6app]#ls /dev/loop*
/dev/loop0  /dev/loop2  /dev/loop4  /dev/loop6
/dev/loop1  /dev/loop3  /dev/loop5  /dev/loop7

[root@Centos6app]#mknod /dev/loop8 b 7 8 

[root@Centos6app]#ls /dev/loop*
/dev/loop0  /dev/loop2  /dev/loop4  /dev/loop6  /dev/loop8
/dev/loop1  /dev/loop3  /dev/loop5  /dev/loop7

[root@Centos6app]#dd if=/dev/zero of=f2 bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,9.59967 秒,112 MB/秒

[root@Centos6app]#losetup /dev/loop8 /app/f2 

[root@Centos6app]#losetup -a
/dev/loop0: [0803]:11 (/app/f1)

[root@Centos6app]#cat /boot/grub/grub.conf 
.........
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=2dee0f68-6e60-4852-a9f6-f12ff27dd0da rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet   如果想创建多个loop,这行最后加上**max_loop=100**
    initrd /initramfs-2.6.32-696.el6.x86_64.

[root@Centos6app]#vim /etc/fstab 
.......
UUID=88dfb867-e9d9-4bb1-b835-dcfae33f475e /mnt/sdb1 ext4 defaults 0 0
UUID=fef33d27-205d-4625-96fe-80b4edc488a1 /mnt/sdc1 ext4 defaults 0 0  
/app/f1                     /mnt/f1                      ext4     defaults,loop   0 0
/app/f2                     /mnt/f2                      ext4     defaults,loop   0 0
/etc/sysconfig          /mnt/sysconfig          none    bind                0 0

[root@Centos6~]#df -T
Filesystem     Type  1K-blocks    Used Available Use% Mounted on
.......
/dev/sdb1      ext4    5029504   10232   4757128   1% /mnt/sdb1
/dev/sdc1      ext4    5029504   10232   4757128   1% /mnt/sdc1
/app/f1        ext4     999320    1284    945608   1% /mnt/f1
/app/f2        ext4     999320    1284    945608   1% /mnt/f2
  • SWAP 交换分区

    交换分区是系统RAM的补充
    基本设置包括:

    创建交换分区或者文件
    使用mkswap写入特殊系统
    在/etc/fstab文件中添加适当的条目
    使用swapon -a 激活交换空间

  • 启用命令:swapon

    用法:swapon [OPTION]... [DEVICE]
    -a:激活所有的交换分区
    -p PRIORITY:指定优先级
    /etc/fstab:pri=value

  • 禁用命令:swapoff [OPTION]... [DEVICE]

  • SWAP的优先级

    可以指定swap分区0到32767的优先级,值越大优先级越高
    如果用户没有指定,那么核心会自动给swap指定一个优先级 ,这个优先级从-1开始,每加入一个新的没有用户指定优先 级的swap,会给这个优先级减1
    先添加的swap的缺省优先级比较高,除非用户自己指定一个 优先级,而用户指定的优先级(是正数)永远高于核心缺省指定 的优先级(是负数)
    优化性能:分布存放,高性能磁盘存放

[root@Centos6~]#swapon -s
Filename                Type        Size    Used    Priority
/dev/sda5                               partition   2097148 0   -1

[root@Centos6~]#cat /proc/swaps 
Filename                Type        Size    Used    Priority
/dev/sda5                               partition   2097148 0   -1

[root@Centos6~]#vim /etc/fstab 
UUID=26003261-5cc9-47e2-8a5a-808d7289f66b swap                    swap    pri=10        0 0

[root@Centos6~]#dd if=/dev/zero of=/app/swapfile bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,7.48621 秒,143 MB/秒
[root@Centos6~]#mkswap /app/swapfile 
mkswap: /app/swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=f1ae20e0-36a7-41c6-b811-a474cfb0dcc2
[root@Centos6~]#blkid /app/swapfile 
/app/swapfile: UUID="f1ae20e0-36a7-41c6-b811-a474cfb0dcc2" TYPE="swap" 
[root@Centos6~]#vim /etc/fstab 
/app/swapfile               swap                    swap    defaults        0 0
[root@Centos6~]#swapon -a
[root@Centos6~]#swapon -s
Filename                Type        Size    Used    Priority
/dev/sda5                               partition   2097148 0   -1
/app/swapfile                           file        1048572 0   -2
[root@Centos6~]#free
             total       used       free     shared    buffers     cached
Mem:       1204812    1129464      75348        352      43732     899064
-/+ buffers/cache:     186668    1018144
Swap:      3145720          0    3145720
  • 移动介质

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

    常见工具

  • free 命令:内存空间使用状态

    用法free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]

    -k:以kB为单位
    -m: 以MB为单位
    -g: 以GB为单位
    -h: 所有输出字段自动缩放到包括单位在内的最短(三位数)表示,以人类易读格式显示
    -l显示详细的低和高内存统计信息

  • df 命令:文件系统空间占用等信息的查看工具

    df [OPTION]... [FILE]... -H 以1000为单位
    -a, - 都包括虚拟文件系统
    -B,--block-size = SIZE使用SIZE字节块

    直接显示文件而不是挂载点的统计信息
    总计产生总计

    -h, - 人类可读的打印尺寸(例如,1K 234M 2G)
    -H, - 同样,但是使用1000而不是1024的幂
    -i:列出inode信息
    -P:以Posix兼容的格式输出
    -t, --type=类型 只显示指定文件系统为指定类型的信息
    -T, --print-type 显示文件系统类型
    -x, --exclude-type=类型 只显示文件系统不是指定类型信息
    SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:KB 1000,K 1024,MB 10001000,M 10241024,还有 G、T、P、E、Z、Y。

  • du 命令:查看某目录总体空间占用状态

    计算每个文件的磁盘用量,目录则取总用量
    用法:du [选项]... [文件]...或:du [选项]... --files0-from=F
    长选项必须使用的参数对于短选项时也是必需使用的。
    -a, --all 输出所有文件的磁盘用量,不仅仅是目录

    --apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大。

    -B, --block-size=大小 使用指定字节数的块
    -b, --bytes 等于--apparent-size --block-size=1
    -c, --total 显示总计信息
    -D, --dereference-args 解除命令行中列出的符号连接

    --files0-from=F 计算文件F 中以NUL 结尾的文件名对应占用的磁盘空间
    如果F 的值是"-",则从标准输入读入文件名

    -H 等于--dereference-args (-D)
    -h, --human-readable 以可读性较好的方式显示尺寸(例如:1K 234M 2G)

    --si 类似-h,但在计算时使用1000 为基底而非1024

    -k 等于--block-size=1K
    -l, --count-links 如果是硬连接,就多次计算其尺寸
    -m 等于--block-size=1M
    -L, --dereference 找出任何符号链接指示的真正目的地
    -P, --no-dereference 不跟随任何符号链接(默认)
    -0, --null 将每个空行视作0 字节而非换行符
    -S, --separate-dirs 不包括子目录的占用量
    -s, --summarize 只分别计算命令列中每个参数所占的总用量
    -x, --one-file-system 跳过处于不同文件系统之上的目录
    -X, --exclude-from=文件 排除与指定文件中描述的模式相符的文件
    --exclude=PATTERN 排除与PATTERN 中描述的模式相符的文件
    --max-depth=N 显示目录总计(与--all 一起使用计算文件)
    当N 为指定数值时计算深度为N;
    --max-depth=0 等于--summarize
    --time 显示目录或该目录子目录下所有文件的最后修改时间
    --time=WORD 显示WORD 时间,而非修改时间:
    atime,access,use,ctime 或status
    --time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令):
    full-iso,long-iso,iso,+FORMAT
    --help 显示此帮助信息并退出
    --version 显示版本信息并退出

  • losetup 命令:设置和控制回路设备

    常用选项
    -a, --all 显示所有回路设备的状态
    -c, --set-capacity 强制循环驱动程序重新读取与指定循环设备关联的文件的大小
    -d, --detach loopdev 分离与指定的循环设备相关联的文件或设备
    -e, -E, --encryption 使用指定的名称或号码启用数据加密
    -f, --find 找到第一个未使用的回路设备。 如果存在文件参数,请使用此设备。 否则,打印它的名字
    -h, --help 打印帮助
    -j, --associated file 显示与给定文件关联的所有循环设备的状态
    -r, --read-only 设置只读循环设备

  • dd 命令:convert and copy a file

    用法: dd if=/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
    lcase 把大写字符转换为小写字符
    ucase 把小写字符转换为大写字符
    nocreat 不创建输出文件
    noerror 出错时不停止
    notrunc 不截短输出文件
    sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字 符补齐
    备份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

    有一个大与2K的二进制文件fileA。现在想从第64个字节位置 开始读取,需要读取的大小是128Byts。又有fileB, 想把上面 读取到的128Bytes写到第32个字节开始的位置,替换 128Bytes,实现如下:

    #dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

  • 备份:

    将本地的/dev/sdx整盘备份到/dev/sdy

    dd if=/dev/sdx of=/dev/sdy

将/dev/sdx全盘数据备份到指定路径的image文件

dd if=/dev/sdx of=/path/to/image

备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径

dd if=/dev/sdx | gzip >/path/to/image.gz

  • 恢复:

    将备份文件恢复到指定盘

    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指令输出中所显示的命令执行时间,即可确定系统最 佳的block size大小

  • 测试硬盘写速度

    dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

  • 测试硬盘读速度

    dd if=/root/1Gb.file bs=64k | dd of=/dev/null

  • 修复硬盘

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

转载于:https://blog.51cto.com/exia00linux/2051688

你可能感兴趣的:(Linux学习之路-Linux-挂载【6】---20171213)