VERITAS VolumeManager

2007/8/22更新

対応バージョン: 3.2

VolumeManager(VxVM)が管理するボリューム情報をVxVMに再認識させる。

以下の例ではHA構成のホスト2台と共有ディスク1台の構成とし、SCSIで接続されているものとする。

ホスト1

SCSIコントローラ0
  |
  +-- 内蔵HDD
  |
  +-- 共有ディスクのSCSIコントローラ2に接続

ホスト2

SCSIコントローラ0
  |
  +-- 内蔵HDD
  |
  +-- 共有ディスクのSCSIコントローラ2に接続

共有ディスク

SCSIコントローラ2
  |
  +-- 内蔵HDD
  |
  +-- ホスト1のSCSIコントローラ0に接続
  |
  +-- ホスト2のSCSIコントローラ0に接続

ここでホスト1でコントローラ2上のディスクのボリューム情報(ここではボリュームグループをapdg01とする)が見えない場合を想定する。

vxdiskコマンドにてVxVMが認識しているボリューム情報を参照すると、

# /usr/sbin/vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online
c2t0d0s2     sliced    -            -            online ←
c2t0d1s2     sliced    -            -            online

矢印部分がこのホストのapdg01として認識されている必要があるが認識されていない。

尚、それより下に表示されているc2t0d1s2はホスト2で使用しているものとするのでこのホストからみると「-」と表示されていてよい。

矢印部分をVxVMに認識させるにはvxdgコマンドのimportサブコマンドを実行する。

# /usr/sbin/vxdg -C -t import apdg01
-C : importロック解除
-t : 一時的なimport

(*) importの反対はdeportである(例 : /usr/sbin/vxdg -C deport apdg01)

その後vxdisk listを実行すると、

# /usr/sbin/vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online
c2t0d0s2     sliced    apdg01       apdg         online ←
c2t0d1s2     sliced    -            -            online

→ apdg01が有効になった。

ちなみに、ホスト2でこのvxdisk listを実行してみると以下のようになる。

# /usr/sbin/vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    dbdg01       dbdg         online

→ 今度はapdg01にあたるボリュームが「-」と表示されている。

尚、コントローラ0のディスクは内蔵ディスクなので、当然のことながら両方のホストで使用可能になっている。

2007/8/22更新

対応バージョン: 3.2

vxassistコマンドを使用する。

vxassist -g <ディスクグループ> make <ボリューム名> <サイズ>

例) ディスクグループ「testdg」にボリューム「testvol1」(5GB)を追加する。

# vxassist -g testdg make testvol1 5G

2007/8/22更新

対応バージョン: 3.2

vxlicenseコマンドの-cオプションを使用する。

# /usr/sbin/vxlicense -c
Please enter your key: XXXX XXXX XXXX XXXX XXXX XXX

現在インストールされているライセンス情報を参照するには、同じくvxlicenseコマンドの-pオプションを使用する。

# /usr/sbin/vxlicense -p

vrts:vxlicense: INFO: Feature name: VxVM [95]
vrts:vxlicense: INFO: Number of licenses: 1 (non-floating)
vrts:vxlicense: INFO: Expiration date: No expiration date
vrts:vxlicense: INFO: Release Level: 25
vrts:vxlicense: INFO: Machine Class: 230596224


vrts:vxlicense: INFO: Feature name: RAID [96]
vrts:vxlicense: INFO: Number of licenses: 1 (non-floating)
vrts:vxlicense: INFO: Expiration date: No expiration date
vrts:vxlicense: INFO: Release Level: 25
vrts:vxlicense: INFO: Machine Class: 230596224


vrts:vxlicense: INFO: Feature name: VXFS [80]
vrts:vxlicense: INFO: Number of licenses: 1 (non-floating)
vrts:vxlicense: INFO: Expiration date: No expiration date
vrts:vxlicense: INFO: Release Level: 22
vrts:vxlicense: INFO: Machine Class: 230596224

ライセンス情報は5行を1組としてライセンスの種類毎に表示される。

この例では3つのライセンス(VxVM、RAID、VxFS)が登録されていることがわかる。

また、期限付ライセンスの場合は3行目のExpiration date:に期限切れとなる日時が表示される。

2008/3/1更新

対応バージョン: 3.2

ディスク障害でもVolumeManager(VxVM)から見て正常の場合は、それがOS起動ディスクかどうかに関わらず以下の手順でオンライン復旧が可能である。

