Archive for the 'tutorial' Category

Menginstall Docker di CentOS 6.5

June 16, 2014

Setelah baru cuma sekadar baca – baca mengenai docker dan linux container, sepertinya menarik.

Akhirnya baru hari ini ada waktu untuk ngoprek coba install dan bikin – bikin docker.
Ternyata tidak sesusah keliatannya, syukurlah dokumentasi dan manual installasinya disediakan lumayan lengkap dan mudah diikuti.

Malah ada emulator-nya segala buat yang mau sekadar nyoba, dan ternyata disitu racunnya, jadi keterusan install beneran deh. 🙂

docker.com

Kali ini saya coba install di vps saya yang cuma punya memory 512MB dan disk cuma 20GB dengan sistem operasi Linux CentOS 6.5

Berikut catatannya:

Untuk CentOS 6 packet rpm docker-io ada pada repository epel, untuk menggunakan epel cukup download packet epel-release nya dialamat berikut:

http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html

 

[root@dudulz-box ~]# wget http://kartolo.sby.datautama.net.id/EPEL/6/i386/epel-release-6-8.noarch.rpm
--2014-06-16 06:20:14-- http://kartolo.sby.datautama.net.id/EPEL/6/i386/epel-release-6-8.noarch.rpm
Resolving kartolo.sby.datautama.net.id... 123.255.202.74, 2403:ba00:602::1e
Connecting to kartolo.sby.datautama.net.id|123.255.202.74|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14540 (14K) [application/x-redhat-package-manager]
Saving to: âepel-release-6-8.noarch.rpmâ

100%[======================================>] 14,540 34.7K/s in 0.4s

2014-06-16 06:20:14 (34.7 KB/s) - âepel-release-6-8.noarch.rpmâ

Install package epel-release nya:

[root@dudulz-box ~]# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]

Sekarang coba cari package docker-io:

[root@dudulz-box ~]# yum search docker-io
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink | 13 kB 00:00
* base: mirrors.kernel.org
* epel: mirrors.kernel.org
* extras: mirrors.kernel.org
* updates: mirrors.kernel.org
epel | 4.4 kB 00:00
epel/primary_db | 6.2 MB 00:00
epel/pkgtags | 1.0 MB 00:00
============================ N/S Matched: docker-io ============================
docker-io.x86_64 : Automates deployment of containerized applications

Name and summary matches only, use "search all" for everything.

Ok, sudah ketemu. Mari mulai kita install docker-io nya sekarang:

[root@dudulz-box ~]# yum install docker-io
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.kernel.org
* epel: mirrors.kernel.org
* extras: mirrors.kernel.org
* updates: mirrors.kernel.org
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package docker-io.x86_64 0:0.11.1-4.el6 will be installed
--> Processing Dependency: xz for package: docker-io-0.11.1-4.el6.x86_64
--> Processing Dependency: lxc for package: docker-io-0.11.1-4.el6.x86_64
--> Processing Dependency: libcgroup for package: docker-io-0.11.1-4.el6.x86_64
--> Running transaction check
---> Package libcgroup.x86_64 0:0.40.rc1-5.el6_5.1 will be installed
---> Package lxc.x86_64 0:0.9.0-2.el6 will be installed
--> Processing Dependency: liblxc.so.0()(64bit) for package: lxc-0.9.0-2.el6.x86 _64
---> Package xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6 will be installed
--> Running transaction check
---> Package lxc-libs.x86_64 0:0.9.0-2.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
docker-io x86_64 0.11.1-4.el6 epel 4.4 M
Installing for dependencies:
libcgroup x86_64 0.40.rc1-5.el6_5.1 updates 125 k
lxc x86_64 0.9.0-2.el6 epel 78 k
lxc-libs x86_64 0.9.0-2.el6 epel 116 k
xz x86_64 4.999.9-0.3.beta.20091007git.el6 base 137 k

Transaction Summary
================================================================================
Install 5 Package(s)

