2007年6月21日

鳥哥筆記-Lesson 5

看看Partition跟File system

要說到這個,當然就得由硬體說起,硬碟是我們最常用的儲存裝置之一,他主要由數個圓盤,上面有著磁性物質,可以紀錄0101的二進位資料,然後讀寫臂是一隻長長的類似竿子的東西 ,當他首掃描過圓盤的區域,利用磁性的變化,就可以知道資料囉

每個圓盤會由數個同心圓的軌道(track)構成,每一個圓形分成數個區塊(sector),然後圓盤疊成一個圓柱狀的架構,每個在相同垂直位置上面sector構成了磁柱(cylinder),當然每個sector就是可以存著資料囉

然而第零個sector許於特殊磁區,稱為MBR(master boot record)用以紀錄Partition table跟啟動檔案的相關位置,也就是grub程式的位置囉~Partition table就是用以紀錄虛擬的分區,如/或者/home是由實體/物理上面的哪個cylinder到哪個cylinder

所以現在知道partition table的重要性了嗎?分配完畢空間之後呢,因為因應讀寫的需求,很多的存取的方式就衍生出來了,這部份比較完整的敘述可以參考作業系統(OS)設計的書籍;舉例來說好了,一般的fat32本身並沒有像是linux權限的觀念,他是過去window$跟目前SD卡常用File system

我覺得比較難解釋的是,mount point的觀念,也就是說linux並沒有M$的啥C, D槽的觀念,新加入的設備都是屬於一個新的mount point,也就是一個入口的觀念,不管是你的數位相機或者是SD卡,都會對應到/dev/sda之類的一個點,然後用mount -f vfat /dev/sda /mnt/c_disk這樣子,當掛載(mount)起來的時候,你就是將系統邏輯上的mount point跟實體的/dev/sda(其實這也是一邏輯上得對應)對應起來,事實上現在linux已經很聰明了,不用如過去一般,自己用mount指令,linux會偵測PnP的裝置,自動幫你掛載,除非有某些特殊原因,你才需要自己手動掛載

ls -l /lib/modules/`uname -r`/kernel/fs,這個指令可以看到你目前的kernel支援多少種FS(file system)

磁碟有了分割(partition)跟FS(file system)之後就可以開始使用,但是這時候我們對磁碟的東西有多開始有了興趣,有兩個指令可以幫助我們,分別是df(disk free)跟du(disk used),他們可以列出目前有多少剩餘空間跟已經使用的空間,-h參數可以以比較人性化的方式顯示出來剩餘空間數,比如說多少MB,不然他會給你的是cylinder的個數,你還要自己換算,頗為累人,最後要加上要查詢的mount point,如df -h /mnt/cdrom

另外一個我常用的統計方式是,du -h --max-depth=1 /mnt/cdrom,其中--max-depth=1表示路徑深度為1的使用奘況,如果該file是個目錄的話,他就會加總列出底下子目錄跟檔案總共佔用的空間大小,而不會把所有的檔案跟目錄佔用的大小逐一列出

那麼要使用一個全新的設備(可能連FS都沒有的裝置,或者你想把他規劃成我們想要的FS格式),有幾個步驟
  1. 對磁碟進行分割,以建立可用的 partition (fdisk)
  2. 對該 partition 進行格式化( format ),以建立系統可用的 filesystem(mke2fs...)
  3. 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗(fsck)
  4. 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ),並將他掛載上來(mount ...)
接下來先看看幾個好玩的指令,在M$底下有所為的捷徑,在linux底下當然也不能少,他們都是有如實體的檔案存在,不過linux更加的廣泛;ln(link)指令可以製作

先寫到這裡,有點亂,晚一點有空在繼續跟整理

沒有留言: