21 Nisan 2008 Pazartesi

Günün İpuçu Mirror'ı bozuk disklerde metadb: $HOSTNAME: /dev/md/admin: No such file or directory hatasının çözümü

Solaris 9 sunucusu üzerinde, beklenmeyen ani elektrik kesintisinden sonra sunucu açılmazsa ve mirror'ı kaldırdıktan sonra yeniden mirror oluşturmak istendiginde aşağıdaki hata alınmış ise, çözüm aşağıdaki şekilde olacaktır.

metadb: $HOSTNAME: /dev/md/admin: No such file or directory

Bu hatanın giderilmesi ve mirrorların yeniden oluşturulması için aşağıdaki işlemler root kullanıcısı ile yapılmıştır.

1. sistem solaris 9 bootable bir DVD ve/veya CD ile single modda boot edilir.

ok> boot cdrom -s

2. sunucu üzerinde bulunan açılış disklerinden bir tanesi seçilerek disk "a" olarak mount edilir.

mount /dev/dsk/c1t0d0s0 /a

3. mount tamamlandıktan sonra disk üzerinde bulunan vfstab dosyası yeniden düzenlenir.

vi /a/etc/vfstab

device device mount FS fsck mount mount
to mount to fsck point type pass at boot options
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c1t0d0s1 - - swap - no -
/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no logging
/dev/md/dsk/d4 /dev/md/rdsk/d4 /vol3 ufs 2 yes
logging
swap - /tmp tmpfs - yes -

bu dosya üzerinde md ile başlayan satırlar yerine disklerin adresi yazılır
/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no logging satırı yerine
/dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0 / ufs 1 no logging bu şekilde yeni düzenlenmiş hali yazılır.

4. sunucu üzerinde bulunan /etc/system dosyası yeniden düzenlenir
vi /a/etc/system
Begin MDD root info (do not edit)
forceload: misc/md_trans
forceload: misc/md_raid
forceload: misc/md_hotspares
forceload: misc/md_sp
forceload: misc/md_stripe
forceload: misc/md_mirror
forceload: drv/pcisch
forceload: drv/qlc
forceload: drv/fp
forceload: drv/ssd
rootdev:/pseudo/md@0:0,10,blk
End MDD root info (do not edit)

dosyasındaki md ile ilgili bu satırlar silinir.

5. sunucu reconfigure modda reboot edilir.

reboot — -r

6. Sunucu tek diskle açıldıktan sonra yine büyük ihtimalle her meta komutunda aşagıdaki hatayı verecektir
metadb
metadb: $HOSTNAME: /dev/md/admin: No such file or directory

7. Problem kernel dosyalarında bozukluktan olusabilmektedir. Bunun için /kernel/drv altında bulunan md.conf dosyasının düzgün olarak bulunup bulunmadıgına bakılır.

ls -al /kernel/drv/md.conf
-rw-rr 1 root sys 343 Mar 12 16:40 md.conf

bu dosya yok ise yedeklerden bu dosya kurtarılmalıdır. Yedek alınmadı ise benzer bir sunucudan da kopyalanabilir dosya bir satırdan oluşmaktadır.

8. md.conf dosyası yukarıdaki şekilde düzgün olarak oluşturulduktan sonra devfsadm komutu ile sistem yeniden taranır.

devfsadm -Cv

bu komutun sonunda düzgün bir şekilde md linklerinin oluştugu görülür.

Mirror yapısı yeniden meta komutları ile oluşturulur. Sunucu mirrorlu disk ile yeniden başlatılabilir.


Bu felaket durumu benim bayağı bir vaktimi aldı problemi çözmemde yardımcı olan arkadaşlarıma teşekkür ederim.

26 Şubat 2008 Salı

GÜNÜN İPUÇU Unix de Kullanıcı ile ilgili komutlar

Solaris 9 sisteminde ve/veya Solaris 10 sisteminde kullanılan bazı unix komutları ve örnek kullanımları aşağıdaki gibidir.

Kullanıcı ile ilgili komutlar

login
Unix sistemlerde her kullanıcının sadece kendisine ait olan bir login ID si ve şifresi vardır. Bu ID ler sistem yöneticileri tarafından belirlenir. Login komutu sisteme ilk girişte kullanıcı ID si ve şifresini sorar. Doğru ID ve şifre girildiğinde Unix sistemin sizin için belirlenen çalışma kabuğu çalıştırılır. Solaris sistemde bash kabuk aktif edilmişse her kullanıcı için bir adet .profile dosyası oluşturulmuştur. Login olunduğunda son login olunan zaman, mail iniz varsa bu mailler ve yönetici uyarıları ile karşılaşabilirsiniz.


rlogin
Ağ üzerinde bulunan diğer unix sunuculara ulaşmak için kullanılır. Fakat bu komut ile çalışabilmek için bağlanılacak sunucuda gerekli izinlerin ayarlanmış olması gerekmektedir.


passwd
Sunucu sistemi kurulduğunda yöneticiniz size geçiçi bir şifre atayacaktır. passwd komutu ile bu şifre kullanıcı tarafından değiştirilebilir.

#passwd
yeni şifre istenir daha sonra teyid için yeni şifre yeniden girilir her iki yazımda da doğru yazıldı ise şifre değiştirilir. sistem yöneticisi tanımlamış olduğu tüm kullanıcıların şifrelerini değiştirebilir. Şifrenizi hızlı bir şekilde girebileceğiniz kombinasyonlardan oluşturunuz.


exit
Sunucu sistemden çıkmak için kullanılır. mutlaka açılan oturum kapatılarak sistem terkedilmelidir.

24 Şubat 2008 Pazar

GÜNÜN İPUÇU GENEL UNIX (SOLARIS) DOSYA YAPISI

Unix de her şey bir dosyadır. (komutlar, belgeler, başka dosya türleri)

Solaris de üzerinde bulunan dosyalarının yapısını her işletim sistemi gibi bilmektedir. Bu dosyalar üzerinde her türlü işlem yapılabilmektedir. Yapısını bilemediği dosyalar hakkında ise bilgi verebilmekte, bu dosyaları taşıyabilmekte, silebilmektedir.


Unix dosya sistemi en basit anlamıyla bir ağaç yapısı şeklindedir. Bir kök den dallara buradanda yapraklara ayrılan bir ağaç ile Unix işletim sisteminin dosya yapısı birbiriyle aynıdır.

Dosya ve dizinleri adlandırmak

/ ve/veya /root
:root dizini solaris de ve diğer unix lerde Kök dizindir. Dosya sisteminde bulunan tüm folderların ve dosyaların en üst dizinidir.
/bin
: Bu dizinde tüm Unix komutları bulunmaktadır.

/dev
: Klavye, printer vb. karakter ve blok kaynaklı sürücüler için dosyaların saklandığı dizin Bu dizinde bulunan null dosyası çıktıyı (nowhere) boşluğa yönlendirmektedir.

/etc
:Sistemin yapılandırma dosyaları ve komutları bu dizinin altında bulunmaktadır.

/lib
: C gibi çeşitli programlama dillerine ait libraryler bu dizinde bulunmaktadır.

/lost+found
: Bu dizin sistem normal şekilde kapatılmadı ise kullanılacak olan internal dosyaların bulundugu dizindir her alt dizin için bir tane yaratılır.

/home
: Kullanıcı ana dizinleriburada oluşturulur.

/usr
:Bu dizinin altında çok farklı dizinler vardır bunlar adm, bin, etc, include gibi bunlarda sistemde çalıştırılabilen komutları çeşitli programlama dillerine ait başlıkları ve sistemle ilgili çeşitli logların bulunduğu alt dizinlerdir.


