本節では、 NetBSD で 2TB を超える大きさのハードディスクの扱い方を解説します。
Important: 歴史的に、ハードディスクの基本単位は 1 セクタ 512 バイトです。 このため 2TB を超えるハードディスクを認識できません。 これは従来の MBR (master boot record) や伝統的な disklabel が 32 ビット表現を前提としているためです。
回避するためには、 gpt コマンドと dkctl コマンドをもちいて /dev/dk を作る必要があります。 ここで gpt は GPT (GUID partition table)を設定するツールです。 dk(4) は NetBSD 3.0 で導入された Disk partition (wedge) driver のことです。
なお、この地雷は地雷で勉強になるので、 ためしに強引に HDD に設定を書き込んでみるのも面白いでしょう。 3.5TB のはずなのに 1.5TB などと表示されたり、やたらに警告が出るはずです。
変なことがおきましたか?では、セクタ番号を計算してみましょう。
1.5TB のセクタ数 = 3.5TBのセクタ数 - 2^32 問題例: 2982219648 と 7277186944 の差は?になっていませんか?
2TB 超えの DISK の場合は、そのまま wd0 などと読みかえてください。
現状では 2TB の HDD がもっともコストパフォーマンスがよいため、 まだまだ RAID を使うでしょう。 というわけで、 RAID 0 のデバイス /dev/raid7 を作ったという前提で話をすすめます。
# raidctl -C /etc/raid7.conf raid7 # raidctl -I 20110910 raid7 # raidctl -iv raid7RAID 設定の詳細は、次の節を参照してください: [ RAID1 ] [ RAID0 ] [ RAID5 ] [ RAID1+0 ]。
GPT を作ります。
# gpt create raid7 # gpt add -b 128 raid7gpt add を実行すると、dkctl コマンドの例が表示されます。 セクタ番号は、ここで表示されたものを使います。 ちゃんとメモっておいてください。
実行例 # gpt create raid7 # gpt add -b 128 raid7 Partition added, use: dkctl rraid7d addwedge dk<N> 128 7277187039 <type> to create a wedge for it
Caution |
gpt の表示する見本では rraid7d ですが、実際には raid7 と入力してください。 たぶんバグです。 |
dkctl コマンドで /dev/dk0 を作成します。 セクタ番号は gpt add の際に表示された値です。
# dkctl raid7 addwedge dk0 128 7277187039 4.2BSDこれで /dev/dk0 が作成されました。
dk0 作成後は FFSv2 で newfs です。 -I オプションは「普通の disklabel がないけど無視する」という意味です。 -b64k がファイルシステムのブロックサイズを変更する指示になっています。
# newfs -O2 -b64k -I dk0
これで /dev/dk0 が作成されました。 FFS とは自動認識されないので、操作には少し注意が必要です。
マウントできるか、ためしてみましょう。
# mount_ffs /dev/dk0 /mntうまくマウントできたら、/etc/fstab にも書いておきましょうね。
dkctl に wedges のリストを表示させる。
dkctl raid7 listwedges
GPT の情報を表示させる。
gpt show raid7
gpt remove -b 128 raid7 gpt destroy raid7
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >