วันพฤหัสบดีที่ 17 ธันวาคม พ.ศ. 2552

NAS DAS SAN คืออะไร

NAS DAS SAN คืออะไร

ในปัจจุบันมีเทคโนโลยี่เกี่ยวกับ Storage อยู่ 3 แบบหลักๆ ในเบื้องต้นของธุรกิจ เราก็มักจะใช้ SERVER ตัวแรกและตัวเดียวในบริษัทเรามาเป็น Storage ไปด้วย หาก Disk ไม่พอ เราก็จะทำการเพิ่ม External Disk ไปเรื่อยๆ ตามการขยายของบริษัท เขาเรียกการต่อ Storage แบบนี้ว่า DAS (Direct Attach Storage) ต่อมา พอบริษัทเริ่มโต เริ่มมี SERVER 2 ตัว 3 ตัว เริ่มจะต้องการเอาข้อมูลที่อยู่ใน SERVER มา Share กันใน Network เริ่มมีข้อมูลกลางที่ SERVER แต่ละตัวต้องมาเอา เช่น Application Server ที่แตกต่างกันในแต่ละ SERVER มาเอาข้อมูลใน Database SERVER ซึ่งก็ใช้งานร่วมกัน การที่จะนำ Storage ไปไว้หลังเครื่องใดเครื่องหนึ่งก็จะเกิดความเสี่ยง เพราะเกิดเครื่องนั้นเดี้ยงไป ก็จบเหแน่ๆ ก็เลยกลายเป็นเทคโนโลยี่ที่เรียกว่า NAS (Network Attach Storage) คือการนำ Storage SERVER ต่อเข้ากับ Network จะเป็น 100 Mbps หรือ 1 Gbps ก็แล้วแต่ แต่ปัญหาก็ยังเกิดขึ้นอีก หากมีการใช้งานมาก Traffic ที่อยู่ใน Network ก็จะลำบาก ลองคิดดู ขณะที่ SERVER ต้องการ Backup คุยกัน แต่ Client ที่อยู่ใน Network ก็ยังต้องคุยกันใน Network มันก็ทำให้วิ่งได้น้อยลง เกิดองค์กรมีคน 100 คน วิ่งบน 1 Gbps ก็วิ่งกันได้คนละ 10 Mbps เต็มที่ จึงทำให้เราอยู่ในยุคที่มีเทคโนโลยี่ใหม่เข้ามาช่วยนั้นคือ SAN (Storage Area Network)

ทั้งนี้ก็แล้วแต่ละเลือกใช้ Storage กันว่าจะใช้แบบไหน ใช้ของเจ้าไหน แต่ละยี่ห้อก็มีความแตกต่างในเทคโนโลยี่ที่แตกต่างกันไป ทั้งในเรื่องของ Software บริหารจัดการ Storage และ เทคโนโลยี่การเก็บ Array ของการทำ RAID เพื่อป้องกัน Disk ให้มากที่สุด และเรื่องของการทำ Backup ที่รวดเร็วแตกต่างกันไป พูดพอแล้ว ก็มาดูรูปกันว่า DAS - NAS - SAN มันเป็นแบบไหน

SAN คืออะไร

SAN คืออะไร

ในอดีด เราจะพบการต่อ Storage 2 แบบ แบบแรกคือต่อเข้า Network กลางเลย โดยมี Client วิ่งอยู่ในวงด้วย ก็จะทำให้ทุก Client มองเห็น Storage ด้วย หรือ อีกแบบคือ การต่อแบบเอา Storage ต่อเข้าไปกับ Server ผ่าน USB หรืออะไรก็ตาม แล้วก็เอา Server นั้นต่อเข้าไปกับวง LAN ผ่านสาย LAN RJ45 ซึ่งปัจจุบัน Storage นั้นมีขนาดใหญ่ขึ้นเรื่อยๆ การใช้งาน Network ในองค์กรก็มากขึ้นเรื่อยๆ ทำให้เกิดคอขวดของ Traffic จึงเกิด Solution ใหม่เกิดขึ้นคือ SAN ซึ่งย่อมาจาก Storage Attach Network นั้นคือ แยก Storage ออกมาจากวง LAN โดยมาต่อข้างหลัง Server อีกที ซึ่ง Server หลายตัวก็จะต่อเข้ากับ Storage ผ่านเทคโนโลยี่ Fibre Channel (FC) ซึ่งมีความเร็วสูง ซึ่งทำให้รับส่งข้อมูลผ่าน Network ได้ด้วยความเร็วสูง

ทำไมต้อง SAN

