ユーザ用ツール

サイト用ツール


serverapps:zfs:replace

文書の過去の版を表示しています。


Diskの交換

環境

  • Dell PERC6(LSI)につながれているディスクを交換します
  • ZFS raidz1で構成されています
  • GPTでパーティションが切られています
  • zfs rootで作成されています

やったこと

ディスクの確認

zpoolからの見え方

# zpool status
  pool: zroot
 state: ONLINE
config:

        NAME         STATE     READ WRITE CKSUM
        zroot        ONLINE       0     0     0
          raidz1-0   ONLINE       0     0     0
            mfid0p3  ONLINE       0     0     0
            mfid1p3  ONLINE       0     0     0
            mfid2p3  ONLINE       0     0     0
            mfid3p3  ONLINE       0     0     0

errors: No known data errors

GPTパーティション

# gpart show mfid1
=>       40  284950448  mfid1  GPT  (136G)
         40       1024      1  freebsd-boot  (512K)
       1064        984         - free -  (492K)
       2048    4194304      2  freebsd-swap  (2.0G)
    4196352  280752128      3  freebsd-zfs  (134G)
  284948480       2008         - free -  (1.0M)

LSIのコントローラにつながれているため、一般に良く挙げられているコマンドは使えません

glabel status
dmesg | grep -B1 'Serial Number'
camcontrol devlist
geom disk list

mfiutlを使います

# mfiutil show drives
mfi0 Physical Drives:
 0 (  136G) ONLINE <FUJITSU MBE2147RC 2903 serial=D00ABCDEFG00> SAS E1:S0
 1 (  136G) ONLINE <FUJITSU MBE2147RC 2903 serial=D00ABCDEFG01> SAS E1:S1
 2 (  136G) ONLINE <FUJITSU MBE2147RC 2903 serial=D00ABCDEFG02> SAS E1:S2
 3 (  136G) ONLINE <FUJITSU MBE2147RC 2903 serial=D00ABCDEFG03> SAS E1:S3

SMARTでも取得できますが、インストールが必要です

# smartctl -a /dev/mfi0 -d  megaraid,1
<snip>
=== START OF INFORMATION SECTION ===
Vendor:               FUJITSU
Product:              MBE2147RC
Revision:             2903
<snip>
Serial number:        D00ABCDEFG01
<snip>

物理ディスクの確認

mfiutlでLEDを光らせることが可能です

# mfiutil locate 1 on

消すときは

# mfiutil locate 1 off

ディスクの停止

見てきたように、コントローラ配下で管理されていることから、OSでの認識番号とコントローラ上の番号は一致していると思われます。

では、3番を停止します

# zpool offline zroot mfid3p3

交換

HotSwapに対応しているのでそのまま交換しました1)

Onlineにする

見ると、「UNCONFIGURED」になっています

# mfiutil show drives
 3 (  838G) UNCONFIGURED GOOD <SEAGATE STXXXMM0006 9999 serial=S0N345678\000\000??@> SCSI-6 E1:S3

ONLINEにします

mfiutil create raid0 3

GPTパーティション

GPTパーティションが切られていましたので同様にパーティションを作成します

まずは、GPTスキーマでディスクを登録

# gpart create -s gpt mfid#
mfid3 created

最初のステージのブートストラップを保護する MBR をインストールします2)

# gpart bootcode -b /boot/pmbr mfid#

FreeBSD カーネルとモジュールをロードする 2 番目のステージのブートローダパーティションを追加して、ブートコードを書き込む3)

# gpart add -t freebsd-boot -b 40 -s 1024 mfid#
# gpart bootcode -p /boot/gptzfsboot -i 1 mfid#

ブートコードを1度に書くこともできる模様

# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 mfid#

swapとzfs用パーティションを追加

# gpart add -t freebsd-swap -b 2048 -s 4194304 mfid#
# gpart add -t freebsd-zfs -b 4196352 -s 1752691712 mfid#
# gpart show mfid#
=>        40  1756889008  mfid3  GPT  (838G)
          40        1024      1  freebsd-boot  (512K)
        1064         984         - free -  (492K)
        2048     4194304      2  freebsd-swap  (2.0G)
     4196352  1752691712      3  freebsd-zfs  (836G)
  1756888064         984         - free -  (492K)

パーティション削除の例

# gpart delete -i 3 mfid#
# gpart delete -i 2 mfid#
# gpart delete -i 1 mfid#
# gpart destroy mfid#

zpoolコマンドで置き換え

# zpool replace zroot mfid3p3

rebuildが開始されます

# zpool status
  pool: zroot
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Thu Jul 14 00:33:08 2022
        1.47G scanned at 503M/s, 1.13G issued at 387M/s, 1.47G total
        283M resilvered, 76.97% done, 00:00:00 to go
config:

        NAME               STATE     READ WRITE CKSUM
        zroot              DEGRADED     0     0     0
          raidz1-0         DEGRADED     0     0     0
            mfid0p3        ONLINE       0     0     0
            mfid1p3        ONLINE       0     0     0
            mfid2p3        ONLINE       0     0     0
            replacing-3    DEGRADED     0     0     0
              mfid3p3/old  OFFLINE      0     0     0
              mfid3p3      ONLINE       0     0     0  (resilvering)

errors: No known data errors

容量の拡張

以前は、Diskをすべて交換すればpoolも自動的に大きくなったが現在はそうならない4)

zpool listで確認する

# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zroot   532G  1.47G   531G        -     2.74T     0%     0%  1.00x    ONLINE  -
1)
mfiutil fail <dev num> した方が良いかも
2)
GPTを理解しないBIOSなどから保護するらしい
3)
zfs root用でufsの時は違うので注意
4)
13.1で確認
serverapps/zfs/replace.1657701067.txt.gz · 最終更新: 2022/07/13 08:31 by hayashi