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 の影響を受けている』とも。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux ubuntuで デイスク/deb/loopというドライブが出るがこれは何? 4 2023/06/04 16:52
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- ドライブ・ストレージ HDDの代替処理保留中のセクタ数と回復不能セクタ数について 7 2023/06/06 13:15
- 日本語 日本人の大半は英語が難しい言語だと感じるそうですが 8 2023/04/14 18:16
- 英語 英語でusuallyの日本語訳は何と覚えればいいですか? 辞書には「たいてい」「ふつう」「いつも」と 7 2022/07/30 03:23
- 数学 どっちと思いますか 4 2022/10/10 11:16
- 日本語 「地道」の読み方 3 2022/09/13 22:27
- 地図・道路 漢字の読み方 2 2022/09/13 22:29
- その他(AV機器・カメラ) cdプレイヤーの読み取り機能 4 2023/08/15 16:48
- 歴史学 【ロシアのプーチン大統領のウクライナ侵攻思想を植え付けた人物は誰か?】 ロシアのプーチン大統領は新型 1 2022/05/22 17:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インスタの裏垢をブロックされ...
-
教えてグーのウザい悪口(・・?
-
LINE相手が勝手にブロックされ...
-
ブロックした人がブロックリス...
-
5ch のエロ広告を見えないよう...
-
マンション10階から飛び降りた...
-
ブロックしたユーザー名の人が...
-
ここで質問に回答を書いたあと...
-
Instagramの同じ端末のブロック...
-
「ブロックしてほしい」と頼む...
-
インスタで裏垢から話しかけた...
-
とある一次創作の女性向け作家...
-
Gmailのブロックについて
-
都合悪くなるとブロック????
-
最近、件名にこんな顔文字「(^O...
-
相手のインスタのアカウントを...
-
braveとか楽天ウェブのような広...
-
SNSでブス過ぎて死にたいって自...
-
もう答えが出てるのに質問して...
-
LINEって、スマホ故障したら 勝...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マンション10階から飛び降りた...
-
インスタの裏垢をブロックされ...
-
LINE相手が勝手にブロックされ...
-
Instagramの同じ端末のブロック...
-
5ch のエロ広告を見えないよう...
-
「ブロックしてほしい」と頼む...
-
ブロックしたユーザー名の人が...
-
LINEって、スマホ故障したら 勝...
-
相手のインスタのアカウントを...
-
インスタブロックしてた子が ブ...
-
ブロックしましたか?
-
自分に原因があり、嫌われ修復...
-
都合悪くなるとブロック????
-
インスタで裏垢から話しかけた...
-
女性の方に質問です! 物凄く嫌...
-
質問者に、ブロックって あり得...
-
FC2動画っていうサイトを開いた...
-
最近、件名にこんな顔文字「(^O...
-
以前の職場の同期だった女の子...
-
Gmailのブロックについて
おすすめ情報