linux下磁盘管理命令汇总

Linux运维中那些磁盘管理命令详解

1.首先概括一下做为一名linux系统管理员,磁盘管理是必不可少的一个环节。如下这些disk管理命令,你能玩转几个呢?

1.fsck

2.tune2fs

3.mke2fs

4.badblocks

5.mkfs*

6.fdisk

7.mount

8.umount

9.mknod

10.e2label

11.blkid

12.hdparm

13.mkswap

14.swapon

15.smartctl

 

2.everycommand解释

(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] 设置强制自检的时间间隔[dmw]

-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

 

 

(3):mke2fs 建立Linux系统使用的ext2或者ext3文件系统。

http://man.linuxde.net/mke2fs

wKiom1W-1VCS55pcAAIjXW9bO-0275.jpg

wKioL1W-10bQnGmUAADDVbjNFbs374.jpg


(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)。


wKioL1W-16Kjp9kTAATLMmpS-PM148.jpg

 

(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:

 

       -V    Print 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't call  the  /sbin/umount.<filesystem> helper  even if it

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

          one exists.

       -a     All of  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  file system  types on which  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

          type may 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命令设置交换区(swap area)

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        Size   Used    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        Size   Used    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> 显示硬盘错误汇总。

 

 

 


你可能感兴趣的:(linux,配置文件,系统管理员)