文件系统
文件系统检测和修复
mount挂载设备
swap分区使用
文件系统查看工具
dd命令扩展
检测和修复
使用场景:常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p 自动修复错误
-r 交互式修复错误
FS_TYPE 一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y 自动回答为yes
-f 强制修复常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p 自动修复错误
-r 交互式修复错误
FS_TYPE 一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y 自动回答为yes
-f 强制修复
挂载mount命令的使用
mount DEVICE MOUNT_POINT
挂载: 将额外文件系统与根文件系统现存的目录建立起关联关系,从而使得目录是文件访问入口行为
卸载: 解除次关联关系的过程
挂载后原有文件会被临时隐藏,挂载点一般为空
mount直接键入时,会通过查看/etc/mtab文件显示当前所有挂载的所有设备
device: 挂载点设备
(1)设备文件,如/dev/sda3
(2)卷标: -L ‘LABEL’
(3)UUID,-U ‘UUID’
(4)伪文件系统: /proc/ /sysfs/ /devtmpfs/ /configfs/
注: 挂载点需要事先存在,使用中的挂载点无法卸载,建议使用空目录作为挂载点
常用选项
-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
-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
例: lsof /dev
fuser -v /boot
终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
卸载
umount DEVICE
umount MOUNT_POINT
文件挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统
1、要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
2、挂载点
3、文件系统类型:ext4,xfs,iso9660,nfs,none
4、挂载选项:defaults ,acl,bind
5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6、fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检
1:首先自检;一般只有rootfs才用
2:非rootfs使用
swap交换分区
swap分区支持虚拟内存,是系统RAM的补充,当没有RAM保持系统处理数据时会将数据写入swap分区。
swap空间建议使用大小
系统RAM | SWAP空间 | 允许休眠的swap空间 |
---|---|---|
低于2GB | RAM量的倍数 | RAM三倍 |
2G-8G | 等于RAM量 | RAM量的倍数 |
8G-64G | 4G到RAM容量的0.5倍 | RAM1.5倍 |
超过64G | 独立负载(至少4G) | 不建议使用休眠 |
注: 过多的swap空间会造成分配空闲造成资源浪费以至于内存泄露;过少的SWAP会导致内存和swap都消耗后导致的服务的异常终止
挂载使用swap空间
步骤说明
创建交换分区或文件 --> mkswap写入签名 --> /etc/fstab添加条目 --> swapon -a 激活交换分区 --> swapoff禁用分区
启用swap
swapon [option]…[device]
-a:激活所有交换分区
-p PRIORITY:指定优先级
禁用swap
swapoff [option]…[device]
SWAP分区优先级
分区有限即0-32767,值越大优先级越高
添加swap分区时,如果没有指定默认值-1,随后再次添加的swap如果还是没有赋优先级,会在-1的基础上继续-1-1=-2,从而保证第一块swap分区优先级。用于指定的值恒定大于自动的默认优先级
swap性能优化: 分布式存放,高性能磁盘存放
文件系统查看工具集合
df [option]…[file]…
-H 以10为单位
-T 文件系统类型
-h human-readable 以已读的方式查看M|G
-i inodes instead of blocks 以indode号查看分区
-P 以Posix兼容的格式输出
查看某目录总体空间占用状态
du [OPTION]… DIR
-h human-readable 可读的方式展示
-s summary 简要信息
--max-depth=# 指定最大目录层级
dd命令:convert and copy a file
命令选项:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
if=file 从所命名文件读取而不是从标准输入
of=file 写到所命名的文件而不是到标准输出
ibs=size 一次读size个byte
obs=size 一次写size个byte
bs=size block size, 指定块大小(既是是ibs也是obs)
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块
seek=blocks 从开头忽略blocks个obs大小的块
count=n 复制n个bs
conv=conversion[,conversion...] 用指定的参数转换文件
转换参数:
ascii 转换 EBCDIC 为 ASCII
ebcdic 转换 ASCII 为 EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
Fdatasync 写完成前,物理写入输出文件
备份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
备份:
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 of=/root/1Gb.file bs=1024 count=1000000
dd if=/dev/zero of=/root/1Gb.file bs=2048 count=500000
dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000
通过比较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
500000
dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000
通过比较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