Total download size: 4.9 M
Installed size: 24 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): docker-io-0.11.1-4.el6.x86_64.rpm | 4.4 MB 00:00
(2/5): libcgroup-0.40.rc1-5.el6_5.1.x86_64.rpm | 125 kB 00:00
(3/5): lxc-0.9.0-2.el6.x86_64.rpm | 78 kB 00:00
(4/5): lxc-libs-0.9.0-2.el6.x86_64.rpm | 116 kB 00:00
(5/5): xz-4.999.9-0.3.beta.20091007git.el6.x86_64.rpm | 137 kB 00:00
--------------------------------------------------------------------------------
Total 32 MB/s | 4.9 MB 00:00
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOK EY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
Userid : EPEL (6)
Package: epel-release-6-8.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : libcgroup-0.40.rc1-5.el6_5.1.x86_64 1/5
Installing : lxc-libs-0.9.0-2.el6.x86_64 2/5
Installing : lxc-0.9.0-2.el6.x86_64 3/5
Installing : xz-4.999.9-0.3.beta.20091007git.el6.x86_64 4/5
Installing : docker-io-0.11.1-4.el6.x86_64 5/5
Verifying : xz-4.999.9-0.3.beta.20091007git.el6.x86_64 1/5
Verifying : lxc-libs-0.9.0-2.el6.x86_64 2/5
Verifying : docker-io-0.11.1-4.el6.x86_64 3/5
Verifying : libcgroup-0.40.rc1-5.el6_5.1.x86_64 4/5
Verifying : lxc-0.9.0-2.el6.x86_64 5/5

Installed:
docker-io.x86_64 0:0.11.1-4.el6

Dependency Installed:
libcgroup.x86_64 0:0.40.rc1-5.el6_5.1
lxc.x86_64 0:0.9.0-2.el6
lxc-libs.x86_64 0:0.9.0-2.el6
xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6

Complete!

Sampai disini proses installasinya sudah selesai, langkah berikutnya adalah menjalankan service docker.

Cek versi docker:

[root@dudulz-box ~]# docker version
Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99/0.11.1
2014/06/16 06:21:41 Get http:///var/run/docker.sock/v1.11/version: dial unix /var/run/docker.sock: no such file or directory

Jalankan service docker:

[root@dudulz-box ~]# service docker start
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]

Masukkan service docker ke dalam start up script jika mau langsung up bila servernya restart:

[root@dudulz-box ~]# chkconfig docker on

Setelah selesai semua, nah disinilah mulai menarik.
Tapi sayang kalau saya lanjutkan disini, bersambung aja deh 😀

Salam.

Advertisements

Bagaimana mengupdate OpenSSL pada CentOS

April 9, 2014

Beberapa hari lalu sebuah bug yang dinamakan heartbleed di openssl telah dipublish.
Keterangan lengkap mengenai bug ini dapat dilihat pada tautan berikut: http://heartbleed.com/
Pada tautan tersebut diatas juga diketahui versi openssl yang terdapat bug tersebut adalah versi:

OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable
OpenSSL 1.0.1g is NOT vulnerable
OpenSSL 1.0.0 branch is NOT vulnerable
OpenSSL 0.9.8 branch is NOT vulnerable

Bila anda pengguna Redhat/Centos versi 6.5 maka kemungkinan besar openssl anda terkena bug tersebut juga.
Dalam milis resmi centos yang saya ikuti juga, Karanbir Singh sang Centos project leader telah merilis sementara paket yang mendisable fitur bug pada openssl tersebut.

Paket yang dirilisnya dapat anda lihat pada tautan berikut:
http://lists.centos.org/pipermail/centos-announce/2014-April/020249.html

Sambil menunggu paket openssl baru yang telah diperbaiki tersedia untuk Centos 6.5, ada baiknya anda mengupdate paket sementara tersebut. Bila yum anda telah disetting ke repo centos maka berikut adalah cara mudah untuk mengupdatednya:

Versi Centos 6.5 yang terkena bug:
[root@dudulz-box ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)

Versi openssl-101e yang terkena bug:
[root@dudulz-box ~]# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.x86_64

Perintah untuk mengupdate openssl:
[root@dudulz-box ~]# yum update openssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.secureax.com
* extras: centos.mirror.secureax.com
* updates: centos.mirror.secureax.com
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 0:1.0.1e-16.el6_5 will be updated
---> Package openssl.x86_64 0:1.0.1e-16.el6_5.7 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================================================
Updating:
openssl x86_64 1.0.1e-16.el6_5.7 updates 1.5 M

Transaction Summary
========================================================================================================================================================================
Upgrade 1 Package(s)

Total download size: 1.5 M
Is this ok [y/N]: y
Downloading Packages:
openssl-1.0.1e-16.el6_5.7.x86_64.rpm | 1.5 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : openssl-1.0.1e-16.el6_5.7.x86_64 1/2
Cleanup : openssl-1.0.1e-16.el6_5.x86_64 2/2
Verifying : openssl-1.0.1e-16.el6_5.7.x86_64 1/2
Verifying : openssl-1.0.1e-16.el6_5.x86_64 2/2

