Archive for the 'tips' Category

[Test] Membuat kolom perintah di wordpress

July 23, 2014

Postingan ini adalah test, selanjutnya untuk memudahkan proses salin dan tempel perintah – perintah linux saya akan menggunakan box dari gist.github.com.

Berikut contohnya:

Salam..

Advertisements

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.

Command line speedtest

April 19, 2014

Untuk mengetest kecepatan koneksi internet, biasanya saya menggunakan site yang sudah sangat populer yaitu speedtest.net yang dapat diakses menggunakan browser internet. Untuk mengakses site ini kita memerlukan flash yang harus terinstall pada browser.

Speedtest Result

Bagaimana jika kita ingin melakukan speedtest pada server kita yang tidak menggunakan GUI?

Berikut adalah yang saya lakukan:

Download script speedtest-cli
[onay@dudulz-box ~]$ wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
--2014-04-19 02:36:06-- https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
Resolving raw.github.com... 103.245.222.133
Connecting to raw.github.com|103.245.222.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20043 (20K) [text/plain]
Saving to: âspeedtest-cliâ

100%[==============================================================================================================================>] 20,043 --.-K/s in 0s

2014-04-19 02:36:07 (60.9 MB/s) - âspeedtest-cliâ

Berikan permissions untuk execute pada scriptnya
[onay@dudulz-box ~]$ chmod +x speedtest-cli

Execute script untuk mulai melakukan speedtest
[onay@dudulz-box ~]$ ./speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from DigitalOcean (XXX.XXX.XXX.XXX)...
Selecting best server based on ping...
Hosted by SGIX (Singapore) [6.25 km]: 22.014 ms
Testing download speed........................................
Download: 408.71 Mbit/s
Testing upload speed..................................................
Upload: 82.48 Mbit/s
[onay@dudulz-box ~]$

Hasil speedtest untuk donwload/upload ada pada bagian yang saya cetak tebal pada output diatas.

Thanks to https://github.com/sivel yang sudah bersusah payah membuat scriptnya dan memberikannya gratis untuk public.

Wasallam.

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,

TIPS: Mengganti password dengan 1 baris command

October 31, 2013

Sebagai sysadmin yang mengelola lebih dari satu system, kadang proses untuk membuat user akan terasa melelahkan.
Proses pembuatan user memang bisa dilakukan dengan membuat shell script dan dapat dilooping ke semua server, tapi bagaimana dengan passwordnya?

Setiap proses pembuatan user akan selalu diikuti dengan memberikan password untuk user tersebut.
Berikut contohnya:

[root@dudulz-box ~]# useradd onay
[root@dudulz-box ~]# passwd onay
Changing password for user onay.
New UNIX password: => Masukkan password pertama
Retype new UNIX password: => Masukkan password yang sama kedua kalinya
passwd: all authentication tokens updated successfully.

Pada saat memberikan password, diperlukan 2 kali masukan passwordnya sehingga akan sangat memakan waktu dan melelahkan jika kita punya banyak sekali server yang harus dimaintain.

Dulu saya mengakalinya dengan menggunakan tools expect, yang bisa digunakan untuk menunggu keluaran dari suatu command dan bisa membalas keluaran command tersebut dengan inputan baru.

Saya baru tahu kalau ternyata command passwd punya options ampuh dan ajaib untuk memberikan password dalam satu kali inputan saja. Thanks to Om Kemas yang sudah memberitahu saya options ini. *sungkem

Berikut adalah contohnya:

[root@dudulz-box ~]# echo "passwordbaru" | passwd --stdin onay
Changing password for user onay.
passwd: all authentication tokens updated successfully.

Sesimple itu lah command yang selama ini cukup menyusahkan saya. 🙂
Bagaikan mendapat harta karun yang puluhan tahun tersembunyi, sekarang saya bisa melooping command penggantian password ini ke semua server dengan mudah.

Karena kemalasan saya membaca manual, akhirnya baru sekarang saya mengetahui option ini. Padahal sudah jelas – jelas terpampang didalam man passwd berikut:

–stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.

Demikian, semoga sysadmin yang belum tahu bisa mendapat pencerahan yang sama seperti saya. 🙂

Salam console.

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.

Bagaimana mendisable salah satu path multipath

June 13, 2013

Berikut adalah cara yang saya lakukan untuk melakukan testing apakah multipath sudah bekerja dengan baik.
Caranya adalah dengan mendisable salah satu pathnya, dan lihat apakah filesystem masih bisa diakses.

Melihat semua path yang ada:

[root@dudulz-box ~ ]# multipath -ll
mpath2 (360060e801604750000010475000041ee) dm-13 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:2 sdc 8:32 [active][ready]
\_ 3:0:0:2 sdf 8:80 [active][ready]
mpath0 (360060e801604750000010475000041ec) dm-11 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
mpath1 (360060e8016047500000104750000019b) dm-12 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [active][ready]
\_ 3:0:0:1 sde 8:64 [active][ready]

Lihat status salah satu path dari multipath diatas:

[root@dudulz-box ~ ]# cat /sys/block/sdc/device/state
running

Disable salah salah satu path “sdc”

[root@dudulz-box ~ ]# echo offline > /sys/block/sdc/device/state

[root@dudulz-box ~ ]# cat /sys/block/sdc/device/state
offline

Lihat status multipath setelah didisable, statusnya telah berubah menjadi failed.
Setelah itu coba cek apakah filesystem masih bisa diakses.

[root@dudulz-box ~ ]# multipath -ll
mpath2 (360060e801604750000010475000041ee) dm-13 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 0:0:0:2 sdc 8:32 [failed][faulty]
\_ 3:0:0:2 sdf 8:80 [active][ready]
mpath0 (360060e801604750000010475000041ec) dm-11 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
mpath1 (360060e8016047500000104750000019b) dm-12 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [active][ready]
\_ 3:0:0:1 sde 8:64 [active][ready]

Enable kembali pathnya:

[root@dudulz-box ~ ]# echo running > /sys/block/sdc/device/state

[root@dudulz-box ~ ]# cat /sys/block/sdc/device/state
running

[root@dudulz-box ~ ]# multipath -ll
mpath2 (360060e801604750000010475000041ee) dm-13 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:2 sdc 8:32 [active][ready]
\_ 3:0:0:2 sdf 8:80 [active][ready]
mpath0 (360060e801604750000010475000041ec) dm-11 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
mpath1 (360060e8016047500000104750000019b) dm-12 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [active][ready]
\_ 3:0:0:1 sde 8:64 [active][ready]

Salam.

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.