目次

FreeBSDにDiskを追加(GEOM編)

FreeBSDにHDDを追加した時に行う作業。

bsdlabel/disklabel の時代でもあるまいということで、GEOM を使ってみる。

  1. まずは、 Disk をつなぐ(VMの場合、よくDiskを繋げるとかあるよね)
  2. 接続した Disk を確認する(/var/log/messagesを見たり、dmesgコマンドを実行することでデバイス名を確認することができる)
    • 今回は、仮に /dev/ada1 とする
  3. gpart showを実行し、 ada1 が見えているかを確認
    • # gpart show
      =>      34  41942973  ada0  GPT  (20G)
              34      1024     1  freebsd-boot  (512K)
            1058  39844864     2  freebsd-ufs  (19G)
        39845922   2097084     3  freebsd-swap  (1.0G)
        41943006         1        - free -  (512B)
      • この時、まっさらのDiskであれば、 GEOM が Disk を認識していない。上記例でも、ada1は見えていない
        • XenServer で Disk を追加した時などは、当然追加したDiskにGEOM情報が書かれていないのだからada1は見えない
  4. Disk Partition を作成する
    • gpart create -s GPT ada1 を実行。ada1 createdなどと出力されればOK
    • # gpart show
      =>      34  41942973  ada0  GPT  (20G)
              34      1024     1  freebsd-boot  (512K)
            1058  39844864     2  freebsd-ufs  (19G)
        39845922   2097084     3  freebsd-swap  (1.0G)
        41943006         1        - free -  (512B)
      
      =>       40  209715120  ada1  GPT  (100G)
               40  209715120        - free -  (100G)
    • 削除したい時には、gpart destroy ada1 などとすればよい
      • なお、 destroy する場合、 partition が存在して はいけない。事前に削除しておくこと
  5. Partition を作成
    1. gpart add -t freebsd-ufs ada1 を実行すると、 Partition を確保する。
      • 上記のような指定をした場合、空き領域のうち、取得可能な最大領域を確保する。
      • # gpart show ada1
        =>       40  209715120  ada1  GPT  (100G)
                 40  209715120     1  freebsd-ufs  (100G)
      • 領域を指定したい場合、 -b で開始位置、 -s で領域のサイズが指定できる。
      • -l を利用してlabelをつけることもできる。labelは便利なので、付けておくことをお勧めする。
      • add する際に -l を指定しても良いが、後から追加する場合 gpart modify -i 1 -l update-data ada1 などとする
        • この -i はindexであり、gpart show した時の 左から3番目のフィールド(通常は1〜3程度だろう)の値を指定する
        • このindexの値が、すなわち Partition 番号であり ada0p2 である場合、p2 が Partition index 2 を示す
      • labelを見たい場合、gpart show -l などとする
      • # gpart show -l
        =>      34  41942973  ada0  GPT  (20G)
                34      1024     1  (null)  (512K)
              1058  39844864     2  (null)  (19G)
          39845922   2097084     3  (null)  (1.0G)
          41943006         1        - free -  (512B)
        
        =>       40  209715120  ada1  GPT  (100G)
                 40  209715120     1  update-data  (100G)
      • Partition を削除したい場合、gpart delete -i 1 ada1 などとする
  6. これで、Partition が作成できたので、newfsする
    • newfs -J -U /dev/ada1p1 で、gjournal + soft-update を On にする
    • gjournal(-J) の代わりに soft-update journal(-j) を利用することもできるが、 GEOM を利用しているのだから gjournalを利用する
  7. これで GEOM - UFS な Filesystem が出来上がったので、確認する。
    • tunefs -p /dev/ada1p1などとする
    • # tunefs -p /dev/ada1p1
      tunefs: POSIX.1e ACLs: (-a)                                disabled
      tunefs: NFSv4 ACLs: (-N)                                   disabled
      tunefs: MAC multilabel: (-l)                               disabled
      tunefs: soft updates: (-n)                                 enabled
      tunefs: soft update journaling: (-j)                       disabled
      tunefs: gjournal: (-J)                                     enabled
      tunefs: trim: (-t)                                         disabled
      tunefs: maximum blocks per file in a cylinder group: (-e)  4096
      tunefs: average file size: (-f)                            16384
      tunefs: average number of files in a directory: (-s)       64
      tunefs: minimum percentage of free space: (-m)             8%
      tunefs: space to hold for metadata blocks: (-k)            6408
      tunefs: optimization preference: (-o)                      time
      tunefs: volume label: (-L)
  8. 最後に、Filesystemをmountし、fstabに記載する。