เป็นสิ่งที่หลายๆคนถามกันว่า แล้วทำไมต้อง SAN ด้วยก็เอา Server ต่อกับ Storage ตู้นึงก็พอแล้ว หรือ เอาเครื่องมาใส่ๆๆๆ Storage ก็พอแล้ว มันก็ถูกต้องครับ สำหรับการต่อไม่มาก แต่ต้องไม่ลืมว่า ที่ผ่านมาเราประสบปัญหาว่า หาก Server ที่นำมาทำ Storage เสีย หรือ RAID Controller เสีย มันก็เดี้ยงไปเหมือนกัน ดังนั้นด้วยเทคโนโลยี่ SAN ถึงทำให้เกิด Solution ในจินตนาการ และนำมาเป็นจริงได้ เรามาดูข้อดีของ SAN กันว่าทำไมต้อง SAN ด้วย
  1. ลดประมาณ Disk : รู้ไหมว่า ปัญหาเดิมๆ กับการใช้ Disk ใน Server คือ คุณต้องเสีย Disk ปริมาณมากในการทำ RAID ทุกเครื่อง หรือ คุณต้องเพิ่ม Disk ทั้งๆที่อีกเครื่องยังมี Disk เหลือในเครื่องอื่น ทุกปัญหาเหล่านี้จะหายไป เพราะว่าเมื่อคุณรวม Disk ของทุก Server เข้าไปอยู่ที่ SAN คุณจะ Manage ทุกอย่างบนที่เดียวไม่ต้องเสีย Disk สำรองมากมาย เพราะเสียแค่ในตู้ SAN อย่างเดียว ช่วยลด Cost Disk ไปได้ อิอิ
  2. ลดคอขวด Network : การมี Storage Server มากๆ แล้ววิ่งอยู่ใน Network กลางบริษัท จะทำให้เกิดคอขวด ทำให้ Network ช้าได้ การต่อ SAN คือการเอา Server ทุกตัวมาต่อกับ Storage ผ่าน Fibre Channel แล้ว Server ก็ต่อผ่าน Network ทำให้ลด Traffic กลางได้
  3. ลด Downtime ของระบบ : คุณเคยไหมที่ Server เสีย แต่ Disk ไม่เสีย แต่ว่า Disk เก่าใส่กับเครื่องรุ่นใหม่ไม่ได้ หรือ Disk ใหม่ใส่กับเครืองเก่าไม่ได้ เพราะทุกวันนี้ กว่าเราจะ Upgrade Disk ก็ต้องปาเข้าไป 3-4 ปี ซึ่งตอนนั้นเทคโนโลยี่ก็เปลี่ยนซะแล้ว หรือ เครื่องเสีย แต่จะซื้อเครืองใหม่ ก็ใส่ไม่ได้เช่นกัน ทำให้ Systems คุณต้อง Down เป็นเวลานาน แล้วปวดเซียนเวียนกร้าวว่าฉันจะย้ายข้อมูลฉันไงดีหว้า ทุกปัญหานี้จะหมดไปด้วย SAN เพราะ Disk อยู่ในตู้ Storage พอเครื่องมีปัญหาก็แค่คุณเอาเครื่องใหม่ ใส่ HBA Card ก็สามารถนำ Data เดิมในตู้ Storage กลับมารันใช้งานได้เลย ง่ายนิดเดียว ทำให้ Server Hardware ก็เป็นเพียง Server Hardware ปราศจากความสำคัญไป เพราะส่วนสำคัญของเราคือข้อมูล ได้แยกออกมาเรียบร้อยแล้ว
  4. ง่ายต่อการใช้งาน : ด้วย Storage Manager ที่มีมาให้จัดการ ซึ่งทำให้คุณ ยึด หด ขยาย ลด จะทำอะไรกับ Storage คุณก็ทำได้ จะเพิ่ม Disk แล้วอัดเข้าไปเพิ่มใน RAID 5 ก็ทำได้แบบ no Downtime หรือคุณจะเพิ่ม Disk ก้อนใหม่ให้กับ Server เก่าก็ทำได้ทันที หรือคุณจะลดขนาดของ Disk ในเครื่องที่ใช้น้อย ก็ทำได้เช่นกัน ง่ายแค่ปลายนิ้วสัมผัส
  5. ปลอดภัยด้วยการ Backup : เคยไหมที่คุณต้องนั่ง Backup Server แต่ละตัว แต่ละตัว แต่ละตัว เยอะแยะไปหมด แถมถ้าแต่ละตัวคนละ OS ก็มึนกับ Tool ว่าจะใช้ Software Tool อะไรในเครื่องดี ทุกอย่างก็จัดกเก็บการอย่างไม่เป็นระบบระเบียบ ไม่รู้จะจับโยนใส่อะไรดี External Disk (Thumb Drive) ก็ใส่ได้รูเดียวของ UPS จะใส่ Tape ก็แพงแสนแพง แล้วต้องมีทุกตัวอีก โอ้ งานช้างเลย ดังนั้นปัญหาเหล่านี้จะหมดไป เพราะ SAN Storage Software มีระบบ Backup ให้คุณ ไม่ว่าจะทำ Flash Copy หรือ Copy แบบเต็มๆ ก็ทำได้ ทำได้ด้วยจุดเดียว ไม่คำนึงถึงว่าใน Disk นั้นจะมีอะไร มันก็ Backup หมด หรืออยากจะต่อ Tape ก็ต่อได้อย่างง่ายดาย แล้วใช้แค่ชุดเดียว ไม่ต้องมาซื้อทุกชุดต่อกับทุก Server เพราะแค่ชุดเดียวต่อกับ Storage เลยก็จบเลย ง่ายซะงั้น
  6. ลดค่าใช้จ่าย Software : จากปัญหาในข้อที่ผ่านมา เพราะทุกเครื่องคุณต้องซื้อ Software ทำ Backup หรือถ้าเอาเครือ่ง Server มาทำ Storage ก็ต้องซื้ออย่าง Windows Storage Server ซึ่งก็นั้นแหละครับ Cost ทั้งนั้น แต่ Storage Solution บน SAN นั้นมี Software management มาให้ ฟรี โอ้ ฟรี ย้ำอีกครั้งว่าฟรีครับ มันไม่ได้มาเป็นตู้เปล่าๆ ใส่ Disk Disk Disk แต่มันมาด้วย Software management และดีกว่านั้น Software พวกนี้ Upgrade ฟรีด้วยเพราะว่าก็มี Upgrade Firmware Version ตลอดเวลา ยกตัวอย่างเช่น IBM DS3400 ก็ออกมาก่อน RAID 6 จะมีในโลกใบนี้ แต่พอมีขึ้นมา ก็ไม่ต้องซื้อ Card ตัวใหม่เลย ก็ upgrade firmware มัน ก็ทำ RAID 6 ได้ ถ้าเป็น Server รับรองว่าคุณต้องซื้อ Card ใหม่แน่ๆ หรือคุณกล้า Upgrade Firmware บน RAID Controller ไหมล่ะ เสียทีก็ยุ่งเพราะ Config อยู่ใน RAID Controller แต่ว่า Storage แยกตู้นั้น Config RAID อยู่ใน Disk และ เหนือไปกว่านั้น Storage Solution ยังมี Battary Backup อีกต่างหาก ให้คุณไม่พลาดในการรับส่งข้อมูลที่อาจจะเกิดไฟดับหรืออะไรฉุกเฉินขึ้น ขณะกำลังส่งข้อมูลอยู่นั้นเอง

