CentOS Linux release 7.3.1611 (Core)
Linux 3.10.0-514.6.1.el7.x86_64

Last login: Wed Mar 1 20:53:29 2017 from ibm-t42.howto.dk
[root@howto ~]#
[root@howto ~]# uptime
20:53:29 up 35 days, 2:25, 0 users, load average: 0.04, 0.03, 0.05
[root@howto ~]#



Denne side er dedikeret til Red Hat - primært Red Hat Enterprise 5 (RHEL5). Der er diverse konfigurations guides samt en masse små tips og tricks til Red Hat. Der står helt sikkert ikke noget på denne side, som ikke allerede har stået på andre sider i flere år, men jeg bruger det lige så meget selv, som min egen huskeseddel til "hvordan pokker var det nu liiige, at jeg gjorde det".

Jeg er en ivrig bruger af Red Hat, hvor jeg har to servere tilkoblet nettet (nameserver, web og mail m.v.) og vi har en del på mit job (dog ingen RHEL5). I 1999 startede jeg først med FreeBSD, hvor jeg blev grebet af dens stabilitet og nok også, at det ikke var Windows (jeg var den gang i en anti-Windows fase hvilket jeg nok stadigt er). I 2007 skiftede jeg til Red Hat (dog først Fedora Core 6 i nogle måneder), da jeg bedre synes, at jeg kunne håndtere den - jeg kunne se en rød tråd igennem den og den var forholdsvis nem at gå til, så jeg har bestemt ikke fortrudt skiftet. Det har gjort min administration meget nemmere... desværre, for nu piller jeg mere, så jeg har sikkert mere nedetid end på FreeBSD! ;-)

Siden er tiltænkt til, at man burde kunne copy/paste det meste men det er næppe alt der er lige (u)forståeligt, så måske skal du lede lidt selv også og tweake lidt på hvordan du gør det. Selv om siden primært er lavet til RHEL5, så burde det meste også fungere til andet - især RHEL4 men også RHEL3 m.v.

Hvis du finder fejl (og det gør du sikkert) eller bare har andre/bedre måder at gøre det på, skal du være meget velkommen til at skrive til mig, Dennis, dh .snabela. hinet.dk





Indhold (eller mangel på samme)!?

Ændre farverne i LS
SSH mellem to servere uden password
Differentiel arkivering med RSYNC
dm-crypt med LUKS
Oprette en LVM partition
Udvide en eksisterende LVM partition med en ny disk
Netkort bonding/trunking
IPTables og FTP
(U)nødvendige services
Harddisk tests
Ændre default kernel
Små nyttige shell kommandoer
Opsæt korrekt terminal emulering
LDAP klient
Samba
NFS
Egen service
 




Ændre farverne i LS
Oprettet: 2007-09-13, Sidst rettet: 2007-09-14

Hvis dine farver i ls er utydelige eller du bare er træt af dem, kan de nemt ændres. F.eks. er default at alle komprimerede filer (tgz, tar, zip m.v.) vises med en anden farve, rød. Jeg vil hellere vise alle normale filer med samme farve, da det færre farver der er, des mindre skal jeg lede efter de specielle filer (eksekvérbare, symbolic links og missing files m.v.).

Enviroment variablen LS_COLORS viser de aktuelle farver.
Enviroment variablen COLORS viser hvilken fil, hvor de globale farver er defineret (gælder alle brugere). Disse globale farver kan tilsidesættes, hvis LS_COLORS er defineret i brugerens ~/.bashrc fil.

[root@howto ~]# set | grep COLORS
COLORS=/etc/DIR_COLORS.xterm
LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:
or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:
*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:
*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:
*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:
*.png=00;35:*.tif=00;35:'


Hvis du retter i den globale fil, skal du blot rette farverne og logge ind igen.

Hvis du retter i ~/.bashrc filen, kan du tilføje følgende:

