ハードディスクの世界観です。
機械に詳しい父親の話を参考にしています。
データの記憶装置。パソコンに内蔵されて用いられることが多い。
昔のテープは、紙や磁気によるテープにデータを記録していたが、大容量の記録媒体になると、「どこにどんなデータがあるか」というのを、番地やアドレスで管理し、データが欲しい時はそのデータのある場所だけを読めば良いような仕組みが考えられた。
この番地を管理する特別な記憶領域を、ファイルアロケーションテーブル(FAT)と言う。フロッピーディスクやハードディスクでは、ファイルアロケーションテーブルからどこにデータがあるかを探し、データのアドレスに基づいてセクタ(個々の記憶領域)を読み出して、データを取得する。
磁気ディスク装置では、電磁気を用いた磁気ヘッドによるディスクの読み書きを行う。磁気ヘッドは電磁気によって磁気を感知する物質が塗られた磁気テープに情報を記録・読み取りする。これは、フロッピーディスクでも、ハードディスクでも変わらず、ハードディスクはより高精度に磁気記録を行うヘッドとディスクが構成されている。
フロッピーディスクとハードディスクの違いは、データを読み書きする速さである。フロッピーディスクの場合、テープにヘッドが着いている、つまり接触しているが、ハードディスクでは、ヘッドはディスクの上を「接触せずに」動いている。少しディスクから浮いた状態で動いているため、とても高速に動かすことができる。また、ハードディスクは高精度で、何千分の一ミリで動く。ディスク容量は、フロッピーディスクと比べても、1GB~2GBと当時からすると大容量だった。だが、衝撃に弱く、壊れやすいという欠点もある。
後日注記:最近機密情報の入ったハードディスクの不正転売問題がニュースになっているが、パソコンのOSがファイルを削除する際に、一般的に完全には削除しない。ファイルアロケーションテーブル内の「目次」を削除するだけで、実際のデータは後で別のデータに書き換えられるまで残っていることが多く、このような場合復元ソフトで目次だけを再構築すれば簡単に復元できてしまう。Linuxではshredコマンドなどで、完全に復元できないように削除することもできるが、物理的に破壊することが一番であり、今回の事件のように「物理的に破壊されるはずの超大容量のハードディスクが大量に売られていた」という話は、IT業界を揺るがす「とても恐ろしい話」である。
以下はハードディスク上のデータの場所を意味する用語集。
用語 | 説明 |
---|---|
セクタ | ハードディスクにおいてそれぞれのデータを記録するための、もっとも小さな単位。 |
トラック | セクタの同心円状の集合。トラックによって一面が形作られる。 |
シリンダ | 中心から見て等距離に位置するトラックの集合。物理的には存在しない仮想的な概念。 |
(「平成18年度 イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)」を参考に執筆しました。)
メモリのデータには永続性がない。すなわち、電気を通さないと中のデータが消えてしまう。
ハードディスクは大容量であることと同時に、長期のデータの記憶や保管に向いている。
CPUはメモリとやり取りが多く高速である必要があるため、バスやI/OコントローラでCPUとメモリは近い位置に配置するが、ハードディスクは低速であり、やり取りも少ないため遠い位置に配置し、読み書きもキャッシュを用いることが多い。
(絵で見てわかるITインフラの仕組み (DB SELECTION)を参考に執筆しました。)
メモリに限らずハードディスクにもライトスルーとライトバックがある。
ライトスルーでは、キャッシュに書き込まれたデータを、同時にハードディスクにも書き込む。コヒーレンシが保たれる(データの一貫性は保持される)が、スループレット(処理速度)は遅くなる。
ライトバックでは、キャッシュに書き込まれたデータを、すぐにはハードディスクには書き込まない。キャッシュに書き込まれた時点で別の処理を行う。後々になって、システムの負荷が少なくなった時などにハードディスクに書き込まれる。このため、コヒーレンシは必ずしも保たれないが、スループレットは速くなる。このため、カーネルの処理などが異常終了した場合、データが失われる可能性がある。
(徹底攻略 応用情報技術者教科書 平成30年度を参考に執筆しました。)
断片化(フラグメンテーション)とは、ストレージのデータの使用領域や空き領域が非連続的になり、データがさまざまな場所に断片的に配置されること。
ストレージの中のデータは、必ずしも連続的に整った場所にあるとは限らない。
たとえば、10GBの空き容量があるとして、その空き領域が完全に連続してあるのではなく、ファイルの移動や削除を繰り返すことで、さまざまな場所にそれぞれ断片化されて空き領域が生まれることがある。
また、データがその領域にきっちりと収まっていたとしても、ファイルのサイズが拡大することで、別の離れた場所にデータが追記されることもある。
このような断片化は、ファイルの読み取り速度を低下させる原因になる。
ストレージの断片化を解消する方法として、「デフラグ」がある。デフラグを行うことで、ストレージのデータ領域が整理され、読み取り速度などを最適化することができる。
磁気ディスクのハードディスクは大容量だが、ヘッドの回転が必要という意味で、必ずしも高速ではない。
これに対して、SSDでは回転の必要が無いため、ハードディスクよりさらに高速であり、磁気ディスクのハードディスクはそのうちSSDに取って代われると言われている。
僕は、USBハードディスクに大事なデータをバックアップしていますが、ここでのファイルシステムフォーマットはexFATを使っています。
理由は、WindowsでもLinuxでも読み取れるようにするためです。
確かに、NTFSでフォーマットしたほうが、耐障害性などは優れているかもしれませんが、NTFSでフォーマットすると、Windowsからは読み取れても、Linuxから読み取れなくなってしまいます。
逆にext4でフォーマットすると、今度はLinuxからは読み取れても、Windowsから読み取れなくなってしまいます。
WindowsとLinuxの相互運用性を考えた上で、exFATでフォーマットするのがベターだと僕は思います。
後日注記:LinuxのfstabでexFATのファイルシステムをマウントする方法は以下のページが参考になります。
UNIXシステム管理(ファイルシステム)やLinuxカーネル(ファイルシステム)も参照のこと。
昔、僕はWindowsの入ったハードディスクとLinuxの入ったハードディスクを両方使いながら切り替えるために、複数のハードディスクを切り替える装置を使っていました。
それによって、同じCPUやメモリを使いながら、Windowsのハードディスクから起動したり、Linuxのハードディスクから起動したり、ということができるようにしていました。
僕は当時中高生だったため、この仕組みは父親にやってもらったので、詳しい装置の名前などは知りませんが、デュアルブートと同じことができて、とても便利です。
それから、同じマウスやキーボードやモニターを使って、画面だけを切り替えるようなスイッチング機器も使っていました。WindowsとLinuxを同時に起動した上で、主にWindowsを使いながら、たまにLinuxに切り替えて、同じ画面と入力デバイスで複数のコンピュータを使うことができます。とても便利なので、皆さんにもおすすめします。
ただし、最近のWindowsやLinuxでは、このようなハードウェアによるスイッチング機器を使う必要はありません。なぜなら、仮想化ソフトを使えばいいからです。仮想化ソフトを使うことで、WindowsやMacの中でLinuxを動かすことは簡単にできます。ホストOSがLinuxの場合は、Dockerを使うことで、Linuxの上でいくらでも仮想マシンのコンテナを作り出すことができます。
2024.10.28