ฉันจะติดตั้งและใช้ flashcache / bcache เพื่อแคช HDD กับ SSD ได้อย่างไร


52

ฉันต้องการทราบว่ามีใครที่ลองติดตั้งและใช้งานเคอร์เนลที่สร้างขึ้นด้วยflashcacheหรือbcacheสำหรับการแคช SSD หรือไม่

คุณจัดการได้อย่างไร


คำถามที่ดี. ฉันแนะนำ flashcache ในบางคำตอบของฉัน ( 1 , 2 ) ดูเหมือนเครื่องมือสำหรับงานที่ติดกับ DM-แคช นอกจากนี้ยังเกี่ยวข้องกับผู้ที่กำลังมองหาทางเลือกใหม่สำหรับIntel Smart Response for Ubuntu / Linux
gertvdijk

ฉันถูกมองว่าเป็นทางเลือกของ Intel SRT ส่วนโค้ง wiki ที่นี่บอกด้วยอีกสองสามคำว่ามันไม่ได้เป็นเพราะลมใจ ปัญหาคือฉันกำลังวางแผนที่จะเล่นกับมันบนพีซีเครื่องเดียวสำหรับทั้งที่ทำงานและเล่น :) ดังนั้นจึงเป็นเรื่องที่น่าวิตกและหวังว่าจะได้รับวิธีการที่นี่ คุณคิดว่ามันจะเป็นไปได้ที่จะรัน ubuntu บน VM และมีหนึ่งไดรฟ์ (ไฟล์ตาม) บนดิสก์หนึ่งบน SSD (อีกครั้งตามไฟล์) เพื่อทดสอบ ยินดีที่จะให้มันไป :) :)
kapad

คำถามที่ดี แต่เป็นคำตอบที่ใช้ VMs เป็นเตียงทดสอบถือว่าสมบูรณ์หรือไม่ ผู้คนจำนวนมากไม่มีฮาร์ดแวร์ที่จำเป็นในการตอบคำถามนี้
RobotHumans

4
ลองใช้ Flashcache นี้แล้ว? gerrit-tamboer.net/...
ดอกมะลิ

4
dm-cacheได้ถูกรวมเข้ากับเคอร์เนล 3.9 Linux เสถียรแล้ว ฉันเดาคำถาม 26 คะแนนนี้สมควรได้รับคำตอบตอนนี้ :)
gertvdijk

คำตอบ:


10

เราได้คำตอบ bcache แต่ไม่มีคำตอบ flashcache ฉันเลือก flashcache เพราะฉันมีการติดตั้งอยู่แล้วดังนั้น bcache จึงไม่เป็นเช่นนั้น สำหรับฉันมันง่ายกว่าที่จะตั้งค่าเช่นกัน ฉันเลือกวิธี DKMS ดังนั้นฉันจะไม่ติดสร้างโมดูล / เครื่องมือใหม่ทุกครั้งที่อัพเกรดเคอร์เนล

ขั้นตอนเหล่านี้ได้อธิบายไว้ในREADME-DKMSบน Github

สร้างโมดูล

  1. สิ่งแรกที่คุณทำคือติดตั้งสิ่งที่จำเป็นต้องมีของอาคาร:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. จากนั้นขัดขวางแหล่งที่มา:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. สร้างและติดตั้งโมดูล:

    make -f Makefile.dkms
    

การสร้างอุปกรณ์ flashcache

(ในตัวอย่างนี้ฉันใช้แคชการเขียนกลับ - ค่าเริ่มต้น - แต่ flashcache สามารถเขียนทับและเขียนทับได้เช่นกัน)

การแคชอุปกรณ์ที่ไม่ใช่รูท (ไม่ได้เมาท์ที่ /)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX โดยที่ fcache เป็นอุปกรณ์ที่สร้างขึ้น (/ dev / mapper / fcache), / dev / sdaX เป็น SSD partion (หรือทั้งดิสก์) และ / dev / sdbX เป็นพาร์ติชั่น HDD

กำลังแคชอุปกรณ์รูทของคุณ