Solaris de ve genel olarak unixlerdeki dosya tipleri
1. Normal dosyalar
heada.c :C programlama dilinde yazılmış program kaynak dosyası
parti.doc: Parti çağrısı içeren dokuman dosyası
liste.sh: script dosyası
2. Dizin dosyaları
. (tek nokta) Bulunduğumuz dizini tanımlar
..(iki tane nokta) bir üst dizini tanımlar
3. Karakter ve blok aygıt dosyaları
klavye, yazıcı, yedekleme cihazları, harici diskler, ekranlar bunlar karakter ve blok aygıt dosyalarıdır.
4. Soketler
Soket iki bilgisayar arasında iletişimi sağlayan uygulama yazılımlarıdır. (API Application programming Interface) değişik bir anlatımla soketler ağ giriş çıkış işlemlerini gerçekleştirir. bağlantılı ve bağlantısız olmak üzere ikiye ayrılırlar. bağlantılı soketlerde her iki bilgisayarın adresi kullanılarak soket yaratılır ve bu soket üzerinden uygulamalar bilgi aktarır. Bağlantısız sokette ise her bilgi gideceği adresi bilmek zorundadır. send ,write komutları verileri bağlanmış bir soket araçılığı ile aktarır. send to , sendmsg ise verileri bağlantısız bir soket araçılığıyla aktarır.
5. Simgesel ve gerçek bağlar
Gerçek bağlarda orjinal dosya ve bağ kurulmuş dosya adı aynı fiziksel dosyayı göstermektedir.
simgesel bağlarda ise iki dosya vardır birisi gercek dosya diğeri ise orjinal dosyanın adını içeren bağlı dosyadır. Simgesel bağın önemli bir kısıtlaması ise özgün dosyanın iptal edilebilmesi ve bunun sonucu olarakda hiç bir veri içermeyen simgesel bağlı bir dosya sistemde çöp olarak kalacaktır.

GÜNÜN İPUÇU GENEL UNIX (SOLARIS) KOMUTLARI

Solaris 9 sisteminde ve/veya Solaris 10 sisteminde kullanılan bazı unix komutları ve örnek kullanımları aşağıdaki gibidir. Aslında bu komutların nasıl kullanılacağını birer örnek ile de açıklama isterdim fakat zamanım olmadığı için bu şekilde özet bir tablo olarak yayınladım. Fırsat buldukça bu komutlara açıklamalarını nasıl kullanılabileceklerinin örneklerini eklemeye çalışacağım.

Kullanıcı ile ilgili komutlar
ssh

Komutları aramak
which
whence
where

Yardım sayfaları
man


Yönetim ile ilgili komutlar
install
shutdown
ulimit
umask


Proseslerle ilgili komutlar
kill
nice
ps
jobs
wait
nohup
sleep

iletişim komutları
cu
ftp
mailx
talk
vacation
write

Dosyaların işlenmesi ve karşılaştırılması
cmp
comm
diff
diff3
dircmp
sdiff
touch
chmod
chgrp
chown
rm
mv
cp
cat
rcp
ln
mkdir
rmdir
ls
find
file
more
less
tail
head
wc
read
od
pg
tee
vi
egrep
fgrep
grep
strings

yazıcılarla ilgili komutlar
cancel
lp
pr
lpstat


zamanlama komutları
date
timex
at
atq
crontab


Verilerin saklanması
compress
cpio
dd
pack
pcat
tar
uncompress
unpack
zcat

Durum komutları
date
env
iostat
sar
uname
uptime
vmstat

Metin komutları
cut
ex
fmt
fold
join
paste
sort
tr
uniq
sed

banner
bc
cal
calendar
clear
time
xargs

9 Şubat 2008 Cumartesi

GÜNÜN İPUÇU SSH connection larda " unable to initialize mechanism library" hatası

SSH connection larda " unable to initialize mechanism library" hatasını düzeltmek için aşağıdaki satırlar
/etc/ssh/sshd_config ve /etc/ssh/ssh_config dosyasına eklenir.

