สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

การสร้าง Ram Disk ในระบบ Ubuntu

Ram Disk คือการนำหน่วยความจำหลัก ซึ่งก็คือ Ram มาสร้างหรือจำลองให้เป็นหน่วยความสำรอง หรือ Disk Drive นั่นเอง ซึ่งประโยชน์ก็เพื่อใช้เป็นที่พักข้อมูลหรือใช้เป็นส่วนการ caching ของระบบบางอย่าง ซึ่งการใช้ Ram มาสร้างเป็น Ram Disk นั้นจะให้ความเร็วในการอ่านเขียนไฟล์ข้อมูลได้อย่างรวดเร็วชนิดที่ผียังหลอกไม่ทันกันเลยทีเดียว ซึ่งในระบบ Ubuntu หรือ Linux ทั่วไปก็สามารถสร้าง Ram Disk ได้อย่างง่ายดาย โดยในการสร้าง Ram Disk จะมี 2 แบบ ให้เลือก คือ ramfs และ tmpfs โดยความแตกต่างกันนั้นคือ ramfs จะสร้าง Ram Disk โดยข้อมูลจะอยู่ใน Ram เท่านั้น และไม่สามารถกำหนดขอบเขตของ Ram Disk ได้ ซึ่งหากมีการเขียนข้อมูลเกินขนาดของ Ram แล้ว ระบบจะค้างและล่มไปเลยครับ ส่วน tmpfs นั้น จะเป็น Ram Disk ที่ข้อมูลจะอยู่ใน Ram เช่นกัน แต่หาก Ram มีการใช้งานไม่พอ อาจจะทำให้ข้อมูลย้ายจาก Ram ไปอยู่ใน Swap Memory ได้ และ tmpfs จะสามารถกำหนดขนาดของ Ram Disk ได้ครับ ซึ่งวิธีการสร้างนั้นก็ง่ายมาก ดังนี้ครับ

1. การสร้าง Ram Disk แบบชั่วคราว
การสร้าง Ram Disk แบบชั่วคราว เราสามารถสร้างได้ด้วยคำสั่ง mount ง่าย ๆ ครับ โดยผมจะสร้าง Ram Disk ไปยังโฟล์เดอร์ /cache เราสามารถสร้าง Ram Disk แบบ ramfs ได้ดังนี้ครับ
$ sudo mount -t ramfs none /cache

ส่วนการสร้าง Ram Disk แบบ tmpfs นั้น หากผมต้องการจะทำการสร้าง Ram Disk ขนาด 2G เราสามารถสร้างได้ดังนี้ครับ
$ sudo mount -o size=2G -t tmpfs none /cache

เพียงเท่านี้ เราก็จะได้ Ram Disk มาใช้อย่างง่ายดายครับ แต่เมื่อเราปิดเครื่อง Ram Disk ของเราก็จะหายไปครับ หากต้องการใช้ใหม่ก็ต้องทำการสร้างกันใหม่ครับ และเมื่อเราสร้าง Ram Disk แล้ว เราจะยกเลิกการใช้งาน เราก็สามารถยกเลิก Ram Disk ได้ดังนี้ครับ
$ sudo umount /cache

เพียงเท่านี้ Ram Disk ของเราก็จะถูกยกเลิกไปแล้วครับ

2. การสร้าง Ram Disk แบบถาวร
ในการสร้าง Ram Disk แบบถาวรนั้น จะหมายถึง Ram Disk ของเรา เมื่อมีการเปิดเครื่องใหม่ ระบบก็จะสร้าง Ram Disk ให้ใช้ทุกครั้งที่เปิดเครื่อง แต่ข้อมูลทั้งหมดเมื่อปิดเครื่องก็จะหายไปหมดเช่นเดียวกัน เนื่องจากข้อมูลนั้นอยู่ใน Ram ครับ ในการสร้าง Ram Disk แบบถาวร เราสามารถสร้างโดยไปแก้ไขไฟล์ /etc/fstab โดยในการสร้าง Ram Disk ทั้งแบบ ramfs และแบบ tmpfs เราสามารถทำได้ดังนี้ครับ

File : /etc/fstab
#ram disk with ramfs
none     /cache1      ramfs   rw            0      1

#ram disk with tmpfs
none     /cache2      tmpfs   rw,size=2G    0      1

เมื่อเราบูตเครื่องใหม่ เราก็จะได้ Ram Disk ให้ใช้แล้วครับ

3. การทดสอบความเร็วของ Ram Disk
เรามาทำการทดสอบความเร็วในการทำงานของ Ram Disk ทั้งสองแบบ เมื่อเทียบกับการใช้งาน HDD จริงกันดูครับ โดยผมได้สร้างโปรแกรมภาษา Python ให้ทำการเขียนข้อมูลลงในฐานข้อมูล SQLite จำนวน 100,000 เรคคอร์ด แล้วนำเวลาที่ใช้มาแสดง โดยโปรแกรมมีรายละเอียดดังนี้ครับ

File : tx.py
import sqlite3, time

dbname = "tx.db"

def dbc(sql):
 con = sqlite3.connect(dbname)
 db = con.cursor()
 db.execute(sql)
 con.commit()
 con.close()

t1 = time.time()
dbc("create table if not exists data (data text)")
for i in range(100000):
 dbc("insert into data values ('data')")
t2 = time.time()
td = t2 - t1
print "time uses ",td
โดยผลลัพธ์จากการทดลองบน HDD, ramfs และ tmpfs ได้ผลดังนี้ครับ

HDD
$ python tx.py
time uses  16654.4391341

ramfs
$ python tx.py
time uses  13.2654869556

tmpfs
$ python tx.py
time uses  13.2045300007

จะเห็นว่า ตอนใช้ HDD จะใช้เวลา 16654.4391341 วินาที หรือ 4 ชั่วโมง 37 นาที 34 วินาที ในขณะที่ ramfs และ tmpfs ใช้เวลาเพียง 13 วินาทีเท่านั้นครับ