does not start on physical sector boundaryの解決方法

LinkStation

バッファローのNAS、LinkStation LS-QLシリーズの内蔵HDDが調子悪くなったため、新品のHDDを同じサイズで同じ本数購入し、入れ替えることにしました。

新しいHDDには古いHDDのデータを丸ごとコピー(Disk Copy)済です。

ところが、パソコンで起動したUbuntuのfdiskでハードディスクの状態を見ると、physical sector boundaryが違っています!という意味のエラーメッセージが出ています。

これは警告メッセージなので無視して使って良いらしいのですが、今回はこれを解決することにしました。

本記事では、「physical sector boundaryとは何か?」「physical sector boundaryの問題を解決する方法」の2点を解説します。

physical sector boundaryとは

ハードディスク

エラーメッセージ内容は、以下の通りでした。

Partition x does not start on physical sector boundary

fdiskで見るとエラーがこんな風に出ている。

# fdisk /dev/sdb6

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

Command (m for help): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xefc6301d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63     2008124     1004031   83  Linux
Partition 1 does not start on physical sector boundary.
/dev/sdb2         2008125    12016619     5004247+  83  Linux
Partition 2 does not start on physical sector boundary.
/dev/sdb4        12016620  1953520064   970751722+   5  Extended
Partition 4 does not start on physical sector boundary.
/dev/sdb5        12016683    14024744     1004031   82  Linux swap / Solaris
Partition 5 does not start on physical sector boundary.
/dev/sdb6        14024808  1951544069   968759631   83  Linux

Command (m for help): q

#

メッセージの意味は、パーティションの開始位置が違いますよ・・という事と、物理セクターと論理セクターのサイズが異なっていますよ・・という事です。

このままでも使えますが、何か関連するコマンドを実行する度に、このメッセージが出るため、結構邪魔ですね。
次の章で解決していきます。

physical sector boundaryの解決

分解

/dev/sdb はもうまっさらにして良いハードディスクなので、これを機に、パーティションの開始位置を最適化することにした。

ただし、LinkStationに戻した時に自動的にRAIDに組み込めるように、パーティションのサイズだけは合わせることにした。

パーティションの削除

まず、パーティションを消す作業を開始。

# fdisk /dev/sdb

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

Command (m for help): d
Partition number (1-6): 6

Command (m for help): d
Partition number (1-5): 5

Command (m for help): d
Partition number (1-5): 4

Command (m for help): d
Selected partition 1

Command (m for help): d
Selected partition 2

Command (m for help): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xefc6301d

   Device Boot      Start         End      Blocks   Id  System

Command (m for help):

こんな感じで全てのパーティションが消えた。

パーティションの作成

次は一つ一つパーティションを作成していこう。

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1953525167, default 2048): 
Using default value 2048

開始位置は何故か2048からしか選べなかった。ここは従うしかない。

Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): +2008062

ここで注意するのは「単位」。
sector数とblock数は違うので、何度かやり直してみて、元のblock数×2の値をここで、+を前に付けて指定してやると出来上がったパーティションのサイズが元と同じになる。

Command (m for help): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xefc6301d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2010110     1004031+  83  Linux

見事、この通り。あとは同じように作ります。

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2010111-1953525167, default 2011136): 
Using default value 2011136
Last sector, +sectors or +size{K,M,G} (2011136-1953525167, default 1953525167): +10008494

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e
Partition number (1-4, default 3): 4
First sector (2010111-1953525167, default 12019712): 
Using default value 12019712
Last sector, +sectors or +size{K,M,G} (12019712-1953525167, default 1953525167): 
Using default value 1953525167

Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (12021760-1953525167, default 12021760): 
Using default value 12021760
Last sector, +sectors or +size{K,M,G} (12021760-1953525167, default 1953525167): +2008062

Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 6
First sector (14031871-1953525167, default 14032896): 
Using default value 14032896
Last sector, +sectors or +size{K,M,G} (14032896-1953525167, default 1953525167): +1937519262

Command (m for help): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xefc6301d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2010110     1004031+  83  Linux
/dev/sdb2         2011136    12019630     5004247+  83  Linux
/dev/sdb4        12019712  1953525167   970752728    5  Extended
/dev/sdb5        12021760    14029822     1004031+  83  Linux
/dev/sdb6        14032896  1951552158   968759631+  83  Linux

ここまでで大きさだけは全て元に戻りました。

swapエリアの設定

次に swap エリアの設定を行います。

Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xefc6301d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2010110     1004031+  83  Linux
/dev/sdb2         2011136    12019630     5004247+  83  Linux
/dev/sdb4        12019712  1953525167   970752728    5  Extended
/dev/sdb5        12021760    14029822     1004031+  82  Linux swap / Solaris
/dev/sdb6        14032896  1951552158   968759631+  83  Linux

/dev/sdb5がswapエリアになったので、完成です。

パーティションtableのwrite

パーティションが出来上がったら、書き込みを行ってfdiskを終了します。

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

書き込みを行うとエラーが出ます。reboot後に有効になりますよ、と言っています。

これで、physical sector boundaryのエラーが無くなったので、安心して使うことが出来ますね!

Windows10にアップグレードしたら、LinkStationのHDDが壊れて立ち上がらなくなり、パソコンからLinuxの機能を駆使して完全復旧させた私の体験の一部始終を読みたい方は、以下の記事から進んで下さい。

故障したLinkStationから自力でデータ復旧した方法

コメント

タイトルとURLをコピーしました