您的位置:首页 > 运维架构 > Linux

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

2017-12-18 13:27 211 查看
#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错误。当这种情况影响到硬盘的第一个扇区时, 可能导致硬盘报废。上边的命令有可能使这些数据起死回 生,且这个过程是安全高效的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mount dd df