歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux 磁碟與硬體管理

Linux 磁碟與硬體管理

日期:2017/2/27 9:36:16   编辑:更多Linux

 認識硬碟:   讓我們再來復習一下 硬碟 裡面有什麼東西值得我們來討論的!  ·物理組成:   就物理組成來說,硬碟是由多個硬碟盤所組成的,而每一個硬碟盤上面都有個磁頭( Head )在進行該硬碟盤上面的讀寫工作,而當磁頭固定不動,硬碟盤轉一圈所畫出來的圓就是所謂的磁軌( Track ),全部硬碟盤上面同一個磁軌組成了磁柱( Cylinder ),這個磁柱也是磁碟分割( partition )時,最小的單位了!另外,由圓心向半徑方向劃直線,而每個 Track 上面細分成一個一個的磁區( Sector )那就是最小的磁碟儲存物理量了,一個 Sector 通常為 512 Bytes 。這就是整個硬碟的構造啰,那麼如果以硬碟的 filesystem 來做為檢視呢?你可以簡單的這樣想啦,一個 Partition 當中就具有一個 filesystem ( 檔案系統 ) 啰!那麼一個 partition 當中能不能具有兩個 filesystem 呢?理論上應該是不行的!因為每個檔案系統都有其獨特的支援方式,例如 Linux 的 ext3 就無法被 Windows 系統所讀取!而你將一個 partition 格式化的時候,總不能格式化為 ext3 也同時格式化為 fat32 吧?!那是不可能的啊!底下來談一談關於檔案系統的相關功能吧!   ·Filesystem   在進行磁碟格式化或者是分割的時候,都會需要知道磁碟的一些基本的名詞定義,主要有:   o 主要開機磁區( Master Boot Recorder, MBR ):主要開機磁區可以說是一顆硬碟裡面最重要的地方了,怎麼說呢?因為他記錄了所有硬碟的分割資訊,以及開機的時候可以進行開機管理程式的寫入等等,如果一顆硬碟的 MBR 死掉了,那麼這顆硬碟幾乎就可以說是壽終正寢了~那麼 MBR 有什麼限制呢?他最大的限制來自於他的大小不夠大到儲存所有的資訊,因此,他僅提供最多四個 partition 的記憶,這就是所謂的 Primary (P)與 Extended (E)磁區最多相加只能有四個的原因了。所以說,如果你預計分割超過 4 個 partition 的話,那麼勢必需要使用 3P + 1E ,並且將所有的剩余空間都撥給 Extended 才行( 記得呦! Extended 最多只能有一個 ),否則只要 3P + E 之後還有剩下的空間,那麼那些容量將成為廢物而浪費了?所以結論就是『如果您要分割硬碟時,並且已經預計規劃使用掉 MBR 所提供的 4 個 partition ( 3P + E 或 4P )那麼磁碟的全部容量需要使用光,否則剩下的容量也不能再被使用』。不過,如果您僅是分割出 1P + 1E 的話,那麼剩下的空間就還能再分割兩個 partition !   o 區塊( Block ):檔案在磁碟當中會被儲存在一個固定的大小區塊中,那就是 Block ,而 Block 的大小通常為 2 的次方,其中,由於磁碟的磁區物理量通常為 0.5K ( 512 Bytes ),所以 Block 通常規劃為 0.5 K 的倍數,例如 EXT2 預設 Block 為 4K 即是一例!其中需要特別留意的地方是,一個 Block 最多僅能容納一個檔案,所以當一個檔案不足 4K 時,例如大小僅為 1K ,那麼剩下的 3 K 容量將會被浪費掉,這與 inode 也有一定的相關性!因此,在規劃您的磁碟時,需要留意到您主機的用途來進行規劃較佳!與此同時,若 Block 規劃的太小,則磁碟的 Block 數目會大增,而造成 inode 在指向 block 時候的一些搜尋時間的增加,又會造成大檔案讀寫方面的效率較差,這也與 inode 有一定程度的相關性呢!需要特別留意的是:『當系統讀取了某一個檔案,則該檔案所在的區塊資料會被載入到記憶體當中,所以該磁碟區塊就會被放置在主記憶體的緩沖快取區中,若這些區塊的資料被改變時,剛開始資料僅有主記憶體的區塊資料會被改變,而且在緩沖區當中的區塊資料會被標記為” Dirty “,這個時候磁碟實體區塊尚未被修正!所以亦即表示,這些” Dirty “區塊的資料必需寫到磁碟當中,以維持磁碟實體區塊上的資料與主記憶體中的區塊資料的一致性。』這也是為什麼當 Linux 系統不正常關機,或者是突發性的跳電時,總是會造成系統在磁碟檢驗上面大花時間的原因了!   o Superblock:當我們在進行磁碟分割( partition )時,每個磁碟分割槽( partition )就是一個檔案系統( filesystem ),而每個檔案系統開始的位置的那個 block 就稱為 superblock ,superblock的作用是儲存像是檔案系統的大小、空的和填滿的區塊,以及他各自的總數和其他諸如此類的資訊等等,這也就是說,當您要使用這一個磁碟分割槽( 或者說是檔案系統 )來進行資料存取的時候,第一個要經過的就是 superblock 這個區塊了,所以啰, superblock 壞了,您的這個磁碟槽大概也就回天乏術了!   o Inode: 在 Linux 檔案與目錄管理 當中,我們提到了很多的 inode 概念,這裡在加重補強一下說明:對於檔案系統而言一個inode是在inode tables 中的一個項目。Inode包含了所有檔案有關的資訊例如名稱、大小、連接的數量、資料建立之日期,修改及存取的時間。它也包含了磁碟區塊的檔案指向(pointer)。pointer是用來記錄檔案被儲存在何處。對於 inode 的規劃方面,我們可以使用 mke2fs 來進行。   大致上硬碟就有這些東西,您還得了解每一個 filesystem 就是一個磁碟分割槽,免得到時候底下講的東西太混亂時,造成您的困擾,那就不好意思啦!  查看硬碟或目錄的容量   好了!那麼在文字介面底下有什麼方法可以查看目前的磁碟最大容許容量、已經使用掉的容量、目前所在目錄的已使用容量?還有還有,怎麼知道目前目錄底下使用掉的硬碟容量呢?以及如何查詢目前的 inodes 數目?呵呵!底下我們就來談一談主要的兩個指令:   df 查看以掛載磁碟的總容量、使用容量與 inode 等等   du 查看檔案使用掉的容量有多少?     · df   語法:   [root @tsai /root ]# df -[ikm] 參數說明: -i: 使用 i-nodes 顯示結果 -k: 使用 KBytes 顯示結果 -m: 使用 MBytes 顯示結果 范例: [root @test /root ]# df -k    <==以 KB 顯示磁碟空間 Filesystem      1k-blocks   Used Available Use% Mounted on /dev/hda1       2118832  904600  1106600 45% / /dev/hda3        497861   37525  434632  8% /disk1 none           31220     0   31220  0% /dev/shm /dev/hda5        101089   4127   91743  5% /proxy1 /dev/hda6        101089   4127   91743  5% /proxy2 /dev/hda2       1004052   38360  914688  5% /var /dev/fd0         1423   1405    19 99% /mnt/floppy  說明:   這是用來顯示目前磁碟空間的指令!需要注意的是,由於我們的檔案或者是外掛的磁碟都是加在『 / 』底下,所以當根目錄沒有空間的時後,嘿嘿!你的 Linux 系統大概就是掛了吧~(說個笑話!當初我們系上有個研究生在管理 Sun 的工作站,是別研究室的,他的硬碟明明有好幾 GB ,但是就是沒有辦法將幾 MB 的資料 copy 進去,他就去跟老板講說機器壞了!嘿!明明才來維護過幾天而已為何會壞了!結果老板將維護商叫來罵了 2 小時左右吧!後來,維護商發現原來硬碟的『總空間』還有很多,只是某個磁區填滿了,偏偏該研究生就是要將資料 copy 去那個磁區!呵呵!後來那個研究生就被命令『再也不許碰 Sun 主機』了~~)當然啰!你可以將你的資料放置在加掛的硬碟中,那麼如何知道目前哪一個磁碟還有多少空間呢?!       這裡要請大家再復習一下,我們的硬碟磁區規劃中, primary 磁區每一顆硬碟只允許 4 個,其他的就放置在 Extended 磁區中了!而,硬碟的代號與 IDE 的插槽是有關系的!如果忘記了,那就回去 安裝 Linux   那一章復習一下吧!好了!假設我只有一棵硬碟,且放在 IDE 的 mater ,那麼我的硬碟就是 /dev/hda 啰!而在這顆硬碟中的分割磁區就可以由 /dev/hda1 開始向上加!       OK,那麼使用 df -k 之後,出現的上面的資料中,可以知道我的硬碟更分為 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5 與 /dev/hda6 ,咦! /dev/hda4 跑去哪裡了!呵呵!其實 /dev/hda4 通常就是 Extended 磁區啦!而後面的 /dev/hda5, /dev/hda6 等磁區就是由 /dev/hda4 所切出來的!所以 /dev/hda5 + /dev/hda6 = /dev/hda4 !當然,如果還有沒有顯示出來的,例如 Swap ,則 /dev/hda4 還有可能更大呦!   那麼來解釋一下上面的資料吧!   · Filesystem:說的是磁區啦!另外,如果你有加掛軟碟的話,那麼就會出現如上表中最後一行啰!   · 1k-blocks:說明底下的數字單位是 1KB 呦!如果你使用 df -m 則這一欄會出現 1M-blocks 啰!   · Used :顧名思義,就是使用掉的硬碟空間啦!   · Available :也就是剩下的磁碟空間大小;   · Use% :就是磁碟的使用率啦!如果使用率高達 90% 以上時,最好需要注意一下了,免得容量不足造成系統問題(例如最容易被灌爆的 /var/spool/mail 這個放置郵件的磁碟!)。   · Mounted on :就是磁碟掛載的目錄所在啦!例如 /dev/hda5 是掛載在 /proxy1 底下,而 /var 是 /dev/hda2 這個磁區啰!   另外,需要注意的是,有的時後某些系統會出現 /proc 這個磁區,但是裡面的東西都是 0 ,不要緊張! /proc 的東西都是 Linux 系統所需要載入的系統資料,而且是掛載在『記憶體當中』的,有點像是以前 DOS 年代的虛擬硬碟啦!所以當然沒有占任何的硬碟空間啰!   · du   語法:   [root @test /root ]# du [-abckms] [目錄名稱] 參數說明: [目錄名稱] 可以省略,如果省略的話,表示要統計目前所在目錄的檔案容量 -a  :全部的檔案與目錄都列出來!預設值是指列出目錄的值! -b  :列出的值以 bytes 輸出 -c  :最後加總 total ! -k  :列出的值以 KB 輸出 -m :列出的值以 MB 輸出 -s  :只列出最後加總的值! 范例: [root @test /root]# du -m   <==列出 /root 底下的目錄與檔案所占的容量以 MB 輸出 [root @test /root]# du -s /home <==將 /home 底下的目錄與檔案的容量加總後輸出,這裡只會輸出總容量!  說明:   在 Windows 底下可以使用檔案總管來管理你的磁碟,在 Linux 底下也可以輕易的以 du 來知道目前磁碟的檔案容量耶!在預設的情況下,容量的輸出是以 KB 來設計的,如果你想要知道目錄占了多少 MB ,那麼就使用 -m 這個參數即可啰!而,如果你只想要知道該目錄占了多少容量的話,呵呵,使用 -s 就可以啦!  切割與格式化硬碟:   對於一個系統管理者 ( root ) 而言,硬碟的的管理是相當重要的一環,尤其近來硬碟已經漸漸的被當成是消耗品了.....好了,如果我們要 partition 一棵新的硬碟,要使用什麼程式來工作?而如果已經 partition 好了,又要如何來格式化呢?剛剛我們提到了 inodes 這個東西,那麼使用格式化 ( format ) 的軟體可以怎樣的來格式化好我們所需要的 inodes 的大小呢?這裡我們就來談一談啰!   fdisk 硬碟切割 partition 的工具   mke2fs 就是 Linux 底下重要的 format 格式化的工具   e2label 修改硬碟的 label (表頭名稱) 的工具!   mknod 新增硬體對應檔的工具!  ·fdisk   語法:   [root @test /root ]# fdisk [-l] [裝置名稱] 參數說明: -l :直接列出該硬碟裝置的 partition table 范例: [root @test root]# fdisk /dev/hdb<==分割我的 hdb 磁碟,記得後面不接數字 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) Command (m for help): p <==印出目前的磁碟分割狀態 Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System /dev/hdb1  *     1    250  1007968+ 83 Linux Command (m for help):q <==不儲存離開 fdisk [root @test root]# fdisk -l /dev/hdb<==直接秀出這顆硬碟當中的 partition Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System /dev/hdb1  *     1    250  1007968+ 83 Linux  ·說明:   還記得我們剛剛在 認識硬碟   裡面提到的部分內容嗎?其實 fdisk 最主要的工作就是在修改『 partition table 』而已,並沒有實際的將硬碟切切割割的啦!他會定義出某一個 partition 是由 n1 磁柱到 n2 磁柱之間這樣的資訊!因此,如果硬碟切割錯誤時,只要在 format 之前將 partition tables 復原,那麼就可以將硬碟原來的資料救回來啰!所以,一個好的管理員,有時候也會將自己的 partition table 記錄下來,以備不時之需呀!這個 fdisk 只有 root 才能執行,此外,請注意,使用的『裝置名稱』請不要加上數字,因為 partition 是針對『整個硬碟裝置』而不是某個 partition 呢!所以執行 fdisk /dev/hdb1 就會發生錯誤啦!要使用 fdisk /dev/hdb 才對!底下說一說進入 fdisk 之後的幾個重要參數吧!   注:您可以使用 fdisk 在您的硬碟上面胡搞瞎搞的進行實際操作,都不打緊,但是請『千萬記住,不要按下 w 即可!』離開的時候按下 q 就萬事無妨啰!   o 硬碟資訊:通常我們需要知道這顆硬碟的資訊時,直接按下『 p 』就可以了解了,例如上面的例子中,我的一棵硬碟切割呈上面的模樣,而我的 System 除了一個 swap 之外,其他的都是屬於 ext2 的呦!   o 刪除磁區:如果我要刪除一個以存在的磁區時,就需要:   1.fdisk /dev/hdb :先進入 fdisk 畫面;   2.p :先看一下磁區的資訊,假設要殺掉 /dev/hdb1;   3.d :這個時候會要你選擇一個 partition ,就選 1 啰!   4.w :儲存到磁碟資料表中,並離開 fdisk ;當然啰,如果你反悔了該怎麼辦!?呵呵,直接按下 q 就可以取消剛剛的刪除動作了!   [root@test root]# fdisk /dev/hdb Command (m for help): p Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System /dev/hdb1  *     1    250  1007968+ 83 Linux Command (m for help): d Partition number (1-4): 1 Command (m for help): p Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System 看!原先的 partition 不見了,如果確定儲存就按下 w ,否則按下 q 趕緊離開!  5.   o 新增磁區:那麼如何增加一個磁區呢?前提之下是你的硬碟必須還有硬碟空間才行!   1.fdisk /dev/hdb :先進入 fdisk 畫面中;   2.n:新增一個磁區,這個時候系統會問你,如果您已經具有 extended 磁區時,那麼系統會問您,您要新增的是 Primary 還是Logical ,而如果您還沒有 extended ,那麼系統僅會問你要新增 Primary 還是 Extended,除此之外,如果您已經用完了四個 P + E 的話,那麼就僅有 Logical 可以選擇啦!請再回到剛剛說明硬碟的地方再次的復習一下吧!如果是選擇 primary 的話,請按 p ,否則請按 e 或 l 。   3.p :由於選擇為 primary 所以就會按下 p 啰!   4.1-4 :primary 只允許四個,(仍然比 Windows 只允許一個好的多了!),所以這裡請按尚未被使用的那一個磁區啰!   5.w :同樣的儲存離開啰!   [root @test root]# fdisk /dev/hdb Command (m for help): p <==印出資訊 Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System /dev/hdb1  *     1    250  1007968+ 83 Linux Command (m for help): n <==選擇新增 Command action  e  extended  p  primary partition (1-4) e <==輸入 e 來新增 extended 啰! Partition number (1-4): 2 First cylinder (251-523, default 251):  <==這裡按 Enter 即可!用預設值! Using default value 251 Last cylinder or +size or +sizeM or +sizeK (251-523, default 523): +100M Command (m for help): p <==再印出資訊 Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System /dev/hdb1  *     1    250  1007968+ 83 Linux /dev/hdb2      251    276  104832  5 Extended <==這行即是新增的! Command (m for help): n <==再次新增 Command action  l  logical (5 or over)  p  primary partition (1-4) l<==這次選擇 logical 的 l 哩! First cylinder (251-276, default 251):  <==這裡按 Enter 即可!用預設值! Using default value 251 Last cylinder or +size or +sizeM or +sizeK (251-276, default 276): +100M Command (m for help): p Disk /dev/hdb: 128 heads, 63 sectors, 523 cylinders Units = cylinders of 8064 * 512 bytes  Device Boot  Start    End  Blocks  Id System /dev/hdb1  *     1    250  1007968+ 83 Linux /dev/hdb2      251    276  104832  5 Extended /dev/hdb5      251    276  104800+ 83 Linux  <==這行即是新增的!  透過上面的例子,您可以清楚的看到,呵呵!第一個 logical 是在 5 號呦!OK!在 fdisk 完成之後,請記得使用 mke2fs 格式化啰!另外,請注意,如果過程中進行錯誤時,那麼趕緊按下 q 離開即可!   o 操作環境的說明:以 root 的身份進行硬碟的 partition 時,最好是在單人維護模式底下比較安全一些,此外,在進行 fdisk 的時候,如果該硬碟某個 partition 還在使用當中,那麼很有可能系統核心會無法重新載入硬碟的 partition table ,解決的方法就是將該使用中的 partition 給他卸載,然後再重新進入 fdisk 一遍,重新寫入 partition table ,那麼就可以成功啰!   o 注意事項:另外,請注意一下,雖然一顆硬碟最大的邏輯磁區可以到達 64 顆( 總數,包含 1~4 的 primary partition ),但是並非所有的 Linux distribution 都會將所有的邏輯磁區對應的磁碟代號都寫入系統當中,以 Red Hat 為例,他僅列出 1~16 個代碼,其他的您就得自己動手做啦!至於 Mandrake 的話,他則是使用自己偵測的,當您以 fdisk 設定好了 partition table 之後,磁碟對應的磁碟代號就會自動的在您的 /dev/ 裡頭設定完成啰!不過,有的時候您還是得自己設定一下磁碟代碼啦!如何設定呢?就使用 mknod 指令吧!   ·mke2fs   語法:   [root @test /root ]# mke2fs [-b block-size] [-i inode-size] [root @test /root ]# mke2fs [-c] [root @test /root ]# mke2fs [-L] [root @test /root ]# mke2fs [-j] 參數說明: -b  :在設定每個資料區塊占用的大小,目前支援的大小有 1024, 2048, 4096 三種! -i  :設定 inode 值! -c  :檢查錯誤磁碟,會比較慢呦! -L  :規劃設定這個磁區的 label (表頭名稱) -j  :建立 ext3 這個 journaling 的檔案格式 范例: [root @test /root]# mke2fs /dev/hda5 以 mke2fs 預設的條件( ext2 )格式化 /dev/hda5 這個裝置 [root @test /root]# mke2fs -c /dev/hda5 在格式化的過程中一起檢查硬碟 [root @test /root]# mke2fs –j -b 8192 -i 8192 /dev/hda5 改變 block 由 4096 預設值改為 8192 [root @test /root]# mke2fs /dev/fd0   <==格式化軟碟呀! mke2fs 1.26 (3-Feb-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 216 inodes, 1680 blocks 84 blocks (5.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 216 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.  ·說明:   這是用來將磁碟格式化成 Linux 系統檔的指令。基本上,只要寫入對的裝置檔案就可以了。例如我們要格式化軟碟的話,或是新的硬碟 hda5 等等!這個指令通常是在新的硬碟上面切割完之後,再加以格式化的!另外,如果要將舊的磁區格式化成 ext2 格式的話,就使用這個指令吧!進行當中顯示的訊息有點像上面的最後幾行,系統會顯示目前的格式化的預設值!而如果要設定不同的 Block ( 就是前面提到的一個邏輯 sector 的大小 ),就可以使用 -b 這個參數!請注意啰,預設的情況下, Block 是 4096!此外,您也可以自訂 inode table 呢!而,當沒有指定的時候, mke2fs 使用 ext2 為格式化檔案格式,若加入 –j 時,則格式化為 ext3 這個 Journaling 的 filesystem 呦!   ·e2label   語法:   [root @test /root ]# e2label [/dev/hd...] [label_name] 參數說明: 范例: [root @test /root]# e2label /dev/hda1 / 上面的案例為將 /dev/hda1 這個磁碟槽的名字設定為 / 啦!  ·說明:   個東西也蠻有意思的!他主要是用來『更改磁碟的表頭資料』,也就是類似『檔案總管』裡面每一個磁碟機代號後面的名稱!沒有什麼特異功能啦!就是有趣的用途而已!此外,這個用途也可以被用在 /etc/fstab 裡頭!也就是可以增加那個磁碟代號的設定啰!   ·mknod   語法:   [root @test root]# mknod [device] [bcp] [Major] [ Minor] 參數說明: b :設定節點成為周邊儲存設備檔 c :設定節點成為周邊設備如滑鼠等 p :建立 FIFO 范例: [root@test /]# cd /dev [root@test dev]# ll hda* lr-xr-xr-x  1 root   root      32 Oct 19 13:04 hda -> ide/host0/bus0/target0/lun0/disc lr-xr-xr-x  1 root   root      33 Oct 19 13:04 hda1 -> ide/host0/bus0/target0/lun0/part1 lr-xr-xr-x  1 root   root      33 Oct 19 13:04 hda2 -> ide/host0/bus0/target0/lun0/part2 [root@test dev]# ll ide/host0/bus0/target0/lun0/ total 0 brw-------  1 root   root    3,  0 Jan 1 1970 disc brw-------  1 root   root    3,  1 Jan 1 1970 part1 brw-------  1 root   root    3,  2 Jan 1 1970 part2 [root@test dev]# mknod hda3 b 3 3<==注意到啰!那個 3 3 就是上面的數值 [root@test dev]# ll hda* lr-xr-xr-x  1 root   root      32 Oct 19 13:04 hda -> ide/host0/bus0/target0/lun0/disc lr-xr-xr-x  1 root   root      33 Oct 19 13:04 hda1 -> ide/host0/bus0/target0/lun0/part1 lr-xr-xr-x  1 root   root      33 Oct 19 13:04 hda2 -> ide/host0/bus0/target0/lun0/part2 brw-r--r--  1 root   root    3,  3 Oct 22 17:16 hda3  ·說明:   mknod 在平時是幾乎不會使用到的,但是某些時候,確實有可能會出問題!這個指令的設定方法中,必需要取得設備的 Major ( 主要 ) 與 Minor ( 次要 ) 的數值後,才能夠設定完整!上面是我的 Mandrake 9.0 在 P-166 MMX 上面的情況,由於之前僅分割成兩槽,所以僅到達 /dev/hdb2 而已,如果要 hdb3 的話,那麼除了 fdisk 完成之後, Mandrake 會自行多設定一個之外,否則就要自己來啰!而由這個裝置的內容說明上面,我們可以這樣定義一下:       檢查硬碟與資料同步化寫入:   現在也建立好了新的 partition 了,也 format 好了,那麼有沒有其他的關於硬碟的工作需要來進行呢?有的,就是需要怎樣來檢查硬碟有沒有壞軌呢?那個就是 fsck 這個工具的用途啦!此外,您會發現到,在 / 這個目錄底下 ( 其實只要有掛載硬碟的那個目錄底下都有這個目錄 ) 會有一個特殊的目錄,就是『 lost+found 』這個目錄啦!對的!就是當你處理完 fsck 之後,如果程式有發現到任何的錯誤的檔案,就會將該檔案的資料給他丟到這個目錄當中,嘿嘿!所以當你發現你的 Linux 目錄當中有這個檔案時,不要擔心,那個是正常的啦!而且只有掛載 partition 的目錄才會有這個預設的目錄啰!       還有,由於在 Linux 系統當中,為了增加系統效能,通常系統預設就是一些資料會寫在記憶體當中,並不會直接將資料寫入硬碟裡面,這是因為記憶體的速度要比硬碟快上若干倍呀!但是有個問題就發生了,萬一系統由於『跳電』或者是其他的莫名原因,造成系統的 shutdown 時,唉呀!怎麼辦?!系統就完蛋啦!所以啰,我們需要在某些特定的時候讓資料直接回存到硬碟之中呀!了乎!這裡提供幾個慣用的指令,其中,那個 fsck 是相當重要的,請參考其用法啰!   fsck    檢查硬碟有沒有壞軌的工具   badblocks 跟 fsck 一樣,但是 fsck 的功能比較強,所以這個指令可以不學!   sync 將  記憶體中的資料給他同步化寫入硬碟中     · fsck   語法:   [root @test /root ]# fsck [-Aar] [裝置名稱] 參數說明: -A  :依據 /etc/fstab 的內容,將所有的裝置都掃瞄一次(通常開機過程中就會執行此一指令) -a  :自動修復檢查到的有問題的磁區,所以你不用一直按 y 啰! -r  :一定要讓使用者決定是否需要修復,這與上一個 -a 剛好相反! 范例: [root @test /root]# fsck -a /dev/hda5 <==檢查 /dev/hda5 這個磁區有沒有錯誤!  說明:   這是用來檢查與修正硬碟錯誤的指令。注意:通常只有身為 root 且你的系統有問題的時候才使用這個指令,否則在正常狀況下使用此一指令,可能會造成對檔案的危害!通常使用這個指令的場合都是在系統出現極大的問題,導致你在 Linux 開機的時候得進入單人單機模式下進行維護的行為時,才必須使用此一指令!另外,如果你懷疑剛剛格式化成功的硬碟有問題的時後,也可以使用 fsck 來檢查一下硬碟呦!其實就有點像是 Windows 的 scandisk 啦!此外,由於 fsck 在掃瞄硬碟的時候,可能會造成部分 filesystem 的損壞,所以『要執行 fsck 的時候,請將該 partition umount 一下!』,然後再去執行!       常常我們會發現,在比較老舊的機器上(例如我的 p-166),如果主機不正常的關機(例如跳電啰!),那麼硬碟很可能會出現錯誤的狀況!這個時候 Linux 就無法正常的開機!這個時候就需要輸入 root 的密碼,以登入單人維護模式(run level 1),然後下達 fsck -a /dev/hdxxx 來檢查你的硬碟!等到確認成功之後,就使用 reboot 來重新啟動吧!     · badblocks   語法:   [root @test /root ]# badblocks [-svw] [裝置名稱] 參數說明: -s  :在螢幕上列出進度 -v  :可以在螢幕上看到進度 -w  :使用寫入的方式來測試,建議不要使用此一參數,尤其是待檢查的裝置已有檔案時! 例: [root @test /root]# badblocks -sv /dev/hda1   · 說明:   這是用來檢查硬碟或軟碟磁區有沒有壞軌的指令!跟 Windows 的 scandisk 相同功能啦!不過由於 fsck 的功能比較強,所以目前大多已經不使用這個指令了!     · sync   語法:   [root @test /root ]# sync 參數說明: 例: [root @test /root]# sync; sync  說明:   在正常的狀況中,由於為了增加系統的效率,因此,很多時候進行中的程式產生的程序之暫存檔案都不會直接存至磁碟機當中,而是記憶在記憶體當中!由於記憶體的資料傳遞速度比磁碟機快了幾十倍,所以如此一來將有助於整個系統的效率!!然而這也產生了一個困擾,那就是當你的系統不正常關機的時候,可能會使得一些已經經過改變,卻還沒有存入磁碟中的資料遺失(因為還在記憶體當中!)所以這個時候 sync 的功能就相當的大了!因為他可以直接將系統暫存在記憶體當中的資料回存寫入磁碟當中,呵呵!很棒吧!但是需要注意你的系統核心 (kernel) 必須要有支援 sync 才行(目前幾乎一定都會支援的啦!)     關於軟碟開機片:   嗯!搞定了上面的動作了沒?!好了,如果搞定了的話,現在我們來制作一個可以開機的軟碟開機片好了!怎麼制作呢?呵呵!就是利用 mkbootdisk 啰!  mkbootdisk 制作軟碟開機片   fdformat  這是用來『低階格式化』軟碟的工具     · mkbootdisk   語法:   [root @test /root ]# mkbootdisk --device /dev/fd0 `uname -r` 參數說明: --device  :後面接裝置!通常接的就是軟碟啦 /dev/fd0 ! 范例: [root @test /root]# mkbootdisk --device /dev/fd0 `uname -r`  <==建立可開機軟碟!!  說明:   這是制作開機磁片的指令,其中,『 `uname -r` 』是目前 Linux 系統所使用的核心版本,如果你有多個核心版本的話,你以可以直接輸入核心版本。例如在我的系統中,舊的核心還是有保留的,所以我都會至少有兩個核心,在我管理的某部主機中,核心為 2.4.7 及 2.4.18 ,那麼如果我要直接以 2.4.18 來開機的話,就可以使用   mkbootdisk --device /dev/fd0 2.4.18  建立軟碟開機片一直是個好主意!他可以在你求助無門的時候給你莫大的幫助喔!所以,建立一個新的軟碟開機片是一個好主意啦!  · fdformat   語法:   [root @test /root ]# fdformat [裝置名稱] 參數說明: 例: [root @test /root]# fdformat /dev/fd0H1440   · 說明:   這是用來『低階格式化』軟碟的指令。(注意:軟碟的裝置檔為 /dev/fd0 )!在上面的裝置檔案為 /dev/fd0H1440 ,其中加在 /fd0 之後的 H1440 為表示 1.44MB 的軟碟容量!在低階格式化之後,還要將軟碟的檔案格式化為 Linux 的 ext2 之型態,則需要使用 mke2fs 指令!     各式磁區的掛載:   要將上面我們所建立起來的硬碟或軟碟正式的在 Linux 上面啟用時,一定需要將他掛載上檔案系統!而所謂的『掛載點』則是該硬碟所在的目錄,且在該目錄下的所有目錄都歸在該硬碟所有!假設一個情況好了,我們的 / 為 /dev/hda1 而 /home 為 /dev/hda2 ,那麼在 /home/test 底下的咚咚就也都歸 /dev/hda2 這個 partition 所有啰!而需要特別留意的是,由於掛載檔案系統需要掛載點,所以掛載的時候得先建立起掛載的目錄才行!除此之外,如果您要用來掛載的目錄裡面並不是空的,那麼掛載了檔案系統之後,那麼原目錄下的東西就會暫時的消失。舉個例子來說,假設您的 /home 原本是屬於根目錄 / 底下的 partition 所有,底下原本就有 /home/test 與 /home/vbird 兩個目錄。然後你想要加入新的硬碟,並且直接掛載 /home 底下,那麼當您掛載上新的 partition 時,則 /home 顯示的是該 partition 的內容,至於原先的 test 與 vbird 這兩個目錄就會暫時的被隱藏掉了!注意喔!並不是被覆蓋掉,而是暫時的隱藏了起來,等到 partition 被 umount 之後,則該目錄的內容就會再次的跑出來啦!  ·mount   語法:   [root @test /root ]# mount [-ahlV] [root @test /root ]# mount -t type /dev/hdxx /mountpoint [root @test /root ]# mount -o [options] [root @test /root ]# umount /mountpoint 參數說明: -a  :依照 /etc/fstab 的內容將所有相關的磁碟都掛上來! -h  :只列出 mount 相關的參數,並不掛載任何裝置 -l  :列出目前已經掛載的裝置、檔案系統名稱與掛載點! -V  :列出 mount 的版本資訊 type :將後面 /dev/hdxx 這個裝置以 type 的檔案格式掛載到 /mountpoint 這個點,    常見的 type 有底下幾個:    vfat, msdos    :這個是支援 Windows 系統的檔案格式,尤其是 vfat 常用!    ext, ext2     :這個就是 Linux 的主要檔案格式啦!    iso9660      :光碟機的檔案格式    nfs, ntfs, ufs  :windows 2000 使用 NTFS 格式呀! -o  :這個參數後面接的咚咚可多了!可用的資料可不少呢!    rw   :讓 mount 的磁區為可讀寫    suid  :允許該磁區可以設定檔案為 SUID 的狀態!    exec  :允許該磁區可以執行 binary 的檔案!    auto  :允許該磁區可以使用 mount -a 的參數設定!    nouser :禁止其他人(非 root 之使用者)使用掛載功能!這是預設值!    async :允許磁區可以進行非同步記錄(記憶體與硬碟不同步!最常用!)    defaults:同時具有 rw, suid, dev, exec, auto, nouser, async 這些功能的設定值!    nosuid :不許該磁區具有 SUID 的檔案屬性!    ro   :設定為唯讀屬性!    remount :讓系統本來掛載的磁區重新被掛載! 范例: [root @test /root]# mount -a [root @test /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom <==掛上光碟 [root @test /root]# mount -t vfat /dev/fd0 /mnt/floppy  <==掛上 windows 檔案系統的軟碟 [root @test /root]# mount -t ext2 /dev/fd0 /mnt/floppy  <==掛上 Linux  檔案系統的軟碟 [root @test /root]# mount -t ext2 /dev/hdc6 /home     <==掛上 Linux 檔案格式硬碟 [root @test /root]# mount -o remount,rw /          <==讓根目錄重新掛載為可讀!  ·說明:   這個指令只有 root 才能執行!如果你不想要單獨的將某個磁碟掛上來,那麼執行:   ·mount -a  ·就可以依照 /etc/fstab的的參數內容將所有的磁碟給他重新掛上去!此外,需要注意的是,由於 Linux 系統中,每一個路徑都有可能是一個獨立的磁區系統,所以需要將每個磁區系統都掛上各自的掛載點!詳細的內容請回去參考一下上一篇 Linux 檔案系統 的說明。另外,由於各個磁區的檔案系統可能並不相同,所以您必須先要了解該磁區的檔案系統,這樣才可以進行 mount 的工作!如何知道該磁碟的檔案格式呢?可以使用 fdisk 來顯示的功能即可!   請注意呦!由於 mount 之後的檔案格式是沒有辦法直接被拿掉的!尤其在使用 fsck 檢查你的硬碟時,更是不能掛上硬碟的!而如何將硬碟至掛載點卸載呢?呵呵,就直接使用 umount 即可啰!   底下分別談一談各個裝置的掛載情況:這裡可能先要強調一個觀念,在 Windows 底下,磁碟分割是以 A, B, C, D, .... 等等的方式來劃分的,然而在 Linux 或 Unix 系統之下,卻是以目錄來代表,也就是說,一個目錄很可能就是一個磁區了!舉個例子來說,通常 Linux 預設的軟碟掛載的地點在 /mnt/floppy 這裡!呵呵!那麼如果你需要軟碟的資料時,就將 /dev/fd0 這一個裝置(前面提過啰!這個是周邊存取裝置的一個設備檔案類型)掛上 /mnt/floppy 就可以啦!然後你進入到 /mnt/floppy 就可以讀取軟碟的資料啰!OK!在這裡也必須要介紹一下 mount 這個指令喔!   o掛載軟碟:   很多朋友常常會使用到軟碟,尤其是在網路有問題的時候,那麼如何使用 Linux 將軟碟掛上來呢?!首先,您給先了解你的磁片檔案的格式,例如 Linux 的檔案格式( ext2 )與 Windows 的檔案格式( vfat )是不一樣的!分別可以使用如下的方式掛上來:       [root @test /] # mount -t ext2 /dev/fd0 /mnt/floppy<==Linux 格式 [root @test /] # mount -t vfat /dev/fd0 /mnt/floppy<==Windows 格式 [root @test /] # umount /mnt/floppy<==將軟碟機卸載  o     所以啰!即使是 Windows 格式的檔案,在 Linux 底下仍然是可以讀取的到的呦!另外,要注意的是,即使你使用軟碟完畢之後,一定要將 /mnt/floppy 卸載之後才可以取出軟碟片喔!不然系統會一直告訴你發生錯誤啰!而在卸載 /mnt/floppy 的時候,你一定不能在該目錄底下,否則會發生錯誤訊息喔!而如果載入的格式不符合,系統也不會將該軟碟掛上來的呦!好了,那麼怎麼制作 ext2 的軟碟呢?簡單的很,就使用 mke2fs /dev/fd0 就行啦!   o掛載光碟!   在某些 Linux distribution 底下,例如 Red Hat 7.2 在預設的狀態下是將 CDROM 視為一個模組,預設的核心並沒有將他載入,所以,如果你需要在 Red Hat 7.2 裡面掛載 CDROM 的話,有兩個解決的方法:   一個是直接將 CDROM 的模組載入系統中,這個動作比較簡單,而且你也可以將這個指令直接寫到 /etc/rc.d/rc.local 裡面去即可!   [root @test / ]# modprobe cdrom [root @test / ]# modprobe ide-cd [root @test / ]# mount -t iso9660 /dev/cdrom /mnt/cdrom [root @test / ]# umount /mnt/cdrom  o     前兩行是模組的載入,而第三行是掛載 CDROM ,第四行則是卸載!此外,由於預設的 CDROM 掛載就是以 iso9660 的 type 來做的,所以你也可以直接寫成 mount /dev/cdrom /mnt/cdrom 就可以啰!   另外一個解決的方法是將 CDROM 的模組編譯進核心當中!又有兩種方式,一個是直接下載新的核心來編譯,另一個則是直接以 Red Hat 出的更新版的核心來直接升級就可以啦!如果是使用 up2date 的話,那麼升級核心是很簡單的啦!   o掛載 Windows 磁區:   如果萬一你在安裝系統的時候忘記將 Windows 的 VFAT 格式的磁區 mount 上你的 Linux 時,該怎麼辦?!這種現象最常發生在多系統共存的環境中!例如再原有的 Windows 98 或 Win2000 上面安裝 Linux ,但是結果卻忘記將該磁區掛載上來!嗯!這樣需要重新安裝嗎?!當然不需要了!又不是被入侵!那麼該如何掛載上來呢?!就如同前面說的,由於一個目錄可能代表了一個磁區,因此你必須要先建立一個磁區,然後再將此磁區掛載上你的 Linux 目錄,就可以啦!另外,由於需要將磁區掛在目錄下,所以你還得需要了解你的 Windows 磁區是在哪一個硬碟周邊中喔!如何知道你的 Windows 磁區呢?就使用 fdisk 吧!假設你的 Windows 是在 Primary IDE 的硬碟,那麼應該就是 /dev/hda 啰!則你可以這樣做:   [root @test / ]# fdisk –l /dev/hda Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders Units = cylinders of 16065 * 512 bytes   Device Boot  Start    End  Blocks  Id System /dev/hda1       1    268  2152678+ 83 Win95 FAT32 /dev/hda2  *    269    395  1020127+ 83 Linux /dev/hda3      396    459  514080  83 Linux /dev/hda4      460    524  522112+  5 Extended /dev/hda5      460    472  104391  83 Linux /dev/hda6      473    485  104391  83 Linux /dev/hda7      486    498  104391  82 Linux swap /dev/hda8      499    511  104391  83 Linux /dev/hda9      512    524  104391  83 Linux   o     使用 fdisk 指令的話就可以知道你的 Win95 FAT32 的磁區在哪一個,在上表中,顯示的是 /dev/hda1 這一個磁區啰!那麼假設我要將 Windows 的目錄建置在 /mnt/win98 裡面呢?就這樣做吧:   [root @tsai / ]# mkdir /mnt/win98 [root @tsai / ]# mount -t vfat /dev/hda1 /mnt/win98 [root @tsai / ]# mount -t vfat -o iocharset=cp950 /dev/hda5 /mnt/win98  o     如此一來就將 Windows 的系統掛到 Linux 裡面啰!簡單吧!請注意,上面那個第三行所使用的參數可以讓您的 Windows 98 的磁區當中的檔案顯示出正確的中文呦!   o安裝新硬碟:   再來個新問題!那麼我如果想要安裝一顆新硬碟呢?呵呵,也是很簡單啦,就跟在 Windows 底下一樣!需要先 fdisk 然後在 format ,之後就可以順利的掛上 Linux 系統啰!假設我安裝的硬碟在 Primary 的第二個 IDE 上面,也就是 /dev/hdb 上,那麼整個步驟應該就會是:   [root @test / ]# fdisk /dev/hdb .......(以下省略!直接以 fdisk 分割好硬碟啦!) [root @test / ]# mke2fs /dev/hdb1 在 Linux 中的 format 是 mke2fs 這一個指令喔! 上面的指令在將你的硬碟磁區格式化成 Linux 的 ext2 格式啦! [root @test / ]# mkdir /disk2 建立一個目錄名稱為 /disk2 ,預計用來掛載你的新硬碟 [root @test / ]# mount -t ext2 /dev/hdb1 /disk2 將硬碟掛上 Linux 系統啰!  o    ·   ·umount   語法:   [root @test root]# umount [-f] [devicemount_point] 參數說明: -f :強制將該檔案系統退出,最常使用在無法退出的 NFS 檔案系統中了! 范例: [root @test root]# umount /home  ·說明:   就是直接將 mount 上來的檔案系統給他卸載即是!卸載之後,可以使用 df 看看是否還存在呢?  設定開機時即掛載的方式:   剛剛上面說了許多,那麼可不可以在開機的時候就將我要的磁區都掛好呢?!這樣我就不需要每次進入 Linux 系統都還要在掛載一次呀!當然可以啰!那就直接到 /etc/fstab 裡面去修修就行啰!不過,在開始說明前,這裡要先跟大家說一說系統掛載的一些限制:   ·根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。   ·其它 mount point 必須為已建立的目錄﹐可以任意指定﹐但一定要遵守必須的系統目錄架構原則。   ·所有 mount point 在同一時間之內﹐只能掛載一次。   ·所有 partition 在同一時間之內﹐只能掛載一次。   ·如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。   好了,那麼我們進入 /etc/fstab 看一看吧:       [root @test / ]# more /etc/fstab # History: # ================================================== # When     Who   What # 2002/10/19  VBird  This file had been modified by me. # ================================================== # device    MountPoint   filesystem   parameters   dump  fsck /dev/hda1    /        ext3      defaults    1    1 /dev/hda2    swap      swap      defaults    0    0 LABEL=/backup  /backup     ext3      defaults    1    1 none      /dev/pts    devpts     mode=0620    0    0 none      /proc      proc      defaults    0    0 /dev/hda3    /mnt/win98   vfat      defaults,iocharset=big5,codepage=950 0 0  我這個人比較龜毛一點,因為 Mandrake 9.0 的 /etc/fstab 檔案排列方式蠻丑的,雖然每一欄之間只要以空白字元分開即可,但就是覺得丑,所以通常我就會自己排列整齊,並加上注解符號,就是 # 字號,來幫我記憶這些資訊!總共有六欄,分別來談一談吧!   1.磁區或標頭:就是磁區啦!不過,如果是在安裝的時候有給予一個 label (標頭) 的話,那麼使用 label 也可以,例如上面的 LABEL=/backup 那一行。而如果是我們增加新的磁區的話,那麼這裡就必須要使用『磁區』了!例如新安裝一個硬碟在 /dev/hdd1 當中,那麼這裡就寫 /dev/hdd1 啰!那麼如果我還是想要使用 label 來掛載呢?!就使用 e2label 來建立 label name 啦! e2label 的用法在前一章有說明,忘了的話,快去看看先!   2.掛載的目錄點:就是 mount 的掛載點啦!   3.該磁區的檔案格式:目前 Linux 大都使用 ext2, ext3, reiserfs 等等的,不過,如果你有使用 Windows 的檔案格式的話,那麼就可以使用 vfat 啰!目前支援的格式還有 iso9660( 光碟 ), msdos, minix, nfs, swap 等等的檔案格式;   4.檔案格式參數區:這個就重要了!有哪些磁碟參數可以參考呢?在前一章的 mount 指令裡面介紹了一些些,這裡再更詳細的提出說明如下:      1. 另外,如果有興趣的話,還可以加上類似『iocharset=big5,codepage=950』這種額外的功能參數以啟動中文編碼的支援,更詳細的資料可以 man mount 搜尋呢!       2. 是否可以被 dump 指令備份:這一列在說明,使用 dump 指令來備份時時,該磁區是否跟著一起動作?如果沒有數字的話則以 0 帶入!由於我們希望有備份的功能,所以這裡當然就開啟( 1 )啰!       3. 檢驗磁區:這個數字在用來以 fsck 檢驗磁區用的!在開機與關機的時候,通常 Linux 希望檢驗一下磁區,所以這裡需要設定一下。通常 root (就是根目錄 / 啦)需要設定為 1 ,而其他的檔案系統( filesystem )就設定為 1 即可!當然啰!由於 proc 及 swap 與 windows 並不需要以 fsck 來檢驗,所以就可以設定為 0 啰!   所以,假如我要新增加一個 /dev/hdb1 並且掛載在 /disk2 這個目錄下的話,那幺我就在該檔案的最底加上一行:    /dev/hdb1   /disk2     ext2  defaults   1  1  或者我直接在這個檔案上面規劃好之後,再下達: mount -a 那幺程式就會自動的將 /etc/fstab 裡面的資訊讀出,並且依據裡面的情況來掛載磁區喔!如此一來,每次開機的時候都會自動的建立好對應的咚咚啦!       有經驗的朋友大概都還蠻清楚的,就是 /etc/fstab 寫錯了的時候(最常發生在 quota 設定的時候)會造成無法開機的窘境,因此,通常我們都會把自己所想要的資料給他寫在 /etc/fstab 之後,以 mount –a 驅動看看,此外,如果錯誤已經造成了呢?那也不要太擔心,由於錯誤造成了,所以根目錄 / 預設會變成唯讀屬性,這個時候就得要進行 remount 的工作了,亦即下達:    mount –n –o rw,remount /  這樣應該就可以將磁碟掛載成為可讀寫了!       此外,您必須了解的是, /etc/fstab 寫的是您的設定檔,但是目前的系統所掛載的資訊則是記錄在 /etc/mtab 這個檔案中喔!這個檔案會即時的進行更新,如果您重新手動掛載你的檔案系統,那幺這個 mtab 就會跟著變動啰!     虛擬記憶體 Swap:   我們前面談了很多各式各樣的 filesystem ,不過,您曉得在安裝的時候設定的那一個『虛擬記憶體, swap 』要如何增加嗎?舉個簡單的例子吧,我們的 Sun 主機上面,由於跑的程式太龐大了,通常 swap 需要開啟到 1GB 左右,但是呢,有的時候還是會不夠的!在 Linux 當中,如果您需要使用到很大量的虛擬記憶體,偏偏當初給的 swap 磁區不夠大,那要怎幺辦呢?有什幺方法可以來達成:   · 設定一個 swap partition ?   · 建立一個虛擬記憶體的檔案?   怎幺說呢?基本上,虛擬記憶體就是將硬碟規劃出一個區間,讓記憶體的資料可以經由硬碟來讀取罷了,那幺如果有 swap file 也就夠了對不對!是呀!所以這裡我們使用兩種方法來嘗試建立一下 swap 的擴增吧!     · Swap partition ( 建立虛擬記憶體的磁區 ):   第一種正規的方法是『直接再加一棵硬碟,並且將其中某個磁區規劃為 swap 的 filesystem 』,呵呵,說的容易,做起來更容易!實際的動作為:  1. 以『 fdisk /dev/hd[a-d] 』先建立一個 partition ,還記得 fdisk 怎幺做嗎?回去復習一下吧!簡單的來說,就是先 (1)建立一個 partition,然後 (2)將該 partition 的 ID 改為 82 這一個 swap 的磁碟檔案格式代號就對啦!這樣這一步驟就 OK 啰!       2. 以『 mkswap /dev/hd[a-d][1-16] 』的方式來將您剛剛建置出來的 partition 『格式化為 swap 的檔案格式』,很簡單吧!這樣就格式化 OK 啰!       3. 再來則是將 swap 啟動,啟動的指令為『 swapon /dev/hd[a-d][1-16] 』,這樣就能啟動了!很簡單吧!這樣 swap 就自動加入到記憶體容量裡頭去了!   那幺如何將 swap 關掉呢?呵呵!很簡單呀!就是直接給他 swapoff 就對了!     · Swap file ( 建立虛擬記憶體檔案 ) :   那幺萬一我不想新增加一個磁區呢?可不可以使用 swap file 的方式來新增硬碟呀!當然可以啰!而且步驟還蠻簡單的呢!基本的流程就是:  1. 以 dd 指令來建立 swapfile ;   2. 以 mkswap 來將 swapfile 格式化為 swap 的檔案格式;   3. 以 swapon 來啟動該檔案,使成為 swap ;   4. 以 swapoff 來關閉該檔案!   嗯!多說無益!我們來實際的將您的主機系統上面新增 64MB 的虛擬記憶體吧!如果可能的話,請您在您的系統上面實際的操作一次底下的步驟,我想,您應該馬上會了解實際的操作流程的!(底下的步驟是可以復原的!!別擔心,不過 mkswap 這個指令的下達要小心一點就是了!)  1. 使用 dd 這個指令來新增一個 64MB 的檔案在 /tmp 底下:   [root@test /root]# dd if=/dev/zero of=/tmp/swap bs=4k count=16382 16382+0 records in 16382+0 records out dd 這個指令是用來轉換檔案並且 copy 用的; if 指的是要被轉換的輸入檔案格式 /dev/zero 可以由 man zero 來查看內容; of 指的是輸出的檔案,我們將之輸出到 /tmp/swap 這個檔案; bs 指的是一個磁區占用幾個 kb ; count 指的是要使用多少個 bs ,所以最後的容量為 bs*count = 4k * 16382 ~ 64MB  2. 如上所述,我們將建立一個檔名為 /tmp/swap 的檔案,且其內容共有 64MB 左右大小的檔案;       3. 使用 mkswap 將 /tmp/swap 這個檔案格式化為 swap 的檔案格式:   [root@test /root]# mkswap /tmp/swap Setting up swapspace version 1, size = 67096576 bytes 請注意,這個指令在下達的時候請『特別小心』,因為下錯字元控制,將可能使您的 filesystem 掛掉!  4.     5. 使用 swapon 來將 /tmp/swap 啟動啰!   [root@test /root]# free       total    used    free   shared  buffers   cached Mem:     62524   60200    2324     0    716   19492 -/+ buffers/cache:   39992   22532 Swap:    127004    2620  124384 [root@test /root]# swapon /tmp/swap 不要懷疑!這樣就已經將虛擬記憶體增加 64 MB 啰!如果您需要每次都啟動該檔案, 那幺將 swapon /tmp/swap 寫入 /etc/rc.d/rc.local 當中即可! 用 free 這個指令查看一下您的系統啰! [root@test /root]# free       total    used    free   shared  buffers   cached Mem:     62524   60240    2284     0    724   19492 -/+ buffers/cache:   40024   22500 Swap:    192524    2620  189904  6.     7. 使用 swapoff 關掉 swap file   [root@test /root]# swapoff /tmp/swap 就直接給他關掉啰!  沒錯,就這幺簡單的將虛擬記憶體給他新增啰!趕快來去試試看去!     磁碟效能:   我們都知道目前的 IDE 硬碟主要的傳輸模式為 ATA 模式,最近 (2002年)已經出到了 ATA 133 了!不過,傳統上, ATA 66 就已經很厲害了!新的 IDE 硬碟也沒有辦法完全利用 ATA 100 呢!但是,你知道嗎?有沒有開啟 ATA 這個傳輸通道的 DMA 模式,對於硬碟的存取效率差很大呦!好了!我們來測試一下磁碟的效能吧!   · hdparm   語法:   [root @test /root ]# hdparm [-cdmXTt] [裝置名稱] 參數說明: -c  :提供 32 位元的存取模式,支援的型態有:    -c0:關閉 32 位元存取模式    -c1:開啟 32 位元存取模式    -c3:以較為特殊的 sync 模式開啟 32 位元存取模式(建議值) -d  :是否啟動硬碟的 DMA 模式, 0 為關閉, 1 為開啟。 -m  :設定 multiple sector I/O 的模式,通常預設為 16 ,建議值亦為 16 。 -X  :設定 IDE/ATA 模式的項目,支援如下的設定:    -X34:開啟 DMA mode 2    (ATA)    -X66:開啟 ultra DMA mode 2 (ATA66) -T  :測試暫存區 cache 的存取效能 -t  :測試硬碟的實際存取效能 (較正確!) 例: [root @test /root]# hdparm -Tt /dev/hda  <==測試 hda 這顆硬碟的 cache 與實際效能 [root @test /root]# hdparm -d0 /dev/hda <==關閉 DMA 模式! [root @test /root]# hdparm -d1 -c3 -X66 /dev/hda <==開啟 DMA 模式在 DMA 66 ,並且開啟 32 位元存取模式  說明:   這個指令必須要 root 才能執行!此外,需要特別注意, -X 這個參數是很危險的參數設定,除非您非常了解您的硬碟架構,否則不建議自行設定,因為 manual page 上面就有說明到這一點~~不過,無論如何,目前大於 2GB 以上的硬碟至少都已經支援了 DMA 33 了!因此,使用 -X66 應該都是可行的!較常建議的硬碟 DMA 開啟功能項目如下:   hdparm -d1 -X66 -m16 -c3 /dev/hda  另外,基本上目前的 Linux 預設都是開啟 DMA 的模式,因此這個指令的功能相對的重要性就降低了!不過,有一點仍然相當的重要,就是 Linux 預設的 -c 是關閉的,亦即是 -c0 的狀態,所以你可以增加上面的 -c3 來開啟 32 位元的存取模式呦!當然了,如果你的硬碟真的是很老舊的,那幺就不要開啟的好!好了!那幺如何開機就啟動 DMA 模式呢?!你可以將上面那一段指令寫入 /etc/rc.d/rc.local 裡面即可!     附錄一:第二延伸檔案系統 ext2   這裡轉貼一篇關於 ext2 這個 Linux 檔案格式的主要特點:      第二延伸檔案系統(ext2)介紹 (本文摘自小紅帽技術論壇)  自從我們開始使用電腦後,大多數的使用者都曾經使用過檔案,而我們總是對關於硬碟如何正確地儲存檔案感到好奇,它看起來似乎非常抽象,所以今天讓我們看一看 Linux 作業系統中較新的檔案系統版本『第二延伸系統( ext2 )』,並了解它各方面之用途。   這個檔案系統是主要來自於Andrew Tanenbaum 所寫的Minix檔案系統,它也是唯一可用在免費作業系統的檔案系統,稱之為Minix。它後來修正為 Linux 所慣用的檔案系統並稱為延伸檔案系統,到現在 Linux 的檔案系統稱為 ext2 (第二延伸檔案系統),它是延伸檔案系統中較新的版本並支援存取控制列(ACL)。   但是在著手研究 ext2 檔案系統之前,讓我們先了解檔案系統中之專有名詞的關聯。 · Block (區塊):檔案在磁碟中被儲存在整數固定大小的區塊中,那區塊的大小通常是2的次方。在預設中,ext2檔案系統的區塊大小是4K。研究颢示,4K位元組對於一磁碟區塊而言是最理想的大小,假如一個檔案的大小無法達成4K位元組的倍數時,那最後的磁碟區塊部分就會被浪費。在最不好的例子中幾乎在完整的區塊中就有一位元組被浪費掉。 對於這情況有一點技巧,假如我們選擇了一個較大的區塊,則對於小的檔案而言會有一些磁碟空間被浪費掉。另外一方面,假如我們使用一個非常小的區塊,則磁碟區塊數量會成指數的增加,因此對於檔案而言需有更多的搜尋時間。所以,選擇區塊大小必須三思而後行。 當一個檔案被載入到記憶體時,那磁碟區塊會被放在主記憶體中之緩沖快取區,假如它們已經變更了,區塊在緩沖區中會被標記為’Dirty’,其意指的是這些區塊必須先寫到磁碟中來維持磁碟上的區塊及在主記憶體中的區塊之一致性. · Superblock:superblock是在每個檔案系統開始的位置,其儲存資訊像是檔案系統的大小,空的和填滿的區塊,它們各自的總數和其他諸如此類的資料。要從一個檔案系統中存取任何檔案皆須經過檔案系統中之superblock。如果superblock損壞了,它可能無法從磁碟中去取得資料。 · Inode: 對於檔案系統而言一個inode是在inode表格中的一個項目。Inode包含了所有檔案有關的資訊例如名稱、大小、連接的數量、資料建立之日期,修改及存取的時間。它也包含了磁碟區塊的檔案指向(pointer)。pointer是用來記錄檔案被儲存在何處。 Ext2fs公用程式 現在讓我們來看看一些標准Linux版本之ext2fsprogs公用程式 · e2fsck 這個程式允許我們在ext2檔案系統上去執行檔案系統檢查,它像是Windows中之Scandisk一樣,但卻是一種更有效的系統檢查方式。在此,我們可以加上一個檔案名稱來檢查上面之損壞區塊。 警告:絕對不要在任何已掛載的檔案系統上執行 e2fsck/fsck。假如我們想要去執行 fsck,我們應該卸下檔案系統後再去執行 fsck(亦即需要 umount 該磁區啰)。如果不這樣做,可能會讓檔案系統毀損。 · tune2fs 這允許我們去調整檔案系統的參數設定。在此,我們可以設定在兩個檔案系統檢查間之最大掛載總數、容量標記、錯誤行為、變更保留的資訊和許多其他參數。 · dumpe2fs 這個程式將ext2檔案系統狀態輸出到標准的設備上。它對於分析問題以及存取一般關於檔案系統用法的資訊是有幫助的。 · mke2fs 這個程式允許我們在先前尚未格式化的磁碟中,去建立一個ext2的檔案系統。它提供了許多的選項包含區塊的大小、段落的大小、每一個inode的位元組到多種磁碟陣列的選項。mke2fs通常在第一次安裝的期間執行,並建立完成新的root 及其他的檔案系統。(就相當於 DOS 底下的 format 程式啦!)· badblocks 這個程式去搜尋磁碟並檢查區塊是否已經損壞,它通常會在新的檔案系統安裝程式前執行,但請不要在掛載好的檔案系統上執行。 在Linux檔案系統中最新的版本被稱為ext3,並已有 Journaling 之支援。Journaling 檔案系統對於所有已完成的步驟,持有記錄以及檢查點,所以假使系統當機時,它可以從最後的檢查點來還原檔案系統。     附錄二:為何選擇 ext3 呢   在最新的 Red Hat 7.2 當中,已經捨棄了 ext2 而改用支援 Journaling 的 ext3 這一個檔案格式了,那幺這兩個咚咚有什幺不一樣的呢?!底下有一篇翻譯過的文章,看看吧!       Red Hat Linux 7.2 為何決定采用ext3檔案系統? Red Hat決定在7.2版中使用ext3的格式來作為預設的檔案系統在,引起相當多熟悉Linux使用者的關注,但ext3並不是唯一的,也不是眾多日志式(journaling)檔案系統中最佳的。 傳統的Linux檔案系統ext2,對於在相當小容量的硬碟上之小檔案而言是相當的理想。隨著硬碟的容量及檔案大小大幅增加,整體性能會下滑。有些原因是來自讀取未有效利用的磁碟空間,有些原因是來自不正常關機或是電源中斷檔案系統的恢復時間。檔案系統經由e2fsck在一個1GB的硬碟做檢查是毫不費力的,但相同的測試在40GB的硬碟上可能會相當的秏費時間。所以就有日志式檔案系統的誕生。 這些記錄硬碟狀態的檔案稱為日志。所以在不正確關機之後重新啟動需要參考到日志檔案來重新回復檔案系統的狀態,而非將整個硬碟做掃描。同時,日志式檔案系統可以有更高的硬碟空間使用效率及使資料在各種不同之檔案大小中能夠快速的讀取及寫入。 Linux並不是只有一個日志式的檔案系統,它有四個,或是說成三又二分之一個:  · Reiser檔案系統:依照Hans Reiser的名字而取。Reiser是眾所皆知的一種新式快速記錄硬碟內容的檔案系統,它曾經被廣泛的使用超過一年,且這個檔案系統被推薦安裝在SuSE7.1版及7.2版上。 · JFS檔案系統:經由IBM所開發的,其設計的理念在於提供一高速的處理能力。IBM從2000年2月間開始經過一系列的測試版本,它的1.0版本已在六月底公開發表。 · XFS檔案系統:XFS是SGI公司在Linux上所開發的日志式檔案系統,它也提供了所有以完整發展為特色的日志式檔案系統。 · ext3檔案系統:ext3是之前所提及的二分之一日志式檔案系統。為何只有一半呢?原因是ext3是一種迭在傳統ext2檔案系統上面並保有磁碟活動紀錄的日志式檔案系統。所以當不正確關機時,檔案的恢復速度會比ext2檔案系統來的快。但是,因為它是被結合在ext2中,它會遭受到一些老舊系統的限制並因此不能利用所有日志式檔案系統的完整功能。這樣並非是完全不好,因為ext3分割區並沒有不同於ext2檔案系統,因此如ext3損毀要回到ext2檔案系統卻是非常的簡單。 Red Hat是第一個采用ext3的公司,它嘗試性的將Linux檔案系統推向日志式檔案系統。當公司計畫在7.2版的第二個測試版本采用ext3時,公司中首席核心開發者Michael K. Johnson便迅速的提供一個原理的闡述: “為什幺你想要從ext2轉換到ext3呢?有四個主要的理由:可利用性、資料完整性、速度及易於轉換”。可利用性,他指出,這意味著從系統中止到快速重新復原而不是持續的讓e2fsck執行長時間的修復。ext3的日志式條件可以避免資料毀損的可能。他也指出”除了寫入若干資料超過一次時,ext3往往會較快於ext2,因為ext3的日志使硬碟讀取頭的移動能更有效的進行“。然而或許決定的因素還是在Johnson先生的第四個理由中。“它是可以輕易的從ext2變更到ext3來獲得一個強而有力的日志式檔案系統而不需要重新做格式化”他說道。”那是正確的,為了體驗一下ext3的好處是不需要去做一種長時間的,冗長乏味的且易於產生錯誤的備份工作及重新格式化的動作”。     本章習題練習   · 如何增加一顆新的硬碟在你的 Linux 系統當中?請詳述流程:   答:   1. 安裝硬碟:關掉 Linux 主機電源,調整 Hard Disk 的 Jump (master 或 slave),串接在 IDE 的介面,請注意,留意你增加的硬碟所串接的 IDE 介面為哪一個插槽,例如你插在 IDE2 的 Master ,則你的硬碟應為 hdc;此外,需要特別留意的是,目前的機器中,如果是 ATA 66 以上的排線(那種很密的排線),那幺 master 或者是 slave 在排線上的順序是固定的!底端的是 Mater 而中間的是 Slave ,這點請稍微注意呦!       2. B新增硬體於BIOS:開啟電腦後,按 del 鍵進入 BIOS,選擇 IDE Hard Disk Detector 字樣的選項,讓BIOS去捉硬碟,然後再選擇 Save and Exit;不過,較新的機器通常都可以自動偵測了!但是,如果你的機器是舊型的,那幺還是手動來增加硬碟吧!       3. Linux 系統偵測:如果你的 Linux 系統有啟動 kudzu 這個服務時,那幺開機就會自動去偵測新的硬體裝置! Red Hat 預設是有開啟這項服務的,除非你關掉他了!OK,假設你有開啟這項服務,那幺開機進入 Linux 的時候,系統會告訴你有捉到一個新的硬體,你可以按 『configure』由系統直接安裝即可;       4. 格式化硬碟:以 root 的身份進入 Linux 後,執行以下兩個程式:   § fdisk /dev/hdc <== hdc 與你的硬碟串接的IDE介面有關,關於這個指令的介紹請參考上面的指令說明;   § mke2fs /dev/hdc1 <==假設硬碟全部配置成一個大硬碟,則硬碟應為 hdc1 ,以 mke2fs 將系統規劃為 Linux 的系統檔。       5. 建立 mount point:假設我的這顆硬碟要掛在 /disk3 下面,那幺就需要 :   mkdir /disk3      6. 開機自動載入( mount ):再來則是以 vi 修改 /etc/fstab 檔案,讓每次開機把這個硬碟直接掛入系統中。例如 hdc1 這顆硬碟掛在 /disk1 中,則 fstab 的檔案有點像底下這樣:(/dev/hdc1 那一行是新加入的!),修改完之後,直接以 mount -a 來掛載吧!       /dev/hda1     /      ext2      defaults    1 1   /dev/hda5     swap    swap      defaults    0 0   /dev/hdc1     /disk1   ext2      defaults    1 1      7. 安裝完成:你可以使用 mount -a 來將全部的裝置重新掛載一遍,或者是重新開機就可以啦!   · 如何增加某一目錄的容量:常常會聽到的一個問題是,我原先規劃的硬碟方式有點容量不足了,要如何增加容量呢?!這最容易發生在 /var/spool/mail 及 /home 底下了!好了,這裡我們以 /home 的容量不足了來進行說明!   答:   o 假設條件:我原先規劃的 /home 只有 1GB ,但是目前的使用者日眾,所以容量不足!我想要增加一棵 8GB 的舊硬碟,要如何作?!   o 將硬碟加入 Linux 系統中:利用剛剛上面的方式將你的硬碟加入到 Linux 系統中,亦即是使用 fdisk 與 mke2fs 建立了 ext2 的檔案格式的硬碟!好了,同樣假設該硬碟的代號為 /dev/hdc1 好了! 掛載新硬碟:由於我需要將新舊磁區都掛上來,這樣才有辦法將資料由舊硬碟移到新硬碟上面,OK!我就建立一個暫存的目錄,稱為 /disk-tmp:   mkdir /disk-tmp   mount -t ext2 /dev/hdc1 /disk-tmp   如此一來則 /disk-tmp 就是新掛上來那顆 8 GB 的硬碟啦!  o 移動資料:好了!現在開始將資料 copy 到新掛上的硬碟上面吧!   cd /home   tar -zcvf /disk-tmp/home.tar.gz *   cd /disk-tmp   tar -zxvf home.tar.gz  上面的指令會將目前舊有的 /home 底下的東西完全的壓縮之後移動到 /disk-tmp/home.tar.gz 這個壓縮檔,然後再到 /disk-tmp 底下將他解壓縮!這樣資料就復制到新掛上來的硬碟啦!   o 卸載舊的,掛上新的:好了,那幺我們就開始來測試一下吧!你可以這樣做:   umount /home   mount -t ext2 /dev/hdc1 /home  注意呦!如果你的 /home 底下原本就沒有掛載磁區的話,那幺你就可以直接將 /home 底下的資料都砍掉,然後在掛上新的那顆硬碟就好了!而 home.tar.gz 這個檔案就可以用作為備份之用!  o 開機執行:同樣的,如果要設定成開機就掛上這顆新的硬碟,那就修改 /etc/fstab 檔案吧!   · 如何制作開機磁片:   答:   無論何種系統,有個開機片總是比較安心的! Linux 也是一樣!雖然他很穩定,但是並不是說就不會有問題,因此制作可開機磁片以利解救 Linux 問題是一個好習慣!制作開機片的方法很簡單,請參考 mkbootdisk 的指令!  · 請問底下的目錄與主要放置什幺資料?   答:   o /etc/:幾乎系統的所有設定檔案均在此,尤其 passwd, shadow   o /etc/rc.d/init.d:系統開機的時候載入服務的 scripts 的擺放地點   o /boot:開機設定檔,也是預設擺放核心 vmlinuz 的地方   o /usr/bin, /bin:一般執行檔擺放的地方   o /usr/sbin, /sbin:系統管理員常用指令集   o /dev:擺放所有系統裝置檔案的目錄   o /var/log:擺放系統登錄檔案的地方   · 『舊的』 Unix 系統與 Linux 系統的『檔名』最多可以容許幾個字元?   答:   14, 255  · 什幺是絕對路徑與相對路徑,要由 /usr/share/doc 進入到 /usr/share/man 由相對路徑與絕對路徑的寫法各為何?   答:   o 絕對路徑絕對由 / 開始寫起,相對路徑則非由 / 寫起;   o cd /usr/share/man ; cd ../man   · 在非為根目錄的任何一個目錄中,下達 ls –al 時,均會有『.』及『..』這兩個目錄,請問分別代表什幺?   答:   o . :代表本目錄   o .. :代表上層目錄   · 顯示、變換目錄的時候,使用什幺指令?   答:   ls, pwd 為顯示; 變換目錄用 cd  · 新增目錄、移除目錄移動目錄與拷貝目錄有什幺指令可用?   答:   o 新增: mkdir 目錄,   o 移除: rmdir 目錄(但是該目錄內必須要已經清空了), rm –rf 目錄,   o 移動: mv Directory1 directory2   o 拷貝: cp –r directory1 directory2   · 如何查看一個檔案的『內容』(不要使用 vi 的情況下)   答:   cat, tac, more, less, head, tail, nl, od(查看二進位制)  · 什幺是 hard link 與 Symbolic link 的檔案?有何不同?   答:   o Hard Links:在做成 hard link 檔案時,系統會占用掉一個 inode ,由連結檔案可發現其 link 欄位多使用了一個 inode ,當原始檔案被刪除的時候,該原始檔案的內容將繼續保留在其他的 Hard Links 檔案中;但所有 Link 占用的硬碟總量僅占一個檔案的容量大小!(但 Hard link 不能連結不同 filesystem 的檔案)   o Symbolic Links:類似捷徑,當原始檔被刪除,soft link 檔案將找不到原始檔了!   · 如何在 root 的家目錄下建立一個 /bin 的連結捷徑   答:   ln –s /bin /root/bin  · 若有一個連結檔為 testing 連結到 test1.sh ,請問 copy testing 到 /tmp 底下,『cp testing /tmp』則 /tmp/testing 這個檔案會是:(1) 連結檔,連結到 test1.sh ;(2) 一般檔案,為內容與 test1.sh 相同?   答:   答案為 (2)  · 當一個檔案屬性為 –rwxrwxrwt 則表示這個檔案的意義為?   答:   任何人皆可讀取、可寫入,但是不可刪除該檔案(或目錄),除了 root 與檔案或目錄擁有者有權可以刪除。  · 我需要將一個檔案的屬性改為 –rwxr-xr-- 請問該如何下達指令?   答:   chmod 754 filename, chmod u=rwx,g=rx,o=r filename  · 在 /usr/bin/passwd 這個檔案的屬性為 –r-s--x--x 請問代表什幺意思(s)   答:   那個 s 代表為 SUID ,當使用者使用這個檔案進行工作的時候,將會具有該檔案擁有者的權限!  · 如何改出 –rwxr-sr-x 與 –rwxr-xr-t這個屬性?   答:   chmod 2755 filename, chmod 1755 filename  · 如何查看一個檔案的類型 (type) 例如純文字檔、執行檔與 setuid 檔案等?   答:   file filename  · 若一個使用者的 umask 為 033 ,請問他建立一個新的目錄與檔案時的預設屬性為?   答:   o 目錄:744 ? -rwx-r--r--   o 檔案:633 ? -rw--wx-wx   · 若我需要更改一個檔案的擁有者與群組,該用什幺指令?   答:   chown, chgrp  · 如何將一個檔案的修改日期改成目前的時間?   答:   toUCh filename  · 如何搜尋一個檔案?   答:   which (僅用於指令搜尋), whereis, locate, fine  · Linux 預設的檔案系統為何?此外,常用的 Journalling 檔案格式有哪些?   答:   Ext2, Journalling 有 ext3 及 Reiserfs 等  · less 跟 more 有什幺不同?   答:   less 可以翻頁,但是 more 不行!  · 在比較兩個檔案的異同時,常使用的是 diff 與 cmp ,請教兩者有何不同?   答:   diff 為一行一行比較, cmp 為一個字元(character)一個字元比較  · 我要如何查看 Linux 系統當中所有已經掛載的硬碟容量與 inodes ?   答:   df –k, df –i,  · 我要如何查看目前所在目錄的所有檔案占用的硬碟空間,此外,如何僅輸出結果?   答:   du -k, du –i, du -s  · 如果磁區 /dev/hda3 有問題,偏偏他是被掛載上的,請問我要如何修理此一磁區?   答:   umount /dev/hda3   fsck /dev/hda3  · 承上題,那幺有問題的檔案將被移動到那個目錄下?   答:   lost+found  · 試說明新增一個 partition 在 /dev/hdb 當中,且為 hdb5時,並掛載上 /disk2 ,需要哪些步驟?   答:   o fdisk /dev/hdb  按 n 新增,按 e 新增 extended ,再按 n 新增 logical   o mke2fs –b 2048 /dev/hdb5   o mkdir /disk2   o mount –t ext2 /dev/hdb5 /disk2   · 如何新增加 64MB 的虛擬記憶體 swap ?   答:   o dd if=/dev/zero of=/tmp/swap bs=4k count=16384   o mkswap /tmp/swap   o swapon /tmp/swap     






Copyright © Linux教程網 All Rights Reserved