硬盘是计算的重要组成部件之一,硬盘为操作系统提供持久话存储的功能,在Linux硬盘设备的性能和好坏可能关系到生成线的安全和用户体验等等。熟练的掌握硬盘管理相关的信息能让我们处理起这些问题来得心应手。

Linux中最为重要到的哲学就是一切皆文件,硬盘设备也不例外,在Linux系统中硬盘设备一般存放在/dev/下面SATA、SCSI等接口类型的硬盘使用sd表示,第一块sd的硬盘表示为/dev/sda,第二块sd的硬盘表示为/dev/sdb。IDE硬盘使用hd表示,第一块hd的硬盘表示为/dev/hda,第二块hd的硬盘表示为/dev/hdb。以此类推。

下面介绍Linux下和硬盘相关的命令(不同发型版命令可能不太相同)

mount          挂载指定设备
格式:mount
-t 文件系统类型(通常mount命令会自动识别) 设备路径 挂载点
示例:
    mount /dev/sda1 /mnt/ #将/dev/sda1 挂载到/mnt  
    mount /dev/cdrom /media/       #将cdrom(光盘设备)挂载到/media
    mount -a #重读/etc/fstab文件


umount 卸载指定设备
  格式:umount 设备/挂载点
  示例:
umount /dev/sda1 #卸载/dev/sda1 卸载到整个设备,比如说这个分区一共挂载到了/mnt /test /test1那么这三个挂载点的挂载都将卸掉
umount /media/ #卸载挂在/media目录上面的设备
df  查看当前系统挂载的分区情况
格式
df 参数
常用参数
--help 查看帮助信息
-i 显示inode情况
-h 自动计算显示的文件系统大小单位
-k 以kb方式大小输出文件系统大小
-l 只显示本地文件系统的信息
-T 显示文件系统类型
-t 只显示指定的文件系统
tune2fs   调整文件系统属性
格式:
tune2fs 参数 分区
常用参数: -j 在不损坏原有数据的情况下升级ext2为ext3 -L 设定或修改卷标(卷名) -m 调整预留给超级用户(root)的百分比,默认为5% -c 指定挂载次数达到n次之后进行自检,0或-1表示关闭此功能 -i 每次挂载使用多少天之后进行自检,0或-1表示关闭此功能 -l 显示超级块中的信息
smartctl:(不支持虚拟机或云主机等服务器)
    Smartctl是类Unix系统下SMART的命令行工具,它用于打印SMART自检和错误日志,启用或禁用SMRAT自动检测,以及初始化设备自检等操作
    Smartctl对于Linux物理服务器十分有用,在这些服务器上,可以对智能磁盘进行错误检查,并将与硬件RAID相关的磁盘信息摘录下来

    安装:
        yum -y install smartmontools

    常用选项:
        -i                             打印设备的简略信息,如序列号,转速等
        -s                             设置是否开启smart功能
        -a                             输出关于指定硬盘的所有smart信息
        -H                             打印设备健康状况
        -t  子参数                      执行测试操作,在测试时会对硬盘的性能有一点影响
            常用子参数:
                offline                   进行脱机测试
                short                     运行短时间的自我测试(一般不超过10分钟)
                long                      运行扩展的自我测试(一般时间较长1小时以上)
                select,N-M,               选择对指定范围的磁盘块进行测试而不是整块硬盘


    示例:
        smartctl -i /dev/sdb          检查SMART是否启用,输出的最后一行为Device does not support SMART表示不支持SMART,输出的最后一行为SMART support is: Disabled表示禁用SMART,输出的最后一行为SMART support is: Enabled表示已启用
        smartctl -s on /dev/sdb       启用硬盘的SMART功能
        smartctl -s off /dev/sdb      禁用硬盘的SMART功能
        smartctl -a /dev/sdb          查看硬盘的详细信息
            关键字段说明:
                Raw_Read_Error_Rate:          底层数据读取错误率
                Rotation Rate:                硬盘转数信息,固态硬盘显示Solid State Device
                User Capacity:                硬盘容量
                Start_Stop_Count:             硬盘加电次数
                Power_On_Hours:               硬盘累计使用时长(小时)
                Power-Off_Retract_Count:      非正常关闭硬盘的次数(突然关闭,或者强制热插拔硬盘的次数)
                Temperature_Celsius:          硬盘温度
                Seek_Error_Rate:              寻道错误率

        smartctl -H  /dev/sdb             获取设备的健康状态
        smartctl -t short /dev/sdb        进行短时间的智能测试
        smartctl -l selftest /dev/sdb     查看硬盘的自检结果
        smartctl -c /dev/sdb              计算测试时间的大概值
        smartctl -l error /dev/sdb        打印硬盘错误日志
