piątek, 21 stycznia 2011

FreeBSD - konfiguracja VLAN

Wirtualna sieć lokalna (VLAN) jest wydzieloną logiczną siecią komputerową w ramach innej, większej sieci fizycznej. (ang. Virtual Local Area Network, VLAN) – sieć komputerowa wydzielona logicznie w ramach innej, większej sieci fizycznej.



Oznacza to, że za pomocą tego samego fizycznego połączenia sieciowego, niezależnie od lokalizacji, host może być podpięty do różnych podsieci.

Jak to skonfigurować w praktyce?

Na switchu należy skonfigurować port, do którego podpięty jest host:


SW1 (config)#interface gigabitethernet 0/1
SW1 (config-if)#switchport mode trunk
SW1 (config-if)#switchport trunk encapsulation dot1q
SW1 (config-if)#switchport trunk allowed vlan remove 2-1001
SW1 (config-if)#switchport trunk allowed vlan add 3,4
SW1 (config-if)#end



Po stronie hosta należy wykonać poniższe operacje.

1) Załadować moduł vlan ( jeżeli nie jest wkompilowany).

Można zrobić to na 2 sposoby:
       a) Dodać linijkę do /boot/loader.conf:


if_vlan_load="YES"


       b) Uruchomić z "palca":

kldload /boot/kernel/if_vlan.ko


2) Stworzyć interface vlanowy:

[root@] ~ # ifconfig vlan5 create


3) Przypisać adres ip do interfaceu
ifconfig {vlan-name} {ip-address} netmask {subnet-mask} vlan {vlan-id} vlandev {physical-interface}


[root@] ~ # ifconfig vlan5 172.16.79.137 netmask 255.255.255.0 vlan 5 vlandev em2

Poprawnie utworzony vlan powinien wyświetlić po komendzie ifconfig:

vlan5: flags=8843 metric 0 mtu 1500
    options=3
    ether 08:00:27:b2:30:0a
    inet 172.16.79.137 netmask 0xffffff00 broadcast 172.16.79.255
    media: Ethernet autoselect (1000baseT )
    status: active
    vlan: 5 parent interface: em2


Aby zapisać na stałe konfigurację, w pliku /etc/rc.conf należy dokonać wpisów:

cloned_interfaces="vlan5"
ifconfig_vlan5="inet  172.16.79.137 netmask 255.255.255.0 vlan 5 vlandev em2"

środa, 12 stycznia 2011

MySQL - clear table from data

Sometimes you need to clear your database tables from datas without interference  into tables structure.
Below is some trics how to do this:

- simple dump & restore
mysqldump --add-drop-table --no-data dbname -u root -p -h dbhost > dbnamebackup.sql


mysql -u root -p -h dbhost < dbnamebackup.sql


- clever (root permission)
mysql -u root -p -h dbhost -e 'truncate table table;'



- sophistiocated (root permission )- using procedure
DELIMITER $$
 CREATE PROCEDURE `delete_all_tables`(IN dbname varchar(255))
BEGIN

DECLARE done BOOLEAN DEFAULT 0;
DECLARE cmdtmp VARCHAR(2500);

DECLARE cmd CURSOR
FOR
SELECT CONCAT('TRUNCATE TABLE ',dbname,'.',table_name) FROM information_schema.tables WHERE table_schema = dbname;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;

OPEN cmd;

REPEAT
    FETCH cmd INTO cmdtmp;
    SET @cmdtmp = cmdtmp;
    PREPARE doit FROM @cmdtmp;
    EXECUTE doit;
    DROP PREPARE doit;

UNTIL done END REPEAT;

CLOSE cmd;

END; $$

DELIMITER ;


How to use?
mysql> call mysql.delete_all_tables("databasename");

niedziela, 9 stycznia 2011

NIC bonding i agregacja linków

Co zrobić aby kilka interface'ów stało się jednym wirtualnym i były odporne na błędy?
Odpowiedź jest prosta użyć interfacu lagg.

Poniżej krótki how-to:

Załadować moduł if_lagg

[root@] ~ # kldload /boot/kernel/if_lagg.ko

Stworzyć nowy interface za pomocą ifconfiga

[root@] ~ # ifconfig lagg0 create
[root@] ~ # ifconfig lagg0 up laggproto failover laggport em0 laggport em1
 