Fencing

The fencing daemon, fenced, should be run on every node that will use CLVM or GFS. It should be started after the node has joined the CMAN cluster (fenced is only used with CMAN; it is not used with GULM/SLM/RLM.) A node that is not running fenced is not permitted to mount GFS file systems.

All fencing daemons running in the cluster form a group called the "fence domain". Any member of the fence domain that fails is fenced by a remaining domain member. The actual fencing does not occur unless the cluster has quorum so if a node failure causes the loss of quorum, the failed node will not be fenced until quorum has been regained. If a failed domain member (due to be fenced) rejoins the cluster prior to the actual fencing operation is carried out, the fencing operation is bypassed.

The fencing daemon depends on CMAN for cluster membership information and it depends on CCS to provide cluster.conf information. The fencing daemon calls fencing agents according to cluster.conf information.

Node failure

When a domain member fails, the actual fencing must be completed before GFS recovery can begin. This means any delay in carrying out the fencing operation will also delay the completion of GFS file system operations; most file system operations will hang during this period.

When a domain member fails, the actual fencing operation can be delayed by a configurable number of seconds (post_fail_delay or -f). Within this time the failed node can rejoin the cluster to avoid being fenced. This delay is 0 by default to minimize the time that applications using GFS are stalled by recovery. A delay of -1 causes the fence daemon to wait indefinitely for the failed node to rejoin the cluster. In this case the node is not fenced and all recovery must wait until the failed node rejoins the cluster.

Domain startup

When the domain is first created in the cluster (by the first node to join it) and subsequently enabled (by the cluster gaining quorum) any nodes listed in cluster.conf that are not presently members of the CMAN cluster are fenced. The status of these nodes is unknown and to be on the side of safety they are assumed to be in need of fencing. This startup fencing can be disabled; but it's only truely safe to do so if an operator is present to verify that no cluster nodes are in need of fencing. (Dangerous nodes that need to be fenced are those that had gfs mounted, did not cleanly unmount, and are now either hung or unable to communicate with other nodes over the network.)

The first way to avoid fencing nodes unnecessarily on startup is to ensure that all nodes have joined the cluster before any of the nodes start the fence daemon. This method is difficult to automate.

A second way to avoid fencing nodes unnecessarily on startup is using the post_join_delay parameter (or -j option). This is the number of seconds the fence daemon will delay before actually fencing any victims after nodes join the domain. This delay will give any nodes that have been tagged for fencing the chance to join the cluster and avoid being fenced. A delay of -1 here will cause the daemon to wait indefinitely for all nodes to join the cluster and no nodes will actually be fenced on startup.

To disable fencing at domain-creation time entirely, the -c option can be used to declare that all nodes are in a clean or safe state to start. The clean_start cluster.conf option can also be set to do this, but automatically disabling startup fencing in cluster.conf can risk file system corruption.

Avoiding unnecessary fencing at startup is primarily a concern when nodes are fenced by power cycling. If nodes are fenced by disabling their SAN access, then unnecessarily fencing a node is usually less disruptive.

Configuration File

Fencing daemon behavior can be controlled by setting options in the cluster.conf file under the section . See above for complete descriptions of these values. The delay values are in seconds; -1 secs means an unlimitted delay. The values shown are the defaults.

Post-join delay is the number of seconds the daemon will wait before fencing any victims after a node joins the domain.


Post-fail delay is the number of seconds the daemon will wait before fencing any victims after a domain member fails.


