このブログを検索

2012/07/24

partedコマンドでHDDパーティション作成

gdiskコマンドを調べるついでにpartedコマンドを調べていたら、partedコマンドでも簡単にアラインメントエラーを表示させずパーテョション作成が出来る事がわかった. 
 ※読んでいくのが面倒な場合は、記事中盤あたりに、パーティション開始位置の自動補完方法があるのでそこを参照.
以下は、partedコマンドの使い方とアラインメントエラーを表示させないパーティション作成方法.

実験用HDDパーティションの初期化
# dd if=/dev/zero of=/dev/sdb
partedコマンドからHDDを確認
# parted /dev/sdb
(parted) print
エラー: /dev/sdb: ディスクラベルが認識できません。
ディスクラベルをgptに設定
(parted) mklabel
新しいディスクラベル? gpt
アラインチェック
(parted) align-check
アライメントタイプ(min/opt)  [最適(optimal)]/optimal/最小(minimal)/minimal? opt
パーティション番号? 1
エラー: パーティションがありません。    
パーティションはまだ作成していないので、上記表示は正常だ.
以下は、パーティション開始位置を間違えたまま、パーティションを作成したもの.
(parted) mkpart
パーティションの名前?  []? Data
ファイルシステムの種類?  [ext2]? ntfs
開始? 4096kB
終了? 2000GB 
警告: 操作の結果できるパーティションはアライメントが正しくないためにパフォーマンスがでません。
無視(I)/Ignore/取消(C)/Cancel? I
この状態でアラインチェックを行なうと以下のように表示される.
(parted) align-check
アライメントタイプ(min/opt)  [最適(optimal)]/optimal/最小(minimal)/minimal? opt
パーティション番号? 1  
1 not aligned
うまく区切れていないようだ.align-checkはあくまでチェックなのか.
最適とか最小とか表示されると、自動で最適化をかけてくれるものかと勘違いしちゃうじゃないか.             
partedコマンドで、パーティション開始位置の設定がわからない場合は以下のように入力すると、開始位置を自動的に補完してくれる.
開始? 0%
ついでにHDDを1つのパーティションで使い切りたい場合は、「終了?」項目に以下のように入力するとこちらも最終位置を自動的に補完してくれる.
終了? 100%
結果は以下の通り.
(parted) print
モデル: ATA ST2000DM001-9YN1 (scsi)
ディスク /dev/sdb: 2000GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
番号  開始   終了    サイズ  ファイルシステム  名前          フラグ
 1    1049kB  2000GB  2000GB                    Data
おお、開始位置が1MiBに補完されてる.アラインチェックも問題なさそう.
(parted) align-check
アライメントタイプ(min/opt)  [最適(optimal)]/optimal/最小(minimal)/minimal? opt
パーティション番号? 1
1 aligned
ついでに、ntfsフォーマットしようと思ったけど、以下のようなエラーが表示されたので、partedコマンドでは行なわず、mkfs.ntfsにタクす事にした。
(parted) mkfs
警告: ファイルシステムに対して parted による操作(mkfs)を行おうとしています。
parted のファイルシステム操作コードは、e2fsprogs のようなファイルシステム専用のものほど堅固に作られていません。可能なかぎり parted をパーティションテーブルの操作だけに用いることをお勧めします。ほとんどのファイルシステムに対するほとんどの操作は今後のリリースで削除される予定です。
警告: いま存在しているファイルシステムは破壊され、このパーティションの全データが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? N
partedでパーティショニングをおこなったHDDをgdiskで確認したら以下のようになった。
Command (? for help): p
Disk /dev/sdb: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      3907029134   1.8 TiB     8300  Data
partedでは以下のとおり
(parted) print
モデル: ATA ST2000DM001-9YN1 (scsi)
ディスク /dev/sdb: 2000GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
番号  開始    終了    サイズ  ファイルシステム  名前              フラグ
 1    1049kB  2000GB  2000GB  ntfs              Data
表示される値が違うなと思ったら、kbyteとsectorの違いだった.計算してしみると、結果は同じだ.
gdisk 2048 = 1049kB / 512B
parted 1049kB = 2048 / 512B
ちなみに、上記エラーがFedora14の「ディスクユーティリティ」に表示された時、手動で適当にパーティション開始位置を設定した値から 3072 bytes分ずらしてみたが、partedコマンドでは設定時にアラインメント警告が表示されてしまった.
The partition is misaligned by 3072 bytes.
(parted) mkpart
パーティションの名前?  []?                                              
ファイルシステムの種類?  [ext2]? ntfs                                  
開始? 24.6kB (sector 48 /gdisk)
終了? 100%                                                              
警告: 操作の結果できるパーティションはアライメントが正しくないためにパフォーマンスがでません。
無視(I)/Ignore/取消(C)/Cancel? i
しかし、警告を無視して実行して、ディスクユーティリティで確認したところアラインメント警告は消えていた.うーん、時間のある時にベンチマークとってみよう.

0 件のコメント:

コメントを投稿