閱讀90 返回首頁    go 中電雲集


FreeBSD安裝文件係統

FreeBSD將文件保存在磁盤等存儲設備上,由操作係統來具體處理訪問硬件設備的問題,用戶隻需要麵對操作 係統,就能進行具體的文件操作。操作係統首先將用於存儲的設備進行格式化之後,該設備才能用於存儲文件,這個設備可以 是軟盤,可以是一個硬盤分區,或者其他允許隨機存取的塊設備存儲介質。在Unix上將格式化後的存儲設備統稱為文件係 統,格式化的過程稱為創建文件係統。(由於磁帶是一種順序存取的設備,因此在磁帶上不能創建文件係統。)

對於不同介質、不同的操作係統對磁盤進行格式化和管理的方式也不同,這樣就形成了不同類型的文件係統。但操作 係統給用戶提供了一種標準的通用存取方式,這樣在存取文件時就不需要考慮是在對哪種文件係統進行操作。但是不同的文件 係統仍然有一些差異,例如光盤文件係統是隻讀介質,還有一些文件係統並非為Unix係統而設計的,因此文件名、文件屬 性等標準就與Unix不同,FreeBSD在訪問這些文件係統時盡量轉換這些差別,補充這些文件係統沒有、但Unix 標準文件係統需要的屬性。這樣這些文件係統就與標準文件係統看起來完全相同,隻是某些操作受文件係統本身的物理限製, 例如企圖將光盤上文件加上寫屬性,顯然無法完成。FreeBSD支持多種文件係統,其中最常見的有:

UFS文件係統:是FreeBSD上的標準文件係統,它實現了所有的標準文件屬性,如文件屬主和組、存取權限 等屬性。

cd9660文件係統:支持ISO 9660格式的CD-Rom,這種格式隻支持8位基本長度3位擴展長度、 不區分大小寫的文件名,但FreeBSD支持它的Rock Ridge擴展,使其能使用Unix風格的長文件名。

NFS文件係統:網絡文件係統,通過它Unix能在網絡上共享文件係統。

msdos文件係統:DOS和Windows使用的FAT文件係統,基本上是使用8.3的文件名,Windows95 之後擴展了文件名的長度,但仍然不區分大小寫。FreeBSD支持Windows95的長文件名擴展和FAT 32格式的分區。

ext2fs文件係統:Linux使用的文件係統,這個類型不是缺省支持的文件係統,需要重新配置內核。

NTFS文件係統:Windows NT使用的文件係統,這個類型同樣需要重新配置內核。

在個人計算機的硬盤管理方式中,文件是直接放在硬盤的分區中,而FreeBSD使用的UFS文件係統則又在基 本分區中進行了劃分,文件係統建立在BSD風格的子分區中。這樣每個UFS分區中能有多個文件係統,每個文件係統或交 換空間各有一個標簽(DiskLabel),來標識其本身的起始和結束。當真正要使用文件係統時,就需要獲得硬盤上文 件係統(UFS分區和分區內部各個文件係統的DiskLabel)的具體信息。這些硬盤上文件係統的信息應該由管理員 維護,同時也記錄在硬盤上,可以使用FreeBSD中的係統工具fdisk和disklabel,或者安裝程序Sysinstall ,來獲得保存在硬盤本身中的信息。

當使用Sysinstall中的Fdisk和Disklabel來分區和劃分磁盤空間時,當用戶完成操作之後 ,應該使用W命令將改變寫入磁盤之後再退出Fdisk或Disklabel。

與Sysinstall不同,命令行的fdisk和disklabel為交互模式,而非sysinstall 的全屏幕界麵,因此較為難用一些。使用硬盤名稱作為fdisk的參數,fdisk將報告硬盤上所有四個分區的詳細信息 :

# fdisk wd0

******Working on device /dev/rwd0 ******

parameters extracted from in-core disklabel are:

cylinders=525 heads=255 sectors/track=63 (16065 blks/cyl)

parameters to be used for BIOS calculations are:

cylinders=525 heads=255 sectors/track=63 (16065 blks/cyl)

Media sector size is 512

Warning: BIOS sector numbering starts with sector 1

Information from DOS bootblock is:

The data for partition 1 is:

sysid 6,(Primary ‘big’ DOS (>32MB))

   start 16065, size 2056320 (1004Meg), flag 80

      beg: cyl 1/ sector 1/ head 0;

      end: cyl 128/ sector 63/ head 254

The data for partition 2 is:

sysid 7,(OS/2 HPFS, QNX or Advanced UNIX)

   start 2072385, size 1044225 (509Meg), flag 0

      beg: cyl 1/ sector 1/ head 0;

      end: cyl 128/ sector 63/ head 254

The data for partition 3 is:

sysid 165,(FreeBSD/NetBSD/386BSD)

   start 3116610, size 2024190 (988Meg), flag 0

      beg: cyl 1/ sector 1/ head 0;

      end: cyl 128/ sector 63/ head 254

The data for partition 4 is:

sysid 5,(Extended DOS)

   start 5140800, size 3293325 (1608Meg), flag 0

      beg: cyl 1/ sector 1/ head 0;

      end: cyl 128/ sector 63/ head 254

從這個fdisk的執行結果中可以看出這個硬盤的四個分區分別為不同的操作係統所占用,第一個分區為DOS基 本分區,第二個標識為HPFS,事實上它是NTFS分區,第三個分區wd0s3為BSD分區,而第四個分區為擴展分區 。因此就可以針對第三個FreeBSD係統分區,使用disklabel來檢查其上的BSD子分區信息。

# disklabel  wd0s3

# /dev/rwd0s3c:

type: ESDI

disk: wd0s3

label:

flags:

bytes/sector: 512

sectors/track: 63

tracks/cylinder: 255

sectors/cylinder: 16065

cylinders: 126

sectors/unit: 2024190

rpm: 3600

interleave: 1

trackskew: 0

cylinderskew: 0

headswith: 0           # milliseconds

track-to-track seek: 0     # milliseconds

drivedata: 0

8 partitions:

#     size   offset   fstype  [fsize bsize bps/cpg]

  a:  65536      0    4.2BSD    0  0  0  # (cyl.  0 - 4*)

  b: 151248  65536      swap             # (cyl.  4*- 13*)

  c:2024190      0    unused    0  0  0  # (cyl.  0 - 125)

  e:  61440 216784    4.2BSD    0  0  0  # (cyl.  13*- 17*)

  f:1745966 278224    4.2BSD    0  0  0  # (cyl.  17*- 125*)

可以看出disklabel除了顯示各個子分區a-f之外,還顯示了硬盤的參數。事實上BSD的分區管理工具 要早於個人計算機的分區概念,而disklabel是BSD的分區管理工具,並不需要fdisk的幫助就能完成所有的 磁盤管理操作。fdisk是用於將FreeBSD與其他操作係統進行兼容的目的,它是使用個人計算機分區概念的係統工 具。如果一個硬盤不被其他個人計算機操作係統訪問,完全可以拋棄fdisk,而僅僅使用disklabel和BSD傳 統風格的設備文件,來運行FreeBSD。

  • 文件係統的安裝

在存儲設備上建立的文件係統必須安裝到Unix目錄樹上,用戶才能訪問上麵的文件。目錄樹隻是一種邏輯概念, 而具體的文件都保存在安裝到目錄樹上的各個文件係統中。由於每個文件都保存的自己的目錄中,這樣目錄中保存的是相對位 置,一旦將一個文件係統安裝到一個目錄下,則這個文件係統中的所有文件和目錄,都位於目錄樹中的這個目錄的下方,可以 選擇將這個文件係統安裝到不同的目錄下。

安裝文件係統要使用命令mount,這個命令必須以root身份執行,例如安裝光盤文件係統的命令(IDE光 驅)使用:

# mount -t cd9660 /dev/wcd0c  /cdrom

參數指明了不同的選項,-t後麵跟文件係統的類型,這個命令中使用cd9660,用於光盤使用的ISO 9660 文件係統,同樣也可以根據文件係統的不同而選用ufs、nfs、msdos等,其中ufs類型是缺省的文件係統類 型;根據文件係統的類型不同,可使用的選項也不同。/dev/wcd0c是指定CD-Rom設備文件,也可以使用/dev/wcd0 來安裝光盤,BSD的習慣做法是除了raw方式訪問設備之外,最好使用子設備c來表示整個設備,主要原 因是使用子設備c,那麼就能通過訪問分區的disklabel,來獲得存儲設備的信息,雖然現代BSD下這個因素的影 響已經很小,但使用子設備更符合BSD習慣。/cdrom指定了安裝目錄,此後光盤上的所有文件都位於/cdrom目 錄下,但是在執行這個命令前必須創建這個/cdrom目錄。

Mount命令可以通過-o參數指定相關的安裝選項,例如-o ro指定了使用隻讀(Read Only)選 項,由於CD-Rom是隻讀介質,即使不使用這個選項指明這個介質是隻讀類型的,係統也會將這個文件係統設置為隻讀。 對於以隻讀方式安裝的文件係統,任何時候企圖寫這個目錄下的文件都會得到錯誤信息。對於物理上可寫的文件係統,可以使 用ro選項將能保護數據不被改變,因而十分有用。

同樣安裝一個DOS格式的軟盤應該使用:

# mount -t msdos /dev/fd0 /floopy

如果安裝順利,則就可以訪問這個軟盤上的DOS文件了。同樣也可以訪問硬盤上FAT格式的文件係統,包括DOS基本分區和擴展分區上的邏輯盤(邏輯盤在FreeBSD下的設備文件從5開始,例如wd1擴展分區上的第一個邏輯盤為wd1s5)。

安裝一個其他計算機通過NFS共享出的文件係統應該使用:

# mount -t nfs remote:/directory /mnt

與安裝其他文件係統的不同在於,本地硬盤上的文件係統使用設備文件,但NFS使用遠程主機的名字和目錄來確定 文件係統的位置,其格式為主機名與該主機上目錄名,中間使用 “:” 分隔開。

將文件係統安裝到目錄上之後,使用這個介質上的文件就非常簡單了。FreeBSD將假定存儲設備將一直停留在 這個安裝位置上由係統使用,因此FreeBSD使用內存來為這些文件係統建立緩衝區,以最高效的使用文件係統,這種方 式為異步模式的文件安裝方式(async)。這樣磁盤上的內容與內存中是非同步的,係統定期或在需要的時候,才去更新 磁盤上的物理信息。(sync命令將強迫係統更新磁盤)這種非同步的方式就使得管理員要移去文件係統必須通過係統來完 成卸載,而不應該直接取出(如軟盤等可移動介質)。如果直接移去軟盤,或者因為係統突然掉電而造成沒有正確卸載文件係 統,就會直接造成磁盤上的數據不正確,從而不得不使用fsck來檢查和修複這些文件係統。也可以在執行mount命令 的時候使用sync的安裝選項,使硬盤數據和內存緩衝區保持同步,這樣雖然降低了存取效率,但更適合對數據的完整性提 出較高要求的係統。

即使對於一個隻讀類型的介質,FreeBSD仍然使用這種控製機製,直到卸載才釋放對文件係統的控製權。因此 在FreeBSD下使用mount命令安裝了光盤之後,光驅前麵板上的eject鍵將不再起作用,直到將這個文件係統 卸載下來。

使用命令umount可以卸載一個安裝到確定目錄下的文件係統。

# umount /cdrom

執行這個命令將文件係統與其安裝到的目錄相脫離,對於異步模式安裝的文件係統還將同步緩衝區和磁盤上的數據。 以後該目錄就能用來安裝另一個文件係統了。而直到此時才能使用eject鍵退出光盤,更換或拿開盤片。

# cd /cdrom

# umount /cdrom

umount: /cdrom : Device busy

# cd /

# umount /cdrom

在執行這個命令時如果係統報告 “Device busy” 錯誤信息,說明有其他程序仍然正在使用這個文件 係統中的文件,很可能是某個shell的當前路徑仍然位於這個文件係統的目錄中,造成這個文件係統的目錄文件沒有關閉 。檢查所有的登錄界麵,保證沒有shell的當前目錄在/cdrom的目錄下。

  • 設置fstab文件

在係統啟動時,係統將自動安裝上必需的文件係統。而管理員所要做的是告訴FreeBSD應該安裝那個文件係統 、安裝到那個目錄上和有關安裝參數選項。所有的這些信息都必須寫入文件/etc/fstab中。在安裝FreeBSD 時,這個文件已經具有必要的文件係統了,此後所需要作的隻是這個文件中再增加其他的文件係統。

# Device         Mountpoint   FStype  Options     Dump  Pass#

/dev/wd0s3b      none         swap    sw          0     0

/dev/wd0s3a      /            ufs     rw          1     1

/dev/wd0s3f      /usr         ufs     rw          2     2

/dev/wd0s3e      /var         ufs     rw          2     2

proc             /proc        procfs  rw          0     0

/dev/wcd0c       /cdrom       cd9660  ro,noauto   0     0

/dev/wd0s1       /dos         msdos   rw,noauto   0     1

這個文件中的每一行為一種文件係統或交換設備定義對應的設備文件及安裝選項。其中根文件係統具備一定的特殊之 處,因為這個文件/etc/fstab以及FreeBSD的內核文件,其實是在根文件係統中的,因此係統必須首先安裝 了根文件係統,才能正常訪問這些文件。事實上根文件係統在FreeBSD內核中已經有了設置,啟動時先以隻讀方式安裝 根文件係統,並讀取根文件係統中相關文件的內容,然後再根據文件內容裝載各個文件係統。

這個文件的第一列為設備文件名字,或者NFS使用的遠程文件係統的名字。第二列為文件係統的安裝位置,第三列 為文件係統的類型,其中UFS是FreeBSD使用的標準本地文件係統的類型,procfs是FreeBSD用於管理 進程的進程文件係統。第四列為安裝的選項,rw表示該文件係統能進行讀寫操作,ro表示該文件係統是隻讀的,sw用於 交換分區,noauto表示啟動時並不立即安裝這個文件係統,而是由管理員在以後手工安裝。第五列和第六列的數字是係 統程序dump和fsck程序使用的標誌,通常不需要改變,這個標誌對根文件係統都是1,而對其他UFS類型的文件係 統都是2,其他類型的文件係統為0。

注意,由於fstab文件非常重要,如果這個文件有錯誤,就有可能造成係統不能正常啟動,因此向fstab添 加數據應非常小心。不是必須安裝的文件係統就不應該進行自動裝載,例如上麵將CDROM對應的行參數設置為noauto ,表示這個文件係統不是啟動時自動裝載的係統。

在使用了fstab文件之後,mount命令的寫法就可以簡化了。mount命令將查看fstab文件中的內 容以進行匹配,來選定正確的參數。例如,使用下列命令均可以安裝上CD-Rom。

# mount /dev/wcd0c /cdrom

# mount /dev/wcd0c

# mount /cdrom

在安裝了文件係統之後,可以使用不加參數的mount命令或df命令查看當前已安裝的文件係統信息。

# mount

/dev/wd0s3a on / (local, writes: sync 117 async 796)

/dev/wd0s3f on /usr (local, writes: sync 1189 async 4948)

/dev/wd0s3e on /var (local, writes: sync 362 async 1354)

procfs on /proc (local)

/dev/wd1s2e on /disk2 (local, writes: sync 4 async 41)

最後更新:2017-01-04 22:34:38

  上一篇:go 解析SEO惡意攻擊原理以及防禦方法
  下一篇:go MD5算法的安全性