# MY SOURCE: http://linux-sxs.org/housekeeping/lscolors.html
#
# 0 = default color
# 1 = bold
# 4 = underlined
# 5 = flashing text
# 7 = reverse field
# 31 = red
# 32 = green
# 33 = orange
# 34 = blue
# 35 = purple
# 36 = cyan
# 37 = grey
# 40 = black background
# 41 = red background
# 42 = green background
# 43 = orange background
# 44 = blue background
# 45 = purple background
# 46 = cyan background
# 47 = grey background
# 90 = dark grey
# 91 = light red
# 92 = light green
# 93 = yellow
# 94 = light blue
# 95 = light purple
# 96 = turquoise
# 100 = dark grey background
# 101 = light red background
# 102 = light green background
# 103 = yellow background
# 104 = light blue background
# 105 = light purple background
# 106 = turquoise background
#
# di = directory
# fi = file
# ln = symbolic link
# pi = fifo file
# so = socket file
# bd = block (buffered) special file
# cd = character (unbuffered) special file
# or = symbolic link pointing to a non-existent file (orphan)
# mi = non-existent file pointed to by a symbolic link (visible when you type ls -l)
# ex = file which is executable (ie. has 'x' set in permissions).
#
LS_COLORS='di=00;94:'
export LS_COLORS

Du behøver kun definere de farver du ønsker ændret, da den ellers blot tager farven fra de globale settings - f.eks. LS_COLORS='di=00;94:' ændre kun farven på directories.
Efter filen ~/.bashrc er rettet, kan du aktivere ændringen med:

[root@howto ~]# source ~/.bashrc
[root@howto ~]# ls -l
total 1676
-rw-------  1 root   root      978 Jan 27  2007 anaconda-ks.cfg
drwxr-xr-x 12 root   root     4096 Sep 10 11:20 boxbackup-0.10
-rw-r--r--  1 root   root   842450 Feb 23  2006 boxbackup-0.10.tgz
-rw-r--r--  1 root   root       53 Feb  9  2007 hexfile
-rwx------  1 root   root      314 Apr  5 21:59 hexfile.sh
drwxr-xr-x  2 root   root     4096 Mar 25 17:13 hovmon
-rw-r--r--  1 root   root    18648 Jun 23 21:16 install.log
-rw-r--r--  1 root   root     3165 Jun 23 21:14 install.log.syslog
-rw-r--r--  1 root   root      181 Sep  8 01:54 iptables.txt
-rw-r--r--  1 root   root   453802 Oct 10  2004 librsync-0.9.7.tar.gz
-rw-r--r--  1 root   root   152215 Nov 12  2006 rdiff-backup-1.0.5.tar.gz
drwxr-xr-x  4 root   root     4096 Sep 10 23:48 rdiff-backup-1.1.14
-rw-------  1 root   root   179222 Aug 13 18:50 rdiff-backup-1.1.14.tar.gz
drwxr-xr-x  5 root   root     4096 Sep 12 10:14 scripts

 




SSH mellem to servere uden password
Oprettet: 2007-09-17, Sidst rettet: 2007-11-16

Mange (crontab) scripts har brug for, at kunne tilgå andre servere via SSH og så er password imellem dem en hindring. Rent sikkerhedsmæssigt er det altid bekymrende, at kunne tilgå en anden server uden password, men det KAN alligevel gøres på en rimelig sikker måde således, at éns login caches af ssh-agent daemon. Dermed skal man kun angive server-to-server passwordet én gang - også selvom man logger ud. Det fungere så længe serveren køre og man skal indtaste passwordet hver gang serveren har rebootet.

Nedenstående installere jeg keychain selvom det reelt set ikke er nødvendigt - jeg kunne godt bruge ssh-agent men den er noget mere vanskelig, at få til at fungere korrekt, så jeg valgte den nemme løsning :-) Det giver min root bruger adgang fra pri-server til sek-server, uden password således, at jeg kan afvikle min rsync arkivering uden problemer.

Bemærk at hvis ikke du har SSH'et til den sekundære server før, så skal du lige gøre det, da den dermed opretter ~/.ssh/ mappen.
Bemærk også at det hele udføres på primær/source serveren og der ikke pilles ved sekundær serveren overhovedet.
Sekundær serveren har IKKE passwordless adgang til primær serveren!

