「夫を成功」へ導く妻の秘訣 座談会

Linuxの本を読んでいたら、
データを保存する領域として「セクタ」と「データブロック」という
二つの単語が出て来ました。

本を読む限り、微妙に意味合いが違っているようなのですが
どのように違うのか明確に分かりませんでした。

どなたか分かる方教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (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 の影響を受けている』とも。
    • good
    • 0

いろいろと面倒くさいのですが、取り合えず、簡潔にわかりやすく言い換えると、


セクタは、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は安いです。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qキャッシュとバッファの違いは?

はじめまして
キャッシュとバッファの違いがよくわからないので
教えてください。

初歩的な質問だと思いますがこちらの方の方がわかる方が多いと思いますのでよろしくお願いします。

Aベストアンサー

両方、物理的にいえばメモリです
意味合いとしても両方、記憶領域になります。

キャッシュは、使用頻度の高いデーターを蓄えておき、即時実行できるようにするメモリ

バッファは、処理速度や転送速度の差を補うためにデータを一時的に保存しておくメモリ

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qブロック単位とファイル単位の違い

ファイル単位 データをファイルで認識する
ブロック単位 データを分割したもの(ブロック)で認識する

調べたらこんな感じであったのですが、もっと詳しい違いなどないでしょうか?
ファイル単位で認識する場合とブロック単位で認識する場合ではどのような利点や欠点があるのでしょうか?

Aベストアンサー

セクタ単位<ブロック単位<ファイル単位
ファイル単位の欠点:
ファイルのデータを読み込んでからの処理なので遅い。
あとエラーが起こった時の影響が大きい。

問い6の回答参照
http://www.pursue.ne.jp/jouhousyo/sysadDisk/sysadDisk_A.htm

Qディスク上のサイズとサイズはどうして違うんですか?

ファイルのプロパティ「全般」タブに表示されている「サイズ」と「ディスク上のサイズ」は、どっちが本当のサイズなのでしょうか?
どうしてサイズが違うのですか?
メールでファイルを送るときは、どっちのサイズを見ればいいのでしょうか?
これについて詳しく解説しているページがあったら、それもぜひ教えて下さい。
よろしくお願いします。

Aベストアンサー

「サイズ」はファイルの本当の大きさ、
「ディスク上のサイズ」はファイルが記録されているクラスタを合計した大きさです、
OSはファイルを幾つかのクラスタ(OSが管理するハードディスク上のブロック
の最小単位)を使ってHDDなどのメディアに保存します、

基本的に今のWindowsでは4KBのクラスタサイズで管理しているので例え1バイトのファイルでも「ディスク上のサイズ」4KBのサイズになってしまいます、
つまり常に「ディスク上のサイズ」の方が大きくなっているはずです、

メールに添付する場合は「サイズ」を確認するだけでOKです。

Qlsでディレクトリのサイズが4096が多いことについて。

基本的なことなのかもしれませんが質問させてください。ls -lの結果でディレクトリのサイズが4096が多いのはなぜでしょうか?また合計というのは何の合計でしょうか?
ファイル数にしては数が合わないような気がしますし。
[root@localhost /]# ls -l
合計 188
-rw------- 1 root root 7168 8月 14 21:58 aquota.user
drwxr-xr-x 2 root root 4096 8月 25 23:59 bin
drwxr-xr-x 3 root root 4096 9月 3 11:52 boot
drwxr-xr-x 8 root root 5440 9月 3 12:24 dev
drwxr-xr-x 93 root root 12288 9月 3 12:24 etc
drwxr-xr-x 4 root root 4096 8月 23 21:52 home
drwxr-xr-x 2 root root 4096 2月 22 2005 initrd
drwxr-xr-x 11 root root 4096 8月 25 23:59 lib
drwx------ 2 root root 16384 7月 31 01:25 lost+found
drwxr-xr-x 5 root root 4096 9月 3 12:24 media
drwxr-xr-x 2 root root 4096 1月 2 2006 misc
drwxr-xr-x 2 root root 4096 2月 22 2005 mnt
drwxr-xr-x 2 root root 4096 2月 22 2005 opt
dr-xr-xr-x 140 root root 0 8月 15 05:50 proc
drwxr-x--- 21 root root 4096 9月 3 09:10 root
drwxr-xr-x 2 root root 12288 9月 3 11:52 sbin
drwxr-xr-x 1 root root 0 8月 15 05:50 selinux
drwxr-xr-x 2 root root 4096 2月 22 2005 srv
drwxr-xr-x 9 root root 0 8月 15 05:50 sys
drwxr-xr-x 3 root root 4096 7月 30 17:00 tftpboot
drwxrwxrwt 14 root root 12288 9月 3 12:23 tmp
drwxr-xr-x 14 root root 4096 7月 30 16:30 usr
drwxr-xr-x 24 root root 4096 9月 1 00:07 var

基本的なことなのかもしれませんが質問させてください。ls -lの結果でディレクトリのサイズが4096が多いのはなぜでしょうか?また合計というのは何の合計でしょうか?
ファイル数にしては数が合わないような気がしますし。
[root@localhost /]# ls -l
合計 188
-rw------- 1 root root 7168 8月 14 21:58 aquota.user
drwxr-xr-x 2 root root 4096 8月 25 23:59 bin
drwxr-xr-x 3 root root 4096 9月 3 11:52 boot
drwxr-xr-x 8 root root 5440 9月 3 12:24 dev
drwxr-xr-x 93 ro...続きを読む

Aベストアンサー

こっちを忘れてた。

ディレクトリのサイズが4098が多いのはなぜかというとファイルシステムのブロックサイズが

-------8<-------8<-------8<-------8<--------------8<-------
○CentOS 4.3上で実行

# dumpe2fs -h /dev/VolGroup00/LogVol00
dumpe2fs 1.35 (28-Feb-2004)

<途中省略>

Block size: 4096

<以下省略>
-------8<-------8<-------8<-------8<--------------8<-------

というように多分同じだと思いますが4096バイトだからです。

基本的にディレクトリエントリはブロック単位で格納する領域を必要な時に増やして行きますのでこのブロックサイズの整数倍になります。


>また合計というのは何の合計でしょうか?

たしか表示されている項目のブロック数の合計だったはず。

stat(2)
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html

上記のst_blocksの合計だったかな。

こっちを忘れてた。

ディレクトリのサイズが4098が多いのはなぜかというとファイルシステムのブロックサイズが

-------8<-------8<-------8<-------8<--------------8<-------
○CentOS 4.3上で実行

# dumpe2fs -h /dev/VolGroup00/LogVol00
dumpe2fs 1.35 (28-Feb-2004)

<途中省略>

Block size: 4096

<以下省略>
-------8<-------8<-------8<-------8<--------------8<-------

というように多分同じだと思いますが4096バイトだからです。

基本的にディレクトリエン...続きを読む

Qレッドハットのバージョン確認方法

自分のサーバで使用しているREDHATのバージョン確認はどうすればいいのでしょうか?

more /etc/issue
とやっても英文しか出てきませんでした。

uname -all
でもカーネルのバージョンは出るのですが、REDHATのバージョンは出ませんでした。

Aベストアンサー

> more /etc/issue
> とやっても英文しか出てきませんでした。

その英文にはRedHatのバージョンは書いてなかったのですか?
書いていなかったとしたら、管理者により編集されている可能性
がありますね。

cat /etc/redhat-release

ではいかがでしょう?
やっぱり英文ですけど。

rpm -q redhat-release

でもいいかも

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)


人気Q&Aランキング