มีขั้นตอนอีกไม่กี่ขั้นตอนหากคุณแคชอุปกรณ์รูทของคุณ คุณจะต้องใช้ Ubuntu LiveCD / USB สำหรับส่วนนี้

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. แก้ไข /boot/grub/grub.cnf และ / etc / fstab เพื่อบูตจาก / dev / mapper / fcache (ฉันไม่เชื่อว่าขั้นตอนนี้จำเป็นจริงๆ แต่บอกว่า) ต้องแน่ใจว่าจด UUID ของอุปกรณ์รูทดั้งเดิมของคุณ

  4. รีบูทด้วย LiveCD / LiveUSB

  5. เมานต์อุปกรณ์รูทของคุณ: mount /dev/sda4 /mnt(/ dev / sda4 เป็นพาร์ทิชันรูท Linux ของฉัน)

  6. cd /mnt/path/to/flashcache/source

  7. sudo apt-get install dkms build-essential linux-headers-$(uname -r)

  8. make; sudo make install ไม่จำเป็นต้องทำการตั้งค่า DKMS ทั้งหมดในสภาพแวดล้อมจริง

  9. ถอนติดตั้งอุปกรณ์รูท sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] โดยที่ fcache เป็นอุปกรณ์ที่สร้างขึ้น (ควรเป็นแบบเดียวกับที่คุณใส่ใน / etc / fstab และ /boot/grub/grub.cnf ในกรณีของฉันคือ fcache) / dev / sdbX เป็นพาร์ติชัน SSD (หรือดิสก์ทั้งหมด ) และ [UUID] เป็น UUID ของพาร์ติชันรูทของคุณ

  11. Reboot!

คำเตือนเมื่อใช้อุปกรณ์รูท

สิ่งเล็กน้อยที่น่ารำคาญเมื่อใช้ flashcache สำหรับอุปกรณ์รูทคือตัวตรวจจับด้วงไม่สามารถตรวจจับอุปกรณ์รูทและสามารถทำเมนูการบู๊ตของคุณเพื่อที่ว่าคุณจะได้ Ubuntu สองตัว แต่มันก็ไม่สำคัญว่าคุณจะใช้อะไรในความเป็นจริงตั้งแต่make -f Makefile.dkms boot_confขั้นตอนข้างต้นจะติดตั้งสคริปต์บางตัวใน initrd ของคุณซึ่งจะตรวจจับและใช้อุปกรณ์ flashcache


2
ฉันเห็นว่าอย่างน้อยใน raring มีแพ็คเกจสำหรับ flashcache-dkms และ flashcache-utils การติดตั้งจะเปลี่ยนแปลงอย่างไร?
ivant

โอ้จริงเหรอ? ฉันไม่ได้สังเกต ฉันกำลังรัน Raring เช่นกัน แต่ติดตั้งจากที่เก็บ Git ฉันต้องดูแพ็คเกจ แต่ฉันสามารถจินตนาการได้ว่าคุณจะสามารถข้ามส่วนสองส่วนแรกและยังคงทำงานผ่านกระบวนการบูทอุปกรณ์รูท
Chuck R

1
แพ็คเกจ flashcache-dkms ของ ubuntu 13.10 ไม่ได้รวมโมดูล flashcache และไบนารีไว้ใน initramfs ดังนั้นหากคุณ flashcache รูทของคุณคุณจะไม่สามารถบูตได้ ฉันได้สร้างข้อบกพร่อง: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148ฉันได้สร้าง flashcache จากแหล่งที่มาตามที่อธิบายไว้ข้างต้นและฉันสามารถบูตเชนต่อไปนี้: sda7 -> flashcache -> dm- crypt -> lvm -> ext4 เพียงเพิ่ม flashcache dev ลงใน / etc / crypttab และ update-initramfs -u
Martin Vysny

คุณสามารถเพิ่มความคิดเห็นด้วยการเปลี่ยนแปลงที่คุณต้องทำกับไฟล์ด้วง
kapad

