Linux磁碟管理的相關命令及使用樣本,linux磁碟命令樣本
Linux 磁碟管理
Linux磁碟管理好壞直接關係到整個系統的效能問題。
Linux磁碟管理常用三個命令為df、du和fdisk。
df:列出檔案系統的整體磁碟使用量 du:檢查磁碟空間使用量 fdisk:用於磁碟分割
df
df命令參數功能:檢查檔案系統的磁碟空間佔用情況。可以利用該命令來擷取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。
文法:
df [-ahikHTm] [目錄或檔案名稱]
選項:
| 選項 |
說明 |
| -a或–all |
包含全部的檔案系統; |
| –block-size=<區塊大小> |
以指定的區塊大小來顯示區塊數目; |
| -h或–human-readable |
以可讀性較高的方式來顯示資訊; |
| -H或–si |
與-h參數相同,但在計算時是以1000 Bytes為換算單位而非1024 Bytes; |
| -i或–inodes |
顯示inode的資訊; |
| -k或–kilobytes |
指定區塊大小為1024位元組; |
| -l或–local |
僅顯示本地端的檔案系統; |
| -m或–megabytes |
指定區塊大小為1048576位元組; |
| –no-sync |
在取得磁碟使用資訊前,不要執行sync指令,此為預設值; |
| -P或–portability |
使用POSIX的輸出格式; |
| –sync |
在取得磁碟使用資訊前,先執行sync指令; |
| -t<檔案系統類型>或–type=<檔案系統類型> |
僅顯示指定檔案系統類型的磁碟資訊; |
| -T或–print-type |
顯示檔案系統的類型; |
| -x<檔案系統類型>或–exclude-type=<檔案系統類型> |
不要顯示指定檔案系統類型的磁碟資訊; |
| –help |
顯示協助; |
| –version |
顯示版本資訊。 |
執行個體 1
將系統內所有的檔案系統列出來!
[root@ylg ~]# df檔案系統 1K-塊 已用 可用 已用% 掛載點/dev/mapper/centos-root 17811456 1318704 16492752 8% /devtmpfs 488788 0 488788 0% /devtmpfs 499848 0 499848 0% /dev/shmtmpfs 499848 6808 493040 2% /runtmpfs 499848 0 499848 0% /sys/fs/cgroup/dev/sda1 1038336 127464 910872 13% /boottmpfs 99972 0 99972 0% /run/user/0
在 Linux 底下如果 df 沒有加任何選項,那麼預設會將系統內所有的 (不含特殊記憶體內的檔案系統與 swap) 都以 1 Kbytes 的容量來列出來!
執行個體 2
將容量結果以易讀的容量格式顯示出來
[root@ylg ~]# df -h檔案系統 容量 已用 可用 已用% 掛載點/dev/mapper/centos-root 17G 1.3G 16G 8% /devtmpfs 478M 0 478M 0% /devtmpfs 489M 0 489M 0% /dev/shmtmpfs 489M 6.7M 482M 2% /runtmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 1014M 125M 890M 13% /boottmpfs 98M 0 98M 0% /run/user/0
執行個體 3
將系統內的所有特殊檔案格式及名稱都列出來
[root@ylg ~]# df -aTFilesystem Type 1K-blocks Used Available Use% Mounted on/dev/hdc2 ext3 9920624 3823112 5585444 41% /proc proc 0 0 0 - /procsysfs sysfs 0 0 0 - /sysdevpts devpts 0 0 0 - /dev/pts/dev/hdc3 ext3 4956316 141376 4559108 4% /home/dev/hdc1 ext3 101086 11126 84741 12% /boottmpfs tmpfs 371332 0 371332 0% /dev/shmnone binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_miscsunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
執行個體 4
將 /etc 底下的可用的磁碟容量以易讀的容量格式顯示
[root@www ~]# df -h /etcFilesystem Size Used Avail Use% Mounted on/dev/hdc2 9.5G 3.7G 5.4G 41% /
du
Linux du命令也是查看使用空間的,但是與df命令不同的是Linux du命令是對檔案和目錄磁碟使用的空間的查看,還是和df命令有一些區別的,這裡介紹Linux du命令。
文法:
du [-ahskm] 檔案或目錄名稱
選項:
| 選項 |
說明 |
| -a或-all |
顯示目錄中個別檔案的大小。 |
| -b或-bytes |
顯示目錄或檔案大小時,以byte為單位。 |
| -c或–total |
除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。 |
| -k或–kilobytes |
以KB(1024bytes)為單位輸出。 |
| -m或–megabytes |
以MB為單位輸出。 |
| -s或–summarize |
僅顯示總計,只列出最後加總的值。 |
| -h或–human-readable |
以K,M,G為單位,提高資訊的可讀性。 |
| -x或–one-file-xystem |
以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。 |
| -L<符號連結>或–dereference<符號連結> |
顯示選項中所指定符號連結的源檔案大小。 |
| -S或–separate-dirs |
顯示個別目錄的大小時,並不含其子目錄的大小。 |
| -X<檔案>或–exclude-from=<檔案> |
在<檔案>指定目錄或檔案。 |
| –exclude=<目錄或檔案> |
略過指定的目錄或檔案。 |
| -D或–dereference-args |
顯示指定符號連結的源檔案大小。 |
| -H或–si |
與-h參數相同,但是K,M,G是以1000為換算單位。 |
| -l或–count-links |
重複計算硬體連結的檔案。 |
執行個體 1
列出目前目錄下的所有檔案容量
[root@ylg ~]# du8 ./test4 <==每個目錄都會列出來8 ./test2....中間省略....12 ./.gconfd <==包括隱藏檔案的目錄220 . <==這個目錄(.)所佔用的總量
直接輸入 du 沒有加任何選項時,則 du 會分析當前所在目錄的檔案與目錄所佔用的硬碟空間。
執行個體 2
將檔案的容量也列出來
[root@ylg ~]# du -a12 ./install.log.syslog <==有檔案的列表了8 ./.bash_logout8 ./test48 ./test2....中間省略....12 ./.gconfd220 .
執行個體 3
檢查根目錄底下每個目錄所佔用的容量
[root@ylg ~]# du -sm /*7 /bin6 /boot.....中間省略....0 /proc.....中間省略....1 /tmp3859 /usr <==系統初期最大就是他了啦!77 /var
萬用字元 * 來代表每個目錄。
與 df 不一樣的是,du 這個命令其實會直接到檔案系統內去搜尋所有的檔案資料。
fdisk
fdisk 是 Linux 的磁碟分割表操作工具。
文法:
fdisk [-l] 裝置名稱
選項:
| 選項 |
說明 |
| -b<分區大小> |
指定每個分區的大小; |
| -l |
列出指定的外圍裝置的分區表狀況; |
| -s<分區編號> |
將指定的分區大小輸出到標準輸出上,單位為區塊; |
| -u |
搭配”-l”參數列表,會用分區數目取代柱面數目,來表示每個分區的起始地址; |
| -v |
顯示版本資訊。 |
執行個體 1
列出所有分區資訊
[root@ylg ~]# fdisk -lDisk /dev/xvda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Device Boot Start End Blocks Id System/dev/xvda1 * 1 2550 20480000 83 Linux/dev/xvda2 2550 2611 490496 82 Linux swap / SolarisDisk /dev/xvdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x56f40944 Device Boot Start End Blocks Id System/dev/xvdb2 1 2610 20964793+ 83 Linux
執行個體 2
找出你系統中的根目錄所在磁碟,並查閱該硬碟內的相關資訊
[root@ylg ~]# df / <==注意:重點在找出磁碟檔案名稱而已Filesystem 1K-blocks Used Available Use% Mounted on/dev/hdc2 9920624 3823168 5585388 41% /[root@ylg ~]# fdisk /dev/hdc <==仔細看,不要加上數字喔!The number of cylinders for this disk is set to 5005.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): <==等待你的輸入!
輸入 m 後,就會看到底下這些命令介紹
Command (m for help): m <== 輸入 m 後,就會看到底下這些命令介紹Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition <==刪除一個partition l list known partition types m print this menu n add a new partition <==新增一個partition o create a new empty DOS partition table p print the partition table <==在螢幕上顯示分割表 q quit without saving changes <==不儲存離開fdisk程式 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)
離開 fdisk 時按下 q,那麼所有的動作都不會生效!相反的, 按下w就是動作生效的意思。
Command (m for help): p <== 這裡可以輸出目前磁碟的狀態Disk /dev/hdc: 41.1 GB, 41174138880 bytes <==這個磁碟的檔案名稱與容量255 heads, 63 sectors/track, 5005 cylinders <==磁頭、扇區與磁柱大小Units = cylinders of 16065 * 512 = 8225280 bytes <==每個磁柱的大小 Device Boot Start End Blocks Id System/dev/hdc1 * 1 13 104391 83 Linux/dev/hdc2 14 1288 10241437+ 83 Linux/dev/hdc3 1289 1925 5116702+ 83 Linux/dev/hdc4 1926 5005 24740100 5 Extended/dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris# 裝置檔案名稱 啟動區否 開始磁柱 結束磁柱 1K大小容量 磁碟分割槽內的系統Command (m for help): q
想要不儲存離開嗎?按下 q 就對了!不要隨便按 w 啊!
使用 p 可以列出目前這顆磁碟的分割表資訊,這個資訊的上半部在顯示整體磁碟的狀態。
磁碟格式化(mkfs)
磁碟分割完畢後自然就是要進行檔案系統的格式化,格式化的命令非常的簡單,使用 mkfs(make filesystem) 命令。
文法:
mkfs [-t 檔案系統格式] 裝置檔案名稱
選項:
| 選項 |
說明 |
| fs |
指定建立檔案系統時的參數; |
| -t<檔案系統類型> |
指定要建立何種檔案系統; |
| -v |
顯示版本資訊與詳細的使用方法; |
| -V |
顯示簡要的使用方法; |
| -c |
在製做檔案系統前,檢查該partition是否有壞軌。 |
執行個體 1
查看 mkfs 支援的檔案格式
[root@ylg ~]# mkfs[tab][tab]mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat
按下兩個[tab],會發現 mkfs 支援的檔案格式如上所示。
執行個體 2
將分區 /dev/hdc6(可指定你自己的分區) 格式化為 ext3 檔案系統:
[root@ylg ~]# mkfs -t ext3 /dev/hdc6mke2fs 1.39 (29-May-2006)Filesystem label= <==這裡指的是分割槽的名稱(label)OS type: LinuxBlock size=4096 (log=2) <==block 的大小配置為 4K Fragment size=4096 (log=2)251392 inodes, 502023 blocks <==由此配置決定的inode/block數量25101 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=51589939216 block groups32768 blocks per group, 32768 fragments per group15712 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Writing inode tables: doneCreating journal (8192 blocks): done <==有日誌記錄Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 34 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.# 這樣就建立起來我們所需要的 Ext3 檔案系統了!簡單明了!
磁碟檢驗
fsck(file system check)用來檢查和維護不一致的檔案系統。
若系統掉電或磁碟發生問題,可利用fsck命令對檔案系統進行檢查。
文法:
fsck [-t 檔案系統] [-ACay] 裝置名稱
選項與參數:
| 選項 |
說明 |
| -a |
自動修複檔案系統,不詢問任何問題; |
| -A |
依照/etc/fstab設定檔的內容,檢查檔案內所列的全部檔案系統; |
| -N |
不執行指令,僅列出實際執行會進行的動作; |
| -P |
當搭配”-A”參數使用時,則會同時檢查所有的檔案系統; |
| -r |
採用互動模式,在執行修複時詢問問題,讓使用者得以確認並決定處理方式; |
| -R |
當搭配”-A”參數使用時,則會略過/目錄的檔案系統不予檢查; |
| -s |
依序執行檢查作業,而非同時執行; |
| -t<檔案系統類型> |
指定要檢查的檔案系統類型; |
| -T |
執行fsck指令時,不顯示標題資訊; |
| -V |
顯示指令執行過程。 |
| -y |
選項指定檢測每個檔案是自動輸入yes,在不確定那些是不正常的時候,可以執行 # fsck -y 全部檢查修複。 |
執行個體 1
查看系統有多少檔案系統支援的 fsck 命令:
[root@ylg ~]# fsck[tab][tab]fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat
執行個體 2
強制檢測 /dev/hdc6 分區:
[root@ylg ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006)e2fsck 1.39 (29-May-2006)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary informationvbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks
如果沒有加上 -f 的選項,則由於這個檔案系統不曾出現問題,檢查的經過非常快速!若加上 -f 強制檢查,才會一項一項的顯示過程。
磁碟掛載與卸載
Linux 的磁碟掛載使用 mount 命令,卸載使用 umount 命令。
mount命令用於負載檔案系統到指定的載入點。此命令的最常用於掛載cdrom,使我們可以訪問cdrom中的資料,因為你將光碟片插入cdrom中,Linux並不會自動掛載,必須使用Linux mount命令來手動完成掛載。
磁碟掛載文法:
mount [-t vfstype] [-o options] device dirmount [-t 檔案系統] [-L Label名] [-o 額外選項] [-n] 裝置檔案名稱 掛載點
-t 詳細選項:
光碟片或光碟片鏡像:iso9660
DOS fat16檔案系統:msdos
Windows 9x fat32檔案系統:vfat
Windows NT ntfs檔案系統:ntfs
Mount Windows檔案網際網路共用:smbfs(需核心支援)推薦cifs
UNIX(LINUX) 檔案網際網路共用:nfs
-o 詳細選項:
loop :用來把一個檔案當成硬碟分區掛接上系統
ro :採用唯讀方式掛接裝置
rw :採用讀寫方式掛接裝置
iocharset :指定訪問檔案系統所用字元集,例如iocharset=utf8
remount :重新掛載
執行個體 1
用預設的方式,將剛剛建立的 /dev/hdc6 掛載到 /mnt/hdc6 上面!
[root@ylg ~]# mkdir /dev/hdc6[root@ylg ~]# mount /dev/hdc6 /mnt/hdc6[root@ylg ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on.....中間省略...../dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6
磁碟卸載命令 umount
文法:
umount [-fn] 裝置檔案名稱或掛載點
選項與參數:
-f :強制卸載!可用在類似網路檔案系統 (NFS) 無法讀取到的情況下; -n :不升級 /etc/mtab 情況下卸載。
卸載/dev/hdc6
[root@ylg ~]# umount /dev/hdc6