Updated:
openssl.x86_64 0:1.0.1e-16.el6_5.7

Complete!

Versi openssl 1.0.1e-16.el6_5.7 yang telah mendisable bug tersebut diatas:
[root@dudulz-box ~]# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.7.x86_64

Selesai.

Salam,

Cara mudah mensalin ssh-key ke server remote

November 4, 2013

Salah satu ciri yang membedakan antara unix dengan linux adalah, di Linux banyak sekali tools2 kecil untuk memudahkan suatu task.

Contohnya adalah tools berikut untuk mensalin ssh-key ke server remote sehingga kita bisa mengakses remote server tersebut tanpa menggunakan password (password less).

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host

Bila tanpa menggunakan tools diatas, kita harus mengcopy paste manual atau mengirim filenya secara manual keserver tujuan.

Lumayan menghemat beberapa langkah command bila menggunakan tools diatas. 🙂

SOP untuk menghapus LUN pada Linux

June 26, 2013

Bagaimana prosedur yang benar untuk menghapus lun yang sudah tidak terpakai sehingga LUN tersebut dapat dikembalikan ke tim storage?

Biasanya karena LUN ini sudah tidak terpakai, terkadang saya seenaknya saja untuk menghapus lun tersebut tanpa prosedur yang benar.

Saya dapat langsung bilang ke tim storage untuk mereclaim lun tersebut. Yang terjadi adalah, ketika dari sisi storage langsung mencabut lun tersebut maka pada system akan muncul banyak log error lun failed.

Biasanya saya akan mengabaikan log error tersebut karena tahu bahwa lun tersebut memang sudah tidak terpakai.
*see how lazzy I am? 🙂

Tapi pesan error ini akan muncul terus menerus sehingga akan memenuhi system log *nyampah. Akibatnya adalah bisa jadi kita melewatkan ketika ada error log yang ternyata penting.

Dan pada suatu kasus pesan error yang muncul terus menerus ini membuat system hang dan reboot. Entah karena kernel yang terus – menerus mendeteksi ada lun yang failed.

Ok, jadi bagaimana sih prosedur yang benar untuk menghapus LUN pada system Linux?

Berikut adalah salah satu yang direkomendasikan oleh RedHat yang saya temukan pada knowledge basenya RedHat.

1. Tutup atau putuskan semua user yang mengakses filesystem tersebut

fuser -cu /old_data
kill (pid)

2. Unmount filesystem tersebut

umount /old_data

3. Hapus device lun tersebut dari LVM

lvremove (lvname)
vgreduce (vgname) (disk name)
pvremove (disk name)

4. Hapus device lun tersebut dari multipath

multipath -ll
multipath -f (lun device)

5. flush any outstanding IO

blockdev --flushbufs device

6. Hapus hba path device lun tersebut
*sdf adalah device lun yang mau dihapus

cat /sys/block/sdf/device/state
echo offline > /sys/block/sdf/device/state
echo 1 > /sys/block/sdf/device/delete

7. Terakhir kita bisa informasikan kepada tim storage untuk mencabut lun tersebut dari system kita.

Maka ketika lun tersebut sudah dihapus dari sisi storage tidak akan lagi muncul pesan error seperti yang saya sebutkan diawal.

System log tetap bersih sehingga kita tetap dapat memonitor bila ada log yang penting.

Semoga bermanfaat.

Salam Console.

Susahnya menggunakan korn shell

April 10, 2013

Sudah beberapa minggu ini saya mendapat kesempatan bermain – main dengan HP-UX.

Sebagai sysadmin linux, saya ternyata sudah sangat dilenakan oleh kemudahan console linux yang menggunakan shell bash.
Maka ketika berhadapan dengan console yang tidak ada bashnya membuat saya sedikit kesulitan 😦

Default shell HP-UX ini adalah ksh. Ksh menggunakan vi-style line editing modes. Tombol arah kanan kiri atas bawah tidak bisa digunakan.

Nah vi style ini juga sudah jarang saya gunakan, karena dilinux saya selalu menggunakan vim.
Vim ini adalah vi yang sudah dienhance fitur – fiturnya sehingga bisa menggunakan tombol arah kanan kiri atas maupun bawah.

Seperti biasa, yang saya lakukan adalah mencari referensi pengoperasian ksh.
Berikut adalah yang saya google temukan:

