1 磁気ディスクの構造
1.1 デバイスファイル
Linuxの哲学:全てがファイル
ハードウェアデバイスも、Linuxシステムではファイルの形式で表示されます。
デバイスファイル:デバイスドライバに関連付けられ、対応するハードウェアデバイスと通信できます。
通常のファイル
[root@rocky86 ~]# ll t*
-rw-r--r-- 1 root root 20 Jul 11 21:17 test
-rw-r--r-- 1 root root 178 Jul 15 09:50 test2.sh
デバイスファイル
[root@rocky86 ~]# ll /dev/sda
brw-rw---- 1 root disk 8, 0 Jul 29 08:51 /dev/sda
[root@rocky86 ~]# ll /dev/tty0
crw--w---- 1 root tty 4, 0 Jul 29 08:51 /dev/tty0
デバイス番号
デバイス番号 | 英語 | 役割 |
---|---|---|
主デバイス番号 | major number | デバイスタイプを識別する |
副デバイス番号 | minor number | 同一タイプ内の異なるデバイスを識別する |
デバイスファイルタイプ
デバイスタイプ | 英語 | ファイルタイプ識別文字 | アクセス単位 | 典型的なデバイス |
---|---|---|---|---|
ブロックデバイス | block | b | ブロック | ディスク |
キャラクタデバイス | char | c | キャラクタ | キーボード |
磁気ディスクデバイスのデバイスファイル命名
デバイスタイプ | デバイスファイル名 | 備考 |
---|---|---|
SAS, SATA, SCSI, IDE, USB | /dev/sda; /dev/sdb; /dev/sdc; ...... | |
NVMeプロトコルのディスク | /dev/nvme0n1; /dev/nvme0n2; /dev/nvme0n3; ...... | |
仮想ディスク | /dev/vda; /dev/vdb; /dev/xvda; /dev/xvdb; ...... |
ハードディスクの追加(再起動せずに認識)
[root@rocky86 ~]# echo '- - -' > /sys/class/scsi_host/host0/scan
[root@rocky86 ~]# echo '- - -' > /sys/class/scsi_host/host1/scan
[root@rocky86 ~]# echo '- - -' > /sys/class/scsi_host/host2/scan
1.2 ハードディスクの種類
ハードディスクインターフェースの種類
- IDE:133MB/s、並列インターフェース、初期の家庭用パソコン
- SCSI:640MB/s、並列インターフェース、初期のサーバー
- SATA:6Gbps、SATAデータポートと電源ポートが分かれている、つまり2本のケーブルが必要(1本はデータケーブル、もう1本は電源ケーブル)
- SAS:6Gbps、SASは1本のケーブルでデータポートと電源ポートが一体化されている。SASには電源線が含まれていますが、SATAには含まれていません。SATA標準はSAS標準のサブセットであり、互換性があります。SATAハードディスクはSASマザーボードに接続できますが、その逆はできません。
- USB:480MB/s
- M.2:
注意:速度は単純なインターフェースタイプによって決まるわけではなく、Nvmeプロトコルをサポートするハードディスクの速度が最も速いです。
サーバーハードディスクのサイズ
- LFF:3.5インチ、一般的に見られるデスクトップハードディスクのサイズ
- SFF:Small Form Factor(小形状因数)、2.5インチ、ノートパソコンの2.5インチハードディスクとは異なる点に注意
LとSはそれぞれ大きい、小さいを意味し、現在のサーバーやディスクエンクロージャーは主にSFF規格のハードディスクを採用しています。これは、単位密度内のディスク容量を増大させ、冷却性を強化し、消費電力を減少させるためです。
1.3 メカニカルハードディスクとソリッドステートドライブ
メカニカルハードディスク(HDD)
- Hard Disk Drive、つまり従来の通常のハードディスク。
- 主な構成要素:ディスク、磁気ヘッド、ディスクスピンドルとコントロールモーター、磁気ヘッドコントローラー、データコンバーター、インターフェース、キャッシュなど。
- すべてのディスクは1本の回転軸に装着され、各ディスクは平行に配置されています。各ディスクの記憶面には1つの磁気ヘッドがあり、磁気ヘッドとディスクの間の距離は髪の毛の直径よりも小さいです。すべての磁気ヘッドは1つの磁気ヘッドコントローラーに接続され、磁気ヘッドコントローラーが各磁気ヘッドの動きを制御します。
- 磁気ヘッドはディスクの半径方向に動き、ディスクは毎分数千回転する高速で回転するため、磁気ヘッドはディスク上の指定位置に位置してデータの読み書きを行います。
- データは磁気ヘッドを通じて電磁流により極性を変えることでディスクに書き込まれ、逆の方法で読み取られます。
- ハードディスクは精密機器であり、内部に入る空気は必ずフィルターを通す必要があります。
ソリッドステートドライブ(SSD)
- Solid State Drive、固体電子記憶チップアレイで作られたハードディスク。
- 構成要素:コントロールユニットと記憶ユニット(FLASHチップ、DRAMチップ)。
- インターフェースの規格と定義、機能、使用方法は通常のハードディスクと全く同じで、外観と寸法も通常のハードディスクと一致しています。
HDDとSSD
- HDDと比較して、SSDは防震耐衝撃性、転送速度、消費電力、重量、騒音において明らかな利点があります。SSDの転送速度はHDDの2倍です。
- SSDと比較して、HDDは価格と容量において絶対的な利点があります。
- ハードディスクには価格があり、データには価格がありません。現時点では、SSDが完全にHDDを置き換えることはできません。
メカニカルハードディスクの構造
1.4 ハードディスクのストレージ用語
ハードディスクのストレージ用語 CHS
用語 | 英語 | 説明 |
---|---|---|
磁頭 | head | 1つのディスク面に対応する1つの磁頭 |
トラック | track | ディスク面上の1周ごとに1つのトラックが存在する |
セクタ | sector | 各トラックを512バイト単位で分割したものがセクタであり、各トラックのセクタ数は異なる |
シリンダ | cylinder | 磁頭は一緒に動くため、6つのディスク面がある場合、6つの磁頭に対応するトラックが一致する。これがシリンダ |
CentOS7以降では、セクタ情報のみが表示される
CentOS 5以前のバージョンのLinuxでは、シリンダの整数倍でパーティションを分割していましたが、CentOS 6以降はセクタ単位でパーティションを分割することができます
例:CHS情報の確認
Rocky8.6ではデフォルトでセクタ情報のみが表示されます
[root@rocky86 ~]# fdisk -l /dev/sda
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3475e2b0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 419430399 417331200 199G 8e Linux LVM
パラメータを追加すると、より詳細な情報が表示されます
[root@rocky86 ~]# fdisk -u=cylinder -l /dev/sda
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Geometry: 255 heads, 2 sectors/track, 26108 cylinders
Units: cylinders of 510 * 512 = 261120 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3475e2b0
Device Boot Start End Cylinders Size Id Type
/dev/sda1 * 5 4117 4113 1G 83 Linux
/dev/sda2 4117 822413 818297 199G 8e Linux LVM
CentOS6ではデフォルトで詳細情報が表示されます
[root@centos6 ~]# fdisk -l /dev/sda
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006fc79
Device Boot Start End Blocks Id System
/dev/sda1 * 1 131 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 131 12879 102400000 83 Linux
/dev/sda3 12879 19253 51200000 83 Linux
/dev/sda4 19253 26109 55065600 5 Extended
/dev/sda5 19254 19515 2097152 82 Linux swap / Solaris
例:SSDとメカニカルハードディスクの識別方法
- 1はメカニカル、0はSSDを示します
[root@rocky86 ~]# lsblk -d -o name,rota
NAME ROTA
sda 1
sr0 1
nvme0n1 0
nvme0n2 0
[root@rocky86 ~]# ls /sys/block/
nvme0n1 nvme0n2 sda sr0
[root@rocky86 ~]# cat /sys/block/*/queue/rotational
0
0
1
1
[root@rocky86 ~]# cat /sys/block/sda/queue/rotational
1
速度測定
[root@ubuntu1804 ~]# dd | hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 1854 MB in 3.00 seconds = 617.80 MB/sec
1.4.1 ZBR(ゾーンビットレコーディング)によるディスクセクタ構造
ディスク上のアドレッシングの2つの方式
- CHS
- CHSは24ビットアドレッシングを採用します。
- 前10ビットがシリンダを、中間の8ビットがヘッドを、後ろの6ビットがセクタを示します。
- 最大アドレッシング空間は8 GBです。
- LBA(論理ブロックアドレッシング)
- LBAは整数で、CHSフォーマットに変換されて具体的なディスクアドレッシングが行われます。
- ATA-1規格で28ビットアドレッシングが定義されており、1セクタ512バイト単位で計算すると、ATA-1で定義される28ビットLBAの上限は128 GiBです。2002年にはATA-6規格で48ビットLBAが採用され、同じく1セクタ512バイト単位で計算すると、容量上限は128ペタバイトに達します。
CHSアドレッシング方式のアドレッシング空間は約8GB以内なので、ディスク容量が約8GB未満の場合、CHSアドレッシング方式またはLBAアドレッシング方式のどちらも使用できますが、ディスク容量が約8GBを超える場合は、LBAアドレッシング方式のみ使用できます。