echo ' # " unable to initialize mechanism library"
GSSAPIAuthentication no
GSSAPIKeyExchange no
GSSAPIStoreDelegatedCredentials no ' >> /etc/ssh/sshd_config

echo ' GSSAPIAuthentication no
GSSAPIKeyExchange no ' >> /etc/ssh/ssh_config

ve ssh servisi restart edilir.

/etc/init.d/sshd restart

13 Ocak 2008 Pazar

GÜNÜN İPUÇU SUN SUNUCULARDA INTERNAL RAID DISKLERDEN HERHANGİ BİR TANESİNİN DEĞİŞTİRİLMESİ

Sun 880 ve /veya 890 serverlar da bulunan dört adet veya daha fazla internal disk ve Sun-D2 disk storageların üzerinde bulunan diskler software RAID-5 konfigrasyonun da kullanılabilmektedir. Bu disklerde global spare disk bırakılmadığı zamanlar, herhangi bir disk arızalandığında veri kaybı olmaması için o diskin sağlam bir disk ile ivedilikle değiştirilmesi gerekmektedir. Bunun için aşağıdaki işlemler root user'ı tarafından uygulanır.


Öncelikle arızalı diskin üzerindeki database silinmelidir.

# metadb -d c# t# d# s#

Disk cikarilmadan önce işletim sistemine aşağıdaki komut ile diskin cıkarılacağı belirtilir.

# cfgadm -c unconfigure c#::dsk/c#t#d#

Bozuk Hard Disk yuvasından çıkartılır ve yeni hard disk yuvaya takılır. Diskin sistem tarafından algılanması için aşağıdaki komutlar uygulanır.

#cfgadm -c configure c#::dsk/c#t#d#
# cfgadm -al

Format komutu ile diskin partitionlari diger RAID-5 grubundaki disklerle aynı şekle getirilir. Bundan sonraki komutlarla yeni takılan diskin senkronize olması sağlanır.

# metadevadm -u c#t#d#
# metadb -a c#t#d#s#
#metareplace -e c#t#d#s#

Bundan sonra metastat komutu ile senkronizasyonun tamamlanıp tamamlanmadığına bakılır.
aşağıda sun 880 sunucu üzerinde bu işlemleri yapılış sırası görülmektedir.


# format
AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@1f,4000/scsi@3/sd@0,0
1. c0t1d0
/pci@1f,4000/scsi@3/sd@1,0
2. c0t2d0
/pci@1f,4000/scsi@3/sd@2,0
3. c0t3d0
/pci@1f,4000/scsi@3/sd@3,0

Disklerin konfigrasyon bilgileri alınır.

# cfgadm -al
Ap_Id Type Receptacle Occupant Condition
c0 scsi-bus connected configured unknown
c0::dsk/c0t0d0 disk connected configured unknown
c0::dsk/c0t1d0 disk connected configured unknown
c0::dsk/c0t2d0 disk connected configured unknown
c0::dsk/c0t3d0 disk connected configured unknown

Metadb komutu ile databaselerin nerelerde bulunduguna bakılır.

# metadb
flags first blk block count
a u 16 8192 /dev/dsk/c0t0d0s7
a u 16 8192 /dev/dsk/c0t1d0s7
a u 16 8192 /dev/dsk/c0t2d0s7
a u 16 8192 /dev/dsk/c0t3d0s7

metastat komutu ile değiştirilecek diskin üzerindeki alt mirror grupları belirlenir.

#metastat
d3: RAID
State: Needs Maintenance
Invoke: metareplace d3 c0t2d0s7
Interlace: 32 blocks
Size: 2077992 blocks (1014 MB)
Original device:
Size: 2081984 blocks (1016 MB)
Device Start Block Dbase State Reloc Hot Spare
c0t1d0s5 9754 No Okay Yes
c0t2d0s5 9754 No Maintenance Yes
c0t3d0s5 9754 No Okay Yes

