天天看點

FreeBSD磁盤挂載

 操作之前的建議:

   剛裝出來的系統,想要讓FreeBSD的csh像bash那樣按tab列出無法補齊的候選檔案,在/etc/csh.cshrc中加入以下,然後登出重新登入即可:

#vi /etc/csh.cshrc

set autolist

部落格環境:

系統版本:FreeBSD8.2-64bit

核心參數:

FreeBSD磁盤挂載

1、首先檢視新添加的磁盤有沒有被系統識别出:

dmesg | grep "sector" | awk ‘{print $1,$2}'

FreeBSD磁盤挂載

第一列代表系統識别出的硬碟,第二清單示磁盤大小;我這裡有三塊盤:da0、da1、da2;

da1和da2是我剛挂上去的盤,沒有任何分區,可用gpart show指令檢視,部落格後面會簡單介紹下FreeBSD磁盤分區的基本概念;

可見目前預設的檔案系統類型是:freebsd-ufs

FreeBSD磁盤挂載

現在需要挂載硬碟da1,目前的挂載情況如下:

FreeBSD磁盤挂載

2、FreeBSD下建議使用的磁盤分區方法是用sysinstall提供的菜單選項;另外,在BSD系統中,也可用fdisk 指令來劃分slice分區(可了解為主分區),disklabel/bsdlabel來劃分擴充分區;

2.1、以下是用sysinstall進行:

#sysinstall

FreeBSD磁盤挂載
FreeBSD磁盤挂載

選擇要進行分區的磁盤:

FreeBSD磁盤挂載

A使用整個磁盤 C建立slice分區 D删除 W把所做的修改正式寫入磁盤:

FreeBSD磁盤挂載

可用A選擇整個磁盤;我這裡要把da1分兩個去分别挂載到/data1和/data2兩個目錄下;

按磁盤C,輸入分區大小:

FreeBSD磁盤挂載

選擇分區類型,預設165是slice,131為ext2fs,130為swap;

FreeBSD磁盤挂載

兩個slice分區建好如下,之後W寫入,選擇yes:

FreeBSD磁盤挂載

這裡安裝引導器可選None不安裝,因為已經在第一塊磁盤安裝過了:

FreeBSD磁盤挂載

OK 之後看到write successfully 100%即成功,Q退到之前的fdisk界面,選擇編輯磁盤标簽:

FreeBSD磁盤挂載
FreeBSD磁盤挂載

在之前建好的2個slice分區上分别C建立擴充,分區類型為檔案系統,并指定挂載點(挂載目錄/data1和/data2已提前建好)

FreeBSD磁盤挂載
FreeBSD磁盤挂載

完成之後退出,df -h檢視挂載情況:

FreeBSD磁盤挂載

用gpart show 也可檢視到建立的分區:

FreeBSD磁盤挂載

3、編輯fatab檔案,實作開機挂載,reboot驗證:

FreeBSD磁盤挂載
FreeBSD磁盤挂載

