Installation av Teamspeak 3 server

Har länge funderat på att sätta upp en Teamspeak 3 server hemma för att kunna ha när man gäjmar, eftersom det ibland är svårt att få tag på en server som är ledig. Dessutom behöver min World of Tanks spelande klan en server, så nu var det dax.
 
Teamspeak är en programvara för röst- och text-kommunikation, som till skillnad från skype bygger på egna servrar och högre ljudkvalitet med lägre krav på bandbredd. Senaste versionen är TS3 och klienter finns för PC, Mac, Linux, iOS och Android.
 
 
Första steget är att ladda ned rätt serverprogramvara, i mitt fall har jag en 64-bitars installation.
# uname -a
Linux monoton 3.15.4-200.fc20.x86_64 #1 SMP Mon Jul 7 14:24:41 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Detta innebär att jag skall ladda ned amd64 varianten.
 
Efter det packar man upp filen och lägger den på rätt plats, i mitt fall valde jag att lägga filerna under /opt/ts3server.
 
Starta servern med startscriptet och spara informationen på en säker plats. Du kommer behöva den senare.
------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
               Server Query Admin Account created
         loginname= "serveradmin", password= "ghdghfghf"
------------------------------------------------------------------


------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
      ServerAdmin privilege key created, please use it to gain
      serveradmin rights for your virtualserver. please
      also check the doc/privilegekey_guide.txt for details.

       token=ksfhkhjfhgkjsdfgjkhdkghksdjhfgskdjhfg
------------------------------------------------------------------

Sedan skapar du en användare "ts3server" och ändrar ägare och grupp för samtliga filer i katalogen /opt/ts3server till desamma.
 
Sist skapar vi en service som startar automatiskt vid boot, se följande tråd för mer information.
 
Skapa filen /usr/lib/systemd/system/teamspeak.service med nedanstående innehåll:
[Unit]
Description=Teamspeak Service
Wants=network.target

[Service]
WorkingDirectory=/opt/ts3server
User=ts3server
ExecStart=/opt/ts3server/ts3server_minimal_runscript.sh
ExecStop=/opt/ts3server/ts3server_startscript.sh stop
ExecReload=/opt/ts3server/ts3server_startscript.sh restart
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

Kör sedan kommandot:
# systemctl enable teamspeak.service
# systemctl status teamspeak.service
teamspeak.service - Teamspeak Service
   Loaded: loaded (/usr/lib/systemd/system/teamspeak.service; enabled)
   Active: active (running) since Wed 2014-07-16 20:59:07 CEST; 31min ago
 Main PID: 945 (ts3server_minim)
   CGroup: /system.slice/teamspeak.service
           ├─945 /bin/sh /opt/ts3server/ts3server_minimal_runscript.sh
           └─954 ./ts3server_linux_amd64

Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Jul 16 20:59:12 monoton ts3server_minimal_runscript.sh[945]: 2014-07-16 18:59...
Hint: Some lines were ellipsized, use -l to show in full.


Nästa steg är att starta klienten på PC och konfigurera det egna kontot till att vara administratör - då behöver man "token="-strängen som servern spottade ur sig tidigare. Efter det kan man göra all administration av servern via PC-klienten.

Installation av nya diskar (Pt II)

   .
   .
  /dev/md126: Moved: 99.8%
  /dev/md126: Moved: 99.9%
  ABORTING: Can't find LV in lvm-raid for /dev/md126
 
Gahhh! Såhär vill man inte att 2 timmars grejjande av det magiska kommandot "pvmove" skall sluta.
Efter panik-googlande visade det sig att detta beteendet är en känd bugg, dokumenterad här. Som det går att se nedan så är hela PVn /dev/md126 tom, så "pvmove" gjorde det den skulle.
 
# pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/md100 lvm-raid lvm2 a-     1.82t 931.50g
  /dev/md126 lvm-raid lvm2 a-   931.51g 931.51g
  /dev/md127 lvm-raid lvm2 a-   931.51g      0
#
 
Vi tar först bort etiketten på den aktuella PVn och sedan resar vi bort den ifrån volymgruppen (VG).
 
# pvremove -ff -v /dev/md126
Really WIPE LABELS from physical volume "/dev/md126" of volume group "lvm-raid" [y/n]? y
  WARNING: Wiping physical volume label from /dev/md126 of volume group "lvm-raid"
  Labels on physical volume "/dev/md126" successfully wiped
