growfs on md device ― 2006年03月27日 07時16分23秒
そこで、ふと思い出したのが growfs。Google で検索して、最初に出てきた英語のサイトを流して見ると、ずいぶん複雑そう。man growfs を見てみると、
Before starting growfs the disk must be labeled to a bigger size using bsdlabel(8). If you wish to grow a file system beyond the boundary of the slice it resides in, you must re-size the slice using fdisk(8) before running growfs.とある。
まずは、ファイルの拡張から始める。もちろん、普通はバックアップをしっかり取ること、しかし、今回は全て消えても少ししか悲しくないので、やらない。
# dd if=/dev/zero of=/usr/obj.md seek=1499 bs=1M count=1
# ls -ls /usr/obj.md
1504272 -rw-r--r-- 1 root wheel 1572864000 Mar 25 22:43 /usr/obj.md
元は、上記のようにして作ったファイル。以下のようにして拡張する。seek を絶対つけること。seek を使うことで、既存の場所を飛ばし、EOF を更にその後につけることで、ファイルを大きくする。seek をつけ忘れると、全てのものが消えるので要注意。
# dd if=/dev/zero of=/usr/obj.md seek=2499 bs=1M count=1
# ls -ls /usr/obj.md
1505328 -rw-r--r-- 1 root wheel 2621440000 Mar 25 22:45 /usr/obj.md
mdconfig を使い /dev/md3 に。fdisk をやってみると、アラ不思議。勝手にデバイスサイズが拡張されています。mdconfig が自動的に調整したみたいです。
# fdisk /dev/md3
fdisk: invalid fdisk partition table found
******* Working on device /dev/md3 *******
parameters extracted from in-core disklabel are:
cylinders=318 heads=255 sectors/track=63 (16065 blks/cyl)
parameters to be used for BIOS calculations are:
cylinders=318 heads=255 sectors/track=63 (16065 blks/cyl)
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
start 63, size 5108607 (2494 Meg), flag 80 (active)
beg: cyl 0/ head 1/ sector 1;
end: cyl 317/ head 254/ sector 63
The data for partition 2 is:
The data for partition 3 is:
The data for partition 4 is:
# bsdlabel /dev/md3
bsdlabel: /dev/md3: no valid label found
bsdlabel は特に作らずに /dev/md? を使っていたので、bsdlabel /dev/md3 で、何も見つからないのは予想済。さて、man growfs によると、growfs を使う前に bsdlabel でパーティションを大きくしなければいけないとのこと。bsdlabel が無いので出来ません。
普段は、newfs -U /dev/md3 等とやり、サイズを自動的に取得し、問題なくできていたのです。今回も /dev/md3 は拡張後のサイズになっています。man growfs には、特に違反していない。また、man growfs では -s の所に
This value defaults to the size of the raw partition specified in special (in other words, growfs will enlarge the file system to the size of the entire partition).とある。恐らく特にオプションも無しで、期待通りの事が出来そう。そこで、
# growfs /dev/md3
We strongly recommend you to make a backup before growing the Filesystem
Did you backup your data (Yes/No) ? Yes
new file systemsize is: 1280000 frags
Warning: 227424 sector(s) cannot be allocated.
growfs: 2389.0MB (4892576 sectors) block size 16384, fragment size 2048
using 13 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
with soft updates
super-block backups (for fsck -b #) at:
3387328, 3763680, 4140032, 4516384
# mount /dev/md3 /usr/obj
# df /usr/obj
/dev/md3 2369246 1067236 1112472 49% /usr/obj
問題なく完了。あまりにも呆気無く完了。バックアップを取りましたかの質問に正直に答えて、退場を一度くらいましたが、二度目は嘘をつきました。
まとめると、dd でファイルを拡張し、growfs。とっても簡単でした。
最近のコメント