hdparm:
    hdparm命令提供了一个命令行的接口用于在驱动级别读取和设置IDE或SCSI硬盘参数

    安装:
        yum -y install hdparm

    命令格式:
        hdparm 参数 设备


    常用参数:
        -h                      查看帮助信息
        -I                      获取硬盘的详细信息,如序列号,硬盘转述,接口类型等
        -t                      评估硬盘的读取速度(不经过硬盘cache)
        -T                      评估硬盘快取的读取效率(内存中缓存的频繁使用的数据)
        -a                      设置硬盘的预读取功能,对于读取大文件有显著的性能提升
        -A 0/1                  启动或关闭读取文件时的快取功能
        -f                      将内存缓冲区的数据写入硬盘,并清空缓冲区(类似雨sync命令)
        --direct                通常和-t或-T参数一起使用,通过原始io测试硬盘读取速度,更好地指示原始设备和驱动程序的性能
        --drq-hsm-error         非常危险的命令,仅在测试环境中模拟故障时使用,生成环境中千万不要使用
        -g                      显示硬盘的磁轨,磁头,磁区等参数
        -i                      显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供
        -I                      直接读取硬盘所提供的硬件规格信息(从驱动器读取读取硬盘信息)
        --make-bad-sector       非常危险的命令,仅在测试环境中模拟故障时使用,生成环境中千万不要使用(故意创建一个坏扇区,用于测试raid等设备检查扇区的功能)
        -r                      将硬盘设置为自读模式
        -S                      设定硬盘进入省电模式前的等待时间
        -y                      强制IDE驱动器立即进入待机模式
        -Y                      强制IDE驱动器立即进入休眠模式
        -w                      设置硬盘的写入快取


    示例:
        hdparm -I /dev/sha                #获取硬盘的详细信息
        hdparm -C /dev/sda                #检测硬盘的电源管理模式
        hdparm -t                         #测试硬盘的读取速度(不经过cache)
        hdparm -T                         #测试硬盘快取的读取速度
        hdparm -Tt --direct /dev/sda      #测试硬盘的真实读取速度
  其他的一些相关命令:

fsck 检查并修复linux中的文件系统
格式:
fsck 参数 文件系统分区
常用参数: -t 指定文件系统类型 -a 自动修复 e2fsck 专用于修复ext系列的文件系统
格式:
e2fsck 参数 文件系统分区 常用参数:
-f 强制检查 -p 自动修复 mke2fs 专门管理ext系列的文件系统
格式:
mke2fs 参数 文件系统分区
常用参数: -j 创建ext3类型的文件系统 -b 指定块大小,默认为4096,可以值有,1024、2048.4096 -L 指定卷标 -m 指定预留给超级用户的块数百分比 -E 指定额外文件系统属性 blkid 查看当前磁盘设备的相关属性 格式:
blkid 文件系统分区
字段说明:
UUID:磁盘的唯一标识符 TYPT:文件系统类型 LABEL:卷标 e2label 查看或重新定义卷标 格式:
e2label 文件系统分区 [卷标名]

示例:
e2label /dev/sda1 查看卷标名
e2label /dev/sda1 test 设置卷标名

其他命令: lscpu 用于查询CPU信息 lshw 用于显示硬件信息表 hwinfo 用于查询硬件信息 lsppci 用于列出PCI总线的信息以及连接到PCI总线上的设备信息 lsblk 用于列出块设备的信息 lsscsi 用于列出SCSI的设备信息