DRBD Network-RAID1 Mirroring Part II

การจัดการดิสก์

มาลองดูรายละเอียดเกี่ยวกับดิสก์ดูบ้าง หลักๆ แล้วให้ดูเรื่องขนาดครับ โดยดูขนาดของพาร์ติชั่นเป็นหลัก สำหรับกรณีที่ node ที่เราจะไปทำการ mirror นั้นทำการ production ไปแล้ว การจะไปปรับเปลี่ยนอะไรกับ production คงทำได้ยากหน่อย ให้มาปรับเปลี่ยนฝั่งที่เราจะทำเป็น destination จะสะดวกกว่า จากตัวอย่างการทำ DR-Ready Site จาก Part I ให้มองฝั่ง production คือ source และฝั่ง backup คือ destination

โดยทั่วไปเมื่อเราเพิ่มฮาร์ดดิสก์เข้าไปบนเซิร์ฟเวอร์และใช้ระบบปฏิบัติการลีนุกซ์ จะมองเห็นเป็น device เช่น /dev/sda, /dev/sdb, /dev/sdc, … หรือ /dev/hda,/dev/hdb,/dev/hdc,… แล้วแต่ชนิดดิสก์และคอนโทรลเลอร์ ในดิสก์แต่ละลูกเมื่อมีการแบ่งพาร์ติชั่นจะมองเ็ห็นเป็น device เช่น /dev/sdb1, /dev/sdb2,.. /dev/sdc1, /dev/sdc2,…

เมื่อเรานำ DRBD เข้ามาใช้งาน เราจะต้อง config ให้ device ของ DRBD ชี้ไปยัง device ของดิสก์ที่เราใช้งานและ mount disk ด้วย device ของ DRBD แทนของเก่า

ตัวอย่าง 1: source เป็น fixed disk ขนาด 1TB

  • สมมุติว่าดิสก์ดังกล่าวถูกลีนุกซ์ assign เป็น device ชื่อ /dev/sdb
  • ตรวจสอบก่อนว่าดิสก์ดังกล่าวแบ่งพาร์ติชั่นไว้อย่างไร ใช้คำสั่ง “fdisk -l /dev/sdb” ช่วยในการตรวจสอบ
  • สมมุติว่าดิสก์ดังกล่าวแบ่งไว้สองพาร์ติชั่นคือ /dev/sdb1 และ /dev/sdb2 โดย /dev/sdb1 มีขนาด 50 GB และ /dev/sdb2 มีขนาด 650GB, และ /dev/sdb2 ถูกฟอร์แมตไว้ให้เป็นรูปแบบ ext3  สำหรับเก็บข้อมูลส่วนที่เป็น data
  • การหาดิสก์มาทำ destination สำหรับการ replicate ให้หาขนาดขั้นต่ำ 650GB หากต้องการ data เฉพาะส่วนที่อยู่ใน /dev/sdb2, ให้เผื่อขนาด meta-data ในการจัดเก็บของ DRBD ด้วย ซึ่งโดยประมาณ 128MB รองรับ data จริงได้ 4TB
  • การกำหนดพาร์ติชั่นฝั่ง destination ให้กำหนดจำนวน block ของดิสก์ให้เท่ากันกับจำนวน block ของ /dev/sdb2 ฝั่ง source, ลำดับไม่สำคัญ เช่น เราอาจจะ replicate จาก /dev/sdb2 มา /dev/sdb3 ก็ได้ เพียงแต่ดิสก์ต้องมีจำนวน block เท่ากัน
  • สามารถ replicate ดิสก์ทั้งลูกเลยก็ได้ คือมองเป็น device แค่ในระดับ /dev/sdb ไม่แยกเป็น /dev/sdb1, /dev/sdb2 ก็ได้ ในกรณีนี้ควรหาดิสก์ฝั่ง destination ที่มีขนาดเท่ากันเป๊ะๆ ถ้าหาไม่ได้ให้หาขนาดที่ใหญ่กว่าแล้วแบ่งพาร์ติชั่นให้จำนวน block เท่ากับฝั่งต้นฉบับ

ตัวอย่าง 2: source เป็น extended file system ขนาด 1TB

  • บน Linux มี LVM ช่วยในการจัดการ file system แบบที่ย่อขนาดหรือขยายขนาดได้
  • LVM จะช่วยย่อหรือขยายในระดับพาร์ติชั่นใช้คู่กับคำสั่งขยายในระดับ file system ขึ้นกับรูปแบบ file system ที่ใช้
  • หลักๆ LVM ให้เข้าใจ 3 เรื่อง 1) PV– Physical Volume; เป็นระดับล่างสุด คือระดับของดิสก์แต่ละลูกที่เราจะเพิ่มหรือเอาออก 2) VG-Volume Group; เป็นระดับที่สูงขึ้นมา เป็นตัวกำหนดกลุ่มของดิสก์ 3) LV-Logical Volume; เป็นระดับบนสุด เป็นตัวที่เราจะเอาไป mount ใช้งาน, การสร้าง LV จะกำหนดเข้า VG เพื่อให้เป็นหมวดเป็นหมู่
  • การ config ใช้ร่วมกับ DRBD ให้เอาระดับ LV ไปกำหนดครับ
  • ใช้คำสั่ง “lvscan” ช่วยในการตรวจสอบขนาด
  • ใช้คำสั่ง “lvextend” ช่วยในการปรับขนาดฝั่ง destination ให้เท่ากับฝั่ง source

