--- [管理番号 158] (最終更新 2001/10/14 11:51:14) Q. 小さいファイルを連続してディスクに書き込むと、すごく遅いのですが。 A. FreeBSD のデフォルトでは、ファイルのデータ本体は遅延書き込みされますが、 i-node (メタデータ) の更新は同期的に行なわれているため、頻繁にファイルの 作成・削除・更新をするような動作は比較的低速です。 これは安全性を考慮した上でのことで、安全性や機能を少し犠牲にすれば 高速化することができます。そのため目的に応じて使い分ける必要がある でしょう。 1. mount(8) 時に -o async オプションを使用すると、i-node の更新も非 同期に行います。例えば、/etc/fstab に /dev/ccd0c /a ufs rw,async 0 2 のように書きます。ただし、速くなる代りに信頼性は犠牲にされます。 mount(8) によると async 指定したファイルシステムのすべての I/O を非同期に行います。 このオプションを指定することは非常に危険ですので、システ ムクラッシュ時にファイルシステムを作り直す用意ができてい ないかぎりは使うべきではありません。 とあります。 ちなみに Linux では、この async がデフォルトになっています。 2. 用途によっては -o noatime オプションも有効です。これはファイルへ のアクセス時に、ファイルの最終アクセス日時を更新しません。ただし、 このアクセス日時を利用するようなアプリケーションは上手く動かない ので注意が必要です。/etc/fstab には /dev/ccd0c /a ufs rw,async,noatime 0 2 のように書きます。 3. FreeBSD 3.0-RELEASE からはこれらに加えて softupdates という機能 が加わっています。これは、安全性の犠牲なしにファイル I/O の高速 化を行おうとするもので、場合によってはかなりの効果が期待できます。 softupdates の解説 FreeBSD 4.1-RELEASE 以降は、デフォルトで GENERIC カーネルに softupdates 機能が含まれています。 a) ファイルシステムに対して softupdates を有効にします。この時 tunefs(8) を使うにはファイルシステムがアンマウントされた状態 でなければなりません。シングルユーザモードで作業すれば良いで しょう。 # tunefs -n enable /a b) この機能を使うとき -o async オプションは無意味です。 /dev/ccd0c /a ufs rw,noatime 0 2 また、上手くできたか確認するには mount コマンドをオプションなし で実行します。 % mount /dev/ccd0c on /a (local, noatime, soft-updates, writes: ... ^^^^^^^^^^^^ 4. これ以外で高速化の鍵となるものは、PCI IDE コントローラのフラグ設 定や、newfs(8) 時のオプション指定の最適な組合せ、及び ccd(4) や vinum(8) を使用してディスクをストライピングすることも考慮する価 値があるでしょう。 --- [管理番号 278] (最終更新 2001/01/08 04:36:37) Q. FreeBSD で不良セクタ (Bad Sector) のある IDE ハードディスクが使えますか? また、FreeBSD は自動的に修復してくれないのですか? A. 4.0-RELEASE 以上で採用された ad(4) ドライバでは、基本的に不良セクタの ある IDE ハードディスクはサポートしていないため使えません。もしかしたら [管理番号 314] にある low-level フォーマットで使えるようになるかもしれ ませんが、素直に問題のない HDD に交換した方が良いでしょう。特にそれ以前 のリリースで、bad144(8) による bad sector table を持つ HDD を使用してい た場合、システムをアップグレードすると、次のようなエラーメッセージが表示 されて起動に失敗します。 Mounting root from ufs:/dev/ad0s2a ad0: bad sector table not supported ad0s2a: bad sector table not supported Root mount failed: 22 もし、万一このような状態になったら、慌てず騒がず別のマシンにこの HDD をつなぎかえ、dump(8) するか強制的に mount(8) して、必要なファイルの バックアップを取れば良いでしょう。3.x ベースのカーネルを保存してあれば、 つなぎかえる必要はないかもしれません。 # mount -f -o ro /dev/ad2s2a /mnt 以下の説明は FreeBSD 4.x 以降では使えないか、あまり一般的な方法ではあり ません。IDE HDD やファイルシステムについて、それなりの知識を要求される 方法でもあります。 以前の wd(4) ドライバでは、bad144(8) コマンドによる不良セクタの代替処理 が使えます。ファイルシステムとして使用中のセクタを代替することもできます が、決して勝手に修復してくれるわけではありません。また、代替用のセクタを 確保しておかなければならないので、newfs(8) 前に HDD 全体をスキャンしてお いた方が安全です。FreeBSD のインストーラ sysinstall(8) からでは、FDISK Partition Editor の "B" コマンドを指定すると bad144 が実行されます。 それから badsect(8) というコマンドもあります。これは不良セクタを特別なファ イルに閉じ込めることで、通常のファイルとして使わないようにするもので、い くつかの制限事項はありますが、FreeBSD のリリースに関わらず使えるはずです。 --- [管理番号 314] (最終更新 2001/01/08 04:37:14) Q. HDD に不良セクタ (Bad Sector) が発生したようです。再度インストールし直 そうと思いますがその前に何かしておくことはありますか? A. まず一般論として、最近の HDD は大容量化の影響もあり、一旦 Bad Sector が 発生し始めると、そのあとは一気に被害が拡大することが多くなっています。 以下に説明する方法で代替処理 (repair a defect sector) を行っても、重要 なデータをその HDD に置くべきではありません。 最初に FreeBSD FAQ の「Q: ハードディスクに不良セクタがあります!」を見て ください。以下の URL です。 FreeBSD FAQ は 2.2.x ベースの内容が主で、必ずしも最新状況が反映されてい るわけではありません。以下の補足事項も参考にしてください。 (1) IDEディスクの場合 FAQ にもあるように、各 HDD ベンダが Web 等で供給しているユーティリティ を使って、low-level フォーマットを行なうことが考えられます。これにより 不良セクタの代替処理が行なわれるでしょう。 low-level フォーマットはなかなかデリケートな処理なので、十分に安定した 条件下で行なって下さい。IDE の場合は各ベンダ間で互換性がない事があるの で、必ず HDD のメーカの供給するユーティリティを使って下さい。 low-level フォーマット以外には bad144(8) というコマンドがありますが、 これは 4.0-RELEASE 以降の ad(4) ドライバでは使用できません。また wd(4) ドライバでも、最近の大容量 HDD では代替可能セクタ数をオーバーしてしま うなど、逆に問題を引き起こす可能性もあります。[管理番号 278] も参照し てください。 (2) SCSIディスクの場合 3.0-RELEASE 以降では scsi(8) コマンドは camcontrol(8) コマンドに置き換 えられました。これはドライブごとに次のコマンドを root で実行して、 # camcontrol da2 -m 1 -e -P 3 そして, AWRE と ARRE の値を 0 から 1 へ変更します:- AWRE (Auto Write Reallocation Enbld): 1 ARRE (Auto Read Reallocation Enbld): 1 もちろんディスクを外して例えば Mac 上でこの処理を行なってもよいです :-) Mac のSCSIディスクユーティリティの HDT は実に良くできている... SCSI ディスクの場合も low-level フォーマットがありますが、low-level フォーマットは不良セクタの特に多いディスクを、無理矢理使うような特殊な 場合を除いてあまりメリットのある方法ではありません。 --- [管理番号 755] (最終更新 2001/10/14 11:51:14) Q. notePCの 2.5inch HDD を交換したので、余った方を DeskTopPC に繋ごうと思 います。2.5inch -> 3.5inch 変換コネクタは入手したのですが、2.5inch HDD を slave に設定するにはどうしたらいいのでしょうか? A. 2.5inch HDD には IDE-Connector 謎の pin |………………………………|・・ |………………………………|・・ 40ピンのIDEコネクタと その横に 2x2 くらいのピンが付いています。この部 分にピンを繋ぐと slave になるのですが、メーカ各社によって組合わせがま ちまちなので注意が必要です。 ( | の部分は IDEコネクタとのすきまを表します。■と■を jumper で繋ぎます) ・IBM Travelstar無印(DHAA-,DVAA-)/LP(DBOA-)/XP(DPRA-) …|・■ …|・・ …|・・ …|・■ …|・・ …|■■ マスター スレーブ ケーブル選択 ・IBM Travelstar 2XP(DCRA-)/3XP(DLGA-)/2LP(DSOA-)/3LP(DMCA-)/ 4LP(DTNA-)/VP(DDLA-)/4GT(DPLA-)/5GS(DTCA-)/3GN(DYKA-)/8GS(DYLA-) …|・・ …|・■ …|・・ …|・・ …|・■ …|■■ マスター スレーブ ケーブル選択 ・Toshiba …|・・ …|■・ …|・・ …|■・ マスター スレーブ ・FUJITSU …|・・ …|・・ …|■■ …|・・ …|■■ …|・・ マスター スレーブ ケーブル選択 ・Hitachi …|・・ …|・■ …|・・ …|・■ マスター スレーブ ・Seagate …|・・ …|・■ …|・・ …|・・ …|・■ …|■■ マスター スレーブ ケーブル選択 ・Maxtor (ただし、一部の厚い HDD は裏の基盤上の jumper pin で設定) …|・■ …|■・ …|・・ …|・■ …|■・ …|■■ マスター スレーブ ケーブル選択 多くの HDDメーカーの WWW リソースでは jumper の設定が説明されています。 IBM: Toshiba: Hitachi: Fujitsu: Quantum: Seagate: Maxtor: comp.arch.storage FAQ-1 の Hard Disk Manufacturers には、上記以外にも HDD メーカーの URL が載っています。 --- [管理番号 852] (最終更新 2001/08/12 02:51:18) Q. FreeBSD では ATA HDD (EIDE) 及び ATAPI デバイスの DMA 転送をサポート していますか? A. FreeBSD のバージョンによりサポート状況は異なります。また、以下の記述は 基本的に FreeBSD/i386 (いわゆる PC/AT 互換機) の話です。FreeBSD(98) で は全く事情が違いますので注意してください。 1. FreeBSD 4.3-RELEASE 以降 まず IDE コントローラが DMA をサポートしていれば、HDD に関しては自動 的に DMA 転送を有効にしようとします。それに対して ATAPI デバイス (CDROM, ZIP, LS-120 など) は、デフォルトでは DMA は無効にされています。 この動作は次の MIB によって制御できます。 hw.ata.ata_dma ‥‥ ATA HDD hw.ata.atapi_dma ‥‥ ATAPI デバイス この MIB に対して `1' を設定すれば DMA 転送を有効に、`0' を設定すれば DMA 転送を無効にすることができます。設定方法は、/boot/loader.conf に 次のような行を追加するか、 hw.ata.ata_dma="0" ‥‥ ATA HDD の DMA 転送を無効化し PIO モードへ hw.ata.atapi_dma="1" ‥‥ ATAPI デバイスの DMA 転送を有効化 boot loader(8) のプロンプトで set hw.ata.atapi_dma="1" などとします。 詳しくは ata(4) と loader.conf(5) の man page を参照してください。 2. FreeBSD 4.0-RELEASE 以降 4.2-RELEASE まで デフォルトの動作に関しては 4.3-RELEASE 以降と同じですが、HDD につい てはブート時に DMA 転送を強制的に無効にすることができません。これは 特定のハードウェアの組み合わせによっては問題となることがあります。 起動後であれば sysctl(8) を使って、次のようにすれば良さそうです。 # sysctl -w hw.atamodes=pio,pio ATAPI デバイスについては、カーネルオプションを使用することで DMA 転送に対応します。GENERIC カーネルではこのオプションはコメントアウトさ れていますので、カーネルの再構築が必要です。 options ATA_ENABLE_ATAPI_DMA #Enable DMA on ATAPI devices 3. FreeBSD 3.x-RELEASE wd ドライバの flags を指定することにより、DMA 転送が可能になります。 マニュアル wd(4) を御覧下さい。ただし、サポートされている ATA chipset は Intel PIIX のみのようで、他の chipset で有効かどうかは不明です。 (src/sys/i386/isa/wdreg.h 参照) controller wdc0 at isa? port "IO_WD1" bio irq 14 flags 0xa0ffa0ff 0x8000 … 32bit 転送 0x4000 … スリープモードによる HDD の一時停止への対応 0x2000 … DMA 転送 0x1000 … LBA モード 0x00ff … 下位 8bit は multi-sector 転送。0xff はドライブの最大数。 下位 16bit が Master、上位 16bit が Slave に対する設定です。 4. FreeBSD 2.2.x ではサポートされていません。 --- [管理番号 1506] (最終更新 2000/01/20 19:47:50) Q. 8GB/33GB を超えるハードディスクドライブが使えないことがあると いう話を聞きましたが本当ですか? A. 正確には、1,024シリンダを超える HDD に関する問題で、普通は 1,024 シリンダで 8GB (8x2^30 バイト=8.4GB) となるところから「8GB 超」と 呼ばれています。また、これとは別に 33.8GB 以上の HDD が使えない 問題もあります。以下の QandA を参照して下さい。 [管理番号 1507] Q. どうして 8GB 超の HDD が使えないことがあるのですか? [管理番号 1508] Q. FreeBSD の大容量 IDE HDD への対応状況は? [管理番号 1509] Q. 大容量 HDD (SCSI/IDE) を使うに際の注意点は? [管理番号 1510] Q. HDD の構造はどうなっているのでしょう? [管理番号 1511] Q. HDD の「CHS」って何ですか? [管理番号 1512] Q. HDD の「ジオメトリ」って何ですか? [管理番号 1513] Q. HDD の「ジオメトリ変換」って何ですか? [管理番号 1514] Q. HDD の「LBA」って何ですか? [管理番号 1515] Q. パーティション (partition) って何ですか? [管理番号 1516] Q. FAT32 って何ですか? [管理番号 1517] Q. FAT32X って何ですか? [管理番号 1518] Q. FDISK.EXE はどうやってパーティションを決めているのですか? [管理番号 1519] Q. 8GB 以内の領域なのに FAT32X が出来てしまいました。 [管理番号 1520] Q. FIPS で 8GB 超 HDD は扱えますか? [管理番号 1521] Q. PatritionMagic で 8GB 超 HDD は扱えますか? [管理番号 1522] Q. PartitionIt で 8GB 超 HDD は扱えますか? [管理番号 1523] Q. PARTITION COMMANDER で 8GB 超 HDD は扱えますか? [管理番号 1524] Q. 8GB 超 HDD で使えるブートセレクタを教えて下さい。 --- [管理番号 1507] (最終更新 2000/01/20 19:47:52) Q. どうして 8GB 超の HDD が使えないことがあるのですか? A. 原因はハード、ソフト共に色々とあって、それぞれの原因により問題の 程度や症状も異なります。 8GB 超の IDE HDD を扱う場合、主に以下の 5 つの問題点があります。 (A) マザーボードの制限 (B) BIOS の制限 (C) ブートローダの制限 (D) OS kernel の制限 (E) 各 application の制限 このいずれかが原因で、8GB 超の HDD 領域が扱えないような場合は、 それぞれに応じて以下のような問題が起こります。 1.physical access 全ての PC はマザーボード上の IDE bus を介して IDE HDD に アクセスするので、(A) の制限がある場合、どうやっても 8GB 超の HDD 領域を利用することはできません。 しかし、1995 年頃以降に発売されている PC であれば、このような マザーボード上の制限はまずないと見てよいでしょう。 2.boot Windows・DOS・PC-UNIX 問わず、全ての PC 環境は、まず BIOS によって起動されるので、OS のブートプログラムが 8GB 超の位置に あった場合、(B) の制限に引っかかります。 HDD 全体をパーティション分割した場合、起動させたい OS のブート プログラムを含むパーティションの先頭が 8GB 以内に存在すれば、 この問題は回避できます。 8GB 超領域からブートプログラムを起動したい場合、BIOS update しか手はありません。ただ、1998 年頃以降に発売されている PC で あれば、このような BIOS 上の制限はまずないと見てよいでしょう。 ただし、(A) の制限がある場合は、BIOS の update は無効です。 ただし、FreeBSD はブート時以外は BIOS を介さないため、 一度ブートしてしまえば BIOS の制限は関係なくなります。 3.ブートローダ OS のブートプログラムは、HDD 先頭セクタに書かれているブート ローダから読込まれるので、OS のブートプログラムが 8GB 超の 位置にあった場合、(C) の制限が有効となってきます。 BIOS 問題同様、OS のブートプログラムを含むパーティションの 先頭が 8GB 以内に存在すれば、この問題は回避できます。 8GB 超領域からブートプログラムを起動したい場合、8GB 超に対応 したブートローダが必要となります。FDISK.EXE で標準的に作られる ブートローダや、LILO、booteasy といった PC-UNIX 用の標準的な ブートローダは 8GB 超に対応していません。 この問題はスライス (パーティション) 設定を工夫することで回避できます。 [管理番号 1509] 大容量 HDD (SCSI/IDE) を使うに際の注意点は? を参照して下さい。  8GB 超対応のブートローダとしては、extipl や GNU GRUB といった ものが確認されています。  ただし、(A)(B) の制限がある場合はブートローダを変更しても 意味はありません。 4.MS-DOS, Windows MS-DOS, Windows95 初期バージョン(4.00.950, 4.00.950 A) の システムコールや DLL は、8GB 超の HDD を扱えないので、(D) の 制限が効いてきます。 HDD のパーティションをどうやりくりしたところで、8GB 超を扱う 手段がないので、OS を介する限りは 8GB 超領域にはアクセスでき ません。8GB 以内の領域に完全に含まれるパーティションのみを 利用していれば、この問題は回避できます。 8GB 超領域を扱いたい場合、Windows95 OSR2, Windows98 などの 新しい OS に upgrade するか、または直接 BIOS 経由で HDD に アクセスするようなアプリケーションを用いるしか手はありません。 ただし、(A)(B) の制限がある場合、OS を upgrade しても 意味がありません。 5.FreeBSD [管理番号 1508] Q. FreeBSD の大容量 IDE HDD への対応状況はどうなっているのでしょうか? [管理番号 1509] Q. 大容量 HDD (SCSI/IDE) を使うに際の注意点は? を読んで下さい。 6.FAT32X file system Windows で 8GB 超領域を扱う場合、そのパーティションは LBA という アクセス方式を用いるためのファイルシステム (FAT32X) として用意 されます。 このファイルシステムは、MS-DOS や Windows95 初期バージョン、 FreeBSD 旧バージョン (2.2.8-RELEASE 以前) では知られていない ので、(D) の制限が効いてきます。 Windows の FDISK.EXE で「大容量ディスクのサポートを使用 可能にしますか (Do you wish to enable large disk support)」 の問いに [N] と答えてパーティションを作成すれば、FAT32X は作成 されませんので、この問題は回避できます。 FAT32X を扱いたい場合、Windows95 OSR2, Windows98 及び FreeBSD 3.x-RELEASE に upgrade するか、または直接 BIOS 経由で HDD にアクセスするようなアプリケーションを用いる (MS-DOS, Windows)、 もしくは自分でカーネルソースの diskslice_machdep.c を書換えて FAT32X 対応カーネルを作る (FreeBSD) しか手はありません。  ただし、FAT32X が扱えるようになっても、8GB 超領域が使えるか どうかは別項目の制限に依存します。 7.partitioning tools MS-DOS,Windows 環境でパーティションを切るためのアプリケーションは、 FDISK.EXE 以外に FIPS.EXE や Partition Magic などがありますが、 これらには (E) の制限が効いてきます。 FIPS 1.4 以前は FAT32X に対応していないので、8GB 超を扱う ためのファイルシステムを操作できません。FIPS 2.0 は FAT32X を 扱うことはできますが、8GB 超を扱えないので、8GB 超にある パーティションを操作すると HDD 内容を壊してしまいます。 Partition Magic 3.0 以前は FAT32X に対応していないので、8GB 超を扱うファイルシステムを操作できません。Partition Magic 4.0 は FAT32X を扱うことは出来るが、8GB 以内に作られた FAT32X を 異常扱いしてしまうため、8GB 超の FAT32X しか扱えません。 Windows の FDISK.EXE だけを使っていれば、この問題は回避 できます。 FAT32X を安全に扱いたい場合、FIPS や Partition Magic の作者、 メーカに対して要望を出し、アプリケーションの改善を訴えるしか ありません。 ただし、FAT32X が安全に扱えるようになっても、8GB 超領域が 使えるかどうかは別項目の制限に依存します。 --- [管理番号 1508] (最終更新 2001/10/14 11:51:14) Q. FreeBSD の大容量 IDE HDD への対応状況はどうなっているのでしょうか? A. 結論から言うと、 - FreeBSD 2.2.7-RELEASE 以前 8GB (8.4GB) まで。それ以上の HDD では最初の 8GB しか使用 できない。 - FreeBSD 2.2.8-RELEASE 以降 (3.0-RELEASE 含む) デフォルト (CHS モード) では 33.8 GB まで。 LBA モードにすると 33.8 GB 超でも問題なし。 となります。 理由を簡単にまとめると、 1. IDE のハードディスクのセクターをアドレス指定する方法は、 CHS 変換とLBA 変換の2種類があります。 2. CHS 変換の場合は3つパラメーターがありますが、 それぞれの最大値は16383、16、63です。 3. そのため CHS 変換の場合の最大容量は 8.4GB になります。 (16383x16x63x512 = 8.4x10^9) 4. ハードディスクベンダーは、CHS 変換では 8.4GB までの使用しか 保証していないようです (実際に動作するかどうかは別)。 8.4GBを超える容量を使用するには LBA 変換を推奨しています。 5. FreeBSD の wdドライバは、CHS 変換を標準で採用しています。 LBA 変換の使用は *公式には* サポートされていないようです。 以上より、FreeBSD で *公式* にサポートされている IDE HDD は 8.4GB までと判断するのが妥当だと思われます。2.2.7-RELEASE 以前は この制限があてはまります。 しかし、2.2.8-RELEASE 以降は 6. CHS 変換で 8.4GB を超える容量を取り扱う場合、パラメータを 65535x16x63 まで拡張していますので、CHS変換で 33.8GB まで 使用可能なシステムが多いようです。 (65535x16x63x512=33.8x10^9) 7. 33.8GB を超えると、最初のパラメーターが 65535 を超えるため、 誤作動します。 8. CHS モードでなく LBA モードにすると 33.8GB 超でも OK です。 となっています。ただしこれは現行の wd ドライバに対するものです。 現在 (1999/12) current で新しい ata ドライバーがテスト中ですので、 将来適切なコードが組み込まれることが期待できます。 その他の注意点は [管理番号 1509] Q. 大容量 HDD (SCSI/IDE) を使うに際の注意点は? を読んで下さい。 まとめると、 - 8 GB 超 IDE HDD を利用する場合 まず [管理番号 1507] を読んで、マザーボードと BIOS が対応している ことを確認してください。FreeBSD 2.2.8-RELEASE 以降 (3.0含む) を 使用し、CHS モード (デフォルト) で使用するのが良いでしょう。 ただし、マザーボードが 8.4GB 以上の IDE HDD に対応していなくても、 POST 中にハングせず、FreeBSD のカーネルが HDD を正しく認識できる 場合は、使用可能な場合があります。 - 33.8GB以上のIDE HDDを使用する場合 マザーボードと BIOS が 33.8GB 以上の IDE HDD に対応していることを 確認してください。HDD は、ATA-4 以降の仕様が良いでしょう。 FreeBSD は 2.2.8-RELEASE 以降 (3.0含む) を使用し、デフォルトの CHS モードでなく LBAモードで使用します。具体的には カーネル コンフィグレーションメニューで、 Storage---IDE/ESDI/MFM disk controller wdc0 (または wdc1) を選択し、Flags を 0x10001000 に設定します (これは Master と Slaveを両方指定する場合)。 なお、カーネルダンプにバグがありますので、カーネルダンプを無効に しておくか、カーネルにパッチをあてる必要があります。 参考資料 d1153r18 ATA/ATAPI - 4 revision 18 8.4GB Barrier Getting beyond the ATA 8.4 GB limit Parameters of 8.4 GB and Larger AWARD BIOS 4.5x 33.8GB Limitation UPDATE10: ATA/ATAPI driver new version available. [FreeBSD-users-jp 38444] Over 8GB HDD FAQ 8GB 超 HDD 問題の解説 [FreeBSD-users-jp 47968] Re: FreeBSD 32GB Limitation? current では sos の書いたata(4)ドライバがあります。 [FreeBSD-users-jp 34329] Re: Does 3.0-RELEASE support LBA mode (over 8GBATA)? 現在のコードの LBA の問題 [FreeBSD-users-jp 31748] Re: ATA DISK larger than 8.4GB on 2.2.5 LBA 問題のパッチ(3.0系用) [FreeBSD-users-jp 31746] Re: ATA DISK larger than 8.4GB on 2.2.5 LBA 問題のパッチ(2.2.5, 2.2.6, 2.2.7用) [FreeBSD-users-jp 47965] Re: FreeBSD 32GB Limitation? 3.3-RELEASE のカーネルのコードの解説 ASUStek マザーボード 大容量 IDE HDD対応予想リスト [FreeBSD-users-jp 47999] ASUStek Slot 1マザーボード [FreeBSD-users-jp 47996] ASUStek Socket 7マザーボード [FreeBSD-users-jp 48004] 予想リストの解説 ASUStek マザーボード大容量 IDE HDD への対応調査結果 [FreeBSD-users-jp 48747] Re: FreeBSD 32GB Limitation? (30.0GB-NG) --- [管理番号 1509] (最終更新 2000/01/20 19:47:54) Q. 大容量 HDD (SCSI/IDE) を使うに際の注意点は? A. IDE HDD の場合は、まず [管理番号 1508] Q. FreeBSD の大容量 IDE HDD への対応状況は? を読んで下さい。 以下の記述は、SCSI HDD・IDE HDD の両方に当てはまります。 注意点は、以下の2点です。 (1) FreeBSD のブートローダは [管理番号 1507] 3. ブートローダ にあるように 8GB 超に対応していないため、2.2.8-RELEASE 以降で あっても、ルートパーティションを含むスライスの先頭を 8GB 以内の 領域に置かなくてはいけません。 標準のブートローダでなく、GNU GRUB を使って直接カーネルを起動させる 設定にしておくと、8GB 超の位置にあるカーネルを起動できるようになります。 (2) ある条件が重なると、バグによりブート時に停止してしまいます。 [FreeBSD-users-jp 48565] Re: QandA about over 8GB/32GB IDE HDD ブート時の bad144 に関するバグの解説とパッチ ルートパーティションを含むスライス全体が 8GB 以内に収まるようにすると 回避できます。 例えば wd0 が 20GB なら、 /dev/wd0s1 ... 15GB (Windows 用) /dev/wd0s2 ... 5GB (FreeBSD 用) /dev/wd0s2a ... / 100MB /dev/wd0s2e ... /var 100MB /dev/wd0s2f ... /usr 4.8GB だと、ルートパーティション (/dev/wd0s2a) を含むスライス (/dev/wd0s2) の 先頭が 8GB 以内でないので、ブートできません。 一方、 /dev/wd0s1 ... 5GB (Windows 用) /dev/wd0s2 ... 15GB (FreeBSD 用) /dev/wd0s2a ... / 1GB /dev/wd0s2e ... /var 1GB /dev/wd0s2f ... /usr 13GB では、ルートパーティション (/dev/wd0s2a) を含むスライス (/dev/wd0s2) の 先頭は、8GB 以内から始まっているので (1) の問題は回避できます。 しかし、ルートパーティション (/dev/wd0s2a) を含むスライス (/dev/wd0s2) 全体は 8GB に収まっていないので、(2) を回避するためには /dev/wd0s1 ... 5GB (Windows 用) /dev/wd0s2 ... 1GB /dev/wd0s2a ... / 1GB /dev/wd0s3 ... 14GB /dev/wd0s3e ... /var 1GB /dev/wd0s3f ... /usr 13GB とすればよいわけです。 * ここでの「スライス」とは DOS での用語「パーティション」と * 同じ意味です。また、ここでの「パーティション」という用語は * 「スライス」を /usr /var などのファイルシステム単位で分割 * したものを指します。 --- [管理番号 1510] (最終更新 2000/01/20 19:47:56) Q. HDD の構造はどうなっているのでしょう? A. 一般に HDD は薄い円盤を何枚か重ね合わせた構造をしており、この円盤の 各面をヘッド (または サーフェス) と言います。 また、この各面に対し、半径方向に等分した一円周をトラックと言い、この 各面のトラックを回転軸方向に連ねた仮想的な円筒をシリンダと言います。 さらにこのトラックを円周方向に分割した一区切りをセクタと言い、これが HDD を構成する最小ブロックとなります。 物理的には、ヘッド -> トラック -> セクタという順で構成されていますが、 これを輪切りではなく皮を剥くような仮想的な構成に見たてて、論理的には、 シリンダ -> トラック -> セクタという順で構成されているものとして 扱うことが多くなっています。 --- [管理番号 1511] (最終更新 2000/01/20 19:47:57) Q. HDD の「CHS」って何ですか? A. シリンダ/ヘッド/セクタ (cylinder/head/sector) の頭文字を取ったものです。 「HDD 一台辺りの総シリンダ数」 「HDD 一台辺りの総ヘッド数」 「トラック 1 つあたりの総セクタ数」 をそれぞれ 「シリンダ数」「ヘッド数」「セクタ数」 と呼び、これらの組を「CHS 値」と呼びます。 ちなみに、ヘッドとトラック (track) は別の概念ですが、その構造を頭に 描いてもらうと、「ヘッド数」と「1 シリンダ辺りのトラック数」とが 等しくなることが判ると思います。 CHS 値の中の「ヘッド数」が表現によって「トラック数」となることがあるの はこのためです。 --- [管理番号 1512] (最終更新 2000/01/20 19:47:58) Q. HDD の「ジオメトリ」って何ですか? A. 元々の意味は「幾何学」ですが、HDD の性質を表す要素として用いられる ことがあります。 具体的には、HDD 全体で幾つのシリンダを持つかとか、1セクタ辺りの バイト数だとかを総称して「ジオメトリ情報」と呼びます。CHS 値もその 代表的なものです。 --- [管理番号 1513] (最終更新 2000/01/20 19:48:00) Q. HDD の「ジオメトリ変換」って何ですか? A. 従来の IDE HDD では、各シリンダ/ヘッド/セクタ (cylinder/head/sector) にそれぞれ番号を割り振って、 「第 x シリンダの y 番目のトラックの z 番目のセクタ」 といった風に、その番号の組み合わせで位置を示していました。 しかし、HDD の容量が増加するにつれ、シリンダやセクタの分割の細密化が 激しくなると、外周トラックと内周トラックとでセクタ数が異なったり、 各トラック間での開始セクタの位置が異なったりと、従来の CHS 値が 使えなくなってきました。 このため、物理的なジオメトリ情報は無意味になり、その代わりに仮想的 なジオメトリ情報をデッチ上げて用いることになりました。この情報改竄 を「ジオメトリ変換」と言います。 --- [管理番号 1514] (最終更新 2000/01/20 19:48:01) Q. HDD の「LBA」って何ですか? A. Logical Block Access の略で、IDE HDD 上の位置を示すために使われる 数値の表し方です。 CHS 値での表し方とは異なり、LBA 方式では全てのセクタに HDD 全体の 通し番号を設けて、その位置を表しています。このため、ジオメトリ変換も いりませんし、ソフトウェア側からは HDD 内の構造を一切意識する必要が なくなりました。 最も大きな利点は、CHS 方式でのアクセスを行なう PC/AT BIOS には、各 ジオメトリ値に上限があり、シリンダ値の上限が 1,024 となっていたので ですが、LBA 方式ではこの上限が無くなったという点にあるでしょう。 したがって、1,024 cylinders 超の HDD 領域をアクセスするには、LBA 方式が不可欠となります。 --- [管理番号 1515] (最終更新 2000/03/04 08:15:44) Q. パーティション (partition) って何ですか? A. 一台の HDD の中を論理的に複数の領域に分けて用いる場合、この各領域を パーティションと呼びます。こうして分割して用いることで、各パーティ ションごとに別々の OS を入れたり、別々のフォーマットにしたりする ことが可能になります。 それぞれのパーティションには OS 固有の ID 値が書き込まれますので、 OS がこれを見てそのパーティションのフォーマットを知ることができる ようになっています。 また FreeBSD においては、DISK内を /usr /var などのファイルシステム 単位で分割したものをパーティションと呼ぶため、ここでいうパーティ ションをスライスと呼びます。 --- [管理番号 1516] (最終更新 2000/01/20 19:48:03) Q. FAT32 って何ですか? A. パーティションのフォーマットタイプの一つで、Windows95 で採用されて いる、大容量対応のパーティションです。従来の FAT12 や FAT16 という パーティションとは異なり、最大 2GB の領域を作成できます。PC/AT 機 でのパーティション ID は 0Bh です。 「FAT」の後の数値は、パーティション上の位置を示す数値を何ビットで 表現するかというビット数を表しています。FAT16 は 16 ビットの数値で 位置を示すため、大容量パーティションにすると後ろの方の位置が 示せなくなるのです。 --- [管理番号 1517] (最終更新 2000/01/20 19:48:05) Q. FAT32X って何ですか? A. パーティションのフォーマットタイプの一つで、Windows95 OSR2 で採用 されている、LBA 対応のパーティションです。ディスクアクセスに CHS 方式を使う FAT32 と異なり、最大 2TB までの領域を作成できます。 PC/AT 機でのパーティション ID は 0Ch です。 FAT32 と同様に、FAT16 にも LBA 対応版の FAT16X というパーティションが 存在しますが、FAT12 については LBA 対応版は存在しません。LBA 方式で しかアクセスできない領域には、必ず FAT32X か FAT16X でパーティションが 作成されます。 --- [管理番号 1518] (最終更新 2000/01/20 19:48:06) Q. FDISK.EXE はどうやってパーティションタイプを決めているのですか? A. 最初に 「大容量ディスクのサポートを使用可能にしますか」 (英語版では「Do you wish to enable large disk support」) と聞いてきますが、ここで「Y」と答えた時のみ FAT32, FAT32X, FAT16X が 作成されます。 FAT12, FAT16, FAT32 の違いはパーティションサイズによって一意に定まり ます。一般的には、そのパーティションタイプで作成可能な最大容量までは、 そのパーティションが採用されます。 FAT16X, FAT32X は、そのパーティションの位置が HDD 先頭から 8GB 超の 位置にある時のみ作成されます。8GB 超の位置では、容量がいくら小さくても FAT12 パーティションは作成しません。 --- [管理番号 1519] (最終更新 2000/01/20 19:48:11) Q. 8GB 以内の領域なのに FAT32X が出来てしまいました。 A. FDISK.EXE のパーティションタイプ決定ルールの例外です。HDD の末尾を含む パーティションを作成するとこうなります。 CHS 方式でジオメトリ変換を行なうと、丁度割り切れない場合に除算の余りが 生じます。このため、一番最後のシリンダには CHS 方式では表現し切れない 個所が生じてしまいます。 この部分を有効に使うためには LBA 方式を使う必要があるため、この部分 を含むパーティションは FAT32X や FAT16X で作成されます。 --- [管理番号 1520] (最終更新 2000/01/20 19:48:12) Q. FIPS で 8GB 超 HDD は 扱えますか? A. 扱えません。LBA に対応していませんので、8GB 以内でのディスク再配置 しかできません。 1.4 以前では単に扱えないだけで済むのですが、1.5c 以降の新しい版では 更に注意が必要です。1.5c で FAT32 対応をした際に、FAT32X パーティション についても、一般の FAT32 パーティションと全く同等に CHS 方式を用いるよ うに構築されてしまいました。 このため、8GB 超の位置にデータの存在する HDD については、正しく再配置 できずに、内容を壊してしまいます。この時に破壊されるのは、8GB 超の 位置ではなく 8GB 以内の位置にあるデータなので、思わぬところにある データが壊れていることになるでしょう。 --- [管理番号 1521] (最終更新 2002/03/07 15:32:11) Q. PatritionMagic で 8GB 超 HDD は扱えますか? A. 4.0 以降でのみ扱えます。それより前の版では LBA 対応されていませんの で、FAT32X や FAT16X は再配置出来ません。 ただし、4.0 では 8GB 以内の FAT32X や FAT16X を「異常パーティション」と 決め付けてしまっているので、これらのパーティションについては 4.0 を用い ても再配置出来ません。 また、4.0 に添付の BootMagic というブートセレクタがありますが、こちらは 残念ながら LBA 対応されていませんので 8GB 超領域の OS をブートできません、 --- [管理番号 1522] (最終更新 2000/01/20 19:48:19) Q. PartitionIt で 8GB 超 HDD は扱えますか? A. FAT32 のサポートはされていますが、LBA 対応されていないので FAT32X は扱えません。WindowsNT 用の 64KB cluster も扱えませんので、FAT16 で扱える最大容量は 2GB となります。 PartitionIt では、これらの扱えないパーティションタイプに対して、 一切の警告なしに勝手に他のパーティションタイプに変換してしまうよう ですので注意して下さい。 また、添付の SelectIt というブートセレクタも同様に LBA 対応されて いませんので、8GB 超領域の OS をブートできません。 --- [管理番号 1523] (最終更新 2000/01/20 19:48:20) Q. PARTITION COMMANDER で 8GB 超 HDD は扱えますか? A. LBA にも FAT32X にも標準で対応していますので、8GB 超 HDD 環境で 使用して問題ありません。 また、添付の SYSTEM COMMANDER Personal というブートセレクタも同様 に LBA, FAT32, FAT32X を扱えますので、8GB 超 HDD で使えます。 --- [管理番号 1524] (最終更新 2001/10/14 11:51:13) Q. 8GB 超 HDD で使えるブートセレクタを教えて下さい。 A. 以下のブートローダ LILO booteasy OS-BS は 8GB 超では使えません。LILO 以外は最終更新日がかなり古いソフトなので、 今後の対応も余り期待出来ないと思われます。 HDD の先頭から 8GB 超のパーティション (FreeBSD の用語でいうスライス) からのブートに対応しているブートセレクタ (ブートマネージャとも言います) に以下のようなものがあります。しかし、変化も著しいのでここに書いてある 内容を鵜呑みにしないでください。 XOSL GPL でソース配布もされています。GUI オペレーションなのが特徴です。 インストールには DOS パーティションあるいは独自のパーティションが必要 ですが、普通の人にとっては使いやすく、高機能なブートマネージャでしょう。 現在判明している不具合として、一部の環境において、マウスで特定のボタン をクリックしたとたんにマウスが凍り付く問題がありますが、キーボードでの オペレーションは可能なので致命的ではありません。 MBM Symon この二つはバイナリ配布のみのようです (MBM については未確認)。 Symon は boot0 (FreeBSD の標準ブートマネージャ) 同様複数のディスクを 使う場合には、それぞれのディスクにインストールする必要があります。 バージョン 2.05 になってからは特に大きな問題もありません。 現在お薦めできそうなものは以上の3種類です。いずれも OS-BS 等から考えると かなり高機能です。なお XOSL と Symon については、実際に使用して FreeBSD の起動に使えることを確認しています。 extipl は LBA 対応版の ソースが公開されているので、それをコンパイルすれば 8GB 超環境で 使えますが、512 bytes というサイズの制限から、通常版と比べると 若干機能が省略されます。 GNU GRUB は標準で 8GB 超に対応して いますが、コンパイルはあまり簡単ではなく、binutils の新しいバージョン を手に入れる必要があります。しかし安易に最新の binutils を入れるのは 危険ですので、試してみるだけならコンパイル済みのバイナリを使うのがよい でしょう。また、FreeBSD 3.0R 以降の ELF 形式のカーネルを直接指定して 起動させることも可能ですが、UserConfig 等の設定を生かすことができない ため、/boot/loader を起動するようにした方がよいでしょう。 Ranish Partition Manager は元々はパーティション再配置ツールですが、独自のブートセレクタを持って います。Ver.2.38βで LBA 対応しましたが、残念ながらこの版からシェアウェア になってしまいました。 商用ソフトになりますが、システムコマンダー 2000 SYSTEM COMMANDER 2000 は 8GB 超問題をクリアしています。また、パーティションコマンダー PARTITION COMMANDER もあり、これには、SYSTEM COMMANDER Personal が含まれており、これは SYSTEM COMMANDER 4 の簡易版です。 Windows NT/2000 が導入されていれば、Windows NT/2000 の boot loader を 使用する方法もあります。FreeBSD FAQ や [FreeBSD-users-jp 17043] が参考に なるでしょう。 --- [管理番号 1575] (最終更新 2002/01/27 00:09:33) Q. FreeBSD 3.4-RELEASE 以前の配布ファイルの tools/ ディレクトリにある presizer.exe を用いて 12GB のハードディスクを分割し、Windows 98 との Dual boot をしようとしましたが、presizer.exe が次のようなエラーを表示 して止まってしまいます。 The Partition Resizer v. 1.3.0 (c) Zeleps 1994-98 Please wait... Checking: -Available physical IDE drives...done. -Partition structure...Divide error どうしたらよいでしょうか? A. presizer.exe のバージョンが古い (Partition Resizer v. 1.3.0) のが原因 です。新しいバージョン Partition Resizer v. 1.3.4('00/06/26 現在) を から取ってきて使えばよいです。 --- [管理番号 1677] (最終更新 2003/10/16 23:20:14) Q. ATA のハードディスクを使っています。 下記のように、起動しなかったり、起動してもうまく動かないようです。 Q1. ブート時に下記のようなメッセージが表示されて起動しません。 Loading /boot/defaults/loader.conf /kernel text=0x18d372 data=0x3d0ec+0x2158c | elf_loadexec: archsw.readin failed Unable to load kernel: Aborted! Q2. 起動する場合もありますが、HDD への書きこみエラーが頻繁に起きたり、 HDD の回転が止まったりします。 A. ATA ケーブルに問題がある可能性があります。 例えば、ATA66 までしか対応していないケーブルを使って ATA100 や ATA133 対応のデバイスを接続すると起きることがあります。 場合によっては、ハードウェア、ソフトウェアいずれか、または両方にな んらかの制限があるということもありえます。 このようなケースでは、ブート時にはそのままエラーになってしまい起動 できませんが、たまたまうまく起動した場合は自動的に PIO モードに フォールバックするので、それなりに動くことがあります。 その場合は、下記のようなメッセージが出るでしょう。 ad0s1g: UDMA ICRC error writing fsbn 40927487 of 13123680-13123711 (ad0s1 bn 40927487; cn 2547 tn 157 sn 41) retrying ad0s1g: UDMA ICRC error writing fsbn 40927487 of 13123680-13123711 (ad0s1 bn 40927487; cn 2547 tn 157 sn 41) falling back to PIO mode ad0: UDMA ICRC READ ERROR blk# 2612047 retrying ad0: UDMA ICRC READ ERROR blk# 6752531 retrying ata0-master: WARNING: WAIT_READY active=ATA_ACTIVE_ATA falling back to PIO mode ad0: UDMA ICRC WRITE ERROR blk# 2111 retrying ad0: UDMA ICRC WRITE ERROR blk# 4195013 retrying ata0-master: WARNING: WAIT_READY active=ATA_ACTIVE_ATA falling back to PIO mode 対処法 1. ケーブルを適切なものに交換します。 対処法 2. 本質的な解決ではありませんが、DMA を無効にするとうまく動 く場合があります。[管理番号 852] を参考にしてください。 --- [管理番号 1812] (最終更新 2004/07/12 23:14:37) Q. FreeBSD 4.0 以降ではディスクの不良ブロックチェック(スキャン) などを行う bad144 コマンドがなくなりましたが、これからはどう やって不良ブロックチェックを行えばよいのでしょうか? A. FreeBSD 4.0 以降の ad ドライバでは bad sector table のある パーティションがサポートされなくなり、bad144 コマンドもなく なりました。したがって、基本的に OS 上で不良ブロックのチェックを 行うことはできません。[管理番号 278] 参照。 一般的に OS の稼動中にディスクのチェックツールを使用するのは、 結果に対する信頼性に欠くばかりでなく、HDD などに無理な負担が かかる可能性もありますので、OS 上での不良ブロックのチェックは あきらめて、以下のような診断ツールを使ってください。 Hitachi Drive Fitness Test Maxtor MAX Seagate SeaTools Disc Diagnostic その他、メーカーを問わずハードウェアのチェックができる AMIDIAG (あな診)というものもあります。(有料) (日本語サイト) また、OS の稼働中にディスク交換する必要がある場合は、ホットスワップ 対応の RAID 装置を使用することを考慮してください。これらのデバイス を利用すれば、ディスクを一旦システムから切り離して、不良ブロックの チェックなどのメンテナンス作業を行うことができます。 --- [管理番号 1859] (最終更新 2001/04/18 02:12:12) Q. FreeBSDのインストールが終った HDD を まるごとコピーしたいの ですが、具体的な手順を教えてください。 A. コピー先の HDD を接続して、オリジナルの HDD から起動します。 root でログインして /stand/sysinstall を実行します。 Configure -> Fdisk の画面からコピー先の HDD のスライスを作成 します。ブートマネージャもインストールしておきます。 Configure -> Label の画面から、オリジナルの HDD と同じように パーティションを作成します。newfs もここで行っておくとよいです。 例: Part Mount Size Newfs ---- ----- ---- ----- da1s1a /mnt 100MB UFS Y da1s1b swap 1024MB SWAP da1s1e /mnt/var 1024MB UFS Y da1s1f /mnt/usr 2048MB UFS Y da1s1g /mnt/home 4550MB UFS Y /mnt 以下に新たに作成したパーティションをマウントします。 # mount /dev/da1s1a /mnt # mount /dev/da1s1e /mnt/var # mount /dev/da1s1f /mnt/usr # mount /dev/da1s1g /mnt/home それぞれのパーティションをコピーします。 # dump 0af - / | ( cd /mnt && restore rf -) # dump 0af - /var | ( cd /mnt/var && restore rf -) # dump 0af - /usr | ( cd /mnt/usr && restore rf -) # dump 0af - /home | ( cd /mnt/home && restore rf -) restoresymtable を削除します。 # rm /mnt/restoresymtable # rm /mnt/var/restoresymtable # rm /mnt/usr/restoresymtable # rm /mnt/home/restoresymtable コピー先の HDD から起動した際にブートデバイス名が変わるのであれば /mnt/etc/fstab も書きかえておきます。この場合、デバイスファイルも /mnt/dev 上で忘れずに作成しておきます。 オリジナルの HDD を切り離して、コピー先の HDD から起動することを 確認します。