linux存储相关命令

  • 磁盘操作
    • fdisk-查看及管理分区
  • 分区操作
    • df-分区情况统计
    • mount/umount-挂载/取消挂载
    • tune2fs-调整和查看ext2/ext3文件系统参数
    • blkid-查看文件系统基本信息
    • e2label-设定分区的label
    • blockdev-获取/设置块设备的属性值
    • dumpe2fs-查看分区详细信息
  • 格式化
    • mkfs-格式化分区
    • mke2fs-格式化ext系统分区
  • 文件操作
    • du-查看占用空间大小
    • ls-列出文件
    • stat-显示文件详细信息
    • fuser-查找使用文件的进程
  • 检查/修复分区
    • fsck-检查并修复linux文件系统
    • badblocks-检查硬盘坏道
    • filefrag-查看文件碎片报告

e2label

作用

e2label命令,用于获取或设置ext2、ext3文件系统对应的分区的卷标。

卷标:简单来说就是对分区的一个标示。在格式化的时候生成或通过e2label命令来设置

使用

e2label 分区 [新label]

操作

e2label /dev/sdb1 test

fdisk

作用

用于创建和维护分区表

参数

  • -l: 列出素所有分区表
  • 菜单参数
    • m :显示菜单和帮助信息
    • a :活动分区标记/引导分区
    • d :删除分区
    • l :显示分区类型
    • n :新建分区
    • p :显示分区信息
    • q :退出不保存
    • t :设置分区号
    • v :进行分区检查
    • w :保存修改
    • x :扩展应用,高级功能

操作

  • 查看分区列表
fdisk -l
  • 管理分区
fdisk /dev/sdb1

df

作用

用于显示目前在 Linux 系统上挂载着的文件系统磁盘/分区使用情况统计

参数

  • -a, --all: 包含所有的具有 0 Blocks 的文件系统
  • --block-size={SIZE}: 使用 {SIZE} 大小的 Blocks
    文件
  • -h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
  • -H, --si: 很像 -h, 但是用 1000 为单位而不是用 1024
  • -i, --inodes: 列出 inode 资讯,不列出已使用 block
  • -k, --kilobytes: 就像是 --block-size=1024
  • -l, --local: 限制列出的文件结构
  • -m, --megabytes: --block-size=1048576
  • --no-sync: 取得资讯前不 sync (预设值)
  • -P, --portability: 使用 POSIX 输出格式
  • --sync: 在取得资讯前 sync
  • -t, --type=TYPE: 限制列出文件系统的 TYPE
  • -T, --print-type: 显示文件系统的形式
  • -x, --exclude-type=TYPE: 限制列出文件系统不要显示 TYPE

操作

[root@k8s-master /]# df -i
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
······
/dev/sdb1                 12544      15   12529       1% /data1
[root@k8s-master /]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
······
/dev/sdb1                 44M  1.1M   39M    3% /data1

mkfs

作用

用于格式化磁盘或分区,即创建指定格式的文件系统

使用

  • mkfs [tab] [tab]:按下两下tab键查看系统支持哪些文件系统的格式化功能
  • mkfs -t xfs 与 mkfs.xfs相同

参数说明

  • -t: 指定文件系统格式名,等同于mkfs.文件系统格式名
    • xfs
    • ext4
    • 等等
  • -b: 块容量,范围是512B-64K。不过Linux最大为4K

操作

mkfs.ext4 /dev/sda2

mke2fs

作用

mke2fs命令是专门用于管理ext系列文件系统的一个专门的工具。其还有像mkfs.ext2,mkfs.ext3,mkfs.ext4等衍生的命令,它们的用法mke2fs类似

配置文件

mke2fs的配置内容位于配置文件/etc/mke2fs.conf:mke2fs

  • 文件详细内容见附2
  • blocksize:每个分块的大小。
  • inode_size:每个inode占用256b磁盘空间。
  • inode_ratio:每个16kb字节的磁盘空间会分配一个inode。一个分区inode数量=分区容量/inode_ratio
    • inode_ratio值越小,硬盘可用的inode就越多,适合存储海量小文件的情景。
    • inode_ratio值越大,硬盘可用的inode就越少,inode占用硬盘空间就会越少,适合存储大文件的情景。
    • inode数量*inode_size/1024/1024=inode占用空间(mb)

mke2fs.ext4参数

  • -b: block-size 指定block size大小,默认配置文件在/etc/mke2fs.conf
  • -i: 定义inode_ratio的大小
  • -I: 指定inode size大小,默认配置文件在/etc/mke2fs.conf,inode_size = 256
  • -N: 指定inode个数,最大创建文件个数
  • -m: 指定预留block总个数的百分比,默认是5%
  • -g: 指定每个块组含有多少block
  • -M: 指定最后挂载的目录路径
  • -t: 指定文件系统类型
  • -J: 指定日志文件大小,默认单位MB,范围4MB-40MB
  • -r: 指定要建立的ext4文件系统版本

操作

mke2fs.ext4 /dev/sda2 -b 1024 -N  1 -I 128

说明

  • If -b option is is not specified, mke2fs will pick a single default usage type based on the size of the filesystem to be created.
    • If the filesystem size is less than or equal to 3 megabytes, mke2fs will use the filesystem type floppy.
    • If the filesystem size is greater than 3 but less than or equal to 512 megabytes, mke2fs(8) will use the filesystem type small.
    • If the filesystem size is greater than or equal to 4 terabytes but less than 16 terabytes, mke2fs(8) will use the filesystem type big.
    • If the filesystem size is greater than or equal to 16 terabytes, mke2fs(8) will use the filesystem type huge.
    • Otherwise, mke2fs(8) will use the default filesystem type default.

mount/umount

作用

用于挂载某个格式化后的磁盘或分区文件

挂载分区

mount /dev/sdb1 /data1
umount /dev/sdb1

挂载目录

mount --bind d1 data1

stat

作用

用来显示文件的详细信息,包括inode, atime, mtime, ctime;查看文件或目录的诸如atime,mtime,ctime等信息即可使用stat命令,也可使用ls命令,但相比而言,stat还可以看到设备号,环境等信息。

参数

  • -f: 不显示文件本身的信息,显示文件所在文件系统的信息
  • -L: 显示符号链接
  • -C: 文件权限
  • -t: 简洁模式,只显示摘要信息

输出

  • File:显示文件名
  • Size:显示文件大小
  • Blocks:文件使用的数据扇区总数
  • IO Block:IO块大小
  • regular file:文件类型(常规文件)
  • Device:设备编号
  • Inode:Inode号
  • Links:链接数
  • Access:文件的权限
  • Gid、Uid:文件所有权的Gid和Uid。

操作

  • 查看某文件的inode信息
[root@k8s-master data1]# stat a.txt
  文件:"a.txt"
  大小:2         	块:2          IO 块:1024   普通文件
设备:811h/2065d	Inode:14          硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2020-10-31 16:54:08.000000000 +0800
最近更改:2020-10-31 16:54:08.000000000 +0800
最近改动:2020-10-31 16:54:08.000000000 +0800
创建时间:-
  • 显示文件所在文件系统的信息
[root@k8s-master data1]# stat -f a.txt
  文件:"a.txt"
    ID:618e4c628b2420d7 文件名长度:255     类型:ext2/ext3
块大小:1024       基本块大小:1024
    块:总计:44489      空闲:43449      可用:39938
Inodes: 总计:12544      空闲:12531

说明

  • Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
  • Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
  • Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

值得注意的是stat的blocks表示的不是该inode占用了多少块,而是表示占用了多少磁盘物理块,即扇区

tune2fs

作用

tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,包括inode及block大小等信息

参数

  • -l: 查看文件系统信息
  • -c: max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检
  • -i: interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]
  • -m: reserved-blocks-percentage 保留块的百分比
  • -j: 将ext2文件系统转换为ext3类型的文件系统
  • -L: volume-label 类似e2label的功能,可以修改文件系统的标签
  • -r: reserved-blocks-count 调整系统保留空间
  • -o: 设置或清除默认挂载的文件系统选项

操作

  • 查看文件系统信息
tune2fs -l /dev/sdb1 | grep "Block size"
  • 设置强制检查前文件系统可以挂载的次数
tune2fs -c 30 /dev/hda1 
  • 关闭强制检查挂载次数限制。
tune2fs -c -l /dev/hda1 
  • 设置某时间后检查
tune2fs -i 10 /dev/hda1 10天后检查
tune2fs -i 1d /dev/hda1 1天后检查
tune2fs -i 3w /dev/hda1 3周后检查
tune2fs -i 6m /dev/hda1 半年后检查
tune2fs -i 0 /dev/hda1 禁用时间检查
  • 添加日志功能,将ext2转换成ext3文件系统