Device Relocation Information:
Device Reloc Device ID
c0t0d0 Yes id1,sd@SSEAGATE_ST318203LSUN18G_LR795377000010210UN3
c0t1d0 Yes id1,sd@SFUJITSU_MAG3182L_SUN18G_00526873____
c0t2d0 Yes id1,sd@SFUJITSU_MAG3182L_SUN18G_00526202____
c0t3d0 Yes id1,sd@SFUJITSU_MAG3182L_SUN18G_00526842____

bozuk diskin üzerindeki database silinir.

# metadb -d c0t2d0s7

Işletim sisteminin diski unconfigure etmemesi sağlanır.

# cfgadm -c unconfigure c0::dsk/c0t2d0

Bozuk disk yuvasından çıkartılır ve sağlam disk yuvasına takılır. Işletim sisteminin yeni diski alğılayabilmesi için aşağıdaki komutlar çalıştırılır.

# cfgadm -c configure c0::dsk/c0t2d0

# cfgadm -al
Ap_Id Type Receptacle Occupant Condition
c0 scsi-bus connected configured unknown
c0::dsk/c0t0d0 disk connected configured unknown
c0::dsk/c0t1d0 disk connected configured unknown
c0::dsk/c0t2d0 disk connected configured unknown
c0::dsk/c0t3d0 disk connected configured unknown

format komutu ile yeni takılan diskin slice yapısı digger disklerle aynı seviyeye getirilir.
# metadevadm -u c0t2d0

Eski disk device bilgisi
id1,sd@SFUJITSU_MAG3182L_SUN18G_00526202____
Yeni disk device bilgisi
id1,sd@SSEAGATE_ST318203LSUN18G_LR7943000000W70708e0

Siline database ve alt mirror grupları yeniden oluşturulur.
# metadb -a c0t2d0s7
# metareplace -e d3 c0t2d0s5

Belli bir sure sonra metastat komutu ile bakıldığında aşağıdaki şekilde sistemin senkronize oldugu görülür

# metastat
d3: RAID
State: Okay
Interlace: 32 blocks
Size: 2077992 blocks (1014 MB)
Original device:
Size: 2081984 blocks (1016 MB)
Device Start Block Dbase State Reloc Hot Spare
c0t1d0s5 9754 No Okay Yes
c0t2d0s5 9754 No Okay Yes
c0t3d0s5 9754 No Okay Yes

Device Relocation Information:
Device Reloc Device ID
c0t1d0 Yes id1,sd@SFUJITSU_MAG3182L_SUN18G_00526873____
c0t2d0 Yes id1,sd@SSEAGATE_ST318203LSUN18G_LR7943000000W70708e0
c0t3d0 Yes id1,sd@SFUJITSU_MAG3182L_SUN18G_00526842

GÜNÜN İPUÇU DAHİLİ DİSKLERDEN HERHANGİ BİR TANESİNDE PROBLEM ÇIKTIĞINDA BU DİSKİN SAĞLAM BİR DİSK İLE DEĞİŞTİRİLMESİ

