4:磁盘管理 – Linux常用命令大全(手册) https://linuxcommand.p2hp.com 真正好用的Linux命令在线查询网站 Tue, 24 May 2022 12:19:32 +0000 zh-CN hourly 1 https://wordpress.org/?v=6.0 https://linuxcommand.p2hp.com/wp-content/uploads/2019/03/cropped-redhat-32x32.png 4:磁盘管理 – Linux常用命令大全(手册) https://linuxcommand.p2hp.com 32 32 blktrace命令 – 分析磁盘IO https://linuxcommand.p2hp.com/blktrace Tue, 28 Jul 2020 11:24:58 +0000 https://linuxcommand.p2hp.com/?p=8452 在Linux系统上,查看磁盘的负载情况,咱们一般使用iostat监控工具。其中很重要的参数就是await,await表示单个I/O所需的平均时间,但它同时包含了I/O Scheduler所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标。那如何才能分辨一个io从下发到返回整个时间上,是硬件层耗时多还是在io调度上耗时多呢?如何查看io在各个时间段所消耗的时间呢?那么,blktrace在这种场合就能派上用场,因为它能记录I/O所经历的各个步骤,从中可以分析是IO Scheduler慢还是硬件响应慢,以及各个时间段所用时间。

blktrace的原理:

一个I/O请求进入block layer之后,可能会经历下面的过程:

  • Remap: 可能被DM(Device Mapper)或MD(Multiple Device, Software RAID) remap到其它设备
  • Split: 可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O
  • Merge: 可能会因为与其它I/O请求的物理位置相邻而合并(merge)成一个I/O
  • 被IO Scheduler依照调度策略发送给driver
  • 被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成IO请求之后再把结果发回。

语法格式:blktrace [参数]

常用参数:

-A hex-mask设置过滤信息mask成十六进制mask
-a mask添加mask到当前的过滤器
-b size指定缓存大小for提取的结果,默认为512KB
-d dev添加一个设备追踪
-k杀掉正在运行的追踪
-n num-sub指定缓冲池大小,默认为4个子缓冲区
-o file指定输出文件的名字
-r rel-path指定的debugfs挂载点
-w seconds设置运行的时间

参考实例

centos7安装blktrace(会自动生成blktrace blkparse btt 3个工具,其中,blktrace收集数据,blkparce分析数据,btt汇总数据):

[root@linuxcool ~]# yum install blktrace -y

使用blktrace需要挂载debugfs:

[root@linuxcool ~]# mount -t debugfs debugfs /sys/kernel/debug

利用blktrace查看实时数据的方法,比如要看的硬盘是sdb:

[root@linuxcool ~]# blktrace -d /dev/sdb -o – | blkparse -i –

分析磁盘/dev/sdc的IO情况:

[root@linuxcool ~]# blktrace -d /dev/sdc

生成数据: 应用结束后,手动终止监控,会生成cpu数量的文件

[root@linuxcool ~]# blkparse -i sdc -d sdc.blktrace.bin
]]>
mkfs.ext4 命令 – 对磁盘设备进行Ext4格式化 https://linuxcommand.p2hp.com/mkfs-ext4 Sat, 18 Jul 2020 12:53:10 +0000 https://linuxcommand.p2hp.com/?p=8246 mkfs.ext4命令来自于英文词组“make filesystem Ext4”的缩写,其功能是用于对磁盘设备进行Ext4格式化的操作。

语法格式:mkfs.ext4 [参数] 设备

常用参数:

-c格式化前检查分区是否有坏块
-q执行时不显示任何信息
-b <block-size>指定block size大小
-F强制格式化

参考实例

检查指定的磁盘设备并进行格式化操作:

