Làm cách nào để cài đặt và sử dụng flashcache / bcache để lưu trữ bộ nhớ cache vào ổ cứng SSD?


52

Tôi muốn biết liệu có ai đã thử cài đặt và chạy kernel của họ được tích hợp flashcache hoặc bcache cho bộ nhớ cache SSD không?

Làm thế nào bạn quản lý để làm điều đó?


Câu hỏi hay. Tôi đã gợi ý flashcache trong một số câu trả lời của tôi ( 1 , 2 ). Có vẻ như các công cụ cho công việc, bên cạnh dm-cache. Nó cũng phù hợp với tất cả những ai đang tìm kiếm một giải pháp thay thế cho Phản hồi thông minh của Intel cho Ubuntu / Linux.
gertvdijk

Tôi, tooo đã xem nó như một sự thay thế cho Intel SRT. Các wiki vòm ở đây nói, trong một vài từ nữa, nó không dành cho người yếu tim. Vấn đề là tôi đang có kế hoạch chơi xung quanh nó trên PC duy nhất của mình cho cả công việc và chơi :), vì vậy rất e ngại và hy vọng có được một cách để đến đây. Bạn có nghĩ rằng sẽ có thể chạy Ubuntu trên máy ảo và có một ổ đĩa (dựa trên tệp) trên đĩa trên ổ SSD (một lần nữa, dựa trên tệp) để kiểm tra. Sẵn sàng cho nó đi rồi :)
kapad

Câu hỏi hay, nhưng câu trả lời có sử dụng VM làm giường thử được coi là hoàn chỉnh không? Rất nhiều người không có phần cứng cần thiết để thực sự trả lời điều này.
RobotHumans

4
đã thử điều này cho Flashcache? gerrit-tamboer.net/ Từ
jasmines

4
dm-cache hiện đã được hợp nhất vào bản phát hành kernel 3.9 ổn định. Tôi đoán câu hỏi 26 phiếu này xứng đáng có câu trả lời ngay bây giờ. :)
gertvdijk

Câu trả lời:


10

Vâng, chúng tôi đã có một câu trả lời bcache nhưng không có câu trả lời flashcache. Tôi đã chọn flashcache vì tôi đã có một bản cài đặt hiện có, vì vậy bcache không còn nữa. Đối với tôi nó có vẻ dễ dàng hơn để thiết lập là tốt. Tôi đã chọn phương thức DKMS vì vậy tôi sẽ không bị kẹt khi xây dựng lại mô-đun / công cụ mỗi khi tôi nâng cấp kernel.

Các bước này được phác thảo trong README-DKMS trên Github.

Xây dựng mô-đun

  1. Điều đầu tiên bạn làm là cài đặt các điều kiện tiên quyết của tòa nhà:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Sau đó, lấy nguồn:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Xây dựng và cài đặt các mô-đun:

    make -f Makefile.dkms
    

Tạo một thiết bị flashcache

(Trong ví dụ này tôi sử dụng bộ nhớ đệm writBack - mặc định - nhưng flashcache cũng có thể thực hiện ghi và viết)

Bộ nhớ đệm một thiết bị không root (không được gắn tại /)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Trong đó fcache là thiết bị được tạo (/ dev / mapper / fcache), / dev / sdaX là phân vùng SSD (hoặc toàn bộ đĩa) và / dev / sdbX là phân vùng ổ cứng.

Bộ nhớ đệm thiết bị gốc của bạn

Có một vài bước nữa nếu bạn lưu trữ thiết bị gốc của mình. Bạn sẽ cần một Ubuntu LiveCD / USB cho phần này.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Chỉnh sửa /boot/grub/grub.cnf và / etc / fstab để khởi động từ / dev / mapper / fcache (Tôi không tin rằng bước này thực sự cần thiết, nhưng nó nói là). Hãy chắc chắn ghi lại UUID của thiết bị gốc của bạn.

  4. Khởi động lại với LiveCD / LiveUSB.

  5. Gắn thiết bị gốc của bạn: mount /dev/sda4 /mnt(/ dev / sda4 là phân vùng gốc Linux của tôi)

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

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

  8. make; sudo make install Không cần thực hiện toàn bộ thiết lập DKMS trong môi trường trực tiếp

  9. Ngắt kết nối thiết bị gốc sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Trong đó fcache là thiết bị được tạo (nó phải giống như bạn đặt trong / etc / fstab và /boot/grub/grub.cnf, trong trường hợp của tôi là fcache), / dev / sdbX là phân vùng SSD (hoặc toàn bộ đĩa ) và [UUID] là UUID của phân vùng gốc của bạn.

  11. Khởi động lại!

