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] 设置强制自检的时间间隔[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
(3):mke2fs 建立Linux系统使用的ext2或者ext3文件系统。
http://man.linuxde.net/mke2fs
(4):badblocks:linux系统检查磁盘装置中损坏的区块。
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:
-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> 显示硬盘错误汇总。