# Installér keychain (nem frontend til ssh-agent)
# (find RPM pakken her, http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=1&dl=40&search=keychain)
[root@howto ~]# rpm -ivh ftp://ftp.univie.ac.at/ [CUT] /keychain-2.5.1-1.2.el5.rf.noarch.rpm
Retrieving ftp://ftp.univie.ac.at/ [CUT] /keychain-2.5.1-1.2.el5.rf.noarch.rpm
warning: /var/tmp/rpm-xfer.329w8X: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:keychain               ########################################### [100%]

# Opret en ny SSH nøgle (jeg anbefaler at indtaste samme password som brugeren der er logget ind = root i mit tilfælde - det er meget mere sikkert!)
[root@howto ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): ~/.ssh/id_sec
Enter passphrase (empty for no passphrase): <INDTAST PASSWORD>
Enter same passphrase again: <INDTAST PASSWORD IGEN>
Your identification has been saved in /root/.ssh/id_sec.
Your public key has been saved in /root/.ssh/id_sec.pub.
The key fingerprint is:
12:ac:c1:17:0e:e2:d1:9f:78:3b:9f:e5:23:b7:a4:1a root@howto

# Tilføj den nye nøgle til den anden server
[root@howto ~]# cat ~/.ssh/id_sec.pub | ssh sec "cat - >> ~/.ssh/authorized_keys"

Nu er SSH nøglerne oprettet og udvekslet imellem serverene men det fungere stadigt ikke uden password.

For at få passwordless adgang, skal vi have kaldt SSH agenten (via keychain) og have initialiséret nogle variabler (via source kommandoen).

Bemærk at pga. keychain/ssh-agent ikke gemmer nogle oplysninger på disken (kun cachet i RAM), så skal nedenstående udføres hver gang serveren har genstartet.

# Start keychain
[root@howto ~]# keychain ~/.ssh/id_sec

KeyChain 2.5.1; http://www.gentoo.org/proj/en/keychain/
Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL

* Initializing /root/.keychain/pri.howto.dk-sh file...
* Initializing /root/.keychain/pri.howto.dk-csh file...
* Starting ssh-agent
* Adding 1 ssh key(s)...
Enter passphrase for /root/.ssh/id_sec: <INDTAST PASSWORD>
Identity added: /root/.ssh/id_sec (/root/.ssh/id_sec)

# Source keychain filen (initialiser variabler)
[root@howto ~]# source ~/.keychain/`hostname`-sh

# Test at du kan logge ind til den anden server - uden password
[root@howto ~]# ssh sec
Last login: Thu Oct 11 21:31:53 2007 from pri.howto.dk
[root@sec ~]#

Hvis du logger ud af ovenstående session, vil din keychain session gå tabt og næste gang, skal du source filen igen. For at starte source filen op, helt automatisk, hver gang du logger ind (og din shell er BASH), skal du tilføje følgende til din ~/.bashrc fil:

# Source the SSH agent
if [ "`pidof ssh-agent`" != "" ]
then
  source ~/.keychain/`hostname`-sh > /dev/null
fi

I alle dine scripts (som skal have passwordless adgang), skal du også huske at source keychain filen:

#!/bin/bash
source ~/.keychain/`hostname`-sh
diskstat=`ssh sec df -hl`
echo $diskstat

 




Differentiel arkivering med RSYNC
Oprettet: 2007-09-17, Sidst rettet: 2007-12-24 (tak Klavs)

RSYNC kan bruges til andet end at synkronisére en mappestruktur - f.eks. bruger jeg den til, at have et fuldt 30 dages arkiv over mine systemer.
Det geniale ved det er, at selve filerne ligger der kun fysisk én gang mens der hard linkes til eksisterende filer - dvs. at jeg har en fuld mappestruktur, ligesom på mine systemer, og således kan finde tilbage til enhver given slettet eller ændret fil i løbet af 30 dage - genialt og simpelt! :-)

Bemærk dog at hard links ikke er helt gratis - hver hard link fylder minimum blocksize (4096 bytes i mit tilfælde) og med 50.000 hard linked filer giver det et spild på 195MBytes hver gang der laves et snapshot. Det synes jeg dog er småting, i forhold til de fordele der er i det.
Du kan se hvor meget din minimum blocksize er ved at tage en ls -l / og se hvor meget en given mappe fylder. F.eks. kan det ses på mit nummer to "screenshot" nedenstående, hvor mine mapper fylder 4096 bytes.