#
# pvs
  Couldn't find device with uuid P8UUSG-EqE4-5qpH-939d-fYVn-S5cn-ngGz26.
  PV             VG       Fmt  Attr PSize   PFree  
  /dev/md100     lvm-raid lvm2 a-     1.82t 931.50g
  /dev/md127     lvm-raid lvm2 a-   931.51g      0
  unknown device lvm-raid lvm2 a-   931.51g 931.51g
#
# vgreduce --removemissing lvm-raid
  Couldn't find device with uuid P8UUSG-EqE4-5qpH-939d-fYVn-S5cn-ngGz26.
  Wrote out consistent volume group lvm-raid
# pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/md100 lvm-raid lvm2 a-     1.82t 931.50g
  /dev/md127 lvm-raid lvm2 a-   931.51g      0
#
 
Nu stänger vi ned servern och monterar bort de trasiga diskarna.
 
Efter uppstarten visar det sig att LVM döper om de olika arrayerna, men det spelar ingen stötrre roll eftersom den lyckas reda ut hur dom hänger ihop ändå. Syncningen fortsätter där den blev avbruten och allt ser bra ut sålångt - de trasiga diskarna har redan påbörjat sin resa mot elektronikåtervinningen:
 
# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[0] sdd1[1]
      1953512400 blocks super 1.2 [2/2] [UU]
      [=========>...........]  resync = 48.5% (948276288/1953512400) finish=109.2min speed=153363K/sec
      
md127 : active raid1 sdf1[1] sde1[0]
      976759672 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdc1[1]
      485807996 blocks super 1.1 [2/2] [UU]
      bitmap: 4/4 pages [16KB], 65536KB chunk

unused devices: <none>
 
Nästa steg är att utöka den logiska volymen (LV) med de outnyttjade 1TB utrymme som finns i vår nyaste PV, notera kolumnen PFree nedan:
 
# pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/md126 lvm-raid lvm2 a-     1.82t 931.50g
  /dev/md127 lvm-raid lvm2 a-   931.51g
#
 
För att kunna göra detta behöver jag veta hela sökvägen för LV, vilket jag kan få fram med "lvdisplay", samt antalet lediga PE, vilket gar får fram med "pvdisplay"

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/lvm-raid/lvm0
  VG Name                lvm-raid
  LV UUID                tDC0UQ-TrcX-P0qU-SyNA-PA21-R7Pu-7gJHwM
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.82 TiB
  Current LE             476932
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
# pvdisplay /dev/md126
  --- Physical volume ---
  PV Name               /dev/md126
  VG Name               lvm-raid
  PV Size               1.82 TiB / not usable 2.95 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              476931
  Free PE               238465
  Allocated PE          238466
  PV UUID               mg0Qio-KqU3-Bf50-lpr6-mCNL-eOwf-M1yhEE
   
#
 
Nästa steg blir att utöka LV med de lediga PE.

# lvextend -l+238465 /dev/lvm-raid/lvm0
  Extending logical volume lvm0 to 2.73 TiB
  Logical volume lvm0 successfully resized
#
 
För att vi skall få mer lagringsutrymme (filsystem) räcker det inte med att utöka den logiska volymen - man måste utöka filsystemet också.
 
Men eftersom allt har gått så bra och vi känner oss riktigt sturska så utökar vi storleken på filsystemet on-line, dvs med servern i full drift (filsystemet är monterat och används).

# resize2fs /dev/lvm-raid/lvm0
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/lvm-raid/lvm0 is mounted on /data; on-line resizing required
old desc_blocks = 117, new_desc_blocks = 175
Performing an on-line resize of /dev/lvm-raid/lvm0 to 732566528 (4k) blocks.
The filesystem on /dev/lvm-raid/lvm0 is now 732566528 blocks long.

Med detta har vi bytt ut 2 trasiga 1TB diskar som var speglade med RAID1 mot två 2TB nya under full drift av servern, men det enda undantaget att jag stängde ner den då jag monterade i och ur diskarna.
 
Slutet gott allting gott.

Installation av nya diskar

Då själva syftet med LVM är att kunna hantera volymer och diskar på ett effektivt sätt, kollade jag runt lite i HowTo's och FAQs för LVM och RAID. Jag hittade denna intressanta artikeln om hur man tar bort en fysisk volym (PV) från ett filsystem som är i drift.
 
Enklaste lösningen för att råda bot på probleme med trsiga diskar i ett RAID system är givetvis att skaffa exakt lika stora diskar och byta ut dem en och en, med en resync emellan. Men jag vill passa på att sätta in större diskar, vilket ökar komplexiteten något.
 