ฉันไม่แก้ไข grub.cfg อีกต่อไปดูเหมือนว่าไม่จำเป็น แต่คุณจะเปลี่ยนเช่นนี้: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetการlinux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(เช่นเปลี่ยนราก = พารามิเตอร์)
ชัค R

12

มีเครื่องมือการแปลงสำหรับเปิดใช้งาน bcache บนอุปกรณ์ที่มีอยู่ (เปิดเผย: ฉันเขียนมัน) นอกจากนี้ยังเป็นวิธีในการรับการติดตั้งใหม่เนื่องจากผู้ติดตั้ง distro ปัจจุบันไม่ทราบวิธีการสร้างอุปกรณ์ bcache (ในกรณีนี้: เริ่มต้นด้วยการติดตั้งลงบน HDD)

ดูการแปลงระบบไฟล์รูทของคุณเป็น bcacheในblocksREADME สำหรับคำแนะนำ

bcache ต้องใช้ลินุกซ์ 3.10 หรือใหม่กว่าซึ่งอยู่ในทะลึ่งและสามารถติดตั้งได้ด้วยตนเองจาก http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (มองหาการเปิดตัวที่ติดแท็กใหม่ล่าสุด ปัจจุบันv3.11.5-saucyและติดตั้ง debs ที่ตรงกับสถาปัตยกรรมของคุณ)

bcache-toolsและblocksสามารถติดตั้งจากppa การจัดเก็บข้อมูลของฉัน


1
เครื่องมือนี้ใช้งานไม่ได้สำหรับ Ubuntu รุ่นปัจจุบัน (15.04) ดูgithub.com/g2p/maintboot/issues/1และgithub.com/g2p/blocks/issues/13
Jean Jordaan

ที่จริงแล้วตัวเครื่องมือยังไม่แตก (ทดสอบเมื่อวานนี้บนฮาร์ดไดรฟ์ 350GB) แต่รุ่นปัจจุบันไม่สามารถใช้ในการแปลงระบบดิสก์ ( /, /home, /usr/, ... ) ในขณะที่ระบบกำลังทำงาน (ตาม maintboot เสีย) คุณสามารถใช้ USB Stick แบบสดแทนติดตั้งที่blocksนั่นและใช้สำหรับแปลงดิสก์ของคุณ อย่างไรก็ตามจงระวังว่าเครื่องมือนี้ใช้ได้กับตารางพาร์ติชัน MBR และ GPT หลักเท่านั้นและต้องใช้พื้นที่เพิ่มเติม 1MiB ก่อนแต่ละพาร์ติชัน
ntninja

5

คำเตือนล่วงหน้า: bcache ไม่สามารถใช้สำหรับการติดตั้ง Ubuntu ที่มีอยู่ของคุณ หากคุณต้องการแคช SSD สำหรับระบบปฏิบัติการของคุณคุณควรรอรุ่นติดตั้ง Ubuntu ในอนาคตหรือรุ่นพิเศษซึ่งสามารถตั้งค่าแคช SSD ของคุณได้ ดูคำตอบโดย Oli ที่นี่: bcache ต้องการการติดตั้งใหม่หรือไม่?

สำหรับคนอื่น ๆ ที่ต้องการไดรฟ์ bcache สำหรับข้อมูลที่ไม่ใช่ระบบปฏิบัติการ:

สิ่งแรกที่ต้องทำคืออัพเกรดเคอร์เนลของคุณถ้าคุณใช้ 13.04 ขึ้นไปโดยใช้เคอร์เนล PPA คำแนะนำสำหรับการใช้นี้สามารถพบได้ที่นี่:

https://wiki.ubuntu.com/Kernel/MainlineBuilds

ตรวจสอบให้แน่ใจว่าคุณเลือกเคอร์เนล 3.9 หรือสูงกว่าเมื่อบู๊ตไม่ทำงานและไดรฟ์ของคุณจะหายไป

ติดตั้ง bcache-tools ในตอนนี้คุณจะต้องติดตั้งจากที่เก็บ git:

git clone http://evilpiepirate.org/git/bcache-tools.git