Scriptet til synkroniséring (alt foregår på source serveren):
[root@howto ~]# cat rsync2secondary.sh
#!/bin/bash
#
# Requirements:
# * passwordless SSH between primary and secondary server
# ---

# Stuff I need to change (servers and directories)
srcsrv=`hostname`
srcdir="/etc /home /root"
dstsrv=sec.howto.dk
dstdir=/rsync
# (do not put a trailing slash at the end)

# Check if the PID is running
PID_FILE=/var/run/`basename $0`.pid
if [ -f "$PID_FILE" ]
then
  MYPID=`head -n 1 "$PID_FILE"`
  TEST_RUNNING=`ps -p ${MYPID} | grep ${MYPID}`
  if [ -z "${TEST_RUNNING}" ]
  then
    echo "PID file exists but PID [$MYPID] is not running... creating new PID file [$PID_FILE]"
    echo $$ > "$PID_FILE"
  else
    echo "`basename $0` is already running [${MYPID}]... quitting"
    exit -1
  fi
else
  echo "`basename $0` not running... creating new PID file [$PID_FILE]"
  echo $$ > "$PID_FILE"
fi

# Source the keychain system
source ~/.keychain/`hostname`-sh

# Create necessary directories if not already created
ssh $dstsrv mkdir -pv $dstdir/$srcsrv
ssh $dstsrv chmod -v 700 $dstdir/$srcsrv

# Delete any snapshots, on the destination server, older than 30 days
ssh $dstsrv "find $dstdir/$srcsrv/ -maxdepth 1 -type d -ctime +30 -name \* -print | xargs rm -Rvf"

