lsblkのカラムの意味
NAME
デバイス名を示します。
例: sda, sda1(sdaはディスク全体、sda1はそのパーティション)。
MAJ:MIN
メジャー番号とマイナー番号を表示します。
Linuxのデバイスファイル(/dev/sda など)を識別するための番号。
RM
リムーバブル(取り外し可能)かどうかを示します。
値が1ならリムーバブルデバイス(例: USBメモリ)、0なら固定デバイス。
SIZE
デバイスやパーティションのサイズを表示します。
単位: バイト、KB、MB、GBなど。
RO
読み取り専用(Read-Only)デバイスかどうかを示します。
値が1なら読み取り専用、0なら書き込み可能。
TYPE
デバイスの種類を示します。
disk: 物理ディスク全体
part: パーティション
lvm: LVMの論理ボリューム
rom: CD/DVD-ROMなどのリムーバブル光学デバイス。
MOUNTPOINT
デバイスがマウントされている場合、そのマウントポイントを表示します。
例: /, /mnt/data など。未マウントの場合は空欄。
lsblk -o NAME,PHY-SeC,LOG-SeC
PHY-SeC
物理セクターサイズ(通常は512バイトまたは4096バイト)です。
LOG-SeC
論理セクターサイズです。
セクタとは
(初学です)
HDDでは、1byte書き換えたいだけでも、セクタ(512Byteや4KB)を全てreadして、そのデータの中で1byteだけ変えたいデータを書き換えて、セクタごとWriteする必要がある。これをRead-Modify-Writeというらしい。
SSDでは、セクタは実在しないが、HDDのRead-Modify-Writeのアプリケーションがそのまま動くようにするために、仮想的に定められているらしい。実際は、ページ(4-8KB)単位で読み書き、ブロック(数百KB~数MB)単位で消去(全て1にする)する(らしい)。つまり、1byte更新したければ、1ブロックを読み込んで、そのブロックを削除し、1byte更新してまた書き込む。なお、このブロックと、ext4などのファイルシステムで指定する論理ブロックは別物。
ファイルシステムのブロックサイズの例
stat -f /
File: "/"
ID: 816f0a35800c03cf Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 103063044 Free: 84176913 Available: 79711204
Inodes: Total: 26214400 Free: 25546674
Blockサイズは4KBだった。
物理セクターと論理セクター
物理セクター
ストレージデバイスのハードウェアがOSに対して提示する最小のデータ単位
論理セクター
OSがアプリケーションに対して提示する最小のデータ単位
手元のUbuntuマシンでセクターサイズを確認したら、論理セクターも物理セクターも全て512であった。
これを見て思ったのは、HDDフレンドリーなのは、512バイトごとの書き込みや読み込みだが、例えば書き込みにおいてSSDでが1ブロックで削除して何度もページ単位で書き込みを行う必要があるということなので、HDDフレンドリーにすることの代償は大きいのかなということ。
statコマンド
指定ファイルパスの属するファイルシステムの情報を教えてくれる。
ただ、lsblk -fでは、ext4やFAT32と出るところが、statコマンドだとext2/ext3と出たり、msdosと出たりする。