หากคุณจัดการแพ็คเกจbcache-toolsสำหรับเดเบียนโปรดแจ้งให้เราทราบและคำถามนี้จะได้รับการอัปเดตให้คุณ (การbcache-toolsสร้างการพึ่งพาคือuuid-devและlibblkid-devจะต้องติดตั้งเพื่อสร้างbcache-tools)

เมื่อคุณมีเครื่องมือทั้งหมดแล้วคุณก็พร้อมที่จะลองทำตามคำแนะนำที่นี่:

http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

คู่มือนี้แสดงวิธีการฟอร์แมตไดรฟ์ (SSD และฮาร์ดไดรฟ์) จากนั้นแนบเข้าด้วยกันเพื่อสร้างบล็อกอุปกรณ์ใหม่โดยใช้ bcache โพสต์ความคิดเห็นหากคุณพบว่าคำแนะนำสับสนและฉันจะอัปเดตคำตอบนี้ด้วยการทำให้เข้าใจง่าย


เป็นไปได้หรือไม่ที่จะสร้างดิสก์เริ่มต้นที่ใช้เคอร์เนล 3.9 และสร้างไดรฟ์ bcache และติดตั้ง Ubuntu บนไดรฟ์นี้
kapad

kapad - มันควรจะเป็นไปได้ แต่คุณจะต้องตรวจสอบให้แน่ใจว่าการติดตั้ง Ubuntu นั้นมีไดรเวอร์ที่ถูกต้องในเวลาบูตและคุณอาจต้องทำการบู๊ตนอก bcache เพื่อให้ด้วงสามารถหาได้
Martin Owens -doctormo-

2

ฉันคิดว่าฉันจะมาที่นี่และแสดงความคิดเห็นกับสิ่งที่เกิดขึ้นกับฉันเมื่อฉันติดตั้งเคอร์เนลใหม่ ฉันใช้ flashcache สำหรับพาร์ติชัน / home / folder ของฉันเท่านั้น ฉันติดตั้งเคอร์เนลใหม่บูตเข้าไปและหยุดในระหว่างการบูตและบอกว่าไม่พบ / dev / mapper / home_cached มี 3 ตัวเลือกที่คุณมีเมื่อคุณได้รับข้อความนี้และฉันเลือกตัวเลือกเพื่อเข้าสู่ระบบในฐานะ root และ พยายามแก้ไข ฉันแรกพยายามโหลดโมดูล flashcache และมันบอกว่าหาไม่พบ ดังนั้นฉันคิดว่าฉันจะต้องรวบรวมและติดตั้งสำหรับเคอร์เนลใหม่นี้ฉันเพิ่งติดตั้ง ฉันยังคงมี / flashcache / โฟลเดอร์ที่ตั้งอยู่ภายใน / root / ดังนั้นฉัน cd'd เข้าไปและวิ่ง

make -f Makefile.dkms boot_conf

จากนั้นฉันก็วิ่ง

make install

จากนั้นฉันโหลดโมดูล flashcache ด้วย

modprobe flashcache

จากนั้นฉันก็ต้องโหลดอุปกรณ์ flashcache ที่มีอยู่ซึ่งก็คือ

flashcache_load /dev/sdb1

จากนั้นเพียงแค่ติดตั้งพาร์ทิชันที่บ้านของฉันด้วย

mount /home

จากนั้นออกจากการเข้าสู่ระบบในฐานะ root ด้วยการออกในบรรทัดคำสั่งและมันควรจะบูตต่อไปตามปกติ เสร็จหมดแล้ว!


ฉันอยากรู้ว่ามันยังใช้งานได้หรือไม่ฉันเปลี่ยนมาใช้ flashcache ไม่ได้อีกต่อไปฉันเพิ่งติดตั้ง Arch บน 64GB SSD (เคอร์เนล linux คิดว่าเป็น 32GB เท่านั้น) เนื่องจากเฟิร์มแวร์ภายใน ฉันเห็นว่าสิ่งนี้มีประโยชน์ในการเป็นแคชสำหรับบางเกม
Ubu the Guru Tech
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.