# Delete all incompleted transfers (if any)
ssh $dstsrv rm -Rvf $dstdir/$srcsrv/*.INCOMPLETE

# SSH to destination server and get the name of the newest synched directory
last=`ssh $dstsrv "find $dstdir/$srcsrv/ -maxdepth 1 -type d -name '*' -printf '%f\n' | sort -n | tail -n 1"`

# Set the new sync directory, YYYYMMDD-HHMM-DAYNAME
this=`date +"%Y%m%d-%H%M-%A"`

# Do the magic stuff and sync the local folders, /etc /home and /root, to the destination server
# (if it for some reason hangs in the files, e.g. NFS or internet dies or alike, it times
# out with an error after 60 seconds)
rsync -e ssh --link-dest=$dstdir/$srcsrv/$last -avzP --timeout=60 $srcdir $dstsrv:$dstdir/$srcsrv/$this.INCOMPLETE

# If rsync completes with no errors, mark this new folder as completed
if [ $? -eq 0 ]
then
  ssh $dstsrv mv -v $dstdir/$srcsrv/$this.INCOMPLETE $dstdir/$srcsrv/$this
fi

# Remove PID file
if [ -f "$PID_FILE" ]
then
  rm -vf "${PID_FILE}"
fi

Sådan ser destinationen ud og læg mærke til hvad mapperne fylder:

[root@howto ~]# ls -l /rsync/pri.howto.dk/
total 40
drwxr-xr-x 11 root root 4096 Sep 11 21:25 20070911-2124-Wednesday
drwxr-xr-x 11 root root 4096 Sep 11 22:12 20070911-2211-Wednesday
drwxr-xr-x 11 root root 4096 Sep 11 22:20 20070911-2219-Wednesday
drwxr-xr-x 11 root root 4096 Sep 11 22:38 20070911-2237-Wednesday
drwxr-xr-x 11 root root 4096 Sep 12 10:22 20070912-1021-Wednesday
drwxr-xr-x 11 root root 4096 Sep 13 04:03 20070913-0403-Thursday
drwxr-xr-x 11 root root 4096 Sep 14 04:04 20070914-0403-Friday
drwxr-xr-x 11 root root 4096 Sep 15 04:03 20070915-0402-Saturday
drwxr-xr-x 11 root root 4096 Sep 16 04:03 20070916-0402-Sunday
[root@howto ~]#
[root@howto ~]# du -sh /rsync/pri.howto.dk/20070916-0402-Sunday/
11G /rsync/pri.howto.dk/20070916-0402-Sunday/
[root@howto ~]#
[root@howto ~]# du -sh /rsync/pri.howto.dk/20070915-0402-Saturday/
11G /rsync/pri.howto.dk/20070915-0402-Saturday/
[root@howto ~]#
[root@howto ~]# du -sh /rsync/pri.howto.dk/
12G /rsync/pri.howto.dk/

Hver mappe fylder cirka 11GBytes mens selve hovedmnappen stadigt kun fylder cirka det samme!
 




dm-crypt med LUKS
Oprettet: 2007-12-23, Sidst rettet: 2007-12-24

Jeg har en USB disk hvorpå jeg gemmer backup af mine data. I tilfælde af tyveri af min USB disk, vil jeg gerne være forholdsvis sikker på, at mine data ikke falder i de forkerte hænder. Derfor bliver hele disken krypteret og beskyttet af et password.
Husk nu at vælge et stærkt og langt password!

Nedenstående formatere jeg min 300GB Maxtor harddisk som sidder på /dev/sda.

[root@howto ~]# # Formatér harddisken med random data - det vil gøre det umuligt
[root@howto ~]# # at skelne rigtige data fra ingen data. Bemærk at en urandom
[root@howto ~]# # formattering tager LANG tid (cirka 48 timer for 300GB)!
[root@howto ~]# dd if=/dev/urandom of=/dev/sda
[root@howto ~]#
[root@howto ~]# # Kontroller at disse moduler er loadet:
[root@howto ~]# lsmod | grep "aes\|dm_crypt\|dm_mod"
dm_crypt   16201 0
aes        31617 0
dm_mod     58201 10 dm_crypt,dm_multipath,dm_snapshot,dm_zero,dm_mirror

[root@howto ~]#
[root@howto ~]# # Opret en krypteret partition
[root@howto ~]# cryptsetup luksFormat /dev/sda
[root@howto ~]#
[root@howto ~]# # Map/aktivér den krypterede partition (_1_)
[root@howto ~]# cryptsetup luksOpen /dev/sda maxtor300
[root@howto ~]#
[root@howto ~]# # Formatér den krypterede partition til normal EXT3
[root@howto ~]# mkfs.ext3 /dev/mapper/maxtor300
[root@howto ~]#
[root@howto ~]# # Opret et mountpoint til den nye partition
[root@howto ~]# mkdir /maxtor300
[root@howto ~]#
[root@howto ~]# # Mount den nye partition (_2_)
[root@howto ~]# mount /dev/mapper/maxtor300 /maxtor300

Når USB disken skal mountes, skal man blot udføre _1_ og _2_:

[root@howto ~]# # Map/aktivér den krypterede partition (_1_)
[root@howto ~]# cryptsetup luksOpen /dev/sda maxtor300
[root@howto ~]#
[root@howto ~]# # Mount den nye partition (_2_)
[root@howto ~]# mount /dev/mapper/maxtor300 /maxtor300

Original kilde: http://www.howtoforge.com/ubuntu_dm_crypt_luks  




Oprette en LVM partition
Oprettet: 2008-05-13, Sidst rettet: 2008-08-22

Det anbefales, at benytte LVM (Logical Volume Manager) i så stor stil som muligt, da det giver en god fleksibilitet, da partitionen dermed nemt kan ændres i størrelse.

# Vis hvordan det kørende system ser ud inden oprettelsen
[root@localhost ~]# df -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb3             447G  7.5G  417G   2% /
/dev/sdb1             3.9G   48M  3.7G   2% /boot
none                  3.9G     0  3.9G   0% /dev/shm

# Vis partitions oplysningerne på den nye disk (der er ingen på denne)
[root@localhost ~]# fdisk -l /dev/sdc

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn't contain a valid partition table

# Initialisér disken til brug for LVM (brug --force hvis der har været andre LVM's på disken)
[root@localhost ~]# pvcreate [--force --force] /dev/sdc
  Physical volume "/dev/sdc" successfully created

# Opret ny Volume Group (vg0) - hvis man har flere diske, kan de angives efterfølgende
[root@localhost ~]# vgcreate vg0 /dev/sdc [/dev/sdd]
  Volume group "vg0" successfully created

# Vis hvor meget plads der er tilgængelig i den nye Volume Group
[root@localhost ~]# vgdisplay vg0 | grep Free
  Free PE / Size       238468 / 931.52 GB

# Opret ny Logical Volume (lv0) i vg0 Volume Group
[root@localhost ~]# lvcreate -l 238468 -n lv0 vg0
  Logical volume "lv0" created

# Formater den nye partition
[root@localhost ~]# mkfs.ext3 /dev/mapper/vg0-lv0

# Mount og indsæt i /etc/fstab
[root@localhost ~]# mount /dev/mapper/vg0-lv0 /mydir

# Vis hvordan det kørende system ser ud efter oprettelsen
[root@localhost ~]# df -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb3             447G  7.5G  417G   2% /
/dev/sdb1             3.9G   48M  3.7G   2% /boot
/dev/mapper/vg0-lv0   917G  104M  871G   1% /mydir
none                  3.9G     0  3.9G   0% /dev/shm

 




Udvide en eksisterende LVM partition med en ny disk
Oprettet: 2007-10-08, Sidst rettet: 2008-01-05

Hvis man mangler plads på sin eksisterende partition, er det meget nemt, at udvide med mere plads... hvis éns nuværende partition er oprettet med Logical Volume Manager (LVM). Forudsat at den nye disk er synlig for FDISK, kan man endda resize on-the-fly uden at man behøver genstarte sin server.

Nedenstående er oprettet i min VMWare Server (genialt og gratis), så jeg udvider kun med en lille 4GB virtuel disk, men det fungere på præcist samme måde som hvis jeg havde en ny 500GB disk.

# Vis hvordan det kørende system ser ud inden udvidelsen (size=5GB)
[root@localhost ~]# df -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      4.9G  2.4G  2.3G  52% /

# Vis partitions oplysningerne på den nye disk (der er ingen på denne)
[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

# Gå i FDISK og opret en ny partition (på den nye disk) med typen 8e (Linux LVM)
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-522, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522):
Using default value 522

Command (m for help): l

0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# Initialisér disken til brug for LVM
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

# Udvid volume group, VolGroup00, med den nye disk
[root@localhost ~]# vgextend VolGroup00 /dev/sdb
Volume group "VolGroup00" successfully extended

# Vis hvor meget volumen kan udvides med (skulle gerne cirka passe med størrelsen på den nye disk)
[root@localhost ~]# vgdisplay VolGroup00 | grep "Free PE"
Free PE / Size 127 / 3.97 GB

# Udvid disken, LogVol00, med det hele fra "Free PE"
[root@localhost ~]# lvextend -l +127 /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 9.00 GB
Logical volume LogVol00 successfully resized

# Aktivér ændringerne og udfør udvidelsen her-og-nu
# (på RHEL4 skal "resize2fs" erstattes af "ext2online")
[root@localhost ~]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2359296 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 2359296 blocks long.

# Vis hvordan disken ser ud efter udvidelsen (size=9GB)
[root@localhost ~]# df -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      8.8G  2.4G  5.9G  29% /

 




Netkort bonding/trunking
Oprettet: 2008-04-04, Sidst rettet: 2008-04-11

Nedenstående opsætning opsætter to netkort som værende ét netkort - dvs. at man får både dobbelt hastighed* og failover.

Bemærk at med dobbelt hastighed menes der, at én transmission maks kan være f.eks. 1Gbit men hvis der oprettes forbindelse til/fra flere hosts kan man få op til 2x1Gbit på samme tid, med 2 sessions.

# 1. Opret et nyt, virtuelt, netkort ved at oprette en ny fil:
[root@localhost ~]# joe /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=321.123.3.3
GATEWAY=321.123.3.1
NETWORK=321.123.3.0
NETMASK=255.255.255.0
USERCTL=no
IPV6INIT=no

# 2. Tilret eth0:
[root@localhost ~]# joe /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
HWADDR=00:1A:64:98:91:aa

# 3. Tilret eth1:
[root@localhost ~]# joe /etc/sysconfig/network-scripts/ifcfg-eth1
# Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
HWADDR=00:1A:64:98:78:fb

# 4. Tlføj følgende linier til modprobe..conf:
[root@localhost ~]# joe /etc/modprobe.conf
alias bond0 bonding
options bonding miimon=100 mode=6

# 5. Reboot og test med iperf (kræver mindst to servere).

# 5a. Fra den nye bonded server:
[root@localhost ~]# iperf -s

# 5b. Fra to andre ikke-bonded servere:
[root@localhost ~]# iperf -t 120 -i 10 -f m -c 321.123.3.3
[root@localhost ~]# iperf -t 120 -i 10 -f m -c 321.123.3.3

 




IPTables og FTP
Oprettet: 2008-04-12, Sidst rettet: 2008-04-12

En ting man skal være opmærksom på, hvis man køre med FTP bag IPTables er, at der skal loades et par moduler. Ellers giver det ikke andet end problemer alt efter hvilke klienter der benyttes - med modulerne burde det være fikset.

# Tilføj "ip_nat_ftp ip_conntrack_ftp" til "IPTABLES_MODULES" linien i /etc/sysconfig/iptables-config:
[root@localhost ~]# joe /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_nat_ftp ip_conntrack_ftp"

[root@localhost ~]# service iptables restart
Flushing firewall rules:                                   [ OK ]
Setting chains to policy ACCEPT: filter                    [ OK ]
Unloading iptables modules:                                [ OK ]
Applying iptables firewall rules:                          [ OK ]
Loading additional iptables modules: ip_conntrack_netbios_n[ OK ]_ftp ip_conntrack_ftp

Kilde: http://linux.derkeiler.com/Mailing-Lists/Fedora/2004-12/2434.html

 




(U)nødvendige services
Oprettet: 2008-04-15, Sidst rettet: 2008-05-20

Efter en standard Red Hat installation plejer jeg, at disable en helt masse unødvendige services og enable andre.

# Disable følgende (for mig) ubrugelige services (copy/paste):
[root@localhost ~]#
service apmd stop
service arptables_jf stop
service avahi-daemon stop
service avahi-dnsconfd stop
service bluetooth stop
service canna stop
service cups stop
service gpm stop
service hidd stop
service iiim stop
service ip6tables stop
service mcstrans stop
service mdmonitor stop
service pcscd stop
service restorecond stop
service setroubleshoot stop
service xfs stop
chkconfig apmd off
chkconfig arptables_jf off
chkconfig avahi-daemon off
chkconfig avahi-dnsconfd off
chkconfig bluetooth off
chkconfig canna off
chkconfig cups off
chkconfig gpm off
chkconfig hidd off
chkconfig iiim off
chkconfig ip6tables off
chkconfig mcstrans off
chkconfig mdmonitor off
chkconfig pcscd off
chkconfig restorecond off
chkconfig setroubleshoot off
chkconfig xfs off

# Enable følgende (for mig) nødvendige services (copy/paste):
[root@localhost ~]#
service ntpd start
chkconfig --level 35 ntpd on
service ipmi start
chkconfig --level 35 ipmi on

# Tilret følgende:
[root@localhost ~]# joe /etc/modprobe.conf
alias net-pf-10 off
[root@localhost ~]# joe /etc/sysconfig/network
NETWORKING_IPV6=no

Kilde: http://maimon-it.blogspot.com/

 




Harddisk tests
Oprettet: 2008-04-16, Sidst rettet: 2008-04-17

Nedenstående har jeg foretaget en sammenligning mellem forskellige RAID systemer og disktyper.
Hardwaren er identisk på SCSI siden (IBM x3650 med ServeRAID 8k controller og 4x15KRPM diske) mens SATA serveren er en IBM x3550 med en MegaRAID SAS controller og 12x7K2RPM diske. De fire servere køre alle RHEL4 og er installeret identisk.


# Skrive-test, 1x100GB, IBM x3650 (ServeRAID), RAID-0, SCSI diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=/dev/zero of=storfil.bin bs=1048576000 count=100
real   5m34.456s
(306,59MB/sek.)

# Skrive-test, 1x100GB, IBM x3650 (ServeRAID), RAID-10, SCSI diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=/dev/zero of=storfil.bin bs=1048576000 count=100
real   12m02.116s
(141,83MB/sek.)

# Skrive-test, 1x100GB, IBM x3650 (ServeRAID), RAID-5, SCSI diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=/dev/zero of=storfil.bin bs=1048576000 count=100
real   12m26.307s
(137,27MB/sek.)

# Skrive-test, 1x100GB, IBM x3550 (MegaRAID), RAID-5, SATA diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=/dev/zero of=storfil.bin bs=1048576000 count=100
real   55m47.072s
(30,59MB/sek.)

# Læse-test, 1x100GB, IBM x3650 (ServeRAID), RAID-0, SCSI diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=storfil.bin of=/dev/zero
real   11m5.265s
(153,98MB/sek.)

# Læse-test, 1x100GB, IBM x3650 (ServeRAID), RAID-10, SCSI diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=storfil.bin of=/dev/zero
real   11m23.781s
(149,93MB/sek.)

# Læse-test, 1x100GB, IBM x3650 (ServeRAID), RAID-5, SCSI diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=storfil.bin of=/dev/zero
real   11m11.127s
(152,61MB/sek.)

# Læse-test, 1x100GB, IBM x3550 (MegaRAID), RAID-5, SATA diske (to tests og taget gennemsnit):
[root@localhost ~]# time dd if=storfil.bin of=/dev/zero
real   12m48.397s
(133,51MB/sek.)


Nu vil jeg ikke danne nogen konklusion, da dette er en _meget_ simpel énvejstest (én maskine som kun skriver eller læser)!
Alligevel er jeg noget overrasket over, at SATA kan læse så hurtigt men også at SCSI RAID-0 er så hurtig til at skrive.

 




Ændre default kernel
Oprettet: 2008-08-27, Sidst rettet: 2008-08-27

Hvis man vil ændre en given kernel til at være default under opstart/reboot.


# Edit /boot/grub/grub.conf:
[root@localhost ~]# joe /boot/grub/grub.conf

# "default" ændres til den kernel man gerne vil loade. # F.eks. 0 = den første/nyeste og 2 = den sidste/ældste i nedenstående eksempel.
# "timeout" er hvor mange sekunder splashscreen skal vises før den vælger default.


default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-92.1.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-92.1.1.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-92.1.1.el5.img

title Red Hat Enterprise Linux Server (2.6.18-92.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-92.el5.img
title Red Hat Enterprise Linux Server (2.6.18-53.1.19.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-53.1.19.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-53.1.19.el5.img

# .. eller:

default=2
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-92.1.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-92.1.1.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-92.1.1.el5.img
title Red Hat Enterprise Linux Server (2.6.18-92.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-92.el5.img
title Red Hat Enterprise Linux Server (2.6.18-53.1.19.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-53.1.19.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-53.1.19.el5.img



 




Små nyttige shell kommandoer

SED
sed "s/search/replace/" fileSøg og erstat
sed "s|/bin/bash|/bin/nologin|" /etc/passwdBrug anden seperator hvis søgning indeholde slash
sed "3,5s/10.0.0./20.0.0./" fileSøg og erstat fra linie 3 til 5
sed "3,\$s/10.0.0./20.0.0./" fileSøg og erstart fra og med linie 3 og resten af filen
 
AWK
awk '{ print strftime("%Y-%M-%d %H:%m:%S",systime()) }'Print dato fra AWK
awk -F\\t '{print $1,$3}' file | sort -t . -k1,1n -k2,2n -k3,3n -k4,4nSortere på IP adresse og tag kolonne 1 og 3 (adskilt af tabulator)
sort +5 +2 txtfile | awk '{print "ip(" ++i ") = \"" $1"\"" " '\'' " $3 " " $5 " " $6}'Sortere på kolonne 2 og 5 IP adresse
 
Misc
chmod -R a+rX main_dirSætter execute rettigheder rekursivt på Everyone, hvis den allerede ér sat i forvejen på enten User eller Group
screen /dev/ttyS0 9600Tilgå COM1 med 9600 baud (kill med CTRL+a og SHIFT+k i screen)