W rezultacie otrzymamy :

lagg0: flags=8843 metric 0 mtu 1500
    options=9b
    ether 08:00:27:a8:15:2f
    media: Ethernet autoselect
    status: active
    laggproto failover
    laggport: em1 flags=1c
    laggport: em0 flags=1c



Teraz wystarczy przypisać adres IP:

[root@] shamrock # ifconfig lagg0 172.16.79.132 netmask 255.255.255.0

lagg0: flags=8843 metric 0 mtu 1500
    options=9b
    ether 08:00:27:a8:15:2f
    inet 172.16.79.132 netmask 0xffffff00 broadcast 172.16.79.255
    media: Ethernet autoselect
    status: active
    laggproto failover
    laggport: em1 flags=0<>
    laggport: em0 flags=1
 


Żeby całość zachowała sie po restarcie w konfiguracji /etc/rc.conf należy wpisać:




ifconfig_em0="up"
ifconfig_em1="up"

cloned_interfaces="lagg0"

ifconfig_lagg0="laggproto failover laggport em0 laggport em1"

ipv4_addrs_lagg0="172.16.79.132/32"

defaultrouter="172.16.79.2"

Natomiast w /boot/loader.conf musi się znaleźć :


if_lagg_load="YES"

poniedziałek, 3 stycznia 2011

Montowanie partycji za pomocą UUID

Czasami zdarza się tak, że po upgradzie Linuxa ( w tym przypadku Debiana) zmienia się określenie dysku np.: zamiast /dev/sda jest /dev/sdb

Można temu zaradzić montując partycje za pomocą UUID (Universally Unique Identifier).

Jak to zrobić ?

1) Sprawdzić jakie partycje mamy zamontowane:

test:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
#              
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    errors=remount-ro 0       1
/dev/sda9       /home           ext3    defaults        0       2
/dev/sda8       /tmp            ext3    defaults        0       2
/dev/sda5       /usr            ext3    defaults        0       2
/dev/sda6       /var            ext3    defaults        0       2
/dev/sda7       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

2) Wyświetlić atrybuty partycji znajdujących się w /etc/fstab

test:~# cat fstab | grep -v ^# | awk '{ system("blkid "$1)}'
/dev/sda1: UUID="d4cd3659-5e22-41c1-a440-db4012289974" TYPE="ext3"
/dev/sda9: UUID="96f1f6ba-d486-437d-ace3-b3bc90ff7593" TYPE="ext3"
/dev/sda8: UUID="2a3bc90d-1e59-4535-a722-0e1239a896e1" TYPE="ext3"
/dev/sda5: UUID="43e19d71-b2df-4d85-a2b2-8e24400b6f7f" TYPE="ext3"
/dev/sda6: UUID="5d615c76-22f8-4710-b530-0f16f164cce9" TYPE="ext3" 

3) Zamienic wpisy w /etc/fstab tak aby korzystać z UUID

test:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
#              
proc            /proc           proc    defaults        0       0
UUID=d4cd3659-5e22-41c1-a440-db4012289974       /               ext3    errors=remount-ro 0       1
UUID=96f1f6ba-d486-437d-ace3-b3bc90ff7593       /home           ext3    defaults        0       2
UUID=2a3bc90d-1e59-4535-a722-0e1239a896e1       /tmp            ext3    defaults        0       2
UUID=43e19d71-b2df-4d85-a2b2-8e24400b6f7f       /usr            ext3    defaults        0       2
UUID=5d615c76-22f8-4710-b530-0f16f164cce9       /var            ext3    defaults        0       2
/dev/sda7       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

4) Na koniec jeszcze tylko zmiana w menu.lst dla gruba


title        Debian GNU/Linux, kernel 2.6.26-2-amd64
root        (hd0,0)
kernel        /boot/vmlinuz-2.6.26-2-amd64 root=UUID=d4cd3659-5e22-41c1-a440-db4012289974 ro quiet
initrd        /boot/initrd.img-2.6.26-2-amd64

title        Debian GNU/Linux, kernel 2.6.26-2-amd64 (single-user mode)
root        (hd0,0)
kernel        /boot/vmlinuz-2.6.26-2-amd64 root=UUID=d4cd3659-5e22-41c1-a440-db4012289974 ro single
initrd        /boot/initrd.img-2.6.26-2-amd64