Solaris関連のメモ帳
サーバ環境
旧1(〜2011/06/19)
- CPU AMD Athlon II X4 605e
- Motherborard Foxconn A7DA-S 3.0
- Memory DDR3 1333 4GB x4
- SAS Card LSI SAS 9211-8i
- NIC Card Intel 1000CT x2
- Infiniband Card IBM 44R8728 ConnectX Dual-Port 4X DDR IB PCIe 2.0 HCA x1
- HDD Hitachi HTS725032A9A364 x1
- HDD ST32000542AS x11
- HDD OCZ-VERTEX2 x1
- OS Nexenta Core 3.01 add private patch
旧2(〜2011/09/01)
- CPU Intel Xeon X3430
- Motherborard SuperMicro X8SIA-F
- Memory DDR3 ECC Reg 1066 8GB x2
- SAS Card LSI SAS 9211-8i
- NIC Card OnBoard Intel 82574L x2
- NIC Card Myri10G x 1
- Infiniband Card Mellanox ConnectX Single-Port 4X QDR IB PCIe 2.0 HCA x1
- HDD Hitachi HTS725032A9A364 x1
- HDD ST32000542AS x12
- HDD OCZ-VERTEX2 x1
- OS Nexenta Core 3.01 add private patch
移行中の仮サーバ
- CPU AMD Athlon II X4 605e
- Motherborard Foxconn A7DA-S 3.0
- Memory DDR3 1333 4GB x2
- SAS Card LSI SAS 1064E-4i
- NIC Card Intel 1000CT x1
- Infiniband Card IBM 44R8728 ConnectX Dual-Port 4X DDR IB PCIe 2.0 HCA x1
- HDD 160GB x1
- HDD 500GB x4
- HDD HDS5C3030ALA630 x4
- OS Solaris 11 Express
新(現在移行中)
- CPU Intel Xeon X3460
- Motherborard SuperMicro X8SIA-F
- Memory DDR3 ECC Reg 1066 8GB x4
- SAS Card LSI SAS 9210-8i(IBM M1015IT ファームへ書き換え) x 2
- NIC Card OnBoard Intel 82574L x2
- NIC Card Intel 1000VT Quad port adapter
- InfiniBand Card IBM 44R8728 ConnectX Dual-Port 4X DDR IB PCIe 2.0 HCA x1
- HDD Hitachi HTS725032A9A364 x1
- HDD ST32000542AS x10
- HDD HDS5C3030ALA630 x6
- HDD OCZ-VERTEX2 x1
- OS Nexenta Core 3.1
Webから色々管理
楽するなら、napp-itがお勧め。
InfiniBand関係の設定はできないけど、ZFSとかCOMSTAR周りの設定がすごい楽になります。
各Solarisにて標準で認識したデバイス
Solaris11
- Storage
- LSI MegaRaid 9220-8i
- LSI SAS HBA 9210-8i
- Intel 6G SATA
- Intel 3G SATA
- Adaptec ASR-6405E 動作せず
- Network
- Intel 82579L GbE
- Intel 82574L GbE (1000CT)
- InfiniBand
- MHQH19B-XTC
Solaris 11 EA
- Storage
- AMD 690G AHCI
- Netowerk
- INtel 82574L GbE (1000CT)
- InfiniBand
- MHEA-1TC
OpenIndiana 151a
- Storage
- LSI SAS HBA 9210-8i
- Intel 3G SATA
- Network
- Intel 82576 GbE (GigabitET)
- InfiniBand
- MHQH19-XTC
Solaris Express 11
- Storage
- LSI SAS HBA 9211-8i
- AMD 785G AHCI
- Network
- Intel 82574L GbE (1000CT)
- InfiniBand
- MHQH19-XTC
NexentaCore
- Storage
- LSI SAS HBA 9210-8i x 2
- Intel SAS Expander Board
- Intel 3G AHCI
- Network
- Intel 82575 GbE (1000VT)
- Intel 82574L
- InfiniBand
- MHEA28-2TC
- MHEA28-1TC(HP OEM)
- MHGH28-XTC(HP OEM)
- MHGH29-XTC(IBM OEM)
- MHQH19-XTC
- MHQH29-XTC
カーネルパラメータ
kernelパラメータの設定方法
- bootで読み込ます場合
/etc/systemへ設定
設定を書き込む場合は以下のように
set zfs:zfs_arc_max=0x4002000
- zfsのdiskへの書込タイミングの変更・確認方法
# echo zfs_txg_timeout/D | mdb -k zfs_txg_timeout: zfs_txg_timeout:30 # echo zfs_txg_timeout/W0t1 | mdb -kw zfs_txg_timeout:0x1e = 0x1 # echo zfs_txg_timeout/D | mdb -k zfs_txg_timeout: zfs_txg_timeout:1 # echo zfs_txg_timeout/W0t30 | mdb -kw zfs_txg_timeout:0x1 = 0x1e # echo zfs_txg_timeout/D | mdb -k zfs_txg_timeout: zfs_txg_timeout:30
- zfs
一部のデバイスだけキャッシュコマンドを無視する設定、sd.confへ指定する。
sd-config-list = "ATA Super Duper ", "nvcache1"; nvcache1=1, 0x40000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
OpenIndianaでの4kセクタのディスクの直接指定方法は、上記と同様にsd.confへ指定
# ashift=12 (4KB sector) sd-config-list = "ATA OCZ-VERTEX4 ", "physical-block-size:4096";
上記の名前の指定は、formatコマンドを実行して、指定のDiskのVendor(8文字)とProduct(16文字)を指定する
root@openindiana-test:~# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c4t5E83A97A8F49D19Fd0 <ATA-OCZ-VERTEX4-1.5-119.24GB> /scsi_vhci/disk@g5e83a97a8f49d19f 1. c4t5E83A97B88DD3FA2d0 <ATA-OCZ-VERTEX4-1.5-119.24GB> /scsi_vhci/disk@g5e83a97b88dd3fa2 2. c4t5E83A97F6598C0C0d0 <ATA-OCZ-VERTEX4-1.5-119.24GB> /scsi_vhci/disk@g5e83a97f6598c0c0 3. c4t5E83A973EA35E88Ad0 <ATA-OCZ-VERTEX4-1.5-119.24GB> /scsi_vhci/disk@g5e83a973ea35e88a 4. c5t0d0 <ATA-KINGSTONSVP100S-0202 cyl 14948 alt 2 hd 224 sec 56> /pci@0,0/pci15d9,62a@1f,2/disk@0,0 Specify disk (enter its number): 0 selecting c4t5E83A97A8F49D19Fd0 [disk formatted] /dev/dsk/c4t5E83A97A8F49D19Fd0s0 is part of active ZFS pool datapool. Please see zpool(1M). FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk fdisk - run the fdisk program repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels inquiry - show vendor, product and revision volname - set 8-character volume name !<cmd> - execute <cmd>, then return quit format> inquiry Vendor: ATA Product: OCZ-VERTEX4 Revision: 1.5
l2arc_headroomの設定
コマンドライン
# echo l2arc_headroom/W0t8 | mdb -kw l2arc_headroom: 0x2 = 0x8
起動時に設定反映
/etc/systemに
set zfs:l2arc_headroom=8
- おうちのnexentaの設定ファイルとsolaris 11 EAの設定ファイル
zfsの読込が遅いのはここら辺に問題あるのかも
あと、現在は使用されていないパラメータもセットされてる可能性あり
#set mptsas:mptsas_enable_msi=0 set ddi_msix_alloc_limit=4 #set zfs:txg_time=1 #set zfs_txg_timeout=1 set zfs:zfs_txg_timeout=14 set zfs:zfs_prefetch_disable=1 set zfs:zfs_vdev_min_pending=1 #set zfs:zfs_vdev_min_pending=8 set zfs:zfs_vdev_max_pending=10 set zfs:zfs_vdev_cache_bshift=13 set zfs:zfs_nocacheflush = 1
solaris 11 EAだと、何も自分で弄ってないけど、下記設定が
set zfs:zfs_arc_max=0x4002000 set zfs:zfs_vdev_cache_size=0
solaris 11 EAのパラメータを弄った結果(echo "::zfs_params" | mdb -kM)
これでも、上記のNexetaCoreよりも128kbのブロックサイズだと遅い
arc_reduce_dnlc_percent = 0x3 zfs_arc_max = 0x780000000 zfs_arc_min = 0x0 arc_shrink_shift = 0x5 zfs_mdcomp_disable = 0x0 zfs_prefetch_disable = 0x1 zfetch_max_streams = 0x8 zfetch_min_sec_reap = 0x2 zfetch_block_cap = 0x100 zfetch_array_rd_sz = 0x100000 zfs_default_bs = 0x9 zfs_default_ibs = 0xe metaslab_aliquot = 0x80000 mdb: variable reference_tracking_enable not found: unknown symbol name mdb: variable reference_history not found: unknown symbol name spa_max_replication_override = 0x3 spa_mode_global = 0x3 zfs_flags = 0x0 zfs_txg_synctime_ms = 0x2710 zfs_txg_timeout = 0xf zfs_write_limit_min = 0x2000000 zfs_write_limit_max = 0xffde7800 zfs_write_limit_shift = 0x3 zfs_write_limit_override = 0x0 zfs_no_write_throttle = 0x0 zfs_vdev_cache_max = 0x4000 zfs_vdev_cache_size = 0xa00000 zfs_vdev_cache_bshift = 0xd vdev_mirror_shift = 0x15 zfs_vdev_max_pending = 0xa zfs_vdev_min_pending = 0x1 zfs_vdev_future_pending = 0x1 zfs_scrub_limit = 0xa zfs_no_scrub_io = 0x0 zfs_no_scrub_prefetch = 0x0 zfs_vdev_time_shift = 0x6 zfs_vdev_ramp_rate = 0x2 zfs_vdev_aggregation_limit = 0x20000 fzap_default_block_shift = 0xe zfs_immediate_write_sz = 0x8000 zfs_read_chunk_size = 0x100000 zfs_nocacheflush = 0x1 zil_replay_disable = 0x0 metaslab_gang_threshold = 0x100001 metaslab_df_alloc_threshold = 0x100000 metaslab_df_free_pct = 0x4 zio_injection_enabled = 0x0 zvol_immediate_write_sz = 0x8000
現在使ってるOpenIndianaでの /etc/system
set ddi_msix_alloc_limit=8 #set pcplusmp:apic_multi_msi_max=8 #set pcplusmp:apic_msix_max=8 set pcplusmp:apic_intr_policy=1 set srpt:srpt_errlevel=2 set zfs:zfs_arc_max=0x1700000000 #set zfs:zfs_txg_timeout=14 set zfs:l2arc_headroom=8 set ndd:tcp_wscale_always=1 set ndd:tcp_tstamp_if_wscale=1 set ndd:tcp_max_buf=16777216 set ndd:tcp_cwnd_max=8388608 set ndd:tcp_xmit_hiwat=1048576 set ndd:tcp_recv_hiwat=1048576
- TCP/IP絡みの設定
nddで毎回設定するのは面倒なので、/etc/systemで指定する。
以下を追加
set ndd:tcp_wscale_always=1 set ndd:tcp_tstamp_if_wscale=1 set ndd:tcp_max_buf=16777216 set ndd:tcp_cwnd_max=8388608 set ndd:tcp_xmit_hiwat=1048576 set ndd:tcp_recv_hiwat=1048576
CPUアフィニティの変更
複数の割り込みを同一のCPUに割り当てないように、割り当てCPUを変更する
NexentaCoreでは、「sunwio-tools」にpcitoolが入ってる。
今回はmpt_sas13のデバイスを変更する
CPUコアの状態を確認
root@nexenta:~# psrinfo -pv The physical processor has 4 cores and 8 virtual processors (0-7) The core has 2 virtual processors (0 4) The core has 2 virtual processors (1 5) The core has 2 virtual processors (2 6) The core has 2 virtual processors (3 7) x86 (GenuineIntel 106E5 family 6 model 30 step 5 clock 2800 MHz) Intel(r) Xeon(r) CPU X3460 @ 2.80GHz
現在のCPUへの割り込みの割り当てを確認
# echo '::interrupts -d' | mdb -k
どのデバイス下にいるかチェック
root@nexenta:~# cat /etc/path_to_inst | grep mpt_sas "/pci@0,0/pci8086,d138@3/pci1000,3040@0" 0 "mpt_sas" "/pci@0,0/pci8086,d138@3/pci1000,3040@0/iport@8" 1 "mpt_sas" "/pci@0,0/pci8086,d138@3/pci1000,3040@0/iport@10" 3 "mpt_sas" "/pci@0,0/pci8086,d138@3/pci1000,3040@0/iport@20" 5 "mpt_sas" "/pci@0,0/pci8086,d138@3/pci1000,3040@0/iport@40" 7 "mpt_sas" "/pci@0,0/pci8086,d138@3/pci1000,3040@0/iport@80" 9 "mpt_sas" "/pci@0,0/pci8086,d138@3/pci1000,3040@0/iport@v0" 11 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0" 13 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0/iport@8" 2 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0/iport@10" 4 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0/iport@20" 6 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0/iport@40" 8 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0/iport@80" 10 "mpt_sas" "/pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0/iport@v0" 12 "mpt_sas"
上記で/pci@0,0の下にいる事を確認
で、pcitoolで変更したいデバイスのinoを探す。
root@nexenta:~# pcitool /pci@0,0 -i all [snip] ino 0x42 mapped to cpu 0x7 Device: /pci@0,0/pci8086,d13a@5/pci111d,806f@0/pci111d,806f@4/pci1000,3040@0 Driver: mpt_sas, instance 13 [/snip]
現在は、ino 0x42で、cpu7へ割り当てられるのが確認できる。
inoが解れば、以下のコマンドでCPU0へ変更
root@nexenta:~# pcitool /pci@0,0 -i 42 -w 0
-iがinoで、-wで変更したいCPU番号へ
割り込みについて
割り込みがどのCPUに割り当てられてるか確認
# echo '::interrupts -d' | mdb -k
現在どれ位割り込みが発生しているかを確認
root@nexenta:~# intrstat
社外ドライバの追加
ASR-6445を使用する為に、Adaptecの純正ドライバを追加する。
1 - Solaris11でASR-6445とか比較的新しいAdaptecのカードを使用する為にAdaptec純正ドライバに変更する。
2 - Adaptecのサイトから最新のドライバをダウンロードしてくる。Solaris11用はなかったので、Solaris10用を落とした。
3 - 現在の環境のクローンを作成するコマンドを実行
# beadm create solaris11_aacdriver
4 - 新しい環境を(/aac)にマウントする
# beadm mount solaris11_aacdriver /aac
5 - 新しい環境から、標準のaacドライバを削除する
# pkg -R /aac uninstall aac
6 - Adaptecのサイトからダウンロードしたファイルを、/tmp/aacに展開し新環境へインストール。
# pkgadd -R /aac -d /tmp/aac/aac.pkg
7 - 新環境をアンマウントする
# beadm unmount -f solaris11_aacdriver
8 - 新環境でブートするようにアクティブにする
# beadm activate solaris11_aacdriver
9 - 再起動
# reboot -p
結局認識せず orz
Disk関係
Disk操作について
- 接続されてるDiskの確認
# format
- SMARTの確認(AHCIインターフェイス)
# smartctl -d sat,12 -a /dev/rdsk/c0t2d0s2
- SMARTの確認(SASインターフェイス)
# smartctl -d sat,12 -a /dev/rdsk/c3t5000C5002A6E7180d0s2
- 内蔵SATAデバイスのHotSwap(取り外し)
# cfgadm -c unconfigure sata0/2
- 内蔵SATAデバイスのHotSwap(取り付け)
# cfgadm -c configure sata0/2
- SAS/SATAデバイスの確認
# cfgadm -al
- Disk I/Oの状態確認
# iostat -xtC 1
上記だと一秒ごとのI/O状況を表示
- SAS HBAに刺さったディスクの交換の方法
下記のコマンドで交換するDISKを確認
# cfgadm -al Ap_Id Type Receptacle Occupant Condition c5 scsi-sas connected configured unknown c5::es/ses0 ESI connected configured unknown c5::smp/expd0 smp connected configured unknown c5::w5000c50007281739,0 disk-path connected configured unknown c5::w5000c5002a6df19c,0 disk-path connected configured unknown c5::w5000c5002a6e7180,0 disk-path connected configured unknown c5::w5000c5002a6e9583,0 disk-path connected configured unknown c5::w5000c5002b5e690f,0 disk-path connected configured unknown c5::w5000c50024c8d5a2,0 disk-path connected configured unknown c5::w5000c5002077d17c,0 disk-path connected configured unknown c5::w5000c5003260bad1,0 disk-path connected configured unknown c5::w5000cca228c13f55,0 disk-path connected configured unknown c5::w5000cca228c13fc7,0 disk-path connected configured unknown c5::w5000cca228c14dc4,0 disk-path connected configured unknown c5::w5000cca228c14189,0 disk-path connected configured unknown c6 scsi-sas connected configured unknown c6::w5000cca228c13cbc,0 disk-path connected configured unknown c7 scsi-sas connected configured unknown c7::w5000c5002a6d8391,0 disk-path connected configured unknown c8 scsi-sas connected configured unknown c8::w5000c5002b5cd734,0 disk-path connected configured unknown c9 scsi-sas connected configured unknown c9::w5000c5002b557147,0 disk-path connected configured unknown c10 scsi-sas connected unconfigured unknown hca:2C90300065766 IB-HCA connected configured ok ib IB-Fabric connected configured ok ib::2C90300065767,0,ipib IB-PORT connected configured ok ib::daplt,0 connected configured ok ib::eibnx,0 connected configured ok ib::iser,0 connected configured ok ib::rdsib,0 connected configured ok ib::rdsv3,0 connected configured ok ib::rpcib,0 connected configured ok ib::sdpib,0 connected configured ok ib::sol_umad,0 connected configured ok ib::sol_uverbs,0 connected configured ok ib::srpt,0 connected configured ok sata0/0::dsk/c4t0d0 disk connected configured ok sata0/1 sata-port empty unconfigured ok sata0/2 sata-port empty unconfigured ok sata0/3 sata-port empty unconfigured ok sata0/4 sata-port empty unconfigured ok sata0/5::dsk/c4t5d0 disk connected configured ok
今回は、「c5::w5000c50007281739,0」を取り外す。
# cfgadm -c unconfigure c5:::w5000c50007281739,0
SAS Expanderに、SATAとSASがMixされて刺さってるため、今回は失敗 orz
Diskの止まる対策かも
/kernel/drv/sd.confに以下の行を追加
allow-bus-device-reset=0;
まだテストしていないので、治るかわかりません。
ちなみに、SASとSATAの混合したExpandersでのReset Stormを止める方法みたい。
使用していないときにDiskをSpinDownさせる
/etc/power.confに以下の行を追加(ディスクの指定部分は各自の環境で書換の事)
・LSIの場合
device-thresholds /scsi_vhci/disk@g50014ee2ae83efdd 5m
・AHCI等の場合
device-thresholds /pci@0,0/pci1043,82d4@1f,2/disk@4,0 1200s
pmconfig実行して設定を反映
# pmconfig
Ramdisk作成方法
/etc/systemに以下を追加
set ramdisk:rd_percent_physmem=80
数字はメモリ容量に対するパーセンテージ
設定後、一度再起動。
実際にRamdisk作成は以下のコマンドで
# ramdiskadm -a ramdsk0 10g
上記では、ramdsk0を10GBで作成している。
作成したRamdiskは以下にできてるので、後は適当に
/dev/ramdisk/
その他
mpt_sasで認識したドライブのデバイス名が異常に長い
これ、mpt_sasドライバの仕様。長いのは諦めましょうw