1個前の投稿で,zfs ファイルシステムのアップグレードの話を書いた。 zfs ファイルシステムのアップグレードは,実は今回の M.2 NVMe 接続の SSD を追加の際に必要になったので行ったのだった。 一部重複する内容もあるが,あまり気にしないでおこう。
SSD の追加が必要になった理由は,使用している 2.5 inch の SSD の容量が心もとなくなってきたから,である。 Note PC をサーバーとして使い,そのストレージに 1TB の 2.5 inch SSD を使っているが,写真やらを大量に置いていると徐々に SSD の容量を圧迫してきた。 実質 920GB ほどの領域で,空きが 180GB 程度になっていた。これはちょっと心もとない。ということで,ストレージを増やすことにした。
今使ってる Note PC には空いている NVMe のスロットがあるので,新たに NVMe の SSD を追加することにした。 そうすると 2.5 inch SSD は特に何もしなくていい。特に「zfs」を使ってるので拡張も簡単やし…。 そこで 1TB の M.2 NVMe SSD を買って追加することにしたのだった。
M.2 NVMe 接続の SSD の追加
具体的な(物理的な)M.2 NVMe 接続の SSD の追加についてはここでは書かないでおこう。 写真とか撮ってないし…。 NVMe SSD は思ったよりも小さい印象がある。2.5 inch SSD よりも小さい(細長く薄っぺらい)印象がある。zfs について
zfs に関しては前回の投稿を見てほしいが, 複数のデバイス(複数の HDD や複数の SSD など)をストレージに使う際に,見た目は全体として1個のファイルシステムとして(全体を1個のプール (pool)として)扱えるところが便利である。 言い換えると「プール」という大きな HDD が1個あるような感じであり,その中に物理的なデバイスを追加して,複数の(1個でもいいが)HDD や SSD で1個のプールを構成している。 今回も M.2 NVMe SSD を追加して,それを既存のプールに追加するだけだった。まずは現時点での状況の確認。 プールのリストを調べるために「zpool list」を使うと,
# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 920G 741G 179G - - 50% 80% 1.00x ONLINE -
ここで「zroot」というのがプールの名前。
使用できる容量が 920GB に対して,741GB を使用して,結果として 179GB の空きスペースしかない。
容量の 80% を使っている。さすがにこれはちょっと厳しい。次に zroot プールの状況を「zpool status」コマンドで把握した。
# zpool status zroot
pool: zroot
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
ada0p4 ONLINE 0 0 0
errors: No known data errors
問題はない(というか,ここで zfs のアップグレードが必要だったので前回の投稿を書いたんだけどね)。M.2 NVMe をプールに追加する
どんな物理デバイスが接続されているかを「geom disk list」コマンドで見てみると…,# geom disk list
Geom name: nvd0
Providers:
1. Name: nvd0
Mediasize: 1000204886016 (932G)
Sectorsize: 512
Mode: r0w0e0
descr: CT1000P1SSD8
lunid: ......(よくわからないけど,念のため隠しておいた)
ident: ......(よくわからないけど,念のため隠しておいた)
rotationrate: 0
fwsectors: 0
fwheads: 0
Geom name: ada0
Providers:
1. Name: ada0
Mediasize: 1000204886016 (932G)
Sectorsize: 512
Mode: r2w2e3
descr: Samsung SSD 860 EVO 1TB
lunid: ......(よくわからないけど,念のため隠しておいた)
ident: ......(よくわからないけど,念のため隠しておいた)
rotationrate: 0
fwsectors: 63
fwheads: 16
となった。
ここで「nvd0」が NVMe に接続された1個目の(0番の)デバイスを意味し,「ada0」はシリアル ATA(SATA)に接続されている0番のデバイスを示している。
ちなみに USB 接続すると「da0」のようになる。ちゃんと NVMe SSD も認識されている。各デバイスには適度にパーティションを切らないといけない。 NVMe SSD はまだ何もないので,まずはパーティションを切ろう(作ろう)。 今回 NVMe SSD は1個の大きな zfs パーティションのみとしてみた。
# gpart delete -i 1 nvd0 # gpart delete -i 2 nvd0 # gpart add -t freebsd-zfs nvd0実はこの「nvd0」と認識されているデバイス(SSD)は他で一度使ったものなので,2個のパーティションが存在していた。 そこで,まずその2個のパーティションを「削除」している。 その後,「zfs パーティション」を「追加」した。 「gpart show nvd0」コマンドで結果を見ると,
# gpart show nvd0
=> 34 1953525101 nvd0 GPT (932G)
34 1953525101 1 freebsd-zfs (932G)
となった。ちゃんとパーティションが作られている。ここで,「nvd0」(NVMe 接続の SSD) に boot 領域(freebsd-boot や efi 領域)を追加してはいけない。 最初からつけてある「ada0」(SATA 接続の 2.5 inch SSD)というデバイスに boot 領域(パーティション)があるので,そことけんかするみたいで,起動時にうまく起動しない時があった。 注意が必要。
次に「nvd0」のパーティション 1 にファイルシステムを構築する。特にファイルシステムの種類を指定はしていないが,パーティションを作る時に zfs を指定してるのでこれでいいみたい。
# newfs -U /dev/nvd0p1
/dev/nvd0p1: 953869.7MB (1953525096 sectors) block size 32768, fragment size 4096
using 1526 cylinder groups of 625.22MB, 20007 blks, 80128 inodes.
with soft updates
super-block backups (for fsck_ffs -b #) at:
192, 1280640, 2561088, 3841536, 5121984, 6402432, 7682880, 8963328, 10243776, 11524224, 12804672, 14085120, 15365568, 16646016, 17926464, 19206912, 20487360, 21767808, 23048256, 24328704, 25609152, 26889600, 28170048, 29450496, 30730944,
........
この数字はかなりたくさん出てくる。ここでは省略したけど…。あとはこれを「zroot」という名前のプールに追加するだけである。 まずは以下で(「-n」オプションをつけて)ドライランさせて,エラーが起きないかを確認しておく。 ドライランは,ほぼ同じ動作をするけど,最後の書き込みをしないんだっけ?
# zpool add -n zroot nvd0p1
エラーがなければ実際に「nvd0p1」パーティションを「zroot」プールに追加しよう。
# zpool add zroot nvd0p1
結果は「zpool list」コマンドと「zpool status zroot」コマンドで見ると,
# zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zroot 1.80T 741G 1.08T - - 24% 40% 1.00x ONLINE - # zpool status zroot pool: zroot state: ONLINE config: NAME STATE READ WRITE CKSUM zroot ONLINE 0 0 0 ada0p4 ONLINE 0 0 0 nvd0p1 ONLINE 0 0 0となり,ちゃんと「zroot」プールに「nvd0」のパーティション 1 が追加され,プール全体のサイズも大きくなっている。
結果の確認
最終的なパーティションの構成は「gpart show」コマンドで見ると,# gpart show
=> 34 1953525101 nvd0 GPT (932G)
34 1953525101 1 freebsd-zfs (932G)
=> 40 1953525088 ada0 GPT (932G)
40 409600 1 efi (200M)
409640 1024 2 freebsd-boot (512K)
410664 984 - free - (492K)
411648 20971520 3 freebsd-swap (10G)
21383168 1932140544 4 freebsd-zfs (921G)
1953523712 1416 - free - (708K)
となっている。より具体的なプールの内容については「zfs list」というコマンドを使う。 以下は M.2 NVMe SSD (1TB) を追加した後の結果である。
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 741G 1.02T 88K /zroot
zroot/ROOT 60.5G 1.02T 88K none
zroot/ROOT/default 60.5G 1.02T 15.4G /
zroot/ezjail 604G 1.02T 136K /usr/jails
zroot/ezjail/basejail 2.72G 1.02T 1.93G /usr/jails/basejail
zroot/ezjail/jail 601G 1.02T 601G /usr/jails/jail
zroot/ezjail/newjail 28.5M 1.02T 26.4M /usr/jails/newjail
zroot/tmp 672K 1.02T 672K /tmp
zroot/usr 76.2G 1.02T 88K /usr
zroot/usr/home 55.3G 1.02T 55.3G /usr/home
zroot/usr/ports 19.5G 1.02T 19.5G /usr/ports
zroot/usr/src 1.43G 1.02T 1.43G /usr/src
zroot/var 580M 1.02T 88K /var
zroot/var/audit 88K 1.02T 88K /var/audit
zroot/var/crash 88K 1.02T 88K /var/crash
zroot/var/log 3.65M 1.02T 3.65M /var/log
zroot/var/mail 575M 1.02T 575M /var/mail
zroot/var/tmp 132K 1.02T 132K /var/tmp
ここで「zroot」プールの中に沢山のスライスがあるが,それらはシステムが勝手に作ってるみたい(私は何もしていない)。
これを見ると,web site を入れている jail システムの newjail が 600GB も使っている…。写真とか動画を載せすぎやなぁ…。ちなみに「df」コマンドでは以下のように見える。
# df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 1.0T 15G 1.0T 1% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/da0p2 1.8T 729G 931G 44% /San2TBSSD
zroot/tmp 1.0T 672K 1.0T 0% /tmp
zroot/usr/home 1.1T 55G 1.0T 5% /usr/home
zroot 1.0T 88K 1.0T 0% /zroot
zroot/var/log 1.0T 3.7M 1.0T 0% /var/log
zroot/ezjail 1.0T 136K 1.0T 0% /usr/jails
zroot/usr/src 1.0T 1.4G 1.0T 0% /usr/src
zroot/var/crash 1.0T 88K 1.0T 0% /var/crash
zroot/var/mail 1.0T 576M 1.0T 0% /var/mail
zroot/usr/ports 1.0T 19G 1.0T 2% /usr/ports
zroot/var/audit 1.0T 88K 1.0T 0% /var/audit
zroot/var/tmp 1.0T 132K 1.0T 0% /var/tmp
zroot/ezjail/jippo 1.6T 601G 1.0T 36% /usr/jails/jippo
zroot/ezjail/basejail 1.0T 1.9G 1.0T 0% /usr/jails/basejail
zroot/ezjail/newjail 1.0T 26M 1.0T 0% /usr/jails/newjail
/usr/jails/basejail 1.0T 1.9G 1.0T 0% /usr/jails/jippo/basejail
devfs 1.0K 1.0K 0B 100% /usr/jails/jippo/dev
fdescfs 1.0K 1.0K 0B 100% /usr/jails/jippo/dev/fd
procfs 4.0K 4.0K 0B 100% /usr/jails/jippo/proc
これで無事にサーバーのストレージの容量を増やすことができた。
0 件のコメント:
コメントを投稿