zoukankan      html  css  js  c++  java
  • linux下磁盘相关工具(待整理)

    一、概述:

    • fsck  
    • tune2fs
    • mke2fs
    • badblocks
    • mkfs*
    • fdisk
    • mount
    • umount
    • mknod
    • e2label
    • blkid
    • hdparm
    • mkswap
    • swapon
    • smartctl  #yum install smartmontools

    二、

      

    (1): fsck:检查文件系统并尝试修复错误。当文件系统发生错误时,可用fsck指令尝试加以修复。但是注意,在没有错误的系统上慎用,不然有可能引起系统文件错误。一般都是在单用户模式中或系统启动时使用。

    http://leeforget.blog.51cto.com/6950397/1371380

    各参数说明:

    -a自动修复文件系统,不询问任何问题。

    -A依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。

    -N不执行指令,仅列出实际执行会进行的动作。

    -P当搭配"-A"参数使用时,则会同时检查所有的文件系统。

    -r采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。

    -R当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查。

    -s依序执行检查作业,而非同时执行。

    -t<文件系统类型> 指定要检查的文件系统类型。

    -T执行fsck指令时,不显示标题信息。

    -V显示指令执行过程。

    -of 对系统进行强制检查,不论系统是否在clean等状态

    -op 非交互式检查并修复文件系统,对有的问题则立即退出

    -ob=xx 用来修复超级块的错误,就是将备份的超级块内容拷入超级块中。solaris对超级块很重视,它的备份有很多,一般的b=32就可以了,如果不行可以使用命令newfs -N /dev/rdsk/cxtxdxsx来查看超级块的位置,其中任何一个备份块都可使用

    原理:大多数系统设置为启动时自动运行fsck ,因此任何错误将在系统使用前被检测到(并根据希望修正)。自动检查只对启动时自动mount的文件系统发生作用,使用fsck 手工检查其他文件系统,比如软盘。使用有错误的文件系统可能使问题变得更坏。如果系统正常关闭,几乎从不发生错误,因此有一些方法可以不进行检查。如果文件/etc/fastboot存在,就不检查。另外,如果ext2文件系统在超级块中有一个特定的标记告知该文件系统在上次mount后没有正常unmount. 如果标记指出unmount正常完成(假设正常unmount指出没问题),e2fsck (fsck 的ext2文件系统版) 就不检查系统。/etc/fastboot 是否影响系统依赖于你的启动手稿,但ext2标记则在你使用e2fsck 时发生作用--基于一个e2fsck选项(参阅e2fsck 手册页)

    2):tune2fs:tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。

    http://czmmiao.iteye.com/blog/1749232

    常用选项说明:

    -l :查看文件系统信息

    -c :max-mount-counts:设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检

    -C :mount-count:设置文件系统挂载的次数,如果同时对一个文件系统指定了-c选项且-c参数的值大于-C,则将在下次启动时进行强制自检

    -i :interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]

    -m :reserved-blocks-percentage 保留块的百分比

    -j :将ext2文件系统转换为ext3类型的文件系统,ext2可以转ext3 但不可以转回,转回数据丢失

    -L :volume-label 类似e2label的功能,可以修改文件系统的标签

    -r :reserved-blocks-count 调整系统保留空间

    -o :[^]mount-option[,...] Set or clearthe indicated default mount options in the filesystem. 设置或清除默认挂载的文件系统选项

    -I :设置自检天数

    -m :设置预留空间

    -U :要设定 UUID 可以使用命令「tune2fs-U UUID 装置档案」,(要显示各储存装置的 UUID,可以使用命令

    -e :error_behavior

    下面列出3种发现错误后的行为:

    Continue :继续执行检测

    remount-ro :重新以只读方式挂接

    Panic :产生一次系统崩溃(panic)

    注意:默认情况下如果系统检测到文件系统有错误,会设置文件系统在下次启动的时候执行fsck检测。-c和-C参数可以用来设置文件系统在下次重启的时候强制继续执行fsck。-i和-c参数也可以同时设置在一个文件系统上。请注意,如果文件系统达成max_mount_counts或者check_interval的某一个条件,都会执行文件系统检查。

    举例:

    设置强制检查前文件系统可以挂载的次数

    tune2fs -c 30 /dev/hda1

    关闭强制检查挂载次数限制

    tune2fs -c -l /dev/hda1

    10天后检查

    tune2fs -i 10 /dev/hda1

    1天后检查

    tune2fs -i 1d /dev/hda1

    3周后检查

    tune2fs -i 3w /dev/hda1

    半年后检查

    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分区的保留空间为10%

    tune2fs -m 10 /dev/hda1

    设置/dev/hda1挂载选项,启用Posix Access Control Lists和用户指定的扩展属性

    tune2fs -o acl,user_xattr /dev/hda1

    开机取消自检

    tune2fs -l /dev/sdb1 | grep -E 'Maximum mount count:|Checkinterval'

    tune2fs -i 0 -c 0 /dev/sdb1

    更改设备为指定的uuid

    tune2fs -U 51f7e9a4-5154-4e29-a7a6-208417290b85 /dev/sda1

    -U 的参数如果为 random 表示直接产生一个随意的新 UUID:

    tune2fs -U random /dev/sda1

    -U 的参数如果为 time 表示直接依当前时间产生一个新的 UUID:

    tune2fs -U time /dev/sda1

    -U 的参数如果为 clear 表示清除档案系统的 UUID:

    tune2fs -U clear /dev/sda1

    缩小保留空间已扩大使用容量

    #tune2fs -l /dev/sdd12|grep -i 'reserved block count'

    Reserved block count:7984

     

    (4):badblockslinux系统检查磁盘装置中损坏的区块。

    http://man.linuxde.net/badblocks

    http://linux.cn/blog-6515-1012.html

    语  法:badblocks [-svw][-b <区块大小>][-o <输出文件>][磁盘装置][磁盘区块数][启始区块]

    注意:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。

    硬盘是一个损耗设备,当使用一段时间后可能会出现坏道等物理故障。电脑硬盘出现坏道后,如果不及时更换或进行技术处理,坏道就会越来越多,并会造成频繁死机和数据丢失。最好的处理方式是更换磁盘,但在临时的情况下,应及时屏蔽坏道部分的扇区,不要触动它们。badblocks就是一个检查坏道位置的工具。

    命令参数

    badblocks使用格式为:

    引用

    badblocks[ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i

    input_file] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ]

    device[ last-block ] [ start-block ]

    参数含义是:

    引用

    -bblocksize

    指定磁盘的区块大小,单位为字节,默认值为“block 4K ”(4K/block)

    -cblocksize

    每个区块检查的次数,默认是16次

    -f

    强制在一个已经挂载的设备上执行读写或非破坏性的写测试操作

    (我们建议先umount设备,然后再进行坏道检测。仅当/etc/mtab出现误报设备挂载错误的时候可以使用该选项)

    -ifile

    跳过已经显示在file文件中的坏道,而不进行检测(可以避免重复检测)

    -ofile

    把检测结果输出到file文件

    -p number

    重复搜寻设备,直到在指定通过次数内都没有找到新的坏块位置,默认次数为0

    -s

    在检查时显示进度

    -t pattern

    通过按指定的模式读写来检测区块。你可以指定一个0到ULONG_MAX-1的十进制正值,或使用random(随机)。

    如果你指定多个模式,badblocks将使用第一个模式检测所有的区块,然后再使用下一个模式检测所有的区块。

    Read-only方式仅接受一个模式,它不能接受random模式的。

    -v

    执行时显示详细的信息

    -w

    对每个区块都先写入,然后再从它读取信息

    [device]

    指定要检查的磁盘装置。

    [last-block]

    指定磁盘装置的区块总数。

    [start-block]

    指定要从哪个区块开始检查

    示例

    badblocks以4096的一个block,每一个block检查16次,将结果输出到“hda-badblocks-list”文件里

    #badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list

    hda-badblocks-list”是个文本文件,内容如下:

    引用

    #cat hda-badblocks-list

    51249

    51250

    51251

    51253

    51254

    ……

    61245

    ……

    可以针对可疑的区块多做几次操作。下面,badblocks以4096字节为一个“block”,每一个“block”检查1次, 将结果输出到“hda-badblocks-list.1”文件中,由第51000 block开始,到63000 block结束

    #badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000

    这次花费的时间比较短,硬盘在指定的情况下在很短的时间就产生“嘎嘎嘎嘎”的响声。由于检查条件的不同,其输出的结果也不完全是相同的。重复几次同样的操作,因条件多少都有些不同,所以结果也有所不同。进行多次操作后,直到产生最后的hda-badblock-list.final文件。

    其他

    1、fsck使用badblocks的信息

    badblocks只会在日志文件中标记出坏道的信息,但若希望在检测磁盘时也能跳过这些坏块不检测,可以使用fsck的-l参数:

    #fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1

    2、在创建文件系统前检测坏道

    badblocks可以随e2fsck和mke2fs的-c删除一起运行(对ext3文件系统也一样),在创建文件系统前就先检测坏道信息:

    #mkfs.ext3 -c /dev/hda1

    代码表示使用-c在创建文件系统前检查坏道的硬盘。

    这个操作已经很清楚地告知我们可以采用“mkfs.ext3 -c”选项用“read-only”方式检查硬盘。这个命令会在格式化硬盘时检查硬盘,并标出错误的硬盘“block”。用这个方法格式化硬盘,需要有相当大的耐心,因为命令运行后,会一个个用读的方式检查硬盘。

    badblocks -s -v -o sdbbadblocks.log /dev/sdb

    这样就可以对硬盘进行只读扫描,自动获取硬盘块数目并扫描全部块,将扫描日志输出到屏幕同时记录在sdbbadblocks.log文件中。

    badblocks -s -v -o sdbbadblocks.log /dev/sdb END START

    由于扫描速度比较低,一次不一定能扫完,可以分多次进行。将END和START换成结束和开始的块的编号就可以了。

    badblocks -w -s /dev/sdb END START

    如果找到了坏道,可以进行写入扫描进行修复。写入扫描遇到坏道的时候会自动重映射。写入扫描会覆盖原有数据,所以请先备份。写入扫描速度很低,所以应该只扫描只读扫描时候发现错误的部分。-w参数容易导致磁盘已有数据丢失,注意!

    (5):mkfs在特定的分区上建立linux文件系统,mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。例如,若在"-t" 参数中指定ext2,则mkfs会调用mke2fs来建立文件系统。

    http://my.oschina.net/aiguozhe/blog/63450

    例子:

    在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :

    # mkfs -V -tmsdos -c /dev/hda5

    将sda6分区格式化为ext3格式

    # mfks -t ext3 /dev/sda6

    注意,这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32;msdos 等.

    # mkfs.ext3 /dev/sda6 注:把该设备格式化成ext3文件系统

    # mke2fs -j /dev/sda6 注:把该设备格式化成ext3文件系统

    # mkfs.ext2 /dev/sda6 注:把该设备格式化成ext2文件系统

    # mke2fs /dev/sda6 注:把该设备格式化成ext2文件系统

    # mkfs.reiserfs /dev/sda6注:把该设备格式化成reiserfs文件系统

    # mkfs.vfat /dev/sda6 注:把该设备格式化成fat32文件系统

    # mkfs.msdos /dev/sda6 注:把该设备格式化成fat16文件系统,msdos文件系统就是fat16;

    # mkdosfs /dev/sda6 注:把该设备格式化成fat16文件系统,同mkfs.msdos

    (6):fdisk进行硬盘分区

    fdisk [-b <分区大小>][-uv][外围设备代号] 或fdisk [-l][-b <分区大小>][-uv][外围设备代号...] 或 fdisk [-s <分区编号>]

    http://linux008.blog.51cto.com/2837805/548711

    http://blog.sina.com.cn/s/blog_5f2ca1ed0100k9ok.html

    (7):mount可以使用mount命令挂载光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX NFS网络共享等。

    http://zhouliang.pro/2014/05/23/linux-mount-command/

    命令格式:

    mount [-t vfstype] [-o options] device dir

    mount-o<选项>-t<文件系统类型><磁盘路径><挂载点>

      1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

      光盘或光盘镜像:iso9660

      DOS fat16文件系统:msdos

      Windows 9x fat32文件系统:vfat

      Windows NT ntfs文件系统:ntfs

      Mount Windows文件网络共享:smbfs

      UNIX(LINUX) 文件网络共享:nfs

      2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:

      loop:用来把一个文件当成硬盘分区挂接上系统

      ro:采用只读方式挂接设备

      rw:采用读写方式挂接设备

      iocharset:指定访问文件系统所用字符集

      3.device 要挂接(mount)的设备。

    4.dir设备在系统上的挂接点(mount point)。

    (8)umount用于卸载已挂载的文件系统

    http://blog.sina.com.cn/s/blog_458a36dd0101f4hy.html

    参数说明:

    -a 卸除/etc/mtab中记录的所有文件系统。

    -h 显示帮助。

    -n 卸除时不要将信息存入/etc/mtab文件中。

    -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。

    -t<文件系统类型> 仅卸除选项中所指定的文件系统。

    -v 执行时显示详细的信息。

    -V 显示版本信息。

    Options for the umountcommand:

    -VPrint version and exit.

    -h Print help message and exit.

    -v Verbose mode.

    -n Unmount without writing in /etc/mtab.

    -r In case unmounting fails, try to remountread-only.

    -d In case the unmounted device was a loopdevice, also free this

    loop device.

    -i Don'tcall the /sbin/umount.<filesystem>helper even if it

    exists. By default/sbin/umount.<filesystem> helper is called if

    one exists.

    -a Allof the file systems described in /etc/mtab areunmounted.

    (With umount version 2.7 and later: theproc filesystem is not

    unmounted.)

    -t vfstype

    Indicate that the actions should only be taken on filesystems

    of the specified type. More than one type may be specified in a

    comma separated list. The list of file system types can be pre-

    fixed with no to specify the filesystem types onwhich no

    action should be taken.

    -O options

    Indicate that the actions should only be taken on filesystems

    with the specified options in /etc/fstab. More than one option

    typemay be specified in a comma separated list. Each option

    can be prefixed with no to specify optionsfor which no action

    should be taken.

    -f Force unmount (in case of an unreachableNFS system). (Requires

    kernel 2.1.116 or later.)

    -l Lazy unmount. Detach the filesystem fromthe filesystem hierar-

    chy now, and cleanup all references tothe filesystem as soon as

    it is not busy anymore. (Requires kernel 2.4.11 or later.)

    (9):mknod命令创建特殊文件(FIFO)管道文件。用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。

    http://www.cnblogs.com/hnrainll/archive/2011/06/10/2077583.html

    (10):e2label命令用于设定分区的label

    e2label 分区 [新label]

    如果后面指定新label则为分区设定新label;如果后面不指定label,则显示分区的当前label。

    http://blog.csdn.net/topgun_chenlingyun/article/details/8030512

    (11):blkid命令用法

    http://www.cnblogs.com/dkblog/archive/2011/08/30/2159630.html

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

    (12):hdparm命令,在linux中是用于测试硬盘速度及其它信息的命令,很实用。

    补充说明:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。

    http://www.jbxue.com/LINUXjishu/9159.html

    -a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。

    -A<0或1> 启动或关闭读取文件时的快取功能。

    -c 设定IDE32位I/O模式。

    -C 检测IDE硬盘的电源管理模式。

    -d<0或1> 设定磁盘的DMA模式。

    -f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。

    -g 显示硬盘的磁轨,磁头,磁区等参数。

    -h 显示帮助。

    -i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。

    -I 直接读取硬盘所提供的硬件规格信息。

    -k<0或1> 重设硬盘时,保留-dmu参数的设定。

    -K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。

    -m<磁区数> 设定硬盘多重分区存取的分区数。

    -n<0或1> 忽略硬盘写入时所发生的错误。

    -p 设定硬盘的PIO模式。

    -P<磁区数> 设定硬盘内部快取的分区数。

    -q 在执行后续的参数时,不在屏幕上显示任何信息。

    -r<0或1> 设定硬盘的读写模式。

    -S<时间> 设定硬盘进入省电模式前的等待时间。

    -t 评估硬盘的读取效率。

    -T 平谷硬盘快取的读取效率。

    -u<0或1> 在硬盘存取时,允许其他中断要求同时执行。

    -v 显示硬盘的相关设定。

    -W<0或1> 设定硬盘的写入快取。

    -X<传输模式> 设定硬盘的传输模式。

    -y 使IDE硬盘进入省电模式。

    -Y 使IDE硬盘进入睡眠模式。

    -Z 关闭某些Seagate硬盘的自动省电功能。

    举例:

    [root@ff110~]# hdparm /dev/sda


    /dev/sda:
    IO_support = 0 (default 16-bit)
    readonly = 0 (off)
    readahead = 256 (on)
    geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]

    (13):mkswap命令设置交换区(swaparea)

    mkswap[-cf][-v0][-v1][设备名称或文件][交换区大小]

    mkswap可将磁盘分区或文件设为Linux的交换区。

    参  数:

    -c 建立交换区前,先检查是否有损坏的区块。

    -f 在SPARC电脑上建立交换区时,要加上此参数。

    -v0 建立旧式交换区,此为预设值。

    -v1 建立新式交换区。

    [交换区大小] 指定交换区的大小,单位为1024字节。

    http://man.linuxde.net/mkswap

    http://www.linuxso.com/command/mkswap.html

    (14):swapon命令用于开启linux交换分区swap

    http://www.linuxso.com/command/swapon.html

    http://pengyl.blog.51cto.com/5591604/1259765

    参  数:-a自动启动所有SWAP装置

    -s 显示简短的装置讯息

    [root@localhost ~]# swapon-s

    Filename Type SizeUsed Priority

    /dev/sda3 partition 2097144 0-1

    /home/swapfile file 5242872 0 -2

    /dev/sdb1 partition 5253212 0-3

    #等价于

    [root@localhost ~]# cat/proc/swaps

    Filename Type SizeUsed Priority

    /dev/sda3 partition 2097144 0-1

    /home/swapfile file 5242872 0 -2

    /dev/sdb1

    (15):smartctl命令硬盘的SMART是S.M.A.R.T.的缩写,全称是“Self-Monitoring, Analysisand Reporting Technology”,中文意思是“自我监测分析与报告技术”,它可以对硬盘的温度、内部电路、盘片表面介质材料等进行监测,力求及时分析出硬盘可能发 出的问题,并发出警告,从而保护数据不受损失。在Linux上使用smartctl命令查看硬盘的SMART信息。

    http://chaorenyong.blog.51cto.com/2163445/1051859

    参数:

    -i 指定设备

    -d 指定设备类型,例如:ata, scsi, marvell, sat, 3ware,N

    -a 或A 显示所有信息

    -l 指定日志的类型,例如:TYPE: error, selftest, selective, directory,background,scttemp[sts,hist]

    -H 查看硬盘健康状态

    -t short 后台检测硬盘,消耗时间短

    -t long 后台检测硬盘,消耗时间长

    -C -t short 前台检测硬盘,消耗时间短

    -C -t long 前台检测硬盘,消耗时间长

    -X 中断后台检测硬盘

    -l selftest 显示硬盘检测日志

    yum install smartmontools

    1、smartctl -i<device> :显示设备的身份信息,检查硬盘是否打开了SMART支持。
    看到有:

    SMART support is: Enabled

    说明硬盘支持SMART。

    如果为Disabled,使用:

    smartctl --smart=on --offlineauto=on --saveauto=on <device>

    启用SMART。

    2、smartctl -H<device> :查看硬盘的健康状况。

    === START OF READ SMART DATA SECTION===
    SMART overall-health self-assessment test result: PASSED

    PASSED表示硬盘健康状态良好,如果为Failure那就要立刻更换硬盘。

    3、smartctl -A<device> :显示设备SMART厂商属性和值。

    4、smartctl -l error<device> :显示硬盘历史错误信息。

    5、smartctl --test=TEST<device> :硬盘自测。
    TEST可取值:offline, short, long, conveyance, select,M-N,pending,N, afterselect,[on|off], scttempint,N[,p]
    此时可以用smartctl -X中断后台测试。

    6、smartctl -l selftest<device> :显示硬盘测试信息。

    7、smartctl -a<device> :显示硬盘SMART的全部信息。

    简单用法:

    1、smartctl-a <device> 检查该设备是否已经打开SMART技术。

    2、smartctl-s on <device> 如果没有打开SMART技术,使用该命令打开SMART技术。

    3、smartctl-t short <device> 后台检测硬盘,消耗时间短;

    smartctl -t long<device> 后台检测硬盘,消耗时间长;

    smartctl -C -t short<device> 前台检测硬盘,消耗时间短;

    smartctl -C -t long<device> 前台检测硬盘,消耗时间长。

    其实就是利用硬盘SMART的自检程序。

    4、smartctl-X <device> 中断后台检测硬盘。

    5、smartctl-l selftest <device> 显示硬盘检测日志。

    6、smartctl-l error <device> 显示硬盘错误汇总。

  • 相关阅读:
    【现在还没补的比赛及题解】
    【刷题中】
    【寒假的待填的坑】
    【python】爬虫实践
    【python】vscode python环境配置
    【spring学习笔记二】Bean
    【spring学习笔记一】Ioc控制反转
    【2018CCPC秦皇岛】
    【2018ICPC沈阳】
    【2018ICPC青岛】
  • 原文地址:https://www.cnblogs.com/chris-cp/p/6873117.html
Copyright © 2011-2022 走看看