[root@linuxcool ~]# mkfs.ext4 -c /dev/sdb
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: 2468ba17-0d37-4900-b67e-5f3a24084fc5
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Checking for bad blocks (read-only test):   0.00% done, 0:00 elapsed. (0/0/0 errdone                                                 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

对指定的磁盘设备直接进行格式化操作:

[root@linuxcool ~]# mkfs.ext4 /dev/sdb
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: 62ccf385-efef-41ab-8938-bfd65bac7066
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

对指定的磁盘设备进行格式化操作,添加卷标识,并修改块大小:

[root@linuxcool ~]# mkfs.ext4 -L 'LinuxCool' -b 2048 /dev/sdb
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10485760 2k blocks and 1310720 inodes
Filesystem UUID: 73ad248c-2a01-49dd-aa46-8770ecbc56fd
Superblock backups stored on blocks: 
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
	2048000, 3981312, 5619712, 10240000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   
]]>
mkimage命令 – 制作可启动映象文件 https://linuxcommand.p2hp.com/mkimage Mon, 22 Jun 2020 07:59:15 +0000 https://linuxcommand.p2hp.com/?p=8057 mkimage工具是u-boot用来制作镜像文件的工具,其源代码在u-boot源码的tools目录下:mkimage.c。我们使用bootm命令加载的内核和根文件系统,都要用这个工具加上个头。

语法格式:mkimage [参数]

常用参数:

-A


CPU 架构,可选的值有:
“alpha”,”arm”,”x86″,”ia64″,”m6k8″,”microblaze”,”mips”,”mips64″,”nios”,”nios2″,”ppc”,”s390″,”sh”,”sparc”,”sparc64″,
“blackfin”,”avr32″
-O操作系统。可选的值有:
“4_4bsd”,”artos”,”esix”,”freebsd”,”irix”,”linux”,”lynxos”,”ncr”,”netbsd”,”openbsd”,”psos”,”qnx”,”rtems”,”sco”,”sloaris”,
“u-boot”,vxworks”
-T镜像类型。可选的值有:
“filesystem”,”firmware”,”firmware”,”kernel”,”multi”,”ramdisk”,”script”,”standalone”,”flat_dt”
-C镜像压缩类型。可选的值有:
“none”,”bzip2″,”gzip” none为没有压缩

参考实例

为内核加上u-boot引导所需要的文件头:

[root@linuxcool ~]# mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage zImage.img

指定CPU架构和操作系统:

[root@linuxcool ~]# mkimage -A arm -O linux -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage

指定压缩格式:

[root@linuxcool ~]# mkimage -A arm -O linux -C bzip2 -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage
]]>
iozone命令 – 进行linux下的硬盘性能测试 https://linuxcommand.p2hp.com/iozone Mon, 22 Jun 2020 07:58:43 +0000 https://linuxcommand.p2hp.com/?p=8053 iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。可以测试Read, write, re-read,re-write, read backwards, readstrided, fread, fwrite, random read, pread, mmap, aio_read,aio_write 等等不同的模式下的硬盘的性能。

语法格式:lozone [参数]

常用参数:

-biozone输出结果时将创建一个兼容Excel的二进制格式的文件。
-g设置测试时最大文件大小
-s设置测试时文件大小
-f 指定测试文件的名字,完成后会自动删除(这个文件必须指定你要测试的那个硬盘中)

参考实例

测试 /mnt/iozone 并输出表格:

[root@linuxcool ~]# ./iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls

指定块大小测试:

[root@linuxcool ~]# ./iozone -a -i 0 -i 1 -i 2 -s 8g -r 16m -Rb ./iozone.xls

挂载盘测试:

[root@linuxcool ~]# ./iozone -a -n 1g -g 4g -i 0 -i 1 -f /mnt/iozone -Rb ./iozone.xls
]]>
fio命令 – 对磁盘进行压力测试 https://linuxcommand.p2hp.com/fio Mon, 22 Jun 2020 07:57:33 +0000 https://linuxcommand.p2hp.com/?p=8055 fio命令来自于英文词组”Flexible IO Tester“的缩写, 其功能是用于对磁盘进行压力测试。硬盘I/O吞吐率是性能的重要指标之一,运维人员可以使用fio命令对其进行测试,测试又可以细分为顺序读写和随机读写两大类。

语法格式:fio [参数]

常用参数:

filename测试文件名称,通常选择需要测试的盘的data目录
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs指定单次io的块文件大小
bsrange提定数据块的大小范围
size指定每个线程读写的数据量

参考实例

进行随机读取测试:

[root@linuxcool ~]# fio -filename=linuxcool -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=10G -numjobs=10 -runtime=100 -group_reporting -name=mytest

进行随机写入测试:

