Powered by SmartDoc

ディスク管理

Linuxでのディスク装置の扱いはWindowsのそれとは大きくことなり、ドライブという概念はなく、複数のディスク装置があっても一つのファイルシステムとして扱う。今回はUSBメモリを使ってパーティションの操作、フォーマットの方法について学びます。

オートマウント

LinuxはCD、DVD、USBメモリなどのディスク装置を接続すると自動的にマウントされる。この機能をオートマウント機能といい、autofsというサービスで実現している。このサービスが止まっているときは手動でマウントしなければならない。

autofsは/etc/auto.masterやLinuxのカーネルに組み込まれているファイルシステムを自動的にマウントするサービスである。

デバイスファイル

LinuxではHDD、CDなどの装置は/dev以下にある特別なファイル(デバイスファイル)を通してファイルと同じようなに操作できる仕組みになっている。

デバイスファイルにはバッファを使ってアクセスするブロックデバイスとバッファを使わないキャラクタデバイスの二種類がある。前者はHDDなどのディスク装置、後者はキーボードやマウスなどの装置が割り当てられる。ディレクトリ/devをlsコマンドで詳細表示したとき、それぞれの装置はbおよびcと表示される。

デバイスファイル
lrwxrwxrwx 1 root   root          13 12月  8 14:27 MAKEDEV -> /sbin/MAKEDEV
drwx------ 2 root   root          80 12月  8  2008 VolGroup00
lrwxrwxrwx 1 root   root           4 12月  8 14:27 X0R -> null
....
lrwxrwxrwx 1 root   root           3 12月  8 14:27 cdrom -> hda
crw------- 1 sakabe root     5,    1 12月  8 14:28 console
....
brw------- 1 sakabe disk     3,    0 12月  8 14:27 hda
....
crw-rw-rw- 1 root   root     1,    3 12月  8 14:27 null
....
brw-r----- 1 root   disk     8,    0 12月  8  2008 sda
brw-r----- 1 root   disk     8,    1 12月  8 14:28 sda1
....
crw-rw---- 1 root   root     4,    0 12月  8  2008 tty0
crw------- 1 root   root     4,    1 12月  8 14:28 tty1
crw-rw---- 1 root   tty      4,   10 12月  8  2008 tty10
....
crw-rw---- 1 root   uucp     4,   64 12月  8 14:28 ttyS0
....
cr--r--r-- 1 root   root     1,    9 12月  8 14:28 urandom
....
crw-rw-rw- 1 root   root     1,    5 12月  8 14:27 zero

HDDのうち、IDEはhda、hdbなどと、SCSIディスク、SBメモリ、SATAなどはsda、sdbといったデバイスファイル名が割り当てられる。aが一台目、bが二台目のディスクを意味する。

ディスクのパーティションはデバイスファイル名の番号を付けて表す。例えば、一台目のIDE HDDの最初のパーティションはhda1と表記する。

カーネルメッセージ

USBメモリなど識別可能なデバイスを接続したとき、Linuxのカーネルは/var/log/messagesに次のようなメッセージを書き込むのでこのメッセージを読めば、Linuxがその装置にどのデバイスファイルを使い、どこにオートマウントしたかが分かる。

デバイス接続時のカーネルメッセージ
Dec 10 17:13:41 beta kernel: usb 1-1: new high speed USB device using \
    ehci_hcd and address 4
Dec 10 17:13:42 beta kernel: usb 1-1: configuration #1 chosen from 1 choice
Dec 10 17:13:42 beta kernel: scsi3 : SCSI emulation for USB Mass Storage \
    devices
Dec 10 17:13:48 beta kernel: Vendor: GH Model: PicoR Rev: 1.01
Dec 10 17:13:48 beta kernel: Type: Direct-Access ANSI SCSI revision: 02
Dec 10 17:13:48 beta kernel: SCSI device sdb: 1015232 512-byte hdwr sectors \
    (520 MB)