tune2fs -j /dev/hda1 
  • 调整/dev/hda1分区的保留空间为40000个磁盘块
tune2fs -r 40000 /dev/hda1 
  • 设置/dev/hda1挂载选项,启用Posix Access Control Lists和用户指定的扩展属性
tune2fs -o acl,user_xattr /dev/hda1 
  • 开机取消自检
tune2fs -l /dev/sdb1 | grep -E ‘Maximum mount count:|Check interval’
tune2fs -i 0 -c 0 /dev/sdb1

blockdev

作用

blockdev命令可以获取linux下块设备的属性值,以及设置一些块设备的属性值

参数

* block -V: 输出程序的版本号
* blockdev --report [devices]: 列举出devices设备信息。如果没有devices,则输出所有操作系统发现的块设备。
* blockdev [-v|-q]: commands devices
    * -v 命令设置后,后面的命令行参数执行,会输出相应的提示信息。
    * -q 命令设置后,后面的命令行参数执行,不会输出相应的提示信息。默认也是不会输出。
* --getsz: 获取512字节的扇区的个数
* --setro: 设置只读
* --setrw: 设置读写
* --getro: 获得只读
* --getdiscardzeroes: get discard zeroes support status
* --getss: 获得逻辑块(扇区)大小
* --getpbsz: 获得物理块(扇区)大小
* --getiomin:  获得最小 I/O 大小
* --getioopt:  获得最优 I/O 大小
* --getalignoff: 获得字节中的对齐偏移量
* --getmaxsect: 获得每次请求的最大扇区数
* --getbsz: 获得块大小
* --setbsz <bytes>: 设置块大小
* --getsize: 获得32位扇区个数(废弃, 使用 * --getsz)
* --getsize64: 获得字节大小
* --setra <sectors>: 设置 readahead
* --getra: 获取 readahead
* --setfra <sectors>: 设置 文件系统 readahead
* --getfra: 获取 文件系统 readahead
* --flushbufs: 刷新缓存
* --rereadpt:  重新读取分区表

操作

  • 设置设备为只读
blockdev --setro /dev/hda4
  • 读取设备是否为只读
blockdev --getro /dev/hda4
  • 设置设别为可读写:
blockdev --setrw /dev/hda4
  • 获取块大小
[root@CentOS-7-2 ~]# blockdev --getbsz /dev/sda1
4096

filefrag

作用

查看文件碎片报告

操作

