バッファローの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の機能を駆使して完全復旧させた私の体験の一部始終を読みたい方は、以下の記事から進んで下さい。
コメント