Hãy cẩn thận khi sử dụng thiết bị root

Một phiền toái nhỏ khi flashcache được sử dụng cho thiết bị root là đầu dò grub không phát hiện được thiết bị gốc và có thể làm rối menu khởi động của bạn để bạn có hai yêu cầu Ubuntu. Tuy nhiên, việc bạn sử dụng trong thực tế không quan trọng vì make -f Makefile.dkms boot_confbước trên sẽ cài đặt một số tập lệnh trong initrd của bạn sẽ phát hiện và sử dụng thiết bị flashcache.


2
Tôi thấy rằng ít nhất trong hiếm có các gói cho flashcache-dkms và flashcache-utils. Cài đặt sẽ thay đổi như thế nào?
ngà

Ồ vậy sao Tôi đã không nhận thấy. Tôi cũng đang chạy Rared nhưng đã cài đặt nó từ kho Git. Tôi phải xem gói, nhưng tôi có thể tưởng tượng rằng bạn sẽ có thể bỏ qua các phần đầu tiên và vẫn chạy trong quá trình khởi động thiết bị gốc.
Chuck R

1
Gói flashcache-dkms của Ubuntu 13.10 không bao gồm các mô-đun flashcache và nhị phân cho initramfs, do đó, nếu bạn flashcache root của bạn, bạn sẽ không thể khởi động nó. Tôi đã tạo một lỗi: bug.launchpad.net/ubfox/+source/flashcache/+orms/1290148 Tôi đã xây dựng flashcache từ nguồn như mô tả ở trên và tôi đã có thể khởi động chuỗi sau: sda7 -> flashcache -> dm- mật mã -> lvm -> ext4. Chỉ cần thêm dev flashcache vào / etc / crypttab và update-initramfs -u
Martin Vysny

bạn có thể thêm một bình luận với những thay đổi mà bạn phải thực hiện đối với tệp grub không.
kapad

Tôi không sửa đổi grub.cfg nữa, có vẻ như không cần thiết. Tuy nhiên, bạn thực hiện một thay đổi như sau: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetthành linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(nghĩa là thay đổi tham số root =)
Chuck R

12

Có một công cụ chuyển đổi để kích hoạt bcache trên một thiết bị hiện có (tiết lộ: Tôi đã viết nó). Đây cũng là cách để cài đặt mới, vì các trình cài đặt distro hiện tại không biết cách tạo các thiết bị bcache (trong trường hợp này: bắt đầu bằng cách cài đặt vào ổ cứng).

Xem chuyển đổi hệ thống tập tin gốc của bạn sang bcache trong blocksREADME để được hướng dẫn.

bcache đòi hỏi Linux 3.10 hoặc mới hơn, mà là ở ngang tàng, và có thể được cài đặt bằng tay từ http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (nhìn cho việc phát hành được gắn thẻ mới nhất , hiện tại v3.11.5-saucyvà cài đặt các bản sửa lỗi phù hợp với kiến ​​trúc của bạn).

bcache-toolsblockscó thể được cài đặt từ ppa lưu trữ của tôi .


1
Công cụ này bị hỏng cho phiên bản (15.04) hiện tại của Ubuntu; xem github.com/g2p/maintboot/issues/1github.com/g2p/blocks/issues/13
Jean Jordaan

Trên thực tế, bản thân công cụ này hiện chưa bị hỏng (đã được thử nghiệm vào ngày hôm qua trên ổ cứng 350 GB). Tuy nhiên phiên bản hiện tại không thể được sử dụng để chuyển đổi đĩa hệ thống ( /, /home, /usr/, ...) trong khi hệ thống đang chạy (như maintboot bị tổn thương). Để thay thế, bạn có thể sử dụng USB Stick trực tiếp, cài đặt blockstại đó và sử dụng nó để chuyển đổi đĩa của bạn. Tuy nhiên, hãy cẩn thận rằng công cụ này chỉ hoạt động trên các bảng phân vùng MBR và GPT chính và yêu cầu thêm 1MiB không gian trước mỗi phân vùng.
ntninja

