有關磁盤與文件系統的命令(16個命令)

mount命令

mount命令:用於掛載文件系統node

格式:「mount 文件系統 掛載目錄」。linux

參數:web

-V:顯示程序版本;
-l:顯示已加載的文件系統列表;
-h:顯示幫助信息並退出;
-v:冗長模式,輸出指令執行的詳細信息;
-n:加載沒有寫入文件「/etc/mtab」中的文件系統;
-r:將文件系統加載爲只讀模式;
-a:加載文件「/etc/fstab」中描述的全部文件系統。

例子:shell

# 掛載cdrom
[root@xxx ~]# mount -t auto /dev/cdrom /mnt/cdrom

umount命令

umount命令:用於撤銷已經掛載的設備文件vim

格式:「umount [掛載點/設備文件]」。安全

例子:oracle

# 撤銷掛載
[root@linuxprobe ~]# umount /dev/sdb2

fsck命令

fsck命令:用於檢查而且試圖修復文件系統中的錯誤。當文件系統發生錯誤四化,可用fsck指令嘗試加以修復。app

格式:ide

fsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...]  [--] [fs-spe‐
       cific-options]

參數:函數

-a:自動修復文件系統,不詢問任何問題;
-A:依照/etc/fstab配置文件的內容,檢查文件內所列的所有文件系統;
-N:不執行指令,僅列出實際執行會進行的動做;
-P:當搭配"-A"參數使用時,則會同時檢查全部的文件系統;
-r:採用互動模式,在執行修復時詢問問題,讓用戶得以確認並決定處理方式;
-R:當搭配"-A"參數使用時,則會略過/目錄的文件系統不予檢查;
-s:依序執行檢查做業,而非同時執行;
-t<文件系統類型>:指定要檢查的文件系統類型;
-T:執行fsck指令時,不顯示標題信息;
-V:顯示指令執行過程。

例子:

# 不肯定哪裏出錯,直接使用fsck
[root@xxx ~]# fsck
fsck from util-linux 2.23.2

# 若是硬盤告訴是sda出錯,則輸入以下命令
[root@xxx ~]# fsck -y /dev/sda
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sda is in use.
e2fsck: Cannot continue, aborting.

dd命令

dd命令:用於複製文件並對原文件的內容進行轉換和格式化處理。dd命令功能很強大的,對於一些比較底層的問題,使用dd命令每每能夠獲得出人意料的效果。用的比較多的仍是用dd來備份裸設備。可是不推薦,若是須要備份oracle裸設備,可使用rman備份,或使用第三方軟件備份,使用dd的話,管理起來不太方便。

格式:

dd [OPERAND]...
 dd OPTION

參數:

bs=<字節數>:將ibs(輸入)與歐巴桑(輸出)設成指定的字節數;
cbs=<字節數>:轉換時,每次只轉換指定的字節數;
conv=<關鍵字>:指定文件轉換的方式;
count=<區塊數>:僅讀取指定的區塊數;
ibs=<字節數>:每次讀取的字節數;
obs=<字節數>:每次輸出的字節數;
of=<文件>:輸出到文件;
seek=<區塊數>:一開始輸出時,跳過指定的區塊數;
skip=<區塊數>:一開始讀取時,跳過指定的區塊數;
--help:幫助;
--version:顯示版本信息。

例子:

[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

[root@localhost text]# du -sh sun.txt 
1.1M    sun.txt

該命令建立了一個1M大小的文件sun.txt,其中參數解釋:

if 表明輸入文件。若是不指定if,默認就會從stdin中讀取輸入。
of 表明輸出文件。若是不指定of,默認就會將stdout做爲默認輸出。
bs 表明字節爲單位的塊大小。
count 表明被複制的塊數。
/dev/zero 是一個字符設備,會不斷返回0值字節(\0)。
塊大小可使用的計量單位表

單元大小    代碼
字節(1B)  c
字節(2B)  w
塊(512B) b
千字節(1024B)  k
兆字節(1024KB) M
吉字節(1024MB) G

dumpe2fs命令

dumpe2fs命令:用於打印「ext2/ext3」文件系統的超級塊和快組信息。

參數:

-b:打印文件系統中預留的塊信息;
-ob<超級塊>:指定檢查文件系統時使用的超級塊;
-OB<塊大小>:檢查文件系統時使用的指定的塊大小;
-h:僅顯示超級塊信息;
-i:從指定的文件系統映像文件中讀取文件系統信息;
-x:以16進制格式打印信息塊成員。

例子:

[root@xxx ~]# dumpe2fs /dev/hda1

dump命令

dump命令:用於備份ext2或者ext3文件系統。可將目錄或整個文件系統備份至指定的設備,或備份成一個大文件。

參數:

-0123456789:備份的層級;
-b<區塊大小>:指定區塊的大小,單位爲KB;
-B<區塊數目>:指定備份卷冊的區塊數目;
-c:修改備份磁帶預設的密度與容量;
-d<密度>:設置磁帶的密度。單位爲BPI;
-f<設備名稱>:指定備份設備;
-h<層級>:當備份層級等於或大於指定的層級時,將不備份用戶標示爲「nodump」的文件;
-n:當備份工做須要管理員介入時,向全部「operator」羣組中的使用者發出通知;
-s<磁帶長度>:備份磁帶的長度,單位爲英尺;
-T<日期>:指定備份的時間與日期;
-u:備份完畢後,在/etc/dumpdates中記錄備份的文件系統、層級、日期與時間等;
-w:與-W相似,但僅顯示須要備份的文件;
-W:顯示須要備份的文件及其最後一次備份的層級、時間與日期。

例子:

/home目錄全部內容備份到/tmp/homeback.bak文件中,備份層級爲0並在/etc/dumpdates中記錄相關信息:

dump -0u -f /tmp/homeback.bak /home

/home目錄全部內容備份到/tmp/homeback.bak文件中,備份層級爲1(只備份上次使用層次0備份後發生過改變的數據)並在/etc/dumpdates中記錄相關信息:

dump -1u -f /tmp/homeback.bak /home

經過dump命令的備份層級,可實現完整+增量備份、完整+差別備份,在配合crontab能夠實現無人值守備份。

fdisk命令

fdisk命令:用於管理磁盤分區,格式爲「fdisk [磁盤名稱]」,它提供了集添加、刪除、轉換分區等功能於一身的「一站式分區服務」。

格式:

fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device

fdisk -l [-u] [device...]

fdisk -s partition...

fdisk -v

fdisk -h

參數:

-b<分區大小>:指定每一個分區的大小;
-l:列出指定的外圍設備的分區表情況;
-s<分區編號>:將指定的分區大小輸出到標準輸出上,單位爲區塊;
-u:搭配"-l"參數列表,會用分區數目取代柱面數目,來表示每一個分區的起始地址;
-v:顯示版本信息。

例子:

首先選擇要進行操做的磁盤:

[root@localhost ~]# fdisk /dev/sdb

輸入m列出能夠執行的命令:

command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

輸入p列出磁盤目前的分區狀況:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1           1        8001   8e  Linux LVM
/dev/sdb2               2          26      200812+  83  Linux

輸入d而後選擇分區,刪除現有分區:

Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Selected partition 2

查看分區狀況,確認分區已經刪除:

Command (m for help): print

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help):

輸入n創建新的磁盤分區,首先創建兩個主磁盤分區:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p    //創建主分區
Partition number (1-4): 1  //分區號
First cylinder (1-391, default 1):  //分區起始位置
Using default value 1
last cylinder or +size or +sizeM or +sizeK (1-391, default 391): 100  //分區結束位置,單位爲扇區

Command (m for help): n  //再創建一個分區
Command action
   e   extended
   p   primary partition (1-4)
p 
Partition number (1-4): 2  //分區號爲2
First cylinder (101-391, default 101):
Using default value 101
Last cylinder or +size or +sizeM or +sizeK (101-391, default 391): +200M  //分區結束位置,單位爲M

確認分區創建成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         100      803218+  83  Linux
/dev/sdb2             101         125      200812+  83  Linux