以下内容摘錄自紅聯linux論壇:http://www.linuxdiyf.com/bbs/thread-79059-1-1.html

    一,基本概念。

    在所有PC體系架構上安裝的作業系統都隻能分四個分區。這四個分區在不同的作業系統中有不同的說法,在windows和linux中,通常被稱為主分區(primary partition),而在BSD風格的UNIX以及Solaris系統中被稱為slice (英文原意為小碎片,不知道有沒有好的翻譯來表述)。slice和主分區是同一個概念,在PC上能安裝的作業系統都能根據MBR中的分區表認出這樣的主分區。在windows和linux中,一個硬碟可以分四個主分區,其中一個可作為擴充分區,再在擴充分區中劃分邏輯分區,而其他三個主分區則隻能作為最小的分區機關了。就是說,隻能選擇一個擴充分區,然後再在擴充分區中劃分邏輯分區。擴充分區中包含的邏輯分區數目可以有很多個,查了資料,一種說法是最多64 個,還沒有具體驗證過,不過反正這個數目比較大,可把硬碟分得足夠細。

    而FreeBSD,則可以在每個slice中再劃分更小的分區機關,在FreeBSD中硬碟的slice中,這種更小的分區機關被稱為 partition,其概念和windows和linux中的邏輯分區的概念類似。這種更小的分區機關用小寫字母a-h表示,共有8個,但是其中c分區有特殊含義,c分區表示該分區所在的整個slice(主分區)。就相當于在solaris中/dev/dsk/c0t0d0c2分區一樣,在sparc體系的solaris系統中c0t0d0c2表示的是整個磁盤,因為solaris中沒有其他表示整個磁盤的裝置名稱。從概念上講FreeBSD中的/dev/ad0s1c 等同于 /dev/ad0s1

    是以,在FreeBSD中,一個硬碟最多可劃分(8-1)x4 = 28 個分區。原先老的FreeBSD系統中,邏輯分區d也有特殊用途,就是說,在老版本的FreeBSD系統中,每個硬碟最多能分(8-2)X4 = 24 個分區,但是現在這個d分區的特殊用途也已經淡化了,雖然用sysinstall劃分邏輯分區的時候sysinstall會盡量避開使用d分區,但是今天經過實驗驗證,d分區辨別也可以作為一個普通的資料存儲分區辨別。是以,以IDE硬碟為例在freebsd中第一塊硬碟正常情況下可用的分區裝置号為:/dev/ad0s1a /dev/ad0s2a /dev/ad0s3a /dev/ad0s4a /dev/ad0s1b /dev/ad0s2b /dev/ad0s3b /dev/ad0s4b /dev/ad0s1d /dev/ad0s2d /dev/ad0s3d /dev/ad0s4d /dev/ad0s1e /dev/ad0s2e /dev/ad0s3e /dev/ad0s4e /dev/ad0s1f /dev/ad0s2f /dev/ad0s3f /dev/ad0s4f /dev/ad0s1g /dev/ad0s2g /dev/ad0s3g /dev/ad0s4g /dev/ad0s1h /dev/ad0s2h /dev/ad0s3h /dev/ad0s4h

    二, FreeBSD下分區工具的使用。

    在FreeBSD下最友善的分區方法是使用sysinstall提供的菜單選項,根據提示來完成分主分區(slice)和分邏輯分區(partiton)的劃分工作。 這個方法比較簡單,很容易學會。

    今天主要學習了一下指令行工具fdisk 和 disklabel(又名bsdlabel)的使用。

    首先,fdisk是用來劃分主分區的,也就是用來劃分slice,這一點和linux系統有很大的不同 .

    一般的使用方法:dd if=/dev/zero of=/dev/ad0 bs=1k count=1 #目的是先清除硬碟上原有的分區表,新硬碟可跳過這步。

    fdisk -BI /dev/ad0 #在硬碟/dev/ad0上建立一個主分區(slice)。

    看了一下fdisk的man文檔,參數B表示在硬碟的MBR中寫入一個标準引導記錄,I選項表示将整個硬碟劃分出一個slice.也就是說,指令行的分區工具fdisk隻能在一個硬碟上劃分出一個主分區,應該通過-f參數加配置檔案可以定義并劃分出四個主分區,但是光用fdisk提供的參數,好像隻能劃分出一個來。這一點上來說,FreeBSD的指令行分區工具做得還不夠人性化,還是用sysinstall提供的界面來分區更友善。

    disklabel/bsdlabel的使用:

    disklabel -B -w /dev/ad0s1 auto disklabel -e /dev/ad0s1

    檢視了bsdlabel的man文檔,參數B表示在該主分區中寫入引導程式。按照handbook中關于FreeBSD引導過程的描述,fdisk 的 B參數是表示在硬碟的MBR中寫入boot0(512位元組),而bsdlabel中的B參數則表示在該主分區中寫入該主分區的引導記錄(并非主引導記錄),即boot1(512位元組,寫在主分區的第一個扇區)和boot2(大概8K左右,寫在分區的某個特定區域,并非檔案系統中)。參數w即write,表示寫入,此外還可用r參數讀取。

    [auto]表示在該主分區中自動劃分出一個邏輯分區,有點類似于fdisk中的I參數。如果不加auto參數,則用disklabel -e /dev/ad0s1來分區劃分出邏輯分區的時候,disklabel會自動打開一個編輯器,讓你手工輸入邏輯分區大小,偏移量等資訊,然後儲存後更據你編輯的資訊來劃分出邏輯分區。手工編寫邏輯分區的資訊需要對硬碟的知識比較了解,但是好處是可以很自由的安排邏輯分區的起始位置、大小以及分區名稱等資訊,而且可以更據FreeBSD的規則最多化出7個可用分區和一個特殊的c分區。而用auto參數字自動劃分出一個邏輯分區的好處是不需要對硬碟有比較深入的了結,壞處是隻能分一個可用的邏輯分區。

    disklabel -e /dev/ad0s1 指令用來在該主分區(slice)中寫入該邏輯分區的起始位置等資訊。

    執行完這條指令後,在/dev/目錄下就會自動生成裝置檔案 ad0s1a 和ad0s1c ,如果是手工編輯邏輯分區資訊生成多個分區的話,/dev下會有對應的裝置檔案生成,用newfs建立檔案系統後就可以用該邏輯分區了。

    以上指令在handbook中有描述,但是沒有這麼詳細的說明,今天根據實驗和man文檔,以及自己的了解,寫下這些備忘記錄,以上了解應該是正确的。

    綜上所述fdisk工具是用來劃分主分區(slice)的,他的操作對象是硬碟的第一個扇區(MBR),在MBR中寫入标準引導程式(boot0),以及主分區的分區資訊。而disklabel/bsdlabel是用來在主分區中劃分邏輯分區的,他的操作對象是硬碟中主分區的第一個扇區,以及一些特殊區域,用來寫入引導程式的第二、第三步(boot1和boot2)以及位于該主分區中的邏輯分區的分區資訊以及辨別号。

    一般情況下,用fdisk和disklabel/bsdlabel進行分區不太友善也不直覺,sysinstall應該是一個快速直覺的選擇。

    通過閱讀相關文檔和實驗以及和其他作業系統的分區方式和概念的對比,對FreeBSD的分區概念和分區工具的使用有了比較清晰的了解 .

    三,一組有趣的實驗

    在實驗的過程中,發現一個有趣的現象,即:在FreeBSD中無論是整個硬碟/dev/ad0整個主分區/dev/ad0s1還是主分區中的邏輯分區 /dev/ad0s1a

    都可以用newfs直接建立檔案系統然後挂到某個目錄下使用。

    首先,我對一個沒有任何分區的硬碟做如下操作:newfs /dev/ad0 mount /dev/ad0 /mnt

    發現沒有任何錯誤和警告資訊,該硬碟沒有分區就直接可以用了,實際測試了一下,也确實正确。

    然後對硬碟劃分了四個主分區,再分别在四個主分區上建立檔案系統:

    newfs /dev/ad0s1 newfs /dev/ad0s2 newfs /dev/ad0s3 newfs /dev/ad0s4

    mount /dev/ad0s1 /mnt/1 mount /dev/ad0s2 /mnt/2 mount /dev/ad0s3 /mnt/3 mount /dev/ad0s4 /mnt/4

    同樣沒有任何錯誤和警告,這些主分區在沒有進一步劃分邏輯分區的情況下也可直接建立檔案系統後使用。

    最後,再在四個主分區中分别劃分出幾個邏輯分區,建立檔案系統後當然也能使用,這是FreeBSD中預設的硬碟使用方式。

    我甚至對代表整個主分區的c号邏輯分區上建立檔案系統:newfs /dev/ad0s1c mount /dev/ad0s1c /mnt 這樣也能使用,當然 如果劃分了其他邏輯分區的情況下,這種用法會破壞其他邏輯分區,這種用法和:newfs /dev/ad0s1 mount /dev/ad0s1 /mnt 應該是一緻的。

    通過實驗得出結論:在FreeBSD中,硬碟不需要分區,可直接建立檔案系統而使用該硬碟。

    建立分區的好處,是可以和其他作業系統共存一個硬碟上。

    在FreeBSD系統上做完上述實驗後,本人又想到linux上是否也可以不劃分分區而直接使用整個硬碟呢?

    立即做了一下實驗,證明了我的想法是正确的,隻不過linux的建立檔案系統指令mkfs.ext3會發出警告,隻要回答yes就可以直接在一個沒有分區的硬碟上建立檔案系統并mount到系統中使用了。

    指令如下:mkfs.ext3 /dev/sdb mke2fs 1.32 (09-NOv-2002)

    /dev/sdb is entire device, not just one partition!

    Proceed anyway? (y,n) y

    mount /dev/sdb /mnt

    以上實驗說明,在作業系統中,硬碟分區并非必需的,分區是為了更好的管理檔案和與其他系統共存。

摘錄的代碼:

dd if=/dev/zero of=/dev/ad0 bs=1k count=1      #目的是先清除硬碟上原有的分區表  

fdisk -BI /dev/ad0                        #在硬碟/dev/ad0上建立一個主分區(slice)

disklabel -B -w /dev/ad0s1 auto disklabel -e /dev/ad0s1

for i in `egrep "^(ad|aacd|mlxd|mlyd|amrd|idad|twed|da|ar|ips|)[0-9]:" /var/run/dmesg.boot | cut -d':' -f1 | sort | uniq`

do

  LN="`cat /var/run/dmesg.boot | grep ^$i | grep MB`" >/dev/null

  echo ${LN}

  fdisk /dev/${i} >/tmp/${i}

  FOUND="1"

done 

#!/bin/sh

#Get our Device Name

device=${1}

#Erase any existing bootloader

dd if=/dev/zero of=/dev/${device} count=1024

sleep 2

fdisk -I -B /dev/${DEVICE}

# Install new partition setup

fdisk -f /tmp/fdiskconfig /dev/${device}

sleep 1

繼續閱讀