Menampilkan command line history:
[k] dan [j] -> Tekan tombol Esc dan k untuk melihat history sebelumnya atau Esc dan j untuk melihat history setelahnya.

Pengendalian kursor:

Untuk mulai mengaktifkan pengendalian kursor tekan tombol Esc dahulu baru dilanjutkan dengan tombol berikut:
[h] -> Memindahkan kursor kebelakang atau mundur satu karakter
[l] -> Memindahkan kursor kedepan atau maju satu karakter
[w] -> Memindahkan kursor keawal kata berikutnya atau maju ke setiap awal kata
[b] -> Memindahkan kursor keawal kata berikutnya atau mundur kesetiap awal kata
[x] -> Menghapus huruf tempat dimana kursor berada
[D] -> Menghapus sisa baris dimulai dari huruf tempat dimana kursor berada

Mode Input:

[i] -> Memasukkan huruf ketempat satu karakter dimana kursor berada
[r] -> Menggantikan huruf atau karakter ditempat kursor berada
[R] -> Menggantikan sisa huruf atau karakter dimulai dari tempat kursor berada
[A] -> Menambahkan huruf atau karakter dimulai dari akhir baris

Auto complete:

Siapa bilang ksh tidak ada auto complete, try this!! 🙂
[Esc] [Esc] -> Tekan tombol Esc dua kali untuk Auto complete

Mode Editor:

[v] -> Tekan v untuk masuk ke vi editor

Dan masih banyak lagi perintah – perintah lainnya dapat anda lihat pada link dibawah.

ref: http://st23.org/misc/sysadmin/downloads/reference.card-ksh.programming.pdf

Salam Console.

[Tips] Mem-bypass alias pada command line Linux

October 8, 2012

Teman bule saya memberitahukan saya tentang tips ini. Yaitu cara untuk membypass suatu command yang sudah disetting menggunakan alias. Berikut contohnya:

[root@test1 newfolder]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

Seperti diatas, Redhat membuat default alias pada perintah rm menjadi rm -i. Sehingga apabila kita ingin menghapus suatu file menggunakan perintah rm, maka sebenarnya perintah yang dijalankan adalah rm -i, yang artinya interactive mode. Dengan options ini, setiap file yang akan kita pilih akan melakukan konfirmasi apakah kita benar ingin menghapus file ini atau tidak. Kita harus mengetikkan “y” bila ingin melanjutkan menghapus filenya.

