• ベストアンサー

Linuxの「セクタ」と「データブロック」の違い

Linuxの本を読んでいたら、 データを保存する領域として「セクタ」と「データブロック」という 二つの単語が出て来ました。 本を読む限り、微妙に意味合いが違っているようなのですが どのように違うのか明確に分かりませんでした。 どなたか分かる方教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

セクタはハードウェア的な最小単位というのは正しいですが、これもHDDでは標準で512バイトというだけで実際には可変です。 ※物理フォーマット時に設定(変更)する事ができます。 ブロックサイズは入出力時に一度に扱う単位で管理単位とは違います。 例えばe2fsの場合、mke2fsコマンドで調整できる値としてフラグメントサイズとブロックサイズがあって管理の最小単位はフラグメントサイズで入出力の最小単位はブロックサイズとなります。 例えばフラグメントサイズが1024バイトでブロックサイズが4096バイトの場合に4100バイトのファイルと3000バイトのファイルを書き込む時、4100バイトのファイルは4096+4なので4096バイトのブロックと1024バイトのフラグメント1つ、3000バイトのファイルは2048+952なので1024バイトのフラグメント3つとして扱われ、4つまでのフラグメントは1ブロックとして一度の入出力で読み書きされる場合があります。 ※入出力はブロックサイズで行われますが、管理はフラグメントサイズで行われるので速度は4096ブロックの速度で、利用効率は1024バイト/ブロック時の利用効率で使えます。(カーネル内で組立て・分解されるのでその処理に若干の負荷は余分に掛りますが) 前の例では単純にブロックサイズで管理した場合、4100バイトのファイルが2ブロックを消費し、3000バイトのファイルが1ブロックを消費するので合計3ブロックを占めますが、ブロックとフラグメントの2層で管理する事により、1ブロック+1/4ブロックと3/4ブロックで合計2ブロックに占有ブロックを減らせる事になります。効率のみでなく速度も入出力の回数が減らせて向上します。 http://ja.wikipedia.org/wiki/Unix_File_System 上記ページで『ファイルの最後の部分はブロックサイズ未満になるので、それをブロックを分割したサブブロックに格納することで領域を有効活用できるようにする。これをブロックのサブアロケーション、テールマージ、テールパッキングなどとも呼ぶ』と説明されています。また、『Linux の ext2 ファイルシステムは UFS の影響を受けている』とも。

その他の回答 (1)

回答No.1

いろいろと面倒くさいのですが、取り合えず、簡潔にわかりやすく言い換えると、 セクタは、HDDの"物理的な"最小単位。 ブロックは、HDDの"仮想的な"最小単位。です。 たとえば、 一般的なHDDの最小単位セクタは、512kBで、一般的にlinuxでパーティションを切るとブロックは4096kBなのですが、 この時、linuxは、物理的な512kBのセクタを8個くくりで1個とし、仮想敵に4096kBのセクタとして扱います。 この仮想的なセクタの大きさがブロックサイズです。 なぜ、仮想敵にHDDの最小単位を変える必要があるのか? そこには読み取りや書き取りの速度を向上させるための配慮があるからです。 ファイルを書き込む時、ファイルはブロックサイズの大きさに分割され、HDDにブロック単位で書き込まれます。 なので、大きな、たとえば4MBのデータを読むとき、512kBブロックなら約8000個のブロックをHDDから探しだして読まなければなりませんが、 4096kBブロックなら約1000個で済みます。 では、8倍も読み取りが早くなるのかといえば、もちろんそんなことはないのですが(とくにlinuxでデフォのetx系のファイルシステムは)、 読み取り書き取りの向上があるのは事実です。 では、逆にブロックサイズをでかくしまくればいいのかというと、 それではたとえば1kBのファイルを保存したときに、1kBのファイルのためだけに膨大な大きさの容量を食ってしまいます。 現段階では4096くらいがいいかなというのでそのサイズです。 ちなみに、ウェストンデジタルが、1セクタが4096kBサイズのHDDを近頃だしました。 どうせ、ブロックサイズを4096にするんならば、もともと4096kBのセクタHDDでもいいじゃないか、と思うでしょうが、フォーマットが面倒くさいです。 パソコン側が既定の512kBセクタと認識してしまうことと、ファイルシステム構築で最初のセクタをいくらか使うことによって8の倍数からデータを入れられないことがあるということによってズレが生じ、 セクタを無理やり割ってデータを入れなきゃいけなくなるために遅くなります。 このばあい、fdiskやpartedコマンドで開始セクタを8の倍数からになるようにしてやらなければなりません。 でも、こういう問題が現在あるおかげで、4096kBセクタのHDDは安いです。