Clean-start is used to prevent any startup fencing the daemon might do. It indicates that the daemon should assume all nodes are in a clean state to start.



Options

Command line options override corresonding values in cluster.conf.
-j secs
Post-join fencing delay
-f secs
Post-fail fencing delay
-c
All nodes are in a clean state to start.
-D
Enable debugging code and don't fork into the background.
-n name
Name of the fence domain, "default" if none.
-V
Print the version information and exit.
-h
Print out a help message describing available options, then exit.

See Also

วันอังคารที่ 15 ธันวาคม พ.ศ. 2552

ssh tunnel

เป็นการสร้าง tunnel ผ่านทาง ssh เพื่ิอเป็นการเปิด port 100 ฝั่งที่ remote ให้ใช้งาน port 80 ฝั่ง server
ตัวอย่างด้านล่างเมื่อสามารถ login ได้ จะสามารถเรียกใช้งาน http://127.0.0.1:100 ที่เครื่อง 192.168.1.1
ได้โดยที่ไม่ต้องเรียกใช้ผ่าน http://192.168.243.51

ssh -f root@192.168.1.1 -L 100:192.168.243.51:80 -N

option
-f background process
-L
local-port:host:remote-port
-N instructs OpenSSH to not execute a command on the remote system

การ Update cluster configuration หลังจากที่ทำการคอนฟิกเพิ่มเติมแล้ว

หลังจากที่เราได้เปลี่ยนหรือแก้ไขคอนฟิก cluster ใหม่เรียบร้อยแล้วเราจะต้อง update ค่าคอนฟิกของ cluster ให้เหมือนกันทั้งสองเครื่องโดยที่ไม่ต้อง down ระบบหรือ restart service ใหม่ สามารถทำผ่านทาง command line ดังนี้

ทำการแก้ไขคอนฟิก version ด้านบนของคอนฟิกไฟล์ที่ node1 ดังนี้

# vi /etc/cluster/cluster.conf

config_version="8"

ยกตัวอย่างเช่นถ้าคอนฟิกเดิมคือ version 7 ให้เพิ่มเป็น version 8 เสร็จแล้วทำการบันทึกและ copy คอนฟิกไปยังอีกเครื่องหนึ่ง (node2)

# scp /etc/cluster/cluster.conf root@node2:/etc/cluster

หลังจากนั้นรันคำสั่งดังต่อไปนี้ที่ node2 เพื่อทำการ update คอนฟิกให้ตรงกันทั้งสองเครื่อง

# ccs_tool update /etc/cluster.conf
# cman_tool version -r 8

การแก้ไขปัญหา Cluster suite ในกรณีที่ service มี state เป็น failed

ถ้าหาก services ที่รันอยู่บน Cluster suite มี state เป็น failed ให้รันคำสั่งเพื่อหยุดทำงานก่อนดังนี้

สมมติว่า service ที่รันอยู่คือ httpd

# clusvcadm -d httpd

หลังจากนั้นให้รันคำสั่งเพื่อ enable service อีกครั้งดังนี้

# clusvcadm -e httpd

ทดสอบดู status ด้วยคำสั่ง

# clustat -i 2

การทดสอบ relocate cluster serivce ของ Cluster suite เมื่อต้องการทดสอบ HA

การย้าย cluster service ของ Cluster suite เพื่อทดสอบ HA นั้นสามารถทำได้โดยคำสั่งดังนี้

สมมติว่า cluster service คือ zimbra

# clusvcadm -r zimbra

service จะถูกย้ายไปรันที่ node อื่นที่เป็น member ใน cluster แต่ถ้าหากต้องการให้ enable หรือย้ายไปที่ node ใดๆที่เราต้องการระบุ node ไปเลย เช่นให้ย้ายไปที่ node2 สามารถรันคำสั่งดังนี้

# clusvcadm -r zimbra -m node2

หรือ

# clusvcadm -e zimbra -m node2

การ check status cluster suite แบบ realtime

การ check status cluster suite แบบ realtime

การตรวจสอบ status ของ cluster ในแบบ realtime ว่าเป็นอย่างไรบ้าง โดยปกติเราสามารถตรวจสอบได้ผ่านทาง command line คือ clustat แต่จะไม่ update realtime ถ้าต้องการดูแบบ realtime ให้รันคำสั่งดังนี้

# clustat -i 2

ก็จะเป็นการดู status ของ clustat โดยที่จะ refresh ทุก 2 วินาทีแบบ realtime มากขึ้น

relocate cluster serivce ของ Cluster

การทดสอบ relocate cluster serivce ของ Cluster suite เมื่อต้องการทดสอบ HA

การย้าย cluster service ของ Cluster suite เพื่อทดสอบ HA นั้นสามารถทำได้โดยคำสั่งดังนี้

สมมติว่า cluster service คือ zimbra

# clusvcadm -r zimbra

service จะถูกย้ายไปรันที่ node อื่นที่เป็น member ใน cluster แต่ถ้าหากต้องการให้ enable หรือย้ายไปที่ node ใดๆที่เราต้องการระบุ node ไปเลย เช่นให้ย้ายไปที่ node2 สามารถรันคำสั่งดังนี้

# clusvcadm -r zimbra -m node2

หรือ

# clusvcadm -e zimbra -m node2

ทำการ stop,start Service
clusvcadm -d vip02_service
clusvcadm -e vip02_service

วันจันทร์ที่ 14 ธันวาคม พ.ศ. 2552

A Comparison of Linux's Journaled Filesystems

ext2

ext2 is not, of course, a journaled filesystem. However, it's notable because it's generally about the highest-performance filesystem in general use on any OS. Many admins elect to have portions of the file tree that are non-critical (e.g., /tmp) or that are to be normally mounted read-only (e.g., /usr) be formatted as ext2 for performance reasons.

In its general characteristics, ext2 is very much like FreeBSD's FFS with the "-o async" mount option (which explains why it's prone to occasional lossage in crashes). I still tend to use it for performance reasons on /tmp & similar, and on filesystems normally mounted read-only (e.g., /usr).



ext3

Modified ext2 with integrated journaling ("logging" in Solaris lingo).

ext3 has good performance generally, and some of the fastest I/O speed for reads. It has the unique advantage that, if the journal is ever damaged or questionable, you can remount the filesystem as ext2 and recreate the journal. I.e., it has a "fallback" to non-journaled mode for recovery.

ext3 has by far the most mature, conservative[1], effective fsck and mkfs utilities (maintained by Ted T'so), and general operation. It is designed to be forgiving of the failure modes of commodity x86 hardware, which can be dangerous to data.[2]

Alternative write modes, selected as mount options (summarised from an IBM article on Linux advanced filesystem management):

  • data=writeback: Metadata-only, and best performance. Could allow recently modified files to become corrupted in the event of an unexpected reboot.

  • data=ordered: Officially journals only metadata, but it logically groups metadata and data blocks into a single unit called a transaction. When it's time to write the new metadata out to disk, the associated data blocks are written first. data=ordered effectively solves data=writeback's corruption risk (shared by other journeled FSes generally), without resorting to full journaling. data=ordered tends to be perform slightly slower than data=writeback, but significantly faster than full journaling.

    When appending data to files, data=ordered provides all of full data journaling's integrity protection. However, if part of a file is being overwritten when the system crashes, it's possible the region being written will receive a combination of original blocks interspersed with updated blocks. This is because data=ordered provides no guarantees as to which blocks are overwritten first, so you can't assume that just because overwritten block x was updated, that overwritten block x-1 was updated as well. Data=ordered leaves the write ordering up to the hard drive's write cache. In general, this doesn't bite people often; file appends are much more common than overwrites. So, data=ordered is a good higher-performance replacement for full journaling.

  • data=journal: Full data and metadata journaling: All new data are written to the journal first. Oddly, in certain situations, data=journal can be blazingly fast, where data needs to be read from and written to disk at the same time (interactive I/O).

Reports say that data=journal provides highest throughput for mail spools, because the small files are written, sent, then removed. When this is all done in the journal, things supposedly go much faster. Otherwise, data=writeback, which is the default, tends to provide best overall performance. Directory indexing supposedly improves access for directories with many small files significantly.

ext3 defaults to syncing all its buffers every 5 seconds, out of conservatism. This, too, can be increased for higher performance (mount parameter "commit=nnnn").

Linux 2.6.0 and later kernels + related utilities (or patched 2.4 kernels such as Red Hat's) also add directory-hashing support, which dramatically speeds performance on directories with thousands or more of files. Do "tune2fs -O dir_index /dev/[device]; e2fsck -D /dev/[device]" on each filesystem of interest, to enable directory hashing.



ReiserFS

ReiserFS has gone through (at last count) four distinct, on-disk formats, with at best rocky compatibility from one to the next. The "fsck" (filesystem check) utilities for ReiserFS has earned a reputation for often repairing filesystems by massive deletion of files. This appears to happen primarily because of loss of metadata, as opposed to damage to datafiles. Many observers have been leery of the design, for those two reasons. Some would object that the characteristics of versions before ReiserFS4 are no longer relevant: Others hold the inconsistent, changing design, and severe reliability problems of the prior code against it.

ReiserFS enjoys fast file creation/deletion. It's best used for filesystems housing large numbers of small, changeable files, e.g., a machine running a Usenet news server. Reiser is space-efficient and does not pre-allocate inodes: They are done on the fly.

ReiserFS defaults to writing metadata before data. ext3-like behaviour can be forced, instead, by using a "data=ordered" mount parameter.



XFS

SGI's XFS is generally the fastest of the journaled filesystems, having exceptionally good performance for filesystems housing (individually) very large files (gigabytes each) on very large partitions, e.g., for video production: XFS was designed (on SGI IRIX) to be a full 64-bit filesystem from the beginning, and thus natively supports files as large as 2^63 = 9 x 10^18 = 9 exabytes (about a million terabytes) as implemented on 2.6 kernels, or 64 terabytes as implemented on 2.4. XFS is much faster than the other filesystems at deleting large files — an order of magnitude faster than ext3 and two orders of magnitude faster than ReiserFS.

When last I used it, XFS performance on small and medium-sized files tended to be relatively a little slower than ReiserFS and a bit faster than ext3, but it's possible that this may have changed.

XFS defaults to writing metadata before data, and this behaviour cannot be overridden.

The biggest problem with XFS is that the very extensive changes SGI had to make to the kernel's VFS layer, to incorporate it, seem troubling.



JFS:

Like most people I have no experience with IBM's JFS for Linux (which IBM ported from OS/2, rather than from AIX). However, a friend who's used it extensively on Linux sends the following report:

JFS is generally reliable, but lost/damaged files show up in lost+found more often than they do with XFS. On the other hand, such files are more likely to be intact: XFS tends to pad them with null sections, which you must remove. JFS has a somewhat higher CPU cost than does XFS.



Other considerations

Both ReiserFS and XFS impose significant additional CPU load, relative to ext3 (except that XFS has very low CPU load, relatively speaking, when handling very large files.

There are many other subtleties of filesystem performance, such as whether performance is good with files that are extended in place as opposed to being erased and rewritten. If those are of interest, I can attempt to research them. (I've not included those for lack of data, at the moment.)

Note that performance can be strongly affected by other filesytem mounting options not covered here, e.g., admins will sometimes use the "noatime" option to gain higher performance on certain portions of the file tree, where it's not necessary to keep a timestamp of when each file was last opened.

How to different between GFS and GFS2

Additional Differences Between GFS and GFS2

This section summarizes the additional differences in GFS and GFS2 administration that are not described in Section 1.2.1, “GFS2 Command Names”.



Context-Dependent Path Name

GFS2 file systems do not provide support for context-dependent path names, which allow you to create symbolic links that point to variable destination files or directories. For this functionality in GFS2, you can use the bind option of the mount command. For information on managing pathnames in GFS2, see Section 3.11, “Bind Mounts and Context-Dependent Path Names”.


gfs2.ko Module

The kernel module that implements the GFS file system is gfs.ko. The kernel module that implements the GFS2 file system is gfs2.ko.


Enabling Quota Enforcement in GFS2

In GFS2 file systems, quota enforcement is disabled by default and must be explicitly enabled. To enable and disable quotas for GFS2 file systems, you use the quota=on|off|account option for the mount command. For information on enabling and disabling quota enforcement, see Section 3.4.4, “Enabling/Disabling Quota Enforcement”.


Data Journaling

GFS2 file systems support the use of the chattr command to set and clear the j flag on a file or directory. Setting the +j flag on a file enables data journaling on that file. Setting the +j flag on a directory means "inherit jdata", which indicates that all files and directories subsequently created in that directory are journaled. Using the chattr command is the preferred way to enable and disable data journaling on a file.


Adding Journals Dynamically

In GFS2 file systems, journals are plain (though hidden) files instead of embedded metadata. This means that journals can be dynamically added as additional servers mount a filesystem. For information on adding journals to a GFS2 file system, see Section 3.6, “Adding Journals to a File System”.


atime_quantum parameter removed

The GFS2 file system does not support the atime_quantum tunable parameter, which can be used by the GFS file system to specify how often atime updates occur. In its place GFS2 supports the relatime and noatime mount options. The relatime mount option is recommended to achieve similar behavior to setting the atime_quantum parameter in GFS.


The data= option of the mount command

When mounting GFS2 file systems, you can specify the data=ordered or data=writeback option of the mount. When data=ordered is set, the user data modified by a transaction is flushed to the disk before the transaction is committed to disk. This should prevent the user from seeing uninitialized blocks in a file after a crash. When data=writeback is set, the user data is written to the disk at any time after it is dirtied. This does not provide the same consistency guarantee as ordered mode, but it should be slightly faster for some workloads. The default is ordered mode.


The gfs2_tool command

The gfs2_tool command supports a different set of options for GFS2 than the gfs_tool command supports for GFS:

*
The gfs2_tool command supports a journals parameter that prints out information about the currently configured journal, including how many journals the file system contains.
*
The gfs2_tool command does not support the counters flag, which the gfs_tool command uses to display GFS statistics.
*
The gfs2_tool command does not support the inherit_jdata flag. To flag a directory as "inherit jdata", you can set the jdata flag on the directory or you can use the chattr command to set the +j flag on the directory. Using the chattr command is the preferred way to enable and disable data journaling on a file.


The gfs2_edit command

The gfs2_edit command supports a different set of options for GFS2 than the gfs_edit command supports for GFS.

GFS2 Performance Improvements

There are many features of GFS2 filesystems that do not result in a difference in the user interface from GFS file systems but which improve file system performance.
A GFS2 filesystem provides improved file system performance in the following ways:
  • Better performance for heavy usage in a single directory.
  • Faster synchronous I/O operations
  • Faster cached reads (no locking overhead)
  • Faster direct I/O with preallocated files (provided I/O size is reasonably large, such as 4M blocks)
  • Faster I/O operations in general
  • Execution of the df command is much faster, because of faster statfs calls.
  • The atime mode has been improved to reduce the number of write I/O operations generated by atime when compared with GFS.
GFS2 file system provide broader and more mainstream support in the following ways.
  • GFS2 is part of the upstream kernel (integrated into 2.6.19).
  • GFS2 supports the following features:
    • SELinux extended attributes.
    • the lsattr() and chattr() attribute settings via standard ioctl() calls.
    • nanosecond timestamps
A GFS2 file system provides the following improvements to the internal efficiency of the file system.
  • GFS2 uses less kernel memory
  • GFS2 requires no metadata generation numbers.
    Allocating GFS2 metadata does not require reads. Copies of metadata blocks in multiple journals are managed by revoking blocks from the journal before lock release.
  • GFS2 includes a much simpler log manager that knows nothing about unlinked inodes or quota changes.
  • The gfs2_grow and gfs2_jadd commands use locking to prevent multiple instances running at the same time.
  • The ACL code on has been simplified for calls like creat() and mkdir().
  • Unlinked inodes, quota changes, and statfs changes are recovered without remounting the journal.

NAS or SAN

At first glance NAS and SAN might seem almost identical, and in fact many times either will work in a given situation. After all, both NAS and SAN generally use RAID connected to a network, which then are backed up onto tape. However, there are differences -- important differences -- that can seriously affect the way your data is utilized. For a quick introduction to the technology, take a look at the diagrams below.

Wires and Protocols
Most people focus on the wires, but the difference in protocols is actually the most important factor. For instance, one common argument is that SCSI is faster than ethernet and is therefore better. Why? Mainly, people will say the TCP/IP overhead cuts the efficiency of data transfer. So a Gigabit Ethernet gives you throughputs of 600-800 Mbps rather than 1000Mbps.

But consider this: the next version of SCSI (due date ??) will double the speed; the next version of ethernet (available in beta now) will multiply the speed by a factor of 10. Which will be faster? Even with overhead? It's something to consider.

The Wires
--NAS uses TCP/IP Networks: Ethernet, FDDI, ATM (perhaps TCP/IP over Fibre Channel someday)
--SAN uses Fibre Channel

The Protocols
--NAS uses TCP/IP and NFS/CIFS/HTTP
--SAN uses Encapsulated SCSI


More Differences
NAS
SAN
Almost any machine that can connect to the LAN (or is interconnected to the LAN through a WAN) can use NFS, CIFS or HTTP protocol to connect to a NAS and share files. Only server class devices with SCSI Fibre Channel can connect to the SAN. The Fibre Channel of the SAN has a limit of around 10km at best
A NAS identifies data by file name and byte offsets, transfers file data or file meta-data (file's owner, permissions, creation data, etc.), and handles security, user authentication, file locking A SAN addresses data by disk block number and transfers raw disk blocks.
A NAS allows greater sharing of information especially between disparate operating systems such as Unix and NT. File Sharing is operating system dependent and does not exist in many operating systems.
File System managed by NAS head unit File System managed by servers
Backups and mirrors (utilizing features like NetApp's Snapshots) are done on files, not blocks, for a savings in bandwidth and time. A Snapshot can be tiny compared to its source volume. Backups and mirrors require a block by block copy, even if blocks are empty. A mirror machine must be equal to or greater in capacity compared to the source volume.
What's Next?
NAS and SAN will continue to butt heads for the next few months, but as time goes on, the boundaries between NAS and SAN are expected to blur, with developments like SCSI over IP and Open Storage Networking (OSN), the latter recently announced at Networld Interop. Under the OSN initiative, many vendors such as Amdahl, Network Appliance, Cisco, Foundry, Veritas, and Legato are working to combine the best of NAS and SAN into one coherent data management solution.

NAS, DAS, SAN


DAS

Direct-attached storage เป็นวิธีการเก็บ

ข้อมูลแบบตรงโดยที่ไม่ผ่าน Network

Protocal Type

SCSI, SAS, Fibre Channel



NAS

Network-Attached Storage เป็นวิธีการเพิ่มการเก็บข้อมูลแบบง่ายโดยผ่าน Network และสามารถจัดการ Storage ผ่าน Browser

Network Protocal

SMB, FTP, NFS, HTTP, UPnP, AFP, Rsync, SSH, Unison, AFS, iSCSI





SAN

Storage Area Network คือระบบโครงสร้างการจัดเก็บข้อมูลขนาดใหญ่ ซึ่ง SAN ไม่ได้อยู่บน Lan แต่จะอยู่หลัง Server หรืออุปกรณ์ใดอุปกรณ์หนึ่งที่สามารถรับ-ส่งข้อมูลได้อย่างรวดเร็ว เช่น อาจจะผ่าน Fiber Channel Hub, Fiber Channel Switch, หรือเทคโนโลยีอื่นๆที่ตามมาในอนาคต

Network Type



วันอาทิตย์ที่ 13 ธันวาคม พ.ศ. 2552

NBD : Network Block Device

เทคโนโลยี NBD ได้พัฒนาต่อยอดไปอีก ได้แก่
ANBD (Another Network Block Device) ที่ขยายการสนับสนุนการทำงานแบบ Multithreading และมีการแจ้งข้อความผิดพลาดต่างๆ ที่ดียิ่งขึ้น
ENBD (Enhanced Network Block Device) ได้เพิ่มคุณสมบัติการเชื่อมต่อใหม่โดยอัตโนมัติ การพิสูจน์สิทธิผู้ใช้งาน และสนับสนุนอุปกรณ์ชนิด Removable
DNBD (Distributed Network Block Device) เปลี่ยนไปใช้โปรโตคอลชนิด UDP ในการรับส่งข้อมูลและสนับสนุน Multicast การมีแคชในฝั่งเครื่องลูกข่าย การทำ Server Redundancy
GNBD (Global Network Block Device) ซึ่งเป็นฐานของการพัฒนาไปสู่ GFS (Global File System)

ISCSI กับการใช้งาน


วันพฤหัสบดีที่ 10 ธันวาคม พ.ศ. 2552

Red Hat Cluster Suite Introduction


Cluster Basics

cluster คือ computer สองเครื่องหรือมากกว่า (ต่อไปจะเรียกว่า nodes หรือ members ) ที่ทำงานร่วมกันเพื่อดำเนินงาน มี 4 ประเภท
• Storage
• High availability
• Load balancing
• High performance

storage clusters จัดการ ระบบไฟล์ image ให้สอดคล้องกับ server ใน cluster เพื่อให้ระบบสามามารถอ่านเขียนไฟล์ได้จากระบบไฟล์อันเดี่ยวกัน
และช่วยลดความยุ่งยากในการบริหารจัดการ โดย จำกัดการติดต้ง และ patching ของ โปรแกรม ระบบ ไฟล์ ดังนั้น ระบบ cluster file system จึงไม่จำเป็นต้องทำการ
สำเนาไฟล์ซ้ำซ้อน และช่วยลด การสำรอง ข้อมูล และช่วยการกู้คือข้อมูลด้วย Red Hat Cluster Suite ได้จัดการระบบ storage ผ่านทาง Red Hat GFS

High-availability clusters จัดการให้มีการทำงานอย่างต่อเนื่อง ของ service โดยตัดการการให้บริการในส่วนของ nodes ที่ล้มเหลวออกและจัดการให้บริการ
ไปยัง nodes อื่นๆแทนที่ทำงานได้ปกติ High-availability clusters จะมีการ อ่าน เขียนข้อมูลที่ถูก mount มาใช้งาน ดังนั้น high-availability cluster
จึงต้องการการรักษาข้อมูลภายใน nodes โดย nodes กลุ่ม หนึ่งจะ ควบคุม การ บริการ จาก nodes คลัสเตอร์ อื่น หาก nodes ใดล้มแล้วจะไม่มีผลกระทบกับการทำงานโดยรวม
Red Hat Cluster Suite ได้จัดเตรียม high-availability clustering ผ่าน Service Management component.

Load-balancing clusters คือการจัดกลุ่มของคอมพิวเตอร์หลายๆตัวเพื่อแบ่งงานกัน หรือกระจาย load การใช้งานของ user ไปยังคอมพิวเตอร์ภายในกลุ่ม เพื่อให้สามารถรับจำนวน user
ที่เข้ามาใช้งานได้มากขึ้น หรือสามารถรับงานที่เข้ามาได้มากขึ้น นอกจากนั้นยังมีคุณสมบัติของ Fail Over คือหากมีคอมพิวเตอร์ภายในกลุ่มไม่สามารถทำงานได้ เช่น Down อยู่ หรือไม่สามารถรับงานหรือuserเพิ่มได้เนื่องจาก resource ที่ใช้ทำงานไม่พอ
ตัว Load Balancer ที่เป็นตัวแจก load ให้คอมพิวเตอร์ภายในกลุ่มก็จะส่ง load ไปยังคอมพิวเตอร์เครื่องอื่นๆแทน จนกว่าคอมพิวเตอร์เครื่องนั้นจะกลับมาใช้งานได้ใหม่
Red Hat Cluster Suite ได้จัดเตรียม load-balancing ผ่าน LVS (Linux Virtual Server).

High-performance clusters ในงานประมวลผลประสิทธิภาพสูงที่ต้องใช้เวลาในการคำนวณนาน Cluster สามารถเพิ่มประสิทธิภาพในการประมวลผล สำหรับอัลกอรึทึมที่มีการทำงานแบบขนาน (Parallel Computing) โดยการแบ่งปัญหาออกเป็นชิ้นๆ แล้วนำปัญหาที่ได้จากการแบ่งไปคำนวณยังหน่วยประมวลผลหลายๆ ตัวในเวลาเดียวกัน เพื่อลดเวลาที่ต้องใช้แก้ปัญหาลงได้

Cluster

Red Hat Cluster Suite Overview
Clustered systems provide reliability, scalability, and availability to critical production services. Using
Red Hat Cluster Suite, you can create a cluster to suit your needs for performance, high availability,
load balancing, scalability, file sharing, and economy. This chapter provides an overview of Red Hat
Cluster Suite components and functions, and consists of the following sections:
• Section 1.1, “Cluster Basics”
• Section 1.2, “Red Hat Cluster Suite Introduction”
• Section 1.3, “Cluster Infrastructure”
• Section 1.4, “High-availability Service Management”
• Section 1.5, “Red Hat GFS”
• Section 1.6, “Cluster Logical Volume Manager”
• Section 1.7, “Global Network Block Device”
• Section 1.8, “Linux Virtual Server”
• Section 1.9, “Cluster Administration Tools”
• Section 1.10, “Linux Virtual Server Administration GUI”