Dahili disklerden herhangi bir tanesinde problem çıktığında bu diskin sağlam bir disk ile değiştirilmesi aşamasında aşağıdaki işlemler sırayla gerçekleştirilir.
Öncelikle bozuk olan diskin bozuk olup olmadığı veya software ile düzeltilip düzeltilemeyecegi aşağıdaki komutla denenir. aşağıdaki tüm komutlar root user'ı ile uygulanır.
# metastat
d0: Mirror
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Needs maintenance
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 6295232 blocks (3.0 GB)
d10: Submirror of d0
State: Okay
Size: 6295232 blocks (3.0 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s0 0 No Okay Yes
d20: Submirror of d0
State: Needs maintenance
Invoke: metareplace d20 c0t2d0s0
Size: 6295232 blocks (3.0 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t2d0s0 0 No Maintenance Yes

metastat çıktısından anlaşılacağı üzere d20 submirror'ı bozulmuş.

#metareplace -f -e d0 c0t2d0s0
bu komut ile d20 submirror'ı d10 Submirror'ı ile sync edilmeye zorlanır. Eğer problem giderilmişve %100 sync olunmuşssa yazılımsal bir hata oluştugu düşünülebilir. Aksi takdirde sistem sync olmayacaktır. Diskler sync olmaz ise ilgili diskin değiştirilmesi için aşağıdaki işlemler uygulanır.

Öncelikle diskler mirror ise mirrordan çıkartılır.

# metadetach -f (-f means force)
Örnek :metadetach -f d10 d1
:metadetach -f d23 d2
#metaclear
Örnek :metaclear d1
:metaclear d2

#metastat
Volume gruba silinen disk üzerindeki alt mirror gruplarının dahil olmadığı görülür.

#cfgadm
Buradan alınan sonuç aşağıdaki komutta uygulanır.

# cfgadm -c configure c#::dsk/c#t#d#
Arızalı disk yuvasından çıkartılır. Sağlam disk boş yuvaya takılır. Aşağıdaki komut ile yeni takılan diskin işletim sistemi tarafından algılanması sağlanır. Disk tamamen kullanılamayacak durumda ise yerinden çıkarılma işlemi bu sırayla gerçekleşmeyecektir. Metadetach ve metaclear komutları farklı hatalar vererek olumsuz şekilde sonuçlanabilmektedir. Bu durumda arızalı disk seri numarası kontrol edilerek yerinden sökülür. Yerine yeni disk takılır. Bu durumda metadb silinir. Yeni diskin üzerinde meta db aşağıdaki komutla yaratılır.

# devfsadm -C

Bundan sonra sistem yeni diski tanıdığı format komutu ile görülür. Seri numarası fiziksel olarak kontrol edilmelidir.

# metadevadm

Format komutu ile yeni takılan diskin yapısı mirrorlu diskin yapisi ile ayni hale getirilir. Daha sonra mirrordan ayrılan parçalar yeniden oluşturulur.

#metadb -a c#t#d#s#

# metainit 1 1 c# t# d# s#

Örnek:
# metainit d1 1 1 c1t0d0s0

# metattach
# metattach d10 d1

Burada sökülen diskteki alt mirrorlar için yeniden alt mirror ların oluşturulması gerekmektedir. Metastat komutu ile yeni oluşturulan alt mirror gruplarının senkronize yüzdesi de bu komut ile görülebilir. Eğer disk üzerinde slicelar ayrılmadan disk çıkarılmış ise aşağıdaki komutlar ile sisteme yeni takılan disk sync olacak şekilde düzenlenir.

# metadevadm -u -r c#t#d#
# metareplace -e d1 /dev/dsk/c#t#d#s#
# metareplace -e d2 /dev/dsk/c#t#d#s#

Bu komutlardan sonra metastat komutu ile disklerin durumuna bakıldığında yeni sliceların sync işleminin başladığı görülecektir.

GÜNÜN İPUÇU SUNUCU ÜZERİNDEKİ İKİNCİ BİR NETWORK PORTUNUN AKTİFLEŞTİRİLMESİ

Sunucu üzerinde bulunan başka bir network portunun enable edilmesi

bash-2.05# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1 inet 127.0.0.1 netmask ff000000
bash-2.05#

ifconfig komutu ile sistem bulunan portlar kontrol edilir.

bash-2.05# ifconfig ce1 plumb
var olan port sunucu üzerinde oluşturulur.

bash-2.05# ifconfig ce1 128.1.1.30 netmask 255.255.255.0 128.1.1.1 up
porta yeni IP vererek portun aktif olarak çalışması sağlanır bunun için sistem yeniden ifconfig komutu ile kontrol edilir.

bash-2.05# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1 inet 127.0.0.1 netmask ff000000
ce1: flags=1000843 mtu 1500 index 2 inet 128.1.1.30 netmask ffffff00 broadcast 128.1.1.255 ether 0:3:ba:2c:e7:f8
bash-2.05#