5

Cảnh báo trước: bcache không thể được sử dụng cho cài đặt Ubuntu hiện tại của bạn. Nếu bạn cần bộ nhớ đệm SSD cho hệ điều hành của mình, bạn nên chờ phiên bản tương lai hoặc phiên bản đặc biệt của trình cài đặt Ubuntu có thể thiết lập bộ đệm SSD của bạn. Xem câu trả lời này của Oli tại đây: bcache có yêu cầu cài đặt mới không?

Đối với những người khác muốn có ổ đĩa bcache cho dữ liệu không phải hệ điều hành:

Điều đầu tiên cần làm là nâng cấp kernel của bạn nếu bạn sử dụng 13.04 trở lên bằng PPA dòng chính kernel. Hướng dẫn sử dụng này có thể được tìm thấy ở đây:

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

Đảm bảo bạn chọn kernel 3.9 trở lên khi khởi động nếu không nó sẽ không hoạt động và ổ đĩa của bạn sẽ biến mất.

Cài đặt bcache-tools, tại thời điểm này, bạn sẽ phải cài đặt từ kho git:

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

Nếu bạn quản lý để gói bcache-toolscho debian, hãy cho chúng tôi biết và câu hỏi này sẽ được cập nhật cho bạn. ( bcache-toolsphụ thuộc vào bản dựng là uuid-devlibblkid-dev. Chúng phải được cài đặt để xây dựng bcache-tools.)

Khi bạn đã có tất cả các công cụ, bạn đã sẵn sàng thử và làm theo hướng dẫn tại đây:

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

Hướng dẫn này chỉ ra cách định dạng các ổ đĩa (SSD ổ cứng) và sau đó gắn chúng lại với nhau để tạo một khối thiết bị mới bằng bcache. Đăng một bình luận nếu bạn thấy các hướng dẫn khó hiểu và tôi sẽ cập nhật câu trả lời này với sự đơn giản hóa.


Có thể tạo một đĩa khởi động chạy kernel 3.9 và sau đó tạo ổ đĩa bcache và cài đặt ubfox trên ổ đĩa này không?
kapad

kapad - điều đó là có thể, nhưng bạn sẽ phải đảm bảo cài đặt Ubuntu có trình điều khiển phù hợp vào lúc khởi động và bạn có thể phải khởi động bên ngoài bcache để grub có thể tìm thấy nó.
Martin Owens -doctormo-

2

Tôi nghĩ rằng tôi sẽ đến đây và nhận xét về những gì xảy ra với tôi khi tôi cài đặt kernel mới. Tôi chỉ sử dụng flashcache cho phân vùng / home / thư mục. Tôi đã cài đặt kernel mới, khởi động vào nó và nó dừng lại trong quá trình khởi động và nói rằng nó không thể tìm thấy / dev / mapper / home_cached, có 3 lựa chọn bạn có khi nhận được thông báo này và tôi chọn tùy chọn để đăng nhập bằng root và cố gắng sửa nó Lần đầu tiên tôi thử tải mô-đun flashcache và nó nói rằng nó không thể tìm thấy nó. Vì vậy, tôi nghĩ rằng tôi sẽ phải biên dịch và cài đặt nó cho kernel mới mà tôi vừa cài đặt. tôi vẫn còn thư mục / flashcache / nằm trong / root / vì vậy tôi đã vào đó và chạy

make -f Makefile.dkms boot_conf

sau đó tôi chạy

make install

sau đó tôi tải mô-đun flashcache với

modprobe flashcache

sau đó tôi chỉ cần tải thiết bị flashcache hiện có của mình

flashcache_load /dev/sdb1

sau đó chỉ cần gắn kết phân vùng nhà của tôi với

mount /home

sau đó thoát ra khỏi việc đăng nhập bằng root với thoát trên dòng lệnh và nó sẽ tiếp tục khởi động như bình thường. tất cả đã được làm xong!


Tôi tò mò nếu điều này vẫn hoạt động, tôi đã kết thúc việc chuyển đổi và không sử dụng flashcache nữa, tôi chỉ cài đặt Arch trên SSD 64 GB (nhân linux nghĩ rằng nó chỉ có 32 GB) do phần sụn bên trong. Tôi có thể thấy điều này có ích như một ổ đĩa đệm cho một số trò chơi hơi nước.
Ubu the Tech Guru
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.