3.Linux 磁盘管理命令

3.9 mkbootdisk:建立启动盘

  • 作用:mkbootdisk 命令用来建立系统的启动盘。

  • 用法:mkbootdisk [选项] [--device]

  • 主要选项如下:

    命令 描述
    --device<devicefile> 指定设备,默认是/dev/fd0。
    --mkinitrdargs<参数> 设置 mkinitrd 的参数。
    --noprompt 一般情况下 kbootdisk 会提示用户插入磁盘,使用此参数可省略此过程。
    --verbose 执行时显示详细的信息。
    --iso mkbootdisk 制作一个 ISO 映象文件。
    --version-v 显示版本信息。
    --size<size> 指定启动文件大小,默认是 1.44MB。

案例练习

动手快速制作一张启动盘,步骤如下:

① 查看内核版本。

#uname –r 
2.6.20-8

② 自动完成启动盘制作。

#mkbootdisk --device /dev/fd0 --noprompt 2.6.20-8

如果没有任何错误提示,就表示操作成功。

3.10 fsck:检查文件系统

  • 作用:fsck 命令用来检查文件系统并尝试修复错误。

  • 用法:fsck [选项] [-t fstype] device

  • 主要选项如下:

    命令 描述
    -a 自动修复文件系统,不询问任何问题。
    -A 依照/etc/fstab 配置文件的内容,检查文件内所列的全部文件系统。
    -N 不执行指令,仅列出实际执行会进行的动作。
    -P 当搭配“-A”参数使用时,会同时检查所有的文件系统。
    -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。
    -R 当搭配“-A”参数使用时,会略过“/”目录的文件系统不予检查。
    -s 依次执行检查作业,而非同时执行。
    -t fstype 指定要检查的文件系统类型。
    -T 执行 fsck 指令时,不显示标题信息。
    -V 显示指令执行过程。

fsck 是 Linux 各文件系统检查程序(fsck.fstype)的前端程序。出于对 Linux 各个 发行版本的兼容性,检查 Ext2/Ext3 文件系统的命令可能有不同的命令名称,实际功 能是相同的,如 fsck.Ext2、fsck.Ext3、E2fsck 都用来检查 Ext2/Ext3 文件系统。

e2fsck 执行的传回值及代表意义如下:

0:没有任何错误发生。 1:文件系统发生错误,并且已经修正。 2:文件系统应当重启。 4:文件系统发生错误,但没有修正。 8:运行时发生错误。 16:使用的语法发生错误。 128:共享的函数库发生错误。

案例练习

检查设备/dev/sda1

# fsck /dev/sda1 

3.11 blockdev:从命令行调用区块设备控制程序

  • 作用:在命令行调用“ioxtls”函数,以实现对设备的控制。

  • 用法:blockdev -V blockdev –report [设备] blockdev [-v|-q] 命令 设备

  • 主要选项如下:

    命令 描述
    -V 打印版本号并退出。
    -q 安静模式。
    -v 详细信息模式。
    --report 打印报告指定设备。

    可用命令如下:

    命令 描述
    --getsz 获得 512 字节扇区的大小。
    --setro 设置只读。
    --setrw 设置读/写。
    --getro 获得只读。
    --getdiscardzeroes 获取忽略零数据支持状态。
    --getss 获得逻辑块(扇区)大小。
    --getpbsz 获得物理块(扇区)大小。
    --getiomin 获得最小 I/O 大小。
    --getioopt 获得最优 I/O 大小。
    --getalignoff 获得对齐偏移字节数。
    --getmaxsect 获得每次请求的最大扇区数。
    --getbsz 获得块大小。
    --setbsz<bytes> 设置块设备大小。
    --getsize 获得 32bit 扇区数量(已废弃,请使用--getsz)。
    --getsize64 获得字节大小。
    --setra<sectors> 设置 readahead。
    --getra 获取 readahead。
    --setfra<sectors> 设置文件系统 readahead。
    --getfra 获取文件系统 readahead。
    --flushbufs 刷新缓存。
    --rereadpt 重新读取分区表。

案例练习

(1)设置设备为只读

# blockdev --setro /dev/hda4

(2)读取设备是否为只读

#blockdev --getro /dev/hda4

3.12 hdparm:设置磁盘参数

  • 作用:hdparm 命令用来检测、显示与设定硬盘的参数。

  • 用法:hdparm[选项] [设备]

  • 主要选项如下:

    命令 描述
    -a 设定读取文件时,预先存入块区的分区数。
    -A 启动或关闭读取文件时的快取功能,可选 0 或 1。
    -c 设定 IDE 硬盘 32 位 I/O 模式。
    -C 检测 IDE 硬盘的电源管理模式。
    -d 设定磁盘的 DMA 模式,可选 0 或 1。
    -f 将内存缓冲区的数据写入硬盘,并清空缓冲区。
    -g 显示硬盘的磁轨、磁头、磁区等参数。
    -h 显示帮助信息。
    -i 显示硬盘的硬件信息,这些信息是在开机时由硬盘本身所提供的。
    -I 直接读取硬盘所提供的硬件规格信息。
    -k 重新设定硬盘参数时,保留-dmu 参数的设定,可选 0 或 1。
    -K 重新设定硬盘参数时,保留-APSWXZ 参数的设定,可选 0 或 1。
    -m<扇区数目> 设定硬盘多重分区存取的分区数。
    -n 是否忽略硬盘写入时所发生的错误,可选 0 或 1。
    -p<PIO 模式> 设定硬盘的 PIO 模式,可选 0、1、2、3、4、5。
    -P<扇区数目> 设定硬盘内部快速存取的分区数。
    -q 执行后续的参数时,不在屏幕上显示任何信息。
    -r 设定硬盘的读/写模式,可选 0 或 1。
    -S 设定硬盘进入省电模式前的等待时间。
    -t 检测硬盘的读取数据效率。
    -T 检测硬盘快速存取(即寻道时间)的读取效率。
    -u 在硬盘存取数据时,是否允许其他中断要求同时执行,可选 0 或 1。
    -v 显示硬盘的相关设定。
    -W 设定硬盘的写入快速存取,可选 0 或 1。
    -X<传输模式> 设定硬盘的传输模式。
    -y 使 IDE 硬盘进入省电模式。
    -Y 使 IDE 硬盘进入睡眠模式。
    -Z 关闭 Seagate 硬盘的自动省电功能。
    -z 重新读取硬盘分区表。

    hdparm 命令是进行硬盘性能调谐的一个最常用的命令,使用这个命令前,需要对 硬盘的硬件知识有一定了解,另外需要做好数据备份。

案例练习

使用 hdparm 命令来调谐磁盘性能,步骤如下:

① 查看默认设置

#hdparm –v /dev/hda

② 测试并且记录默认设置的磁盘性能。

#hdparm –tT /dev/hda

③ 重新设定硬盘各项参数

#hdparm -u1 -d1 -m16 -c3 -X66 /dev/hda

-u1:Linux 在处理磁盘中断时,可以响应其他中断相关的任务。 -d1:打开 DMA 模式。 -m16:改变硬盘的多路扇区的读功能。-m16 可以使得硬盘在一次 I/O 中断中读入 16 个扇区的数据。 -c3:把硬盘的 16 位模式转换为 32 位模式(32 bit mode w/sync)。 -X66:启用 DMA66 数据传输模式。

④ 记录修改设置后的磁盘性能,对比数据。如果磁盘的性能有所改进,则保存设置

#hdparm –t1 /dev/hda