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> 顯示硬盤錯誤匯總。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM