รวมเรื่องเกี่ยวกับ cache และ proxy
จะทดลองเพิ่มความเร็วฮาร์ดดิสก์ ลองซื้อ SSD ขนาด 60G มาตัวนึง เพื่อมาทำ cache
ได้ทดสอบ bcache แต่ไปไม่รอด มันต้องการเคอร์เนลใหม่เกินไป ทำให้กระทบส่วนอื่น ๆ ของเครื่อง จึงได้หันมาหา flashcache
ติดตั้งแพคเก็จที่จำเป็น
# 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}
รีบูตไปที่ /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 ...
รีบูต
เสร็จแล้ว
รีบูตไปที่ /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 ...
รีบูต
-p thru
ยังใช้ไม่ได้apt-proxy เป็นซอฟต์แวร์ที่ใช้เก็บแพคเกจ apt
ใครมีเครื่องลินุกส์ที่ใช้แพคเกจ apt ในหน่วยงานตั้งแต่สองเครื่องขึ้นไป
ควรติดตั้งไว้ที่เครื่องเซิร์ฟเวอร์เป็นอย่างยิ่งครับ
เอามาจาก : ThaiLinuxCafe - ทำแคชให้เดเบียนแพคเก็จด้วย apt-proxy
โฮมเพจอยู่ที่ : http://apt-proxy.sourceforge.net/
ขอไว้อาลัยและอุทิศกุศลแด่ : คูณ Manuel Estrada Sainz (ranty) และคุณ Andrés García (ErConde) ผู้พัฒนาด้วยครับ
ที่เครื่องเซิร์ฟเวอร์
สมมุติว่าเซิร์ฟเวอร์ชื่อ server1.example.com ไอพี 192.168.1.5
เริ่มติดตั้งด้วย
# aptitude install apt-proxy
ปรับตั้งแพคเกจนิดหน่อย
# vi /etc/apt-proxy/apt-proxy-v2.conf
... max_age = 120d ;; อายุแพคเกจในแคช ผมใช้ 360d ... [debian] backends = http://ftp.us.debian.org/debian ;;http://mirror.in.th/debian ... ... [security] backends = http://security.debian.org/debian-security ... ... [ubuntu] backends = http://th.archive.ubuntu.com/ubuntu http://mirror.in.th/ubuntu/archive ... ... [ubuntu-security] backends = http://security.ubuntu.com/ubuntu ...
ใช้งานได้แล้ว
ที่เครื่องลูกข่าย
เวลาเรียกใช้งานจากเครื่องลูก เราแก้ไขไฟล์ /etc/apt/sources.list ให้มาใช้ของเรา
$ sudo vi /etc/apt/sources.list
ถ้าเป็นเดเบียน
deb http://server1.example.com:9999/debian/ etch main contrib non-free deb-src http://server1.example.com:9999/debian/ etch main contrib non-free deb http://server1.example.com:9999/security/ etch/updates main contrib non-free deb-src http://server1.example.com:9999/security/ etch/updates main contrib non-free
ถ้าเป็นอูบุนตู
deb http://server1.example.com:9999/ubuntu/ edgy main restricted universe multiverse deb-src http://server1.example.com:9999/ubuntu/ edgy main restricted universe multiverse deb http://server1.example.com:9999/ubuntu/ edgy-updates main restricted universe multiverse deb-src http://server1.example.com:9999/ubuntu/ edgy-updates main restricted universe multiverse deb http://server1.example.com:9999/ubuntu-security/ edgy-security main restricted universe multiverse deb-src http://server1.example.com:9999/ubuntu-security/ edgy-security main restricted universe multiverse
หมายเหตุ
ทำแคชให้ apt ด้วย approx
approx เป็นซอฟต์แวร์ที่ใช้เก็บแพคเกจ deb ที่ apt จะมาเรียกไปติดตั้ง
ใครมีเครื่องลินุกส์ที่ใช้แพคเกจ apt ในหน่วยงานตั้งแต่สองเครื่องขึ้นไป ควรติดตั้งไว้ที่เครื่องเซิร์ฟเวอร์เป็นอย่างยิ่ง
จากการทดลองใช้งานพบว่า ช้ากว่า apt-proxy (ซึ่งช่วงหลังมีปัญหาตายบ่อยมาก) แต่เสถียรกว่าเยอะ
ใช้พอร์ต 9999 เป็นพอร์ตเดียวกับ apt-proxy ทำให้ปรับใช้แทน apt-proxy ได้อย่างง่ายดาย
เริ่มติดตั้ง
ที่เครื่องเซิร์ฟเวอร์
สมมุติว่าเซิร์ฟเวอร์ชื่อ server1.example.com ไอพี 192.168.1.5
เริ่มติดตั้งด้วย
# aptitude install approx
ปรับตั้งแพคเกจนิดหน่อย
# vi /etc/approx/approx.conf
... #debian http://ftp.debian.org/debian debian ftp://debianclub.org/debian security http://security.debian.org/debian-security volatile http://volatile.debian.org/debian-volatile ...
เริ่มใหม่
# /etc/init.d/approx restart
ใช้งานได้แล้ว
ที่เครื่องลูกข่าย
เวลาเรียกใช้งานจากเครื่องลูก เราแก้ไขไฟล์ /etc/apt/sources.list ให้มาใช้ของเรา
$ sudo vi /etc/apt/sources.list
ถ้าเป็นเดเบียน
deb http://server1.example.com:9999/debian/ lenny main contrib non-free deb-src http://server1.example.com:9999/debian/ lenny main contrib non-free deb http://server1.example.com:9999/security/ lenny/updates main contrib non-free deb-src http://server1.example.com:9999/security/ lenny/updates main contrib non-free
เอามาจาก
debianadmin.com: Upgrade multiple debian systems with Approx
หมายเหตุ
# vi /etc/approx/approx.conf
debian http://localhost:9998/debian security http://localhost:9998/security volatile http://localhost:9998/volatile
เป็นต้น ใช้งานสักสองสามวัน จนคลังของ approx เต็ม แล้วจึงค่อยเปลี่ยนกลับ