再創建一個邏輯分區:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e  //選擇擴展分區
Partition number (1-4): 3
First cylinder (126-391, default 126):
Using default value 126
Last cylinder or +size or +sizeM or +sizeK (126-391, default 391):
Using default value 391

確認擴展分區創建成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         100      803218+  83  Linux
/dev/sdb2             101         125      200812+  83  Linux
/dev/sdb3             126         391     2136645    5  Extended

在擴展分區上創建兩個邏輯分區:

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l //選擇邏輯分區
First cylinder (126-391, default 126):
Using default value 126
Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +400M    

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (176-391, default 176):
Using default value 176
Last cylinder or +size or +sizeM or +sizeK (176-391, default 391):
Using default value 391

確認邏輯分區創建成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         100      803218+  83  Linux
/dev/sdb2             101         125      200812+  83  Linux
/dev/sdb3             126         391     2136645    5  Extended
/dev/sdb5             126         175      401593+  83  Linux
/dev/sdb6             176         391     1734988+  83  Linux

Command (m for help):

從上面的結果咱們能夠看到,在硬盤sdb咱們創建了2個主分區(sdb1,sdb2),1個擴展分區(sdb3),2個邏輯分區(sdb5,sdb6)

注意:主分區和擴展分區的磁盤號位1-4,也就是說最多有4個主分區或者擴展分區,邏輯分區開始的磁盤號爲5,所以在這個實驗中試沒有sdb4的。

最後對分區操做進行保存:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

創建好分區以後咱們還須要對分區進行格式化才能在系統中使用磁盤。

在sdb1上創建ext2分區:

[root@localhost ~]# mkfs.ext2 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
100576 inodes, 200804 blocks
10040 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=209715200
7 block groups
32768 blocks per group, 32768 fragments per group
14368 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840

Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

在sdb6上創建ext3分區:

[root@localhost ~]# mkfs.ext3 /dev/sdb6
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
217280 inodes, 433747 blocks
21687 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=444596224
14 block groups
32768 blocks per group, 32768 fragments per group
15520 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done                           
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

創建兩個目錄/oracle/web,將新建好的兩個分區掛載到系統:

[root@localhost ~]# mkdir /oracle
[root@localhost ~]# mkdir /web
[root@localhost ~]# mount /dev/sdb1 /oracle
[root@localhost ~]# mount /dev/sdb6 /web

查看分區掛載狀況:

[root@localhost ~]# df -h
文件系統              容量  已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
                      6.7G  2.8G  3.6G  44% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/sdb1             773M  808K  733M   1% /oracle
/dev/sdb6             1.7G   35M  1.6G   3% /web

若是須要每次開機自動掛載則須要修改/etc/fstab文件,加入兩行配置:

[root@localhost ~]# vim /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/sdb1               /oracle                 ext2    defaults        0 0
/dev/sdb6               /web                    ext3    defaults        0 0

parted命令

parted命令:是由GNU組織開發的一款功能強大的磁盤分區和分區大小調整工具,與fdisk不一樣,它支持調整分區的大小。做爲一種設計用於Linux的工具,它沒有構建成處理與fdisk關聯的多種分區類型,可是,它能夠處理最多見的分區格式,包括:ext二、ext三、fat1六、fat3二、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交換分區。

格式:

parted [options] [device [command [options...]...]]

參數

-h:顯示幫助信息;
-i:交互式模式;
-s:腳本模式,不提示用戶;
-v:顯示版本號。

例子:

[root@localhost ~]# fdisk -l
Disk /dev/sda: 35.8 GB, 35862976512 bytes
255 heads, 63 sectors/track, 4360 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         144     1052257+  82  Linux swap
/dev/sda3             145        4360    33865020   83  Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
[root@localhost ~]# parted /dev/sdb
GNU Parted Copyright (C) 1998 - 2004 free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU General Public License for more details.
使用/dev/sdb
(parted)mklabel gpt    #設置標籤
(parted)print          #打印信息    
/dev/sdb的磁盤幾何結構:0.000-2048.000兆字節
磁盤標籤類型:gpt
Minor   起始點       終止點 文件系統   名稱                 標誌
(parted)mkpart primary 0 2048  <-----上面print顯示的數字
(parted)print               
/dev/sdb的磁盤幾何結構:0.000-2048.000兆字節
磁盤標籤類型:gpt
Minor   起始點       終止點 文件系統   名稱                 標誌
1          0.017   2047.983
(parted)quit

