GPT を用いてディスクのパーティションを設定 ― 2009年02月19日 00時02分21秒
何も設定していないが、gpt で表示を試みる。
$ gpt show /dev/da0
gpt show: error: bogus map
gpt show: unable to open device '/dev/da0': No such file or directory
$ ls -sld /dev/da0
0 crw-r----- 1 root operator 0, 144 Feb 18 22:05 /dev/da0
$ gpt create /dev/da0
gpt create: error: bogus map
gpt create: unable to open device '/dev/da0': No such file or directory
$ dd if=/dev/zero of=/dev/da0 count=10
10+0 records in
10+0 records out
5120 bytes transferred in 0.307595 secs (16645 bytes/sec)
しかし、gpt で表示しようとしても、パーティションを作ろうとしても成功しない。ls や dd だと問題なく使えている。
さて、問題はパス名の指定の仕方だった。4G のディスクなので、size は 512 バイトのブロックで表される様だ。
$ gpt show da0
start size index contents
0 8007552
/dev を省略しても動くようにしてあるコマンドは多い。しかし、/dev を付けると逆に動かない物は初めて見た。
さて、gpt でデバイスにアクセス出来たので初期化する。
$ gpt create da0
$ gpt show da0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 8007485
8007519 32 Sec GPT table
8007551 1 Sec GPT header
$ ls -lsd /dev/da0*
0 crw-r----- 1 root operator 0, 144 Feb 18 22:29 /dev/da0
取り敢えず、何か出来た。しかし、da0 以下には何も作られていない。まだ、パーティションは無い状態だ。
およそ、3.8 G のパーティションを作る。
$ ls -lsd /dev/da0*
0 crw-r----- 1 root operator 0, 144 Feb 18 22:29 /dev/da0
$ gpt add -s 7600000 da0
$ gpt show da0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 7600000 1 GPT part - FreeBSD UFS/UFS2
7600034 407485
8007519 32 Sec GPT table
8007551 1 Sec GPT header
$ ls -lsd /dev/da0*
0 crw-r----- 1 root operator 0, 144 Feb 18 22:31 /dev/da0
0 crw-r----- 1 root operator 0, 150 Feb 18 22:05 /dev/da0p1
これが、da0p1 として作成された。
第二パーティションは、最後まで使いたい。今回は単純に add を実行する。
$ gpt add da0
$ gpt show da0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 7600000 1 GPT part - FreeBSD UFS/UFS2
7600034 407485 2 GPT part - FreeBSD UFS/UFS2
8007519 32 Sec GPT table
8007551 1 Sec GPT header
$ ls -lsd /dev/da0*
0 crw-r----- 1 root operator 0, 144 Feb 18 22:32 /dev/da0
0 crw-r----- 1 root operator 0, 150 Feb 18 22:05 /dev/da0p1
0 crw-r----- 1 root operator 0, 152 Feb 18 22:05 /dev/da0p2
しっかり、最後まで確保され、/dev/ad0p2 が出来た。
これをジャーナルを付けて利用する。
$ gjournal label /dev/da0p1 /dev/da0p2
$ newfs -i 1024 -J /dev/da0p1.journal
/dev/da0p1.journal: 3710.9MB (7599996 sectors) block size 16384, fragment size 2
048
using 32 cylinder groups of 118.88MB, 7608 blks, 60864 inodes.
super-block backups (for fsck -b #) at:
160, 243616, 487072, 730528, 973984, 1217440, 1460896, 1704352, 1947808,
2191264, 2434720, 2678176, 2921632, 3165088, 3408544, 3652000, 3895456,
4138912, 4382368, 4625824, 4869280, 5112736, 5356192, 5599648, 5843104,
6086560, 6330016, 6573472, 6816928, 7060384, 7303840, 7547296
$ ls -lsd /dev/da0*
0 crw-r----- 1 root operator 0, 144 Feb 18 22:32 /dev/da0
0 crw-r----- 1 root operator 0, 150 Feb 18 22:34 /dev/da0p1
0 crw-r----- 1 root operator 0, 148 Feb 18 22:34 /dev/da0p1.journal
0 crw-r----- 1 root operator 0, 152 Feb 18 22:34 /dev/da0p2
実は、数 GB 程度の小さいデバイスには、gjounral は推奨されていない。このディスクは実験用なので、意図的に gjournal やその他の機能を試すのに使っている。
次回。
最近のコメント