障害ディスクをミラーから切り離す
障害ディスクを交換(ホットスワップ)
交換後のディスクをミラーに接続して再同期

以下、それぞれの手順を示す。

障害ディスクをミラーから切り離す

まず現状を確認する。
# vxdisk list
DEVICE   TYPE   DISK        GROUP    STATUS
c0t0d0s2 sliced root_disk   rootdg   online
c0t1d0s2 sliced root_backup rootdg   online

VxVM上では正常に見えるが、ここでは障害ディスクがc0t1d0であるものとする。

対象となるプレックスを確認する。
# vxprint -qth
Disk group: rootdg

dg rootdg         default    default     0        1185508025.1025.mota201a

dm root_disk      c0t0d0s2   sliced      2888     71124291 -
dm root_backup    c0t1d0s2   sliced      2888     71124291 -

v  rootvol        -          ENABLED     ACTIVE   62731746 ROUND  -      root
pl rootvol-01     rootvol    ENABLED     ACTIVE   62731746 CONCAT -      RW
sd root_disk-02   rootvol-01 root_disk   2889     62731746 0      c0t0d0 ENA
pl rootvol-02     rootvol    ENABLED     ACTIVE   62731746 CONCAT -      RW
sd root_backup-01 rootvol-02 root_backup 0        62731746 0      c0t1d0 ENA

v  swapvol        -          ENABLED     ACTIVE    8389656 ROUND  -      swap
pl swapvol-01     swapvol    ENABLED     ACTIVE    8389656 CONCAT -      RW
sd root_disk-01   swapvol-01 root_disk   62734635  8389656 0      c0t0d0 ENA
pl swapvol-02     swapvol    ENABLED     ACTIVE    8389656 CONCAT -      RW
sd root_backup-02 swapvol-02 root_backup 62731746  8389656 0      c0t1d0 ENA
障害ディスクのプレックスをボリュームから切り離して削除する。
# vxplex -g rootdg -o rm dis rootvol-02
# vxplex -g rootdg -o rm dis swapvol-02
障害ディスクをディスクグループより切り離す。
# vxdg -g rootdg rmdisk root_backup
# vxdisk list
障害ディスクをVxVMで使用できない状態にする。
# vxdiskunsetup -C c0t1d0

障害ディスクを交換する(ホットスワップ)

OSをシャットダウンすることなく、オンラインでディスク交換が可能である。

交換後のディスクをミラーに接続して再同期する

新しいディスクをVxVMで認識させる。
# vxdctl enable
VxVMでディスクを使用できる状態にする。
# vxdisksetup -i c0t1d0
ディスクグループへ追加する。
# vxdg -g rootdg adddisk root_backup=c0t1d0s2
# vxdisk list
ミラーの再同期を行う。
# vxmirror root_disk root_backup
確認
# vxprint -qth

2007/8/22更新

対応バージョン: 3.2

準備

PROMモニタでCD-ROMのデバイス名を調べる

ok probe-scsi-all
:
/pci@1f,4000/scsi@3,1
Target 6
Unit 0  Removable Read Only device    PLEXTOR CD-ROM  PX-40TS 1.13
:

→ CD-ROMのデバイス名を確認する。上記の場合は「/pci@1f...」の部分。

CD-ROMで起動する(プライマリディスクにfsckをかけるため)

probe-scsi-allで検出したデバイス名に「disk@6,0:f」を付加してシングルユーザモード(-s)で起動する。

ok boot /pci@1f,4000/scsi@3,1/disk@6,0:f -s

fsck

# fsck /dev/rdsk/c0t0d0s0

シャットダウン

# init 0

ミラーディスクを(物理的に)抜く

リブート

ok boot -sw

OSブート時、あるいはシャットダウン時にSun純正以外のinitスクリプトが起動しないようにスクリプト名を変更(ファイル名の先頭に「_」を付ける)

# cd /etc/rc0.d
# mv xx _xx (スクリプト数分)

# cd /etc/rc2.d
# mv xx _xx (スクリプト数分)

# cd /etc/rc3.d
# mv xx _xx (スクリプト数分)

VxVM関連のデーモンを起動する

# logout (run level 3に移行する)

プライマリディスクのバックアップ

# ufsdump 0f /dev/rmt/0 /dev/rdsk/c0t0d0s0

ミラーディスクの切り離し

現状の確認

# vxprint
Disk group: rootdg