[root@test1 newfolder]# rm newfile1
rm: remove regular empty file `newfile1'? y
[root@test1 newfolder]#

Default alias ini sebenarnya sangat berguna demi keamanan. Agar tidak terjadi menghapus file secara tidak sengaja.
Tapi bila kita sudah yakin dengan file yang akan kita hapus, dan kita tetap menginginkan perintah rm tersebut tetap dialias. Jadi yang kita inginkan saat itu adalah menjalankan perintah rm tersebut tanpa options interactive yang tentunya akan bertanya setiap file yang akan kita hapus.

[root@test1 newfolder]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile2
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile3
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile4
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile5
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile6
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile7
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile8
-rw-r--r-- 1 root root 0 Oct 8 02:19 newfile9
[root@test1 newfolder]# rm newfile*
rm: remove regular empty file `newfile2'? y
rm: remove regular empty file `newfile3'? y
rm: remove regular empty file `newfile4'? y
rm: remove regular empty file `newfile5'? y
rm: remove regular empty file `newfile6'? y
rm: remove regular empty file `newfile7'? y
rm: remove regular empty file `newfile8'? y
rm: remove regular empty file `newfile9'? y
[root@test1 newfolder]# ll
total 0
[root@test1 newfolder]#

Untuk itu yang kita perlukan adalah mem-bypass alias tersebut. Berikut cara mudahnya:

[root@test1 newfolder]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile1
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile2
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile3
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile4
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile5
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile6
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile7
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile8
-rw-r--r-- 1 root root 0 Oct 8 02:31 newfile9
[root@test1 newfolder]# \rm newfile*
[root@test1 newfolder]# ll
total 0
[root@test1 newfolder]#

Ya benar, cukup gunakan “\” backslash untuk membypass perintah rm tersebut agar tidak menggunakan alias rm -i.

Semoga bermanfaat. 🙂

Mengkonfigurasi iscsi disk dengan multipath

September 16, 2012

Multipath pada external storage berfungsi sebagai redudansi link. Jadi jika kabel atau salah satu jaringan terputus maka external storage masih tetap bisa diakses.

iscsi sebagai external storage murah meriah (baca: nas) 🙂 pun bisa dibuat multipath. Dengan begitu data anda akan tetap aman jika salah satu link putus.
Berikut adalah yang saya lakukan mengkonfigurasi iscsi via multipathing.

Environment yang saya pakai adalah Virtual Box dengan 2 guest OS RHEL 5.8. Satu sebagai iscsi target dan satu lagi sebagai iscsi initiator.

Hostname: server1(iscsi-target) dan node1(iscsi-initiator)

Pada server1 terdapat 3 nic (eth[0-2]) dengan fungsi eth0 sebagai management, eth1 sebagai network1 dan eth2 sebagai network2.

Pada node1 terdapat 3 nic (eth[0-2]) dengan fungsi eth0 sebagai management, eth1 sebagai network1 dan eth2 sebagai network2.

Berikut /etc/hosts pada keduanya:

[root@node1 data]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost

### server1 ###
192.168.56.3    server1.example.com     server1
192.168.100.10  iscsi-eth1
192.168.200.10  iscsi-eth2

### node1 ###
192.168.56.4   node1.example.com       node1
192.168.100.11  node1-iscsi1
192.168.200.11  node1-iscsi2

Setelah jaringan sudah siap, lanjutkan dengan menginstall iscsi-target pada server1:

Server1:

(Catatan: Sebelumnya siapkan disk partisi yg akan digunakan sebagai disk yg akan diassign ke node1, pada tutorial ini saya menggunakan salah satu partisi lvm)

[root@server1 ~]# yum install scsi-target-utils -y

(Konfigurasikan /etc/tgt/targets.conf menjadi seperti dibawah)

[root@server1 ~]# cat /etc/tgt/targets.conf | grep -v "#"

default-driver iscsi

<target iqn.2012-09.com.example:server.target1>
backing-store /dev/vg_iscsi/lv_target1
</target>

initiator-address 192.168.100.11
initiator-address 192.168.200.11

[root@server1 ~]#
[root@server1 ~]# chkconfig tgtd on
[root@server1 ~]# service tgtd start
Starting SCSI target daemon: Starting target framework daemon
[root@server1 ~]#

Selesai pada server1, lanjut konfigurasi pada node1.

Node1:
(install paket iscsi initiator)

[root@node1 ~]# yum install iscsi-initiator-utils -y
[root@node1 ~]# service iscsi start
[root@node1 ~]# chkconfig iscsi on

(cek apakah bisa mengenali disk dari iscsi target melalui network1 iscsi-eth1)

[root@node1 ~]# iscsiadm -m discovery -t sendtargets -p iscsi-eth1
192.168.100.10:3260,1 iqn.2012-09.com.example:server.target1

(cek apakah bisa mengenali disk dari iscsi target melalui network1 iscsi-eth2)

[root@node1 ~]# iscsiadm -m discovery -t sendtargets -p iscsi-eth2
192.168.200.10:3260,1 iqn.2012-09.com.example:server.target1

(add disk via network1)

[root@node1 ~]# iscsiadm -m node -T iqn.2012-09.com.example:server.target1 -p iscsi-eth1 -l
Logging in to [iface: default, target: iqn.2012-09.com.example:server.target1, portal: 192.168.100.10,3260] (multiple)
Login to [iface: default, target: iqn.2012-09.com.example:server.target1, portal: 192.168.100.10,3260] successful.

(verify apakah disk sudah dikenali, disk dikenali sebagai /deb/sdb)

[root@node1 ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM

Disk /dev/sdb: 1048 MB, 1048576000 bytes
33 heads, 61 sectors/track, 1017 cylinders
Units = cylinders of 2013 * 512 = 1030656 bytes

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

(add disk via network2)

[root@node1 ~]# iscsiadm -m node -T iqn.2012-09.com.example:server.target1 -p iscsi-eth2 -l

(verify apakah disk sudah dikenali, disk dikenali sebagai /dev/sdb dan /dev/sdc)

[root@node1 ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM

Disk /dev/sdb: 1048 MB, 1048576000 bytes
33 heads, 61 sectors/track, 1017 cylinders
Units = cylinders of 2013 * 512 = 1030656 bytes

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

Disk /dev/sdc: 1048 MB, 1048576000 bytes
33 heads, 61 sectors/track, 1017 cylinders
Units = cylinders of 2013 * 512 = 1030656 bytes

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

[root@node1 ~]#

Sampai langkah ini configure iscsi initiator sudah selesai, dua disk sudah dikenali melalui 2 jalur network yang berbeda.
Sebenarnya disk tersebut adalah disk yang sama dari iscsi-target disk: “iqn.2012-09.com.example:server.target1”

(scsi_id kedua disk sama, menunjukkan bahwa kedua disk tersebut adalah sama)

[root@node1 ~]# scsi_id -gus /block/sdb
1IET_00010001
[root@node1 ~]# scsi_id -gus /block/sdc
1IET_00010001

Langkah selanjutnya adalah menggabungkan kedua disk tadi menggunakan multipath.

(Config multipath.conf menjadi seperti dibawah)

[root@node1 ~]# cat /etc/multipath.conf | grep -v "#"
defaults {
user_friendly_names yes
}
[root@node1 ~]#

(jalankan service multipathd)

[root@node1 ~]# service multipathd start
Starting multipathd daemon:                                [  OK  ]
[root@node1 ~]# chkconfig multipathd on

(verify apakah multipath sudah aktif)

[root@node1 ~]# multipath -ll
mpath1 (1IET_00010001) dm-2 IET,VIRTUAL-DISK
[size=1000M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 1:0:0:1 sdb 8:16  [active][ready]
\_ round-robin 0 [prio=1][enabled]
\_ 2:0:0:1 sdc 8:32  [active][ready]

Sampai langkah ini kedua disk sudah dimultipath menjadi satu “mpath1”
Langkah selanjutnya adalah membuat FileSystem dan memountnya.
Saya membuatnya menggunakan LVM:

[root@node1 ~]# pvcreate /dev/mapper/mpath1
Writing physical volume data to disk "/dev/mapper/mpath1"
Physical volume "/dev/mapper/mpath1" successfully created
[root@node1 ~]# pvs
PV                VG         Fmt  Attr PSize    PFree
/dev/mpath/mpath1            lvm2 a--  1000.00M 1000.00M
/dev/sda2         VolGroup00 lvm2 a--     7.88G       0

[root@node1 ~]# vgcreate vg_iscsi /dev/mapper/mpath1
Volume group "vg_iscsi" successfully created
[root@node1 ~]# vgs
VG         #PV #LV #SN Attr   VSize   VFree
VolGroup00   1   2   0 wz--n-   7.88G      0
vg_iscsi     1   0   0 wz--n- 996.00M 996.00M

[root@node1 ~]# lvcreate -n lv_target1 -L 512M vg_iscsi
Logical volume "lv_target1" created
[root@node1 ~]# lvs
LV         VG         Attr   LSize   Origin Snap%  Move Log Copy%  Convert
LogVol00   VolGroup00 -wi-ao   6.88G
LogVol01   VolGroup00 -wi-ao   1.00G
lv_target1 vg_iscsi   -wi-ao 512.00M
[root@node1 ~]# mkfs.ext3 /dev/vg_iscsi/lv_target1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
64 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@node1 ~]#

Sampai sini FS sudah selesai dan tinggal lakukan mounting agar FS tersebut dapat digunakan untuk diisi data.

[root@node1 ~]# mkdir /data
[root@node1 ~]# mount /dev/mapper/vg_iscsi-lv_target1 /data/
[root@node1 ~]#
[root@node1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.7G  1.7G  4.7G  27% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/mapper/vg_iscsi-lv_target1
496M   19M  452M   4% /data

Terakhir mari kita coba menulis file pada FS tersebut.

[root@node1 ~]# cd /data/
[root@node1 data]# ll
total 12
drwx------ 2 root root 12288 Sep 16 01:02 lost+found
[root@node1 data]# touch newfile
[root@node1 data]# ll
total 12
drwx------ 2 root root 12288 Sep 16 01:02 lost+found
-rw-r--r-- 1 root root     0 Sep 16 06:42 newfile
[root@node1 data]#

Selesai. Untuk melakukan testing, kita bisa coba untuk memutuskan salah satu network yg digunakan dalam multipath.
Pada virtual box bisa dilakukan melalui menu:
Klik pada guest os node1 > Settings > Network > Adapter 2 > Cable conected #uncheck untuk memutuskan koneksi

Lalu pada node1 periksa kembali multipathnya:

[root@node1 data]# multipath -ll
sdb: checker msg is "readsector0 checker reports path is down"
mpath1 (1IET_00010001) dm-2 IET,VIRTUAL-DISK
[size=1000M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
\_ 1:0:0:1 sdb 8:16  [failed][faulty]
\_ round-robin 0 [prio=1][enabled]
\_ 2:0:0:1 sdc 8:32  [active][ready]

Terlihat status disk pada sdb adalah [failed] yg berarti koneksi pada network1 putus
Verify apakah external storage masih bisa diakses dan berfungsi dengan baik.

[root@node1 data]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.7G  1.7G  4.7G  27% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/mapper/vg_iscsi-lv_target1
496M   19M  452M   4% /data
[root@node1 data]# touch newfile2
[root@node1 data]# ll
total 12
drwx------ 2 root root 12288 Sep 16 01:02 lost+found
-rw-r--r-- 1 root root     0 Sep 16 06:42 newfile
-rw-r--r-- 1 root root     0 Sep 16 06:48 newfile2
[root@node1 data]#

Selesai, sekarang iscsi disk sudah dimultipath.

Salam.

Virtualbox Headless

December 31, 2011

Kadang – kadang saya tidak butuh window untuk mengakses beberapa guest os yang saya install pada virtual box. Ternyata virtual box juga punya fitur untuk langsung menjalankan guest os dibackground tanpa menampilkan window-nya. Kalau ternyata perlu, kita juga bisa mengaktifkan fitur remote display untuk mengakses gui guest os yang telah kita install didalam virtual box.

Berikut caranya:

Catatan:
Sebelumnya kita sudah terlebih dahulu menginstall guest os-nya menggunakan virtual box window.
Jalankan perintah berikut menggunakan user sewaktu anda menginstall guest os-nya.

~ Untuk melihat list vms pada virtual box:

[onay@dudulz-box ~]$ vboxmanage list vms
"WindowsXP" {f6a3488f-f8bb-4e21-bad2-8efb0377ab4c}
"Solaris10" {f113b0b4-3801-4131-9d5b-63be67ea7648}

~ Untuk menjalankan vms tanpa menggunakan window:

[onay@dudulz-box ~]$ vboxheadless -s Solaris10 &
[1] 8433

Oracle VM VirtualBox Headless Interface 4.1.8
(C) 2008-2011 Oracle Corporation
All rights reserved.

VRDE server is listening on port 3389.

~Selanjutnya saya tinggal ssh kedalam guest os tersebut.

[onay@dudulz-box ~]$ ssh root@192.168.56.10
Password:
Last login: Sat Dec 31 23:19:18 2011 from fedorabox
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
-bash-3.00#

~ Bila ingin mengakses guinya bisa menggunakan rdesktop, port default adalah 3389. Kita juga bisa mengganti portnya menggunakan virtual box window pada menu Setting > Display > Remote Display.

[onay@dudulz-box ~]$ rdesktop -a 16 -N 192.168.56.1:3389

Ip 192.168.56.1 adalah ip laptop saya tempat virtual box diinstall (host os).

rdesktop ke vbox headless

rdesktop ke vbox headless

Sekian.

*last post on 2011*

Solaris admin start up

November 2, 2011

After a few days play with solaris box, berikut yang saya lakukan pertama kali setelah fresh install solaris dengan minimal installation package.

1. Install bash
Pertama kali login, saya disuguhi dengan shell sh. Tidak bisa autocomplete, tidak ada history. It’s take a lot of pain to use it.
Jadi yang pertama saya lakukan adalah menginstall bash shell.

Mounting DVD installer Solaris:
# mount -F hsfs -o ro /dev/dsk/c1t0d0s0 /mnt

Masuk ke direktori paket2 solaris:
# cd /mnt/Solaris_10/Product

Lihat isi direktori tersebut dan filter paket bashnya saja:
# ls | grep bash
SUNWbash
SUNWbashS

Terdapat dua paket bash, SUNWbash adalah binary bash dan SUNWbashS adalah sourcenya.
Informasi paket bisa dilihat pada file pkginfo didalam direktori paket tersebut.

Install paket bash:
# pkgadd -d . SUNWbash

Untuk menggunakan shell bash tersebut ketikkan command bash:
# bash
bash-3.00#

Untuk mendapatkan shell bash setiap login dapat diedit file /etc/passwd dan ganti shellnya ke /bin/bash:
# vi /etc/passwd
root:x:0:0:Super-User:/:/bin/bash

2. Install ssh
SSH is a must 😀

Cek service ssh apakah sudah terinstall:
# svcs | grep ssh
#

Bila tidak ada output apa2 berarti ssh belum terinstall

Masuk kedirektori tempat paket2 solaris dan search paket related dengan ssh:
# cd /mnt/Solaris_10/Product
# ls | grep ssh
SUNWsshcu
SUNWsshdr
SUNWsshdu
SUNWsshr
SUNWsshu

Install kelima paket diatas:
# pkgadd -d . SUNWsshcu SUNWsshdr SUNWsshdu SUNWsshr SUNWsshu

Generate certificate:
# /lib/svc/method/sshd -c

Start dan enable service ssh:
# svcadm restart ssh
# svcadm enable ssh

Sekarang periksa kembali apakah service ssh sudah online:
# svcs -a | grep ssh
online 21:46:14 svc:/network/ssh:default

Default konfigurasi sshd adalah tidak membolehkan user root untuk login, berikut adalah untuk membolehkannya:
# vi /etc/ssh/sshd_config
PermitRootLogin yes

3. Install manual
Karena masih newbie disolaris, saya masih sangat tergantung dengan manual 😀

Masuk ke direktori paket2 solaris:
# cd /mnt/Solaris_10/Product

Install paket SUNWman dan SUNWdoc:
# pkgadd -d . SUNWman SUNWdoc

Ok, selesai sampai disini. Sebenarnya saya masih butuh satu hal lagi agar bisa nyaman dalam mengkonfigurasi solaris box ini. Yaitu menginstall vim.
Tapi karena langkahnya lumayan panjang, maka akan saya buat sebagai catatan tersendiri.

Well, have fun with your solaris box..

Membuat yum local repository dalam 5 menit

June 28, 2010

Hollaaa.. Gosh, ternyata pekerjaan mempengaruhi produktivitas menulis blog. Sebenarnya masih banyak draft yg menunggu untuk diselesaikan, tapi entah kenapa malas sekali meneruskan tulisan yg lama.

Ok, another very simple howto.

Biasanya setiap menginstall mesin – mesin rhel, saya juga langsung mensetting yumnya agar merujuk pada paket default yang terdapat pada dvd installernya. Hal ini memudahkan saya bila mau menginstall paket – paket tambahan yang kurang.

Berikut catatannya:

1. Copy dvd installer

# readcd dev=/dev/cdrom f=/root/RHEL5.4.iso

Langkah ini adalah membuat image dari dvd installernya. Kenapa saya buat isonya, karena bila suatu saat saya butuh menginstallnya lagi tinggal diburn lagi isonya. 😀

2. Mount iso

# mkdir /repo
# mount -o loop /root/RHEL5.4.iso /repo/
# echo "mount -o loop /root/RHEL5.4.iso /repo/" >> /etc/rc.local

Saya taruh perintah mount tersebut di /etc/rc.local agar tetap termount pada saat server direboot.

3. Create yum conf

# cd /etc/yum.repos.d
# cp rhel-debuginfo.repo rhel-Server.repo
# vim rhel-Server.repo

Defaultnya ada file rhel-debuginfo.repo pada setiap installasi. Nah saya biasanya pakai file ini sebagai template. Dengan sedikit modifikasi tentunya. Ganti dengan yang dicetak tebal. 😛

[rhel-Server]
name=Red Hat Enterprise Linux - Server
baseurl=file:///repo/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

# cp rhel-Server.repo rhel-Cluster.repo
# vim rhel-Cluster.repo

[rhel-Cluster]
name=Red Hat Enterprise Linux - Cluster
baseurl=file:///repo/Cluster
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

# cp rhel-Server.repo rhel-ClusterStorage.repo
# vim rhel-ClusterStorage.repo

[rhel-ClusterStorage]
name=Red Hat Enterprise Linux - ClusterStorage
baseurl=file:///repo/ClusterStorage
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

# cp rhel-Server.repo rhel-VT.repo
# vim rhel-VT.repo

[rhel-VT]
name=Red Hat Enterprise Linux - VT
baseurl=file:///repo/VT
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Pada dvd installer paket2 rpmnya dipisah dan terdapat pada folder Server, Cluster, ClusterStorage dan VT. Karena itu saya buat 4 file .repo sesuai dengan folder paket rpmnya.

3. Clean all yum cache and create new one

# yum clean all
# yum makecache

Perintah ini adalah membersihkan cache sebelumnya dan membuatnya kembali.

Nah, sekarang saya sudah bisa menginstall paket menggunakan yum. Ya ya, ternyata memang lebih dari lima menit karena langkah yang pertama butuh waktu lama untuk membuat image dari dvd. Tapi untuk confignya mungkin bisa kurang dari 5 menit. 😀

Happy yum install..