関連するQ&A

  • 不良セクタがあるのですが・・・ヤバイ?

    外付けHDDを「HD Tune」でスキャンしたら 不良セクタが1ブロック表示されてしまいました。 不良セクタに遭遇したのはPC歴10年で初めてです。 自分なりに色々調べてみたのですが、 通常、読み書きに問題のありそうなブロックが生じたら 念のため、自動的に代替領域にミラーリングされて、 いよいよヤバいと確定したら、 その不良ブロックは使用不可となり、代替領域のブロックと置き換えられる、とのこと・・・。 ・・・ということは、不良セクタがスキャン結果で表示されてしまうのは、 不良なブロックが代替領域におさまりきらずに溢れ出てきた状態なのでしょうか? フォーマット(クイックじゃないです)しても、 「不良セクタをスキャンし回復する」にチェックをつけてスキャンしても、 この不良セクタが消えません。 だとすれば、データ保存用としては、 信頼性に欠けるものになったのでしょうか? ヤバそうなブロックが生じたらデータを代替領域にミラーリングしてくれないのですから・・・。 何か間違いがあればご指摘ください。 こちらのサイトでも不良セクタについての質問がありましたが、 気にしなくても良いという回答が多かったです。 でも・・・気にしなくても大丈夫でしょうか? アドバイスを頂けると助かります。

  • 不良セクタがあるHDDの対処について

    今持っているHDDに不良セクタがあることが分かっています。 不良セクタを無くすことはできませんし、今後広がっていく可能性があるのは分かっているのですが、ただ捨ててしまうのはもったいないので、消えても構わないデータの一時保存領域としてしばらく使おうと思います。 とはいえ、不良セクタの箇所にデータを書き込んでも読めないでしょうから、きちんと不良箇所を避けて保存できるようにしたいです。 WindowsXPのGUI上からスキャンディスクで不良セクタのスキャンと回復までチェックを入れて実行するのと、 コマンドプロンプト上でCHKDSK /Fを実行するのではどちらが有効なのでしょうか? また、処理された内容を後から確認することはできるのでしょうか。

  • 不良セクタがでました。データは大丈夫でしょうか?

    WindowsXPでchkdsk/rのチェックを行うと不良セクタがでました。保存しているデータが壊れていないかとても不安です。もし、破損の疑いがあればバックアップを呼び出す予定です。大丈夫でしょうか??? また、こういった場合は、HDDを修理に出したほうが良いのでしょうか? どのようにされているのかも、あわせて教えていただけると幸いです。もちろん、片方だけでもご存知でしたら、何卒、ご教授、宜しくお願い致します。

  • 代替セクタの情報消去

    下記URLには http://dnes.jp/ss/erase/faq2.htm >Erase@ctionはすべてのハードディスク領域(代替セクタ領域を含む)に書込みをすることでデータを残らず消しています。 と書いてありますが、わざわざ「代替セクタ領域を含む」と書いているということは一般に使われているHDD消去ソフトでは代替セクタの情報は消去されていないということでしょうか? よろしくお願いします。

  • 不良セクタHDD

    不良セクタのあるHDDを使える領域のみ活かして使いたいのです。 ノートの内臓用として使うのですが、HDDチューンや不良セクタの修復ソフトなどはOSをインストールしてしまってから実行したのでは意味がないものなんでしょうか? ローレベルフォーマットをすれば自動的に不良セクタを排除してインストールやその後のアクセスが実行されるわけではないでしょうか? 詳しい方や経験者の方よろしくご指導お願いします。

  • HDDで不良セクタが出た際、データ破損をどう判断?

    こんにちは。 使用しているHDDで不良セクタが8つでてきました。 ペンディングセクタも今のところ同数です。 この不良セクタに存在していたデータは破損しているのかとは思いますが、ある特定のファイルが破損しているかどうかはどうやって確かめればよいのでしょうか? 再生やコピーをしてみて破損しているか否かを確かめることはできるのでしょうか? たとえばデータが破損しているファイルをコピーしようとしたら失敗に終わる、などであればいいのですが。 該当のHDDからデータを新規HDDに移し替えたいのですが、その中身が壊れていることに気づかないまま、新規HDDに破損ファイルが存在する、ということを避けたいです。 ちなみにデータの移動はLinuxでrsyncをつかう予定です。 よろしくおねがいします。

  • セクタの仕組み

    セクタとはデータを保管してる場所でデータ自体ではない。ということで合ってますか? 不良セクタがでてもデータ自体が壊れたりするわけではなくて、データの置いてる場所のセクタが読めなくなるだけですか? なにかファイルをコピーしてると新しいHDDにコピーしたのは壊れてないけど元のデータは一部破損でか読み込みに失敗します。 つまり新しいHDDのほうはセクタが正常だからちゃんとデータが読み込める。 データ自体が壊れてるわけじゃないという考えですがどうですか?

  • 不良セクタと認識された領域からデータを取り出したい

    重要なデータの入ったフォルダの周辺が不良セクタと認識され、アクセス不可となってしまいました。 最近外付けHDDの動きが鈍いなと思っていたところ、USBで繋げた際に 【ファイル システム エラーを自動的に修復する・不良なセクタをスキャンし、回復する】 という項目が表示されたため、両方にチェックを入れてディスクのチェックを行いました。 チェックを終えると、外付けHDD内の音楽データや文書、画像等が400GBほど入っているはずのフォルダが空っぽになっていました。そのフォルダ内の一部が”不良セクタ”と判断、回復され、周辺のファイルにもアクセスできなくなってしまったようです。調べているうちに見つけたページ曰く ”(不良セクタとは)ディスクの物理的な損傷により、データを記録できなくなってしまったセクタのこと。損傷が発見されたセクタはOSによって場所を記録され、検出以降はアクセスされなくなる。不良セクタに元々存在していたデータは失われる。” http://e-words.jp/w/E4B88DE889AFE382BBE382AFE382BF.html とのことで、途方に暮れています……。つい先日まで遅いながらも動いており、他のドライブとファイルのやり取りもしていたので、前日の状態にさえ戻れば致命的な部分以外のファイルは他のハードへ移せると思います。 不良セクタとして検出され、アクセス不可になってしまった領域のデータを取り出すことは可能でしょうか。自力であれこれ調べても厳しそうなのですが、数年分の写真や音楽が入ったフォルダなので何とかしてデータを取り出したいです。よろしくお願いします……。

  • ■ 不良セクター発生時の処理について ■

    不良セクター発生時の処理の手順を勉強しています。 以下の理解で宜しいでしょうか? ・読み込み時、1回くらいの再リトライ時には再磁化処理。 ・再リトライ回数がある閾値を超えた場合は、再磁化処理とそのデータを代替領域にコピーして様子を見て、次回読み込み時に再磁化処理したデータと代替領域にコピーしたデータを比較して問題なければ、代替領域のデータを解放して不良セクターを通常セクターに昇格。問題があれば不良セクターに確定。 ご指摘な箇所等ございましたら、教えてください。 S.M.A.R.Tで記録された不良セクターの値はそのまま残されるのでしょうか? 「HDD Regenerator」で不良セクターが未検出でしたが、S.M.A.R.TのID(05)と(C4)の値は2のまま変化がなく、(C5)の値は0でした。 不良セクターが発生した箇所を検査できるのは「HDD Regenerator」でしょうか? 「Drive Fitness Test」の不良セクターを検出する処理では不良セクターアクセス時に代替領域にリダイレクトされてしまいますか? 「HDD Regenerator」と「Drive Fitness Test」の検出方法の違い、また回復能力の違いはありますか? ご解説いただける方、よろしくお願いいたします。

  • 不良セクタフラグ(?)の消し方

    お世話になります。 家族のPCが不調で調べたところハードティスクに不良セクタが見つかりました。 幸い不良セクタは休止状態の予約領域だったのでデータの損失はありませんでした。 S.M.A.R.T.の結果も即故障ではないのですが良くないので古いこともあり交換することにしました。 HD革命 CopyDrive2を使用し新しいHDDにコピーしてHDDを入れ替えXPが動作しました。 しかし、HD革命 CopyDrive2は不良セクタの印までコピーするのですね。 新しいHDDにエラーがないことは前もって違うPCで確認していますが、同じ場所に不良セクタがあることになっています。 この不良セクタの印を消すにはどうすればよいのでしょうか? chkdsk c: /r でいいのかと思っていましたが、不良セクタのデータ回復を試みるというオプションで、不良セクタが治っていたら不良セクタの印を消して正常と認識させるものではないようです。 どうすれば誤って認識されている不良セクタを解除できるか教えて下さい。