TY NAME           ASSOC      KSTATE   LENGTH   PLOFFS STATE    TUTIL0 PUTIL0
dg rootdg         rootdg     -        -        -      -        -      -

dm root_backup    -          -        -        -      NODEVICE -      -
dm root_disk      c0t0d0s2   -        71124291 -      -        -      -

v  rootvol        root       ENABLED  62928198 -      ACTIVE   -      -
pl rootvol-01     rootvol    ENABLED  62928198 -      ACTIVE   -      -
sd root_disk-02   rootvol-01 ENABLED  62928198 0      -        -      -
pl rootvol-02     rootvol    DISABLED 62928198 -      NODEVICE -      -
sd root_backup-01 rootvol-02 DISABLED 62928198 0      NODEVICE -      -

v  swapvol        swap       ENABLED  8193204  -      ACTIVE   -      -
pl swapvol-01     swapvol    ENABLED  8193204  -      ACTIVE   -      -
sd root_disk-01   swapvol-01 ENABLED  8193204  0      -        -      -
pl swapvol-02     swapvol    DISABLED 8193204  -      NODEVICE -      -
sd root_backup-02 swapvol-02 DISABLED 8193204  0      NODEVICE -      -

→ ミラーディスクのボリューム(rootvol-02、swapvol-02)がNODEVICEになっている。

# vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    -            -            online
-            -         root_backup  rootdg       failed was:c0t1d0s2

→ ミラーディスク(root_backup)がfailed状態になっている。

rootdgディスクグループからミラーディスク(root_backup)を削除する

# vxdg -g rootdg -k rmdisk root_backup

確認

# vxprint
Disk group: rootdg

TY NAME           ASSOC      KSTATE   LENGTH   PLOFFS STATE   TUTIL0 PUTIL0
dg rootdg         rootdg     -        -        -      -       -      -

dm root_backup    -          -        -        -      REMOVED -      -
dm root_disk      c0t0d0s2   -        71124291 -      -       -      -

v  rootvol        root       ENABLED  62928198 -      ACTIVE  -      -
pl rootvol-01     rootvol    ENABLED  62928198 -      ACTIVE  -      -
sd root_disk-02   rootvol-01 ENABLED  62928198 0      -       -      -
pl rootvol-02     rootvol    DISABLED 62928198 -      REMOVED -      -
sd root_backup-01 rootvol-02 DISABLED 62928198 0      REMOVED -      -

v  swapvol        swap       ENABLED  8193204  -      ACTIVE  -      -
pl swapvol-01     swapvol    ENABLED  8193204  -      ACTIVE  -      -
sd root_disk-01   swapvol-01 ENABLED  8193204  0      -       -      -
pl swapvol-02     swapvol    DISABLED 8193204  -      REMOVED -      -
sd root_backup-02 swapvol-02 DISABLED 8193204  0      REMOVED -      -

→ ミラーディスクのボリューム(rootvol-02、swapvol-02)がNODEVICEからREMOVEDに変化している。

# vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    -            -            online
-            -         root_backup  rootdg       removed was:c0t1d0s2

→ ミラーディスク(root_backup)がfailedからremovedに変化している。

ミラーディスクの初期化

ミラーディスクを(物理的に)挿入

ミラーディスクのプライベートリージョンを削除する。こうしておかないと次回VolumeManager起動時にディスクが破損する。

# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
     0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
        /pci@1f,4000/scsi@3/sd@0,0
     1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> 
        /pci@1f,4000/scsi@3/sd@1,0
     2. c2t0d0 <HITACHI-DF500- cyl 5442 alt 2 hd 50 sec 768>
        /pci@1f,4000/scsi@2/sd@0,0
     3. c2t0d1 <HITACHI-DF500- cyl 5442 alt 2 hd 50 sec 768>
        /pci@1f,4000/scsi@2/sd@0,1
Specify disk (enter its number): 1 ← 挿入したディスク
selecting c0t1d0
[disk formatted]

FORMAT MENU:
      disk       - select a disk
      type       - select (define) a disk type
      partition  - select (define) a partition table
      :
      quit
format> p ← パーティションテーブル操作

PARTITION MENU:
      0      - change `0' partition
      :
      7      - change `7' partition
      select - select a predefined table
      modify - modify a predefined partition table
      name   - name the current table
      print  - display the current table
      label  - write partition map and label to the disk
      !<cmd> - execute <cmd>, then return
      quit
partition> p ← パーティションテーブル表示

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       1 - 21782       30.01GB    (21782/0/0) 62928198
  1 unassigned    wm       0                0         (0/0/0)            0
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3          -    wu       0 -     0        1.41MB    (1/0/0)         2889
  4          -    wu       1 - 24619       33.91GB    (24619/0/0) 71124291
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0                0         (0/0/0)            0
  7 unassigned    wm       0                0         (0/0/0)            0

partition> mod ← パーティションテーブル変更
Select partitioning base:
      0. Current partition table (original)
      1. All Free Hog
Choose base (enter number) [0]? 1 ← パーティション情報を削除

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0                0         (0/0/0)            0
  1       swap    wu       0                0         (0/0/0)            0
  2     backup    wu       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6        usr    wm       0                0         (0/0/0)            0
  7 unassigned    wm       0                0         (0/0/0)            0

Do you wish to continue creating a new partition
table based on above table[yes]? ← リターン
Free Hog partition[6]? 7 ← Free Hog(余り)領域のパーティションを指定

Enter size of partition '0' [0b, 0c, 0.00mb, 0.00gb]: ← リターン
Enter size of partition '1' [0b, 0c, 0.00mb, 0.00gb]: ← リターン
Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]: ← リターン
Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]: ← リターン
Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]: ← リターン
Enter size of partition '6' [0b, 0c, 0.00mb, 0.00gb]: ← リターン

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0                0         (0/0/0)            0
  1       swap    wu       0                0         (0/0/0)            0
  2     backup    wu       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6        usr    wm       0                0         (0/0/0)            0
  7 unassigned    wm       0 - 24619       33.92GB    (24620/0/0) 71127180

Okay to make this the current partition table[yes]? ← リターン
Enter table name (remember quotes): c0t1 ← パーティションテーブルの名前(なんでもよい)
Ready to label disk, continue? y ← ラベリング

partition> q
:

format> q

ファイルシステム作成

# newfs /dev/rdsk/c0t1d0s7
newfs: construct a new file system /dev/rdsk/c0t1d0s7: (y/n)? y ← y
/dev/rdsk/c0t1d0s7: sector: 71127180 (cylinder: 24620、track: 27、sector: 107)
      34730.1MB、770 cylinder group (32 c/g, 45.14MB/g, 5632 i/g)
:
32, 92592, 185152, 277712, 370272, 462832, 555392, 647952, 740512, 833072,
:

VxVM関連のプロセスが動作しているか確認

# ps -ef | grep vx
root  15   1 0 19:16:50 ? 0:01 vxconfigd -m boot
root 347   1 0 19:18:47 ? 0:00 /sbin/sh - /usr/lib/vxvm/bin/vxrelocd root
root 353 347 0 19:18:47 ? 0:00 /sbin/sh - /usr/lib/vxvm/bin/vxrelocd root
root 354 353 0 19:18:47 ? 0:00 vxnotify -f -w 15

→ 4プロセス動作していることを確認する。

デバイス検出

# vxdctl enable

確認

# vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    -            -            error
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    -            -            online
-            -         root_backup  rootdg       removed was:c0t1d0s2

→ c0t1d0s2がerror状態になっている。

ミラーディスクの再設定

VxVMで設定するディスクの指定

# /usr/lib/vxvm/bin/vxdisksetup -i c0t1d0

rootdgディスクグループにミラーディスクを追加

# vxdg -g rootdg -k adddisk root_backup=c0t1d0s2

確認

# vxprint
Disk group: rootdg

TY NAME           ASSOC      KSTATE   LENGTH   PLOFFS STATE   TUTIL0 PUTIL0
dg rootdg         rootdg     -        -        -      -       -      -

dm root_backup    c0t1d0s2   -        71124291 -      -       -      -
dm root_disk      c0t0d0s2   -        71124291 -      -       -      -

v  rootvol        root       ENABLED  62928198 -      ACTIVE  -      -
pl rootvol-01     rootvol    ENABLED  62928198 -      ACTIVE  -      -
sd root_disk-02   rootvol-01 ENABLED  62928198 0      -       -      -
pl rootvol-02     rootvol    DISABLED 62928198 -      RECOVER -      -
sd root_backup-01 rootvol-02 ENABLED  62928198 0      -       -      -

v  swapvol        swap       ENABLED  8193204  -      ACTIVE  -      -
pl swapvol-01     swapvol    ENABLED  8193204  -      ACTIVE  -      -
sd root_disk-01   swapvol-01 ENABLED  8193204  0      -       -      -
pl swapvol-02     swapvol    DISABLED 8193204  -      RECOVER -      -
sd root_backup-02 swapvol-02 ENABLED  8193204  0      -       -      -