[root@linuxcool ~]# fio -filename=linuxcool -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

进行顺序写入测试:

[root@linuxcool ~]# fio -filename=linuxcool -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
]]>
dmsetup命令 – 显示当前的device mapper的信息 https://linuxcommand.p2hp.com/dmsetup Mon, 22 Jun 2020 07:54:43 +0000 https://linuxcommand.p2hp.com/?p=8073 dmsetup是一个更加底层的逻辑卷管理工具。平时我们管理linux 上的逻辑卷,使用lvm相关的工具即可。lvs是更高级的管理逻辑卷的命令。但是,有时候会出现类似lvm删除不掉的lvm分区。我们可以使用dmsetup去删除。

语法格式:dmsetup [参数]

常用参数:

info提供有关 Device Mapper 设备概述
ls列出映射的设备的设备名称列表
status提供指定设备中每个目标的状态信息
deps指定设备的映射列表参考的设备提供(major,minor)对列表

参考实例

使用dmsetup 查看lv卷:

[root@linuxcool ~]# dmsetup ls

使用dmsetup 删除lv卷:

[root@linuxcool ~]# dmsetup remove vg--test-vg--lv

输出设备概述:

[root@linuxcool ~]# dmsetup info
]]>
mdadm命令 – 管理RAID磁盘阵列组 https://linuxcommand.p2hp.com/mdadm Sat, 13 Jun 2020 07:39:00 +0000 https://linuxcommand.p2hp.com/?p=7917 mdadm命令来自于英文词组“multiple devices admin”的缩写,其功能是用于管理RAID磁盘阵列组。作为Linux系统下软RAID设备的管理神器,mdadm命令可以进行创建、调整、监控、删除等全套管理操作。

语法格式:mdadm [参数] 设备名

常用参数:

-D显示RAID设备的详细信息
-A加入一个以前定义的RAID
-B创建一个没有超级块的RAID设备
-F选项监控模式
-G更改RAID设备的大小或形态
-I添加设备到RAID中,或从RAID中删除设备
-z组建RAID1、RAID4、RAID5、RAID6后从每个RAID成员获取的空间容量
-s扫描配置文件或/proc/mdstat以搜寻丢失的信息
-C把RAID信息写入每个成员超级块中
-v显示RAID创建过程中的详细信息
-B不把RAID信息写入每个成员的超级块中
-l指定RAID的级别
-n指定RAID中活动设备的数目
-f把RAID成员列为有问题,以便移除该成员
-r把RAID成员移出RAID设备
-a向RAID设备中添加一个成员
--re-add把最近移除的RAID成员重新添加到RAID设备中
-E查看RAID成员详细信息
-c创建一个RAID设备时默认为512kb
-R开始部分组装RAID
-S停用RAID设备,释放所有资源
-x指定初始RAID设备的备用成员的数量
--zero-superblock如果RAID设备包含一个有效的超级块,该块使用零覆盖

参考实例

使用四块硬盘设备创建一个指定名称的,级别为RAID10的磁盘阵列组:

[root@linuxcool ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看指定RAID磁盘阵列组设备的简要信息:

[root@linuxcool ~]# mdadm -Q /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

查看指定RAID磁盘整列组设备的详细信息:

[root@linuxcool ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Jan 13 08:24:58 2021
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Jan 14 04:49:57 2021
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host linuxprobe.com)
              UUID : 289f501b:3f5f70f9:79189d77:f51ca11a
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

将指定的硬盘从RAID磁盘阵列组中停止:

[root@linuxcool ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@linuxcool ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0

将指定的硬盘添加至RAID磁盘阵列组中:

[root@linuxcool ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb

彻底停用一个RAID磁盘阵列组:

[root@linuxcool ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
]]>
lvchange命令 – 更改逻辑卷属性 https://linuxcommand.p2hp.com/lvchange Sat, 13 Jun 2020 07:37:16 +0000 https://linuxcommand.p2hp.com/?p=7901 lvchange命令的作用是可以更改一个逻辑卷的属性。

逻辑卷是一种device mapper技术,即可以将一个或者多个底层块设备组织成一个逻辑设备,从而提供动态改变大小,不停机情况下添加磁盘,快照以及备份 等功能,使得对于磁盘的管理更加方便。

逻辑卷的体系分为3个层次: 底层的PV,中层的VG,最上层的LV。

语法格式:lvchange [参数] [逻辑卷路径]

常用参数:

-p<r|rw>更改访问权限为只读(r)或读/写(rw)
-C<y|n>为逻辑卷试图设置或重置连续分配策略
--monitor<y|n>如果dmeventd已安装,启动或停止监控镜像或快照逻辑卷
-M<y|n>设置为y以使次要号码指定为永久
-a<a|e|1|y|n>控制使用的逻辑卷的可用性
--refresh如果逻辑卷被激活,重新加载其元数据
--noudevsync禁用udev同步
-r<ReadAheadSectors|auto|none>设置预读比逻辑卷的扇区数,可以设置为ReadAheadSectors、auto、none
--minor<次要号码>设置次要号码
--resync强制镜像完全同步。在正常情况下不需要这个选项,因为同步是自动发生的
--sysinit表明在可写的文件系统可用之前,从早期的系统初始化脚本

参考实例

将逻辑卷/dev/vg1/linuxcool_v1的状态设置为不可用:

[root@linuxcool ~]# lvchange -a y /dev/vg1/linuxcool_v1

将逻辑卷linuxcool_v1的访问权限设置为只读:

[root@linuxcool ~]# lvchange -p r vg1/linuxcool_v1

将逻辑卷linuxcool_v1的访问权限设置为读写:

[root@linuxcool ~]# lvchange -p rw vg1/linuxcool_v1
]]>
lvmconf命令 – LVM配置修改 https://linuxcommand.p2hp.com/lvmconf Sat, 13 Jun 2020 07:26:36 +0000 https://linuxcommand.p2hp.com/?p=7904 lvmconf命令的作用是可以修改在LVM配置文件中锁定的配置。

LVM全拼为Logical Volume Manager ,逻辑卷管理LVM是一个多才多艺的硬盘系统工具,无论在linux或者其他类似的系统,都是非常的好用。

传统分区使用固定大小分区,重新调整大小十分麻烦,但是LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘,可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷,LVM并不需要重启就可以让内核知道分区的存在。

语法格式:lvmconf [参数]

常用参数:

-- -disable-cluster设置locking_type为默认的非聚集型
-- -lockinglibdir<目录>指定locking_library锁定库目录
-- -enable-cluster在此系统上设置locking_type到默认集群类型
-- -file<配置文件>将更改应用到指定的配置文件,而不是默认的/etc/lvm/lvm.conf文件
-- -lockinglib<lib>如果使用一个外部锁定类型,则设置外部locking_library锁定库进行装载

参考实例

设置locking_type为默认的非聚集型:

[root@linuxcool ~]# lvmconf --disable-cluster

指定locking_library锁定库目录:

[root@linuxcool ~]# lvmconf --lockinglibdir /linuxcool

设置locking_type到默认集群类型:

[root@linuxcool ~]# lvmconf --enable-cluster
]]>
lvmdump命令 – 转储LVM2有关的各种信息 https://linuxcommand.p2hp.com/lvmdump Sat, 13 Jun 2020 07:26:22 +0000 https://linuxcommand.p2hp.com/?p=7908 lvmdump命令的作用是可以用来转储LVM2有关的各种信息。

LVM2是在linux上提供逻辑卷管理功能的用户空间工具集。它可以与原始LVM工具集向下兼容。

要使用LVM2需要三个条件:内核中的device-mapper,用户空间device-mapper支持库(libdevmapper)和用户空间LVM2工具。

语法格式:lvmdump [参数]

常用参数:

-d<目录>转储到一个目录,而不是默认情况下的tar压缩包
-c如果 clvmd 正在运行,也收集集群数据
-a高级集合
-s收集系统信息和上下文
-p转储包含当前由守护程序监视的所有正在进行的操作以及部分历史记录
-m从系统可见的所有pvs中生成1:1的元数据区域转储

参考实例

转储LVM2有关的各种信息:

[root@linuxcool ~]# lvmdump

收集系统信息和上下文:

[root@linuxcool ~]# lvmdump -s

将信息转储到一个目录:

[root@linuxcool ~]# lvmdump -d /linuxcool
]]>