文件系统分类
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
查看目前支持的文件系统:cat /proc/filesystems
创建文件系统
mkfs
mkfs.FS_TYPE /dev/DEVICE:创建指定格式文件系统,常用选项:
- mkfs -t FS_TYPE /dev/DEVICE:创建指定格式文件系统
- mkfs -L 'LABEL' /dev/DEVICE:设定卷标
mke2fs
ext系列文件系统专用管理工具,常用选项如下:
- -t ext2/ext3/ext4:创建指定格式文件系统
- -b 1024/2048/4096:指定block大小
- -L 'LABEL':设置卷标
- -j:相当于-t ext3
- -i #:为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
- -N #:指定分区中创建多少个inode
- -I:一个inode记录占用的磁盘空间大小,128---4096
- -m #:默认5%,为管理人员预留空间占总空间的百分比
- -O FEATURE[,...]:启用指定特性
- -O ^FEATURE:关闭指定特性
ext文件系统专用
blkid
块设备属性信息查看,常用选项:
- -U UUID:按UUID查找对应的设备
- -L LABEL:按LABEL来查找对应的设备
e2label
更改ext系列文件系统的LABEL
findfs
查找分区
# e2label改指定文件系统的LABEL
[root@centos7 ~]# e2label /dev/sda6 what
# findfs查指定LABEL对应的分区
[root@centos7 ~]# findfs LABEL=what
# findfs查指定UUID对应的分区
[root@centos7 ~]# findfs UUID=7faa177d-373c-446f-ba99-e585b926ee9c
tune2fs
重新设定ext系列文件系统可调整参数的值,常用选项:
- -l:查看指定文件系统超级块信息
- -L 'LABEL':修改卷标
- -m #:修预留给管理员的空间百分比
- -j:将ext2升级为ext3
- -O: 文件系统属性启用或禁用,–O ^has_journal
- -o: 调整文件系统的默认挂载选项,–o ^acl
- -U UUID: 修改UUID号
dunpe2fs
查看设备的块分组,也就是所有的block group
- -h:查看超级块信息,不显示分组信息
文件系统检测和修复
因进程意外终止或者系统崩溃的时候,可能会造成文件损坏,此时应该检查并修复文件系统,建立离线修复。 注意一定不要再挂载状态下修复
fsck
fsck.FS_TYPE:检查和修复一个Linux的文件系统,常用选项:
- -t FS_TYPE:指定文件系统
- -p:不交互自动修复错误
- -r:交互式修复错误
注意:FS_TYPE一定要与分区上已经文件类型相同
e2fsck
ext系列文件专用的检测修复工具,常用选项:
- -y:自动回答yes
- -f:强制修复
挂载文件系统
将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为,这时挂载点下的原有文件在挂载完成后会被临时隐藏,因此挂载点目录一般为空
查看当前系统所有已经挂载的设备
mount
cat /etc/mtab
cat /proc/mounts
mount
mount DEVICE MOUNT_POINT,常用选项:
- -t vsftype:指定要挂载设备的文件系统类型,一般不需要指定
- -r:readonly,只读挂载
- -w:read and write, 读写挂载
- -n:不更新/etc/mtab,mount不可见,cat /proc/mounts 可以看到用-n所隐藏的挂载信息
- -a:自动挂载定义在了/etc/fstab文件中尚未挂载的文件系统,且挂载选项中有auto功能)
- -L 'LABEL':以卷标指定挂载设备
- -U 'UUID':以UUID指定要挂载的设备
- -B/--bind:绑定目录到另一个目录上
- -o:指定挂载选项
- ro:只读
- rw:读写
- async/sync:异步传输
- atime|noatime:记录atime
- diratime/nodiratime:目录的访问时间戳
- auto/noauto:是否支持自动挂载,是否支持-a选项
- exec/noexec:是否支持在文件系统上运行应用程序
- dev/nodev:是否支持在此文件系统上使用设备文件
- suid/nosuid:是否支持suid和sgid权限
- remount:重新挂载
- user/nouser:是否允许普通用户挂载此设备
- acl:启用此文件系统上的acl功能
- loop:使用loop设备,losetup -a 可列出loop挂载的设备
- defaults:相当于rw, suid, dev, exec, auto, nouser, async
umount
查看挂载情况:findmnt MOUNT_POINT/device
查看正在访问指定文件系统的进程: lsof MOUNT_POINT/ fuser -v MOUNT_POINT(默认不递归,配合-m选项递归查看)
终止所有在正访问指定的文件系统的进程:fuser -km MOUNT_POINT
[root@localhost_v6(nanyibo) ~]# lsof /app/data1/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 4137 root cwd DIR 8,8 2802688 2 /app/data1
[root@localhost_v6(nanyibo) ~]# kill 4137
[root@localhost_v6(nanyibo) ~]# fuser -vm /app/data1
[root@localhost_v6(nanyibo) ~]# fuser -km /app/data1
文件挂载配置文件
[root@centos6 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 16 05:35:31 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=7e51be47-2999-407e-8e20-1c48096a3a8c / ext4 defaults 1 1
UUID=48cbbc86-5d04-4957-903d-daa2fa6b869e /app ext4 defaults 1 2
UUID=0d9c1147-0319-4cde-9038-ac35dc2cd732 /boot ext4 defaults 1 2
UUID=102b3ecf-2f21-4ae1-9cb8-9cc5203bb638 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
- 设备名
- 挂载点
- 文件系统类型
- 挂载选项
- 转储频率(0:不做备份,1:每天转储,2:每隔一天转储)
- 自检次序(0:不自检,1:首先自检;一般只有rootfs才用1)
swap
挂载交换分区
[root@centos6 ~]# dd if=/dev/zero of=swap.img bs=1M count=1024
[root@centos6 ~]# mkswap swap.img
[root@centos6 ~]# swapon /app/swap.img
开机自动挂载,写入/etc/fstab文件中
swapon [OPTION]... [DEVICE]:启用
- -a:激活所有的交换分区
- -p PRIORITY:指定优先级
swapoff [OPTION]... [DEVICE]:禁用
swap优先级
用户可以指定swap分区0到32767的优先级,值越大优先级越高,如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一,因此先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
# 指定优先级
[root@centos6 ~]# swapon -p xx /dev/sdaX
# 通过写入/etc/fstab指定优先级
UUID=5a1ff0b5-5c19-42e3-8b6a-65e7d332ee0c swap swap defaults,pri=20 0 0
UUID=8a5c6dbe-1025-462b-ad32-53ded1918d63 swap swap defaults,pri=15 0 0
/app/swap.img swap swap defaults,pri=10 0 0
移动介质
eject:卸载或弹出磁盘
创建iso文件:mkisofs -r -o etc.iso /etc/
刻录光盘:wodim–v –eject centos.iso
lsusb:查看USB设备是否识别
常见工具
free
查看内存空间使用情况,常用选项:
- -m:以MB为单位
- -g:以GB为单位
- -h:human-readable
df
查看文件系统空间占用等信息,常用选项:
- -H:以1000为单位
- -T:文件系统类型
- -h:human-readable
- -i:inodes instead of blocks
- -P:以Posix兼容的格式输出,默认
du
查看某目录总体空间占用情况,常用选项:
- -h:human-readable
- -s:summary
dd
语法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#,常用选项:
- if=file:写到所命名的文件而不是到标准输出
- of=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个记录
备份MBR
dd if=/dev/sdaof=/tmp/mbr.bakbs=512 count=1
破坏MBR中的bootloader
dd if=/dev/zero of=/dev/sdabs=64 count=1 seek=446
有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes
dd if=fileAof=fileBbs=1 count=128 skip=63 seek=31
将本地的/dev/sdx整盘备份到/dev/sdy
ddif=/dev/sdx of=/dev/sdy
将/dev/sdx盘数据备份到指定路径的image文件
dd if=/dev/sdxof=/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
将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024
拷贝光盘数据到root文件夹下,并保存为cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行
dd if=/dev/urandom of=/dev/sda1
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的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 if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
测试硬盘读速度
dd if=/root/1Gb.file bs=64k | ddof=/dev/null
修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的
练习
-
通过/etc/fstab ,指定挂载点,可以查出对应的分区名
[root@centos6 ~]# dir=/;findfs `cat /etc/fstab |grep -w $dir |cut -d" " -f1` [root@centos6 ~]# dir=/;findfs $(cat /etc/fstab |grep "[[:space:]]$dir[[:space:]]" | cut -d" " -f1) [root@centos6 ~]# dir=/app;findfs $(cat /etc/fstab |grep "$dir[[:blank:]]"|sed -r "s@(.*)[[:blank:]]+$dir.*@\1@")
-
创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
[root@centos6 ~]# mke2fs -t ext4 -b 2048 -m 1 -L 'TEST' [root@centos6 ~]# echo "/dev/sda6 /test ext4 defaults,acl 0 0" >> /etc/fstab
-
写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息#!/bin/bash # 列出所有磁盘 fdisk -l|grep "Disk /" # 查出磁盘总扇区数 all=`fdisk -l |sed -n "2p"|cut -d' ' -f7` # 查出已用扇区数 use=`fdisk -l |tail -1 |tr -s ' '|cut -d' ' -f3` # 计算磁盘使用率 user=`echo "scale=2;${use}/${all}" |bc|cut -d. -f2` echo "${user}%"
-
将CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.8-x86_64-Everything.iso文件,并将其配置为yum源
# 把两个iso文件放在一个空目录,然后把目录做成iso文件 mkisofs -r -o centos6.iso /centos6/ # 挂在mnt上,因为不是文件系统,所以要用-o loop选项 mount -o loop centos6.iso /mnt
网友评论