→ ミラーディスクのボリューム(rootvol-02、swapvol-02)がREMOVEDからRECOVERに変化している。

VxVM関連の今までの処理を確定

# vxdctl enable

確認

# vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    -            -            online

→ c0t1d0s2がerrorからonlineに変化している。

ミラーディスクの同期

rootvol、swapvol共に同期指示

# vxrecover -v
job 001242 dg rootdg volume rootvol: reattach plex rootvol-02
job 001239 done status=0
job 002216 dg rootdg volume swapvol: reattach plex swapvol-02
job 002216 done status=0

上記処理は時間がかかるので以下のコマンドで途中経過を確認できる。

# vxtask list
TASKID  PTID TYPE/STATE    PCT   PROGRESS
   160           PARENT/R  0.00% 2/0(1) VXRECOVER
   161   161     ATCOPY/R 02.80% 0/62928198/1762784 PLXATT rootvol 0.0

同期が終了するとvxtaskで何も表示されなくなる。

# vxtask list
TASKID  PTID TYPE/STATE    PCT   PROGRESS

リブート

# init 0
:
ok boot

確認

# vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    -            -            online

→ 全てのデバイスがonlineになっていることを確認

後処理

OSブート時、あるいはシャットダウン時に起動しない設定にしていたinitスクリプトを元に戻す。

# cd /etc/rc0.d
# mv _xx xx (スクリプト数分)

# cd /etc/rc2.d
# mv _xx xx (スクリプト数分)

# cd /etc/rc3.d
# mv _xx xx (スクリプト数分)

リブート

# init 0
:

ok boot

確認

# vxdisk list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online
c2t0d0s2     sliced    -            -            online
c2t0d1s2     sliced    -            -            online

→ 全てのデバイスがonlineになっていることを確認

2007/10/15更新

対応バージョン: 3.2

DiskSuite等ではrootボリュームとしてスライス0を使用するが、VolumeManagerはこれら既存のスライスから独立してディスク全体(cXtXdXs2)を自身の管理下に置いてRAIDボリューム(DiskSuiteでのメタデバイス)を構成する。これはどのRAIDレベルも同じ扱いである。

例)

# vxdisk -g rootdg list
DEVICE       TYPE      DISK         GROUP        STATUS
c0t0d0s2     sliced    root_disk    rootdg       online
c0t1d0s2     sliced    root_backup  rootdg       online

2007/8/22更新

対応バージョン: 3.2

vxdg、vxstatを使用する。

例)

# vxdg list
NAME      STATE           ID
rootdg    enabled  1018423197.1043.motd201a
apdg      enabled  1018574452.1114.mota201a

# vxdg list rootdg
Group:   rootdg
dgid:    1018423197.1043.motd201a
import-id: 0.1
flags:    
version:   80
detach-policy: global
copies:  nconfig=default nlog=default
config:  seqno=0.1455 permlen=2112 free=2104 templen=6 loglen=320
config disk c0t0d0s2 copy 1 len=2112 state=clean online
config disk c0t1d0s2 copy 1 len=2112 state=clean online
log disk c0t0d0s2 copy 1 len=320
log disk c0t1d0s2 copy 1 len=320
# vxstat -g rootdg
                  OPERATIONS           BLOCKS       AVG TIME(ms)
TYP NAME        READ     WRITE      READ     WRITE  READ  WRITE 
vol rootvol  1937645   2161920 115967230  35782158   4.0  327.3 
vol swapvol    91233      7961   8628772   2031856   7.8   20.8 

2007/8/22更新

対応バージョン: 3.2

VolumeManagerはDMPドライバを内蔵している。

DMPの実現方法は2通りあるが、

Active/Active : I/Oスループットが2倍
Active/Passive : I/Oスループットはそのまま(片系がスタンバイ)

ディスクコントローラによってDMPのサポートのしかたが異なるので単純にDMPサポートだからといってI/Oスループットが2倍になるわけではないので注意が必要である。

2007/8/22更新

対応バージョン: 3.2

vxdctlコマンドを使用する。

# /usr/sbin/vxdctl enable

2007/8/22更新

対応バージョン: 3.2

以下のようなものがある。

統合管理ツール

/opt/VRTSvmsa/bin/vmsa

VxVMサーバ

/opt/VRTSvmsa/bin/vmsa_server