DRBD Network-RAID1 Mirroring Part I

Introduction

DRBD เป็น open source ที่เขียนให้ทำงานในระดับ Linux kernel ใช้ในการ replicate ข้อมูลในดิสก์สองที่ให้เหมือนกัน การ replicate ทำแบบออนไลน์ในขณะที่โปรแกรมรันและใช้ไฟล์นั้นๆ อยู่ได้โดย DRBD ทำงานในระดับ block device, DRBD สปอนเซอร์โดยบริษัท LINBIT (http://www.drbd.org)

ขอแทนคำว่า server ด้วยคำว่า node นะครับ เมื่อเรา replicate ข้อมูลทั้ง 2 node ให้เท่ากันแล้ว การที่จะใช้งานได้แบบ node เดียวหรือทั้ง 2 node พร้อมๆ กันส่วนหนึ่งขึ้นอยู่กับระบบไฟล์ที่ใช้  ระบบไฟล์โดยทั่วไปที่ไม่ได้ออกแบบมาให้ทำงานแบบคลัสเตอร์จะใช้ได้แบบ node เดียว ระบบไฟล์แบบนี้เช่น ext3, ext4, xfs ส่วนระบบไฟล์ที่ออกแบบมาเพื่อใช้สำหรับคลัสเตอร์ เช่น gfs, gfs2 ระบบไฟล์แบบคลัสเตอร์นี้มีสิ่งที่เพิ่มเติมเข้ามาคือ “กลไกในการ lock” ใช้ควบคุมตอน write ข้อมูล ถ้าไม่มีตัวควบคุม เป็นไปได้ว่า node หนึ่งยังไม่ทัน write เสร็จ อีก node ทำการ write เข้ามาทับ ก็จะเกิดความสับสนขึ้นได้

node ที่สามารถใช้งานได้ DRBD เรียกว่า Primary ส่วน node ที่เป็น backup เรียกว่า Secondary เมื่อเป็น Primary ดิสก์จะสามารถได้ทั้งอ่านและเขียน ส่วน Secondary อย่างมากทำได้แค่การอ่าน

ใน Linux kernel ใหม่ๆ ตั้งแต่เวอร์ชั่น 2.6.33 ขึ้นไปจะมี DRBD ฝังมาให้ในตัวเลย ส่วนเวอร์ชั่นที่เก่ากว่านั้น สามารถลงได้เช่นกัน โดยเพิ่ม package ในส่วนของ kmod เข้าไป

 หลังจาก synchronize ข้อมูลจนเท่ากันในการทำงานครั้งแรก ในครั้งต่อๆ ไป ข้อมูลจะ replicate เฉพาะข้อมูลที่ update และสนใจเฉพาะข้อมูลที่เป็นการ write จึงทำให้ข้อมูลที่ส่งระหว่างกันใช้ bandwidth ของ network อย่างคุ้มค่า นอกจากนั้นการ replicate ยังเป็นแบบ 2 ทาง เมื่อเราใช้งานที่ backup node ข้อมูลก็จะถูกส่งกลับไปยัง node หลักได้ด้วย ในบทต่อๆ ไปจะมีรายละเอียดลงลึกถึงโปรโตคอลที่ใช้ในการ replicate

ตัวอย่างการประยุกต์ใช้

ทำ backup site แบบ DR-Ready:

  • Mail System: replicate โปรแกรมและ data ของ Zimbra
  • Database System: replicate ส่วน data ของ PostgreSQL
  • Application Server: replicate โปรแกรมและ user data session ของ Tomcat

ถ้าใช้แพลทฟอร์ม Linux ในการรัน Application อยู่แล้ว DRBD ถือเป็นตัวช่วยในการทำ DR Site หรือ Disaster Recovery Site ให้เป็นแบบพร้อมใช้หรือเรียกหรูๆ หน่อยว่า DR-Ready Site ได้ในระดับหนึ่งเลยครับ

การ install iReport และ Config Datasource

ก่อนอื่นต้องบอกก่อนนะครับว่า iReport ใช้ Java ในกันทำงานดังนั้นจึง
Require Java version 1.4 หรือมากกว่านะครับ

Read more of this post

Rails:: MVC Architecture

Model-view-controller (MVC) คือ สถาปัตยกรรมซอฟแวร์ (software architecture) ที่ช่วยจัดการโครงสร้างของ Web application ให้มีความเป็นสัดเป็นส่วน โดยมีการแบ่ง business logic ออกจากส่วน user interface ทำให้โปรแกรมเมอร์สามารถพัฒนา ทดสอบ หรือ ปรับปรุง maintenance code ในแต่ละส่วนได้ง่าย

Read more of this post

Getting Started with Rails

Rails คืออะไร

Rails เป็น framework สำหรับใช้ในการพัฒนา Web Application ซึ่งถูกออกแบบมาเพื่อช่วยให้โปรแกรมเมอร์ทำงานได้ง่ายขึ้น

แล้วมันง่ายอย่างไรล่ะ?

Read more of this post

โปรแกรมบีบอัดไฟล์ฟรี (Free data compression software)

โปรแกรมบีบอัดไฟล์ฟรี (Free data compression software)

ปกติเราจะใช้แต่โปรแกรม WinZip หรือ Winrar แต่สองตัวนี้เป็น software ที่ต้องเสียเงินจริงๆ แล้วยังมี software ที่ใช้ฟรี และ มีลิขสิทธิแบบเปิด(Open source) จำนวนมาก

Read more of this post

การใช้งาน wp-syntax

plug-in ของ wordpress ที่ชื่อว่า wp-syntax ใช้เพื่อแสดง code ในรูปแบบที่สวยงาม

ตัวอย่าง เช่นต้องการแสดง code ของ javascript

var a = {

b: 1,

c: 2

};

ก็สามารถทำให้สวยงามได้โดยใช้ tag pre ครอบโดยระบุ lang เป็นภาษาที่ต้องการ และสามารถระบุเลขบรรทัดเริ่มต้นได้ด้วย เช่น

<pre lang=”javascript”>

var a = {

b: 1,

c: 2

};

</pre>

จะแสดงเป็น(ต้องวางใน mode html)

 

var a = {
 
     b: 1,
 
     c: 2
 
};

และ

<pre lang=”javascript” line=”1″>

var a = {

b: 1,

c: 2

};

</pre>

จะแสดงเป็น(ต้องวางใน mode html)

 

var a = {
 
     b: 1,
 
     c: 2
 
};

โดยรูปแบบการแสดงผลบางทีจะมีปัญหากับบาง theme ดังนนั้นการใช้งานจึงต้องดูว่าสามารถใช้งานกับ theme ปัจจุบันของ wordpress ได้หรือไม่ด้วย จากตัวอย่างจะเห็นว่าเมื่อแสดงแบบมีเลขบรรทัดจะทำงานผิดพลาดนั้น แสดงว่าใช้ได้แต่แบบแรกสำหรับ theme นี้ เป็นต้น

สร้าง Workflow โดยใช้ Intalio|BPMS (Part 1)

สวัสดีครับ วันนี้ผมจะมาแนะนำวิธีการสร้าง Workflow สำหรับใช้ในองค์กรโดยใช้ OpenSource ซึ่งมีชื่อว่า Intalio|BPMS ครับ

Read more of this post

การออกรายงานโดยใช้ jasperserver และ ireport

การออกรายงานโดยใช้ jasperserver และ ireport

jasperserver และ ireport เป็นโปรแกรม open source ที่มี interface
ที่ค่อนข้างง่ายทำความเข้าใจได้ไม่ยากนัก และเปิดช่องทางให้ผู้ใช้งานสามารถเขียน report ที่ค่อนข้างซับซ้อนได้โดยใช้งาน function ที่ชื่อว่า “scriptlet” จากการที่ผมเคยใช้โปรแกรม ireport เพื่อทำการออก report นั้นผมคิดว่า “scriptlet” เป็น function ที่ดีเพราะเราสามารถเขียน code เพิ่มเติมได้ (ใช้ java เป็น interpreter)

Read more of this post

เปรียบเทียบความเร็วของ filesystem บน Linux (ล่าสุด)

ระบบ filesystem บน linux มีอยู่มากมายหลายแบบ ซึ่งได้รับการปรับปรุงประสิทธิภาพต่อเนื่องมาตลอด

จากบทความนี้ นอกจากผู้อ่านจะได้ทราบว่า filesystem แต่ละแบบที่นิยมใช้บน linux ในปัจจุบัน
(รวมถึง btrfs, filesystem ซึ่งคาดว่าจะมาแรงในอนาคต) แบบไหนจะมีประสิทธิภาพดีกว่ากัน
ผู้เขียนได้ทำการทดสอบในหลายรูปแบบ และสรุปผลการทดสอบโดยใช้กราฟ

บทความอ่านได้ตาม link ข้างล่างนี้เลยครับ

Finding the Fastest Filesystem, 2011 Edition