[root@VM-3-11-centos]#  filefrag -v application.log
Filesystem type is: ef53
File size of application.log is 133065846 (32487 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:   13182676..  13182676:      1:
   1:        1..      63:   10863802..  10863864:     63:   13182677:
  • 每个ext为一个连续的block
  • 测试发现小文件扩展时,会直接将小文件内容复制到新的连接的blocks中

blkid

作用

blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。

参数

  • -o: 以列表方式查看详细信息
  • -s: 显示指定信息,默认显示所有信息

操作

  • 列出当前系统中所有已挂载文件系统的类型
[root@k8s-master ~]# blkid
/dev/sdb1: UUID="c1a15f41-24f6-49ac-a3ed-d120f3d66d27" TYPE="ext4"
······
  • 显示某设备文件系统
[root@k8s-master ~]# blkid -s TYPE /dev/sdb1
/dev/sdb1: TYPE="ext4"
  • 以列表方式查看详细信息
[root@k8s-master ~]# blkid -o list
device     fs_type   label    mount point    UUID
---------------------------------------------------------------------------------
/dev/sdb1  ext4               /data1         c1a15f41-24f6-49ac-a3ed-d120f3d66d27

dumpe2fs

作用

查看分区superblock 和blockgroup等详细信息

参数

  • -b: 显示文件系统中保留的损坏块
  • -o superblock=superblock: 检查文件系统时,使用指定大小的超级块。此选项通常不需要,除非文件系统向导正在检查严重损坏的文件系统的剩余部分。
  • -o blocksize=blocksize: 检查文件系统时,指定块大小。此选项通常不需要,除非文件系统向导正在检查严重损坏的文件系统的剩余部分。
  • -f: 强制执行
  • -h: 只显示超级块信息,而不显示任何块组描述符详细信息
  • -i: 显示从e2image获得的文件系统信息,使用设备作为image文件的路径名。
  • -x: 以十六进制显示文件系统信息

操作

[root@k8s-master data1]# dumpe2fs /dev/sdb1
······
Inode count:              12544
Block count:              50176
Block size:               1024
Inode size:	          128
······

Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0xe02e, unused inodes 1775
  主 superblock at 1, Group descriptors at 2-2
  保留的GDT块位于 3-258
  Block bitmap at 259 (+258), Inode bitmap at 275 (+274)
  Inode表位于 291-514 (+290)
  6337 free blocks, 1777 free inodes, 3 directories, 1775个未使用的inodes
  可用块数: 287-290, 1860-8192
  可用inode数: 13, 16, 18-1792
······

fsck

作用

检查并修复linux文件系统

操作

[root@k8s-master /]# fsck  /dev/sdb1
fsck,来自 util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdb1: clean, 15/12544 files, 6776/50176 blocks

badblocks

作用

检查硬盘坏道

操作

badblocks /dev/sdb1

fuser

作用

当显示 设备正在忙的时候,可以使用这个命令查看使用进程

ls

作用

列出某目录下的文件,当展示详细信息,如 文件的大小,权限,所属等信息时,这些信息均取自inode

参数

  • ls -a: 列出文件下所有的文件,包括以“.“开头的隐藏文件(Linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。
  • ls -l: 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。
  • ls -F: 在每一个文件的末尾加上一个字符说明该文件的类型。"@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。
  • ls -s: 在每个文件的后面打印出文件的大小。size(大小)。
  • ls -t: 按时间进行文件的排序 Time(时间)
  • ls -A: 列出除了"."和".."以外的文件。
  • ls -R: 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现
  • ls -r: 倒着排序 reverse
  • ls -L: 列出文件的链接名。Link(链接)
  • ls -S: 以文件的大小进行排序
  • ls -i: 显示该文件对应的inode id
  • ls -p: 只给目录添加/

操作

[root@k8s-master data1]# ls -i
14 a.txt  12 d1  11 lost+found

说明

通常情况下,ls显示的文件大小比du显示的磁盘占用空间小,比如文件系统的block是4K,一个13K的文件占用的空间是 13k/4k = 3.25 个block,一个block只能被一个文件占用,因此实际占用空间就是4个block,就是16K。

du

作用

du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh

参数

-h:以人类可读的方式显示
-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
-s:显示文件或整个目录的总大小,默认单位是KB
-c:显示当前目录下目录或文件占用的磁盘空间大小,还要统计它们的总和
--apparent-size:显示目录或文件自身的大小,而不是占用磁盘的大小,即为inode信息中的大小
-l:统计硬链接占用磁盘空间的大小
-L:统计符号链接所指向的文件占用的磁盘空间大小
-d: max-depth=N

操作

du -sh: 查看当前目录总共占的容量。而不单独列出各子项占用的容量
du -lh --max-depth=1: 查看当前目录下一级子文件和子目录占用的磁盘容量。
du -sh * | sort -n: 统计当前文件夹(目录)大小,并按文件大小排序
du -sk filename: 以单位kb查看指定文件大小
du -hd1: 查看当前目录


附2-/etc/mke2fs.conf内容

[root@k8s-master boot]# cat /etc/mke2fs.conf
[defaults]
	base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
	default_mntopts = acl,user_xattr
	enable_periodic_fsck = 0
	blocksize = 4096
	inode_size = 256
	inode_ratio = 16384

[fs_types]
	ext3 = {
		features = has_journal
	}
	ext4 = {
		features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize,64bit
		inode_size = 256
	}
	ext4dev = {
		features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
		inode_size = 256
		options = test_fs=1
	}
	small = {
		blocksize = 1024
		inode_size = 128
		inode_ratio = 4096
	}
	floppy = {
		blocksize = 1024
		inode_size = 128
		inode_ratio = 8192
	}
	big = {
		inode_ratio = 32768
	}
	huge = {
		inode_ratio = 65536
	}
	news = {
		inode_ratio = 4096
	}
	largefile = {
		inode_ratio = 1048576
		blocksize = -1
	}
	largefile4 = {
		inode_ratio = 4194304
		blocksize = -1
	}
	hurd = {
	     blocksize = 4096
	     inode_size = 128
	}