Dec 10 17:13:48 beta kernel: sdb: Write Protect is off
Dec 10 17:13:48 beta kernel: sdb: assuming drive cache: write through
Dec 10 17:13:48 beta kernel: SCSI device sdb: 1015232 512-byte hdwr sectors \
    (520 MB)
Dec 10 17:13:48 beta kernel: sdb: Write Protect is off
Dec 10 17:13:48 beta kernel: sdb: assuming drive cache: write through
Dec 10 17:13:48 beta kernel:  sdb: sdb1
Dec 10 17:13:48 beta kernel: sd 3:0:0:0: Attached scsi removable disk sdb
Dec 10 17:13:48 beta kernel: sd 3:0:0:0: Attached scsi generic sg1 type 0
Dec 10 17:13:50 beta hald: mounted /dev/sdb1 on behalf of uid 500

マウント・アンマウント

ディスク装置をLinuxのフィイルシステムに組み込むことをマウント、マウントされているデバイスを取り外すことをアンマウントという。コマンドはそれぞれmount、umountを使う。

パーティション

ディスク全体、あるいは分割した個々の領域のことをパーティションといい、fdiskコマンドで操作できる。パーティションには基本パーティションと拡張パーティションの二種類があり、一つのディスクに作成できるパーティションは基本パーティションは4つまで、拡張パーティションは1つまで作成できる。これは古いIBM-PCの制限が残っているからである。4つ以上のパーティションを作るときは拡張パーティションに論理パーティションを作る。

Linuxでは様々なパーティションタイプを指定できる。Linuxでは通常のファイルシステムにはext3を、仮想メモリにはswapを使う。

パーティション操作にはfdiskコマンドを使う。

fdiskコマンド
# fdisk -l /dev/sdb <- /dev/sdbのパーティションを表示する
# fdisk /dev/sdb <- /dev/sdbのパーティションを操作する

fdiskのサブコマンドは次の通り。fdiskコマンドで操作したパーティションはwコマンドを実行するまでディスクには書き込まれない。

fdiskの主なサブコマンド
コマンド 意味
p パーティション表示
n 新規パーティション作成
t パーティションタイプの指定
d パーティション削除
v パーティション情報の検証
w パーティション書き込み

/dev/sdbのディスクのパーティション操作例を示す。

fdisk操作例
コマンド (m でヘルプ): p

Disk /dev/sdb: 125 MB, 125337600 bytes
255 heads, 63 sectors/track, 15 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          15      120456   83  Linux

コマンド (m でヘルプ): d <- パーティション削除
Selected partition 1

コマンド (m でヘルプ): n <- パーティション作成
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p <- 基本領域指定
領域番号 (1-4): 1 <- 領域番号1
最初 シリンダ (1-15, default 1): 
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-15, default 15): 
Using default value 15

コマンド (m でヘルプ): t <- パーティションタイプ指定
Selected partition 1
16進数コード (L コマンドでコードリスト表示): b
領域のシステムタイプを 1 から b (W95 FAT32) に変更しました

コマンド (m でヘルプ): v <- パーティション情報の検証
3887 unallocated sectors

コマンド (m でヘルプ): w <- パーティション情報の書き込み
領域テーブルは交換されました!

ファイルシステムの作成

パーティションを作成したディスクはフォーマットしないと使えない。Linuxでディスクをフォーマットするコマンドはmkfsである。

ファイルシステムのチェック・修復

ファイルシステムに矛盾がないかをチェック・修復する時はfsckコマンドを使う。このコマンドはファイルシステムをアンマウントしているときに使う。

演習

USBメモリを使い、Linuxにディスクを増設したときのプラグアンドプレイ動作を確認、そのディスクのパーティションを操作する。

  1. USBメモリ接続時のカーネルメッセージを確認する
  2. USBメモリのデバイス名、マウント先ディレクトリを確認する
  3. USBメモリのアンマウント・マウントの方法を確認する
  4. USBメモリのパーティション情報を確認する
  5. USBメモリのファイルシステムをチェックする
  6. USBメモリのパーティションを操作する(削除、新規作成、フォーマット)