若是必要,不要忘記更新/etc/fstab

[root@localhost ~]# fdisk -l
Disk /dev/sda: 35.8 GB, 35862976512 bytes
255 heads, 63 sectors/track, 4360 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         144     1052257+  82  Linux swap
/dev/sda3             145        4360    33865020   83  Linux
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
 
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2097151+  ee  EFI GPT
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 0, 1) logical=(0,0, 2)
Partition 1 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(261, 21, 16)
[root@localhost ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
262144 inodes, 524279 blocks
26213 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mount /dev/sdb1 /mnt
# 查看掛載文件
[root@localhost ~]# df -h
Filesystem            容量  已用 可用 已用% 掛載點
/dev/sda3              <?xml:namespace prefix = st1 />32G  2.6G   28G   9% /
/dev/sda1              99M   12M   82M  13% /boot
none                  252M     0  252M   0% /dev/shm
/dev/sdb1             2.0G   36M  1.9G   2% /mnt

mkfs命令

mkfs命令:用於在設備上(一般爲硬盤)建立Linux文件系統。mkfs自己並不執行創建文件系統的工做,而是去調用相關的程序來執行。

參數:

fs:指定創建文件系統時的參數;
-t<文件系統類型>:指定要創建何種文件系統;
-v:顯示版本信息與詳細的使用方法;
-V:顯示簡要的使用方法;
-c:在製作檔案系統前,檢查該partition是否有壞軌。

例子:

/dev/hda5上建一個msdos的檔案系統,同時檢查是否有壞軌存在,而且將過程詳細列出來:

mkfs -V -t msdos -c /dev/hda5

mkfs -t ext3 /dev/sda6     //將sda6分區格式化爲ext3格式
mkfs -t ext2 /dev/sda7     //將sda7分區格式化爲ext2格式

partprobe命令

partprobe命令:重讀分區表,當出現刪除文件後,出現仍然佔用空間。能夠partprobe在不重啓的狀況下重讀分區。

格式: partprobe [-d] [-s] [devices...]

參數:

-d:不更新內核;
-s:顯示摘要和分區;
-h:顯示幫助信息;
-v:顯示版本信息。

例子:

使用partprobe不重啓系統添加新的磁盤分區,主機自帶硬盤超過300GB,目前只劃分使用了3個主分區,不到70GB,以下:

[root@localhost ~]# df -h 
Filesystem Size Used Avail Use% Mounted on 
/dev/sda1 29G 3.7G  24G 14% / 
/dev/sda2 29G  22G 5.2G 81% /oracle 
tmpfs    2.0G    0 2.0G  0% /dev/shm
[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

   8     0  311427072 sda
   8     1   30716248 sda1
   8     2   30716280 sda2
   8     3    8193150 sda3
   8    16     976896 sdb
   8    32     976896 sdc

…省略其餘

如今須要給系統添加1個100GB的空間存放數據文件,而又不影響現有系統上業務的運行,使用fdisk結合partprobe命令不重啓系統添加一塊新的磁盤分區。操做步驟以下:

第1步 添加新的磁盤分區

[root@localhost ~]# fdisk /dev/sda
The number of cylinders for this disk is set to 38770.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of lilo)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

command (m for help): p

Disk /dev/sda: 318.9 GB, 318901321728 bytes
255 heads, 63 sectors/track, 38770 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   id  System
/dev/sda1   *           1        3824    30716248+  83  Linux
/dev/sda2            3825        7648    30716280   83  Linux
/dev/sda3            7649        8668     8193150   82  Linux swap / Solaris

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Selected partition 4
First cylinder (8669-38770, default 8669):
Using default value 8669
last cylinder or +size or +sizeM or +sizeK (8669-38770, default 38770): +100G   
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 

Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

第2步 使用工具partprobe讓kernel讀取分區信息:

[root@localhost ~]# partprobe

使用fdisk工具只是將分區信息寫到磁盤,若是須要mkfs磁盤分區則須要重啓系統,而使用partprobe則可使kernel從新讀取分區信息,從而避免重啓系統。

第3步 格式化文件系統:

[root@localhost ~]# mkfs.ext3 /dev/sda4
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
12222464 inodes, 24416791 blocks
1220839 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
746 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 
    2654208, 4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:

done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

第4步 mount新的分區/dev/sda4:

[root@localhost ~]# e2label  /dev/sda4 /data
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sda4 /data
[root@localhost ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29753556   3810844  24406900  14% /
/dev/sda2             29753588  11304616  16913160  41% /oracle
tmpfs                  2023936         0   2023936   0% /dev/shm
/dev/sda4             96132968    192312  91057300   1% /data

使用partprobe能夠不用重啓系統便可配合fdisk工具建立新的分區。

e2fsck命令

e2fsck命令:用於檢查第二擴展文件系統的完整性,經過適當的選項能夠嘗試修復出現的錯誤。

參數:

-a:不詢問使用者意見,便自動修復文件系統;
-b<superblock>:指定superblock,而不使用預設的superblock;
-B<區塊大小>:指定區塊的大小,單位爲字節;
-c:一併執行badblocks,以標示損壞的區塊;
-C:將檢查過程的信息完整記錄在file descriptor中,使得整個檢查過程都能完整監控;
-d:顯示排錯信息;
-f:即便文件系統沒有錯誤跡象,仍強制地檢查正確性;
-F:執行前先清除設備的緩衝區;
-l<文件>:將文件中指定的區塊加到損壞區塊列表;
-L<文件>:先清除損壞區塊列表,再將文件中指定的區塊加到損壞區塊列表。所以損壞區塊列表的區塊跟文件中指定的區塊是同樣的;
-n:以只讀模式開啓文件系統,並採起非互動方式執行,全部的問題對話均設置以"no"回答;
-p:不詢問使用者意見,便自動修復文件系統;
-r:此參數只爲了兼容性而存在,並沒有實際做用;
-s:若是文件系統的字節順序不適當,就交換字節順序,不然不作任何動做;
-S:無論文件系統的字節順序,一概交換字節順序;
-t:顯示時間信息;
-v:執行時顯示詳細的信息;
-V:顯示版本信息;
-y:採起非互動方式執行,全部的問題均設置以"yes"回答。

e2fsck執行後的傳回值及表明意義以下:

  • 0 沒有任何錯誤發生。
  • 1 文件系統發生錯誤,而且已經修正。
  • 2 文件系統發生錯誤,而且已經修正。
  • 4 文件系統發生錯誤,但沒有修正。
  • 8 運做時發生錯誤。
  • 16 使用的語法發生錯誤。
  • 128 共享的函數庫發生錯誤。

例子:

檢查/dev/sda1是否有問題,如發現問題便自動修復:

e2fsck -a -y /dev/sda1

執行e2fsck或fsck前請先umount partition,不然有機會令檔案系統毀損。若是須要對根目錄/進行檢查及修復,便須要進入singal user mode執行。

mkswap命令

mkswap命令:用於在一個文件或者設備上創建交換分區。在創建完以後要使用sawpon命令開始使用這個交換區。最後一個選擇性參數指定了交換區的大小,可是這個參數是爲了向後兼容設置的,沒有使用的必要,通常都將整個文件或者設備做爲交換區。

參數:

-c:創建交換區前,先檢查是否有損壞的區塊;
-f:在SPARC電腦上創建交換區時,要加上此參數;
-v0:創建舊式交換區,此爲預設值;
-v1:創建新式交換區。

例子:

查看系統swap space大小:

free -m
total used free shared buffers cached
Mem: 377 180 197 0 19 110
-/+ buffers/cache: 50 327
Swap: 572 0 572

查看當前的swap空間(file(s)/partition(s)):

swapon -s

等價於

cat /proc/swaps

添加交換空間

添加一個交換分區或添加一個交換文件。推薦你添加一個交換分區;不過,若你沒有多少空閒空間可用,則添加交換文件。

添加一個交換分區,步驟以下:

使用fdisk來建立交換分區(假設 /dev/sdb2 是建立的交換分區),使用 mkswap 命令來設置交換分區:

mkswap /dev/sdb2

啓用交換分區:

swapon /dev/sdb2

寫入/etc/fstab,以便在引導時啓用:

/dev/sdb2 swap swap defaults 0 0

添加一個交換文件,步驟以下:

建立大小爲512M的交換文件:

dd if=/dev/zero of=/swapfile1 bs=1024 count=524288

使用mkswap命令來設置交換文件:

mkswap /swapfile1

啓用交換分區:

swapon /swapfile1

寫入/etc/fstab,以便在引導時啓用:

/swapfile1 swap swap defaults 0 0

新添了交換分區並啓用它以後,請查看cat /proc/swaps或free命令的輸出來確保交換分區已被啓用了。

刪除交換空間:

禁用交換分區:

swapoff /dev/sdb2

/etc/fstab中刪除項目,使用fdisk或yast工具刪除分區。

swapon命令

swapon命令:激活Linux系統中交換空間,Linux系統的內存管理必須使用交換區來創建虛擬內存。

參數:

-a:將/etc/fstab文件中全部設置爲swap的設備,啓動爲交換區;
-h:顯示幫助;
-p<優先順序>:指定交換區的優先順序;
-s:顯示交換區的使用情況;
-V:顯示版本信息。

swapoff命令

swapoff命令:用於關閉指定的交換空間(包括交換文件和交換分區)。swapoff實際上爲swapon的符號鏈接,可用來關閉系統的交換區。

參數

-a:關閉配置文件「/etc/fstab」中全部的交換空間。

sync命令

sync命令:強制被改變的內容馬上寫入磁盤,更新超塊信息。

在Linux/Unix系統中,在文件或數據處理過程當中通常先放到內存緩衝區中,等到適當的時候再寫入磁盤,以提升系統的運行效率。sync命令則可用來強制將內存緩衝區中的數據當即寫入磁盤中。用戶一般不需執行sync命令,系統會自動執行update或bdflush操做,將緩衝區的數據寫 入磁盤。只有在update或bdflush沒法執行或用戶須要非正常關機時,才需手動執行sync命令。

buffer與cache

  • buffer:爲了解決寫磁盤的效率
  • cache:爲了解決讀磁盤的效率

linux系統爲了提升讀寫磁盤的效率,會先將數據放在一塊buffer中。在寫磁盤時並非當即將數據寫到磁盤中,而是先寫入這塊buffer中了。此時若是重啓系統,就可能形成數據丟失。

sync命令用來flush文件系統buffer,這樣數據纔會真正的寫到磁盤中,而且buffer纔可以釋放出來,flush就是用來清空buffer。sync命令會強制將數據寫入磁盤中,並釋放該數據對應的buffer,因此經常會在寫磁盤後輸入sync命令來將數據真正的寫入磁盤。

若是不去手動的輸入sync命令來真正的去寫磁盤,linux系統也會週期性的去sync數據。

resize2fs命令

resize2fs命令:用來增大或者收縮未加載的「ext2/ext3」文件系統的大小。若是文件系統是處於mount狀態下,那麼它只能作到擴容,前提條件是內核支持在線resize。,linux kernel 2.6支持在mount狀態下擴容但僅限於ext3文件系統。

格式:

resize2fs  [  -fFpPM  ]  [ -d debug-flags ] [ -S RAID-stride ] device [
       size ]

參數:

-d:打開調試特性;
-p:打印已完成的百分比進度條;
-f:強制執行調整大小操做,覆蓋掉安全檢查操做;
-F:開始執行調整大小前,刷新文件系統設備的緩衝區。

例子:

# 打印已完成的百分比進度條
[root@xxx ~]# resize2fs -p /dev/storage/vo 120M
相關文章
相關標籤/搜索