debian: ติดตั้ง flashcache
จะทดลองเพิ่มความเร็วฮาร์ดดิสก์ ลองซื้อ SSD ขนาด 60G มาตัวนึง เพื่อมาทำ cache
ได้ทดสอบ bcache แต่ไปไม่รอด มันต้องการเคอร์เนลใหม่เกินไป ทำให้กระทบส่วนอื่น ๆ ของเครื่อง จึงได้หันมาหา flashcache
สมบัติเครื่อง
- debian wheezy/sid linux-image-3.2.0-3-amd64
- ฮาร์ดดิสก์เก่า เป็น /dev/sda โดยเมานต์ /dev/sda6 เป็น /share และ /dev/sda8 เป็น /
- SSD ใหม่ เป็น /dev/sdb และเพื่อป้องกันปัญหาของระบบ จึงเลือกแบ่งพาร์ติชั่นดังนี้
- /dev/sdb5 ขนาด 16G คัดลอกมาจาก /dev/sda8
- /dev/sdb6 ขนาด 4G ทำ swap
- /dev/sdb7 ขนาด 40G ทำ cache ให้กับ /dev/sda6 (sda6 มี UUID="fcc7ad22-4bee-408b-998b-25351c89e7d4")
วิธีการ
ติดตั้งแพคเก็จที่จำเป็น
# aptitude install dkms build-essential linux-headers-`uname -r`
ดาวน์โหลด flashcache และคอมไพล์
# cd /usr/src # mkdir flashcache # cd flashcache # git clone https://github.com/facebook/flashcache.git # cd flashcache # make -f Makefile.dkms
เตรียม /dev/sdb
# fdisk -l /dev/sdb Disk /dev/sdb: 60.0 GB, 60022480896 bytes 81 heads, 63 sectors/track, 22973 cylinders, total 117231408 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x58997006 Device Boot Start End Blocks Id System /dev/sdb1 2048 117231407 58614680 5 Extended /dev/sdb5 4096 33558527 16777216 83 Linux /dev/sdb6 33560576 41949183 4194304 82 Linux swap / Solaris /dev/sdb7 41951232 117231407 37640088 83 Linux
# mkfs.ext4 /dev/sdb5 #(UUID="c1ba303d-bd4e-4473-9430-34d6b907bbdd") # mkfs.ext4 /dev/sdb7 # mkswap /dev/sdb6
ตรวจ uuid
# blkid /dev/sda5: UUID="ab04b1bc-d1d2-4bdd-8fda-7e2755c35271" TYPE="ext4" /dev/sda6: UUID="fcc7ad22-4bee-408b-998b-25351c89e7d4" TYPE="ext4" /dev/sda7: UUID="eb268873-fcb5-4d5c-b826-59b5fa339079" TYPE="swap" /dev/sda8: UUID="15c9a8a3-0449-458c-9564-0daff370a0d2" TYPE="ext4" /dev/sdb5: UUID="c1ba303d-bd4e-4473-9430-34d6b907bbdd" TYPE="ext4" /dev/sdb6: UUID="6cada279-d335-429f-ad72-69442de1ee08" TYPE="swap" /dev/sdb7: UUID="f06896fe-b3be-43a1-9230-2433c683ee2e" TYPE="ext4"
# mkdir /mnt/tmp{1,2} # mount /dev/sda8 /mnt/tmp1 # mount /dev/sdb5 /mnt/tmp2 # rsync -av --delete /mnt/tmp1/ /mnt/tmp2 # vi /mnt/tmp2/etc/fstab
... #old /dev/sda8#UUID=15c9a8a3-0449-458c-9564-0daff370a0d2 / ext4 errors=remount-ro 0 UUID=c1ba303d-bd4e-4473-9430-34d6b907bbdd / ext4 errors=remount-ro 0 ...
# umount /mnt/tmp{1,2} # rm -rf /mnt/tmp{1,2}
วิธีสร้าง cache device (/dev/sdb7 เป็น cache ให้ /dev/sda6)
รีบูตไปที่ /dev/sdb5 โดยบูตเป็นแบบ recovery เข้า grub แล้วกด c
set root=(hd1,5) linux /boot/vmlinuz-3.2.0-3-amd64 root=UUID=c1ba303d-bd4e-4473-9430-34d6b907bbdd ro single initrd /boot/initrd.img-3.2.0-3-amd64 boot
ยกเลิกเมานต์ /dev/sda6
# umount /dev/sda6
ทำ /dev/sdb7 เป็น cache ให้ /dev/sda6 โดยทำให้เป็นแคชแบบ writeback
# flashcache_create -p back cache_dev /dev/sdb7 /dev/disk/by-uuid/fcc7ad22-4bee-408b-998b-25351c89e7d4
จะเกิด device ขึ้นมาอยู่ที่ /dev/mapper/cache_dev
แก้ไข /etc/fstab ให้มาใช้ cache device
# vi /etc/fstab
... #UUID=fcc7ad22-4bee-408b-998b-25351c89e7d4 /share ext4 defaults 0 2 /dev/mapper/cache_dev /share ext4 defaults 0 0 ...
รีบูต
เสร็จแล้ว
วิธีลบ cache drive (กลับมาใช้ /dev/sda6 ดังเดิม)
รีบูตไปที่ /dev/sdb5 โดยบูตเป็นแบบ recovery
ยกเลิกเมานต์ /dev/mapper/cache_dev
# umount /dev/mapper/cache_dev
ยกเลิก cache drive
# flashcache_destroy /dev/sdb7
ลบ cache drive
# dmsetup remove cache_dev
แก้ /etc/fstab ให้กลับไปใช้ /dev/sda6
# vi /etc/fstab
... UUID=fcc7ad22-4bee-408b-998b-25351c89e7d4 /share ext4 defaults 0 2 #/dev/mapper/cache_dev /share ext4 defaults 0 0 ...
รีบูต
ผลทดลอง
- เร็วขึ้นแบบรู้สึกได้
- เจอโหลด write back แบบหนักหน่วงแล้วอาจทำให้เครื่องหยุดได้
- พารามิเตอร์
-p thru
ยังใช้ไม่ได้
ที่มา
- Printer-friendly version
- Log in or register to post comments
- 22195 reads
Recent comments