Men först av allt måste jag installera de nya diskarna och partitionera dem med "fdisk". Partitionens ID sätts till RAID Autodetect (0xfd). Partitionerna dyker upp i systemet som /dev/sdb1 samt /dev/sdd1.
 
Nästa steg blir att bygga ihop den båda diskarna till en spegel (RAID1-array).
 
# mdadm --create --verbose /dev/md100 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdd1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 1953512400K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md100 started.
#
# cat /proc/mdstat
Personalities : [raid1]
md100 : active raid1 sdd1[1] sdb1[0]
      1953512400 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.0% (1148352/1953512400) finish=226.6min speed=143544K/sec
      
md126 : active raid1 sdg1[0]
      976758841 blocks super 1.2 [2/1] [U_]
      
md127 : active raid1 sdf1[1] sde1[0]
      976759672 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdc1[1]
      485807996 blocks super 1.1 [2/2] [UU]
      bitmap: 3/4 pages [12KB], 65536KB chunk

unused devices: <none>
 
Syncning startar i bakgrunden och det går bra att börja använda arrayen /dev/md100 på direkten.
 
Nästa steg blir att lägga till arrayen som en fysisk volym (PV) i införliva den i vår LVM volymgrupp (VG).
 
# pvcreate /dev/md100
  Physical volume "/dev/md100" successfully created

#
# lvs
  LV   VG       Attr   LSize Origin Snap%  Move Log Copy%  Convert
  lvm0 lvm-raid -wi-ao 1.82t                                      
#
# vgextend lvm-raid /dev/md100
  Volume group "lvm-raid" successfully extended
#

Vi ser nedan att den nya PVn har adderats till VGn, som nu är 3.64TB stor.
 
#
# vgdisplay
  --- Volume group ---
  VG Name               lvm-raid
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               3.64 TiB
  PE Size               4.00 MiB
  Total PE              953863
  Alloc PE / Size       476932 / 1.82 TiB
  Free  PE / Size       476931 / 1.82 TiB
  VG UUID               UNdmuD-JNGp-YwgA-s5PQ-3mp6-u4En-5Ets3U
   
#
 
Nästa steg blöir att utnyttja VGns extrakapacitet till att rädda data från de trasiga diskarna.
 
# pvmove -v /dev/md126
    Finding volume group "lvm-raid"
    Archiving volume group "lvm-raid" metadata (seqno 9).
    Creating logical volume pvmove0
    Moving 238466 extents of logical volume lvm-raid/lvm0
    Found volume group "lvm-raid"
    activation/volume_list configuration setting not defined, checking only host tags for lvm-raid/lvm0
    Updating volume group metadata
    Found volume group "lvm-raid"
    Found volume group "lvm-raid"
    Suspending lvm--raid-lvm0 (253:0) with device flush
    Found volume group "lvm-raid"
    activation/volume_list configuration setting not defined, checking only host tags for lvm-raid/pvmove0
    Creating lvm--raid-pvmove0
    Loading lvm--raid-pvmove0 table (253:1)
    Resuming lvm--raid-pvmove0 (253:1)
    Found volume group "lvm-raid"
    Loading lvm--raid-pvmove0 table (253:1)
    Suppressed lvm--raid-pvmove0 identical table reload.
    Loading lvm--raid-lvm0 table (253:0)
    Resuming lvm--raid-lvm0 (253:0)
    Creating volume group backup "/etc/lvm/backup/lvm-raid" (seqno 10).
    Checking progress before waiting every 15 seconds
  /dev/md126: Moved: 0.0%
  /dev/md126: Moved: 0.1%
  /dev/md126: Moved: 0.2%
   .
   .
   .
 
 Detta tar lång tid. Jag återkommer :-)

Diskhaveri på G

Min Linux-server har börjat indikera att en hårddisk håller på att kapitulera:
 
 
Orsaken är att en av diskarna har börjat detektera sektor-fel genom SMART övervakningsfunktionen:
 
 
 
Då båda diskarna ligger på i samma RAID1-array riskerar jag att snart tappa bort 1TB data, men eftersom jag använder LVM för att bygga ihop ett 2TB stort filsystem bestående av två identiska RAID1-arrayer, skulle ett fel i den ena arrayen påverka hela VolymGruppen(!):
 
# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdf1[0]
      976758841 blocks super 1.2 [2/1] [U_]
      
md127 : active raid1 sdb1[1] sdd1[0]
      976759672 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdc1[1]
      485807996 blocks super 1.1 [2/2] [UU]
      bitmap: 3/4 pages [12KB], 65536KB chunk

unused devices: <none>
 

RSS 2.0