文件系统管理

2018-06-07  本文已影响0人  毛利卷卷发

文件系统分类

日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat

查看目前支持的文件系统:cat /proc/filesystems

创建文件系统

mkfs

mkfs.FS_TYPE /dev/DEVICE:创建指定格式文件系统,常用选项:

mke2fs

ext系列文件系统专用管理工具,常用选项如下:

ext文件系统专用

blkid

块设备属性信息查看,常用选项:

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系列文件系统可调整参数的值,常用选项:

dunpe2fs

查看设备的块分组,也就是所有的block group

文件系统检测和修复

因进程意外终止或者系统崩溃的时候,可能会造成文件损坏,此时应该检查并修复文件系统,建立离线修复。 注意一定不要再挂载状态下修复

fsck

fsck.FS_TYPE:检查和修复一个Linux的文件系统,常用选项:

注意:FS_TYPE一定要与分区上已经文件类型相同

e2fsck

ext系列文件专用的检测修复工具,常用选项:

挂载文件系统

将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为,这时挂载点下的原有文件在挂载完成后会被临时隐藏,因此挂载点目录一般为空

查看当前系统所有已经挂载的设备

mount
cat /etc/mtab
cat /proc/mounts

mount

mount DEVICE MOUNT_POINT,常用选项:

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
  1. 设备名
  2. 挂载点
  3. 文件系统类型
  4. 挂载选项
  5. 转储频率(0:不做备份,1:每天转储,2:每隔一天转储)
  6. 自检次序(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]:启用

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

查看内存空间使用情况,常用选项:

df

查看文件系统空间占用等信息,常用选项:

du

查看某目录总体空间占用情况,常用选项:

dd

语法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#,常用选项:

备份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错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的

练习

  1. 通过/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@")
    
  2. 创建一个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 
    
  3. 写一个脚本,完成如下功能:

    (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}%"
    
  4. 将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
    
上一篇 下一篇

猜你喜欢

热点阅读