Las*_*asi 12 ssd gparted bcache
我尝试在 Ubuntu 14.04 中设置 bcache,使用全新安装和空/home分区 ( /dev/sdb2) 作为后备设备。我的 SSD 上有一个正在运行的系统,我想使用它的/dev/sda2分区来缓存我的/home
. 我总是设法从论坛中解决我的 ubuntu 问题,但我很难理解这里的基础知识并需要帮助:
一开始设置bcache需要登录什么账号?显然,在安装期间创建的用户/dev/sdb2必须注销/home才能卸载,因此我在单独的分区上设置了一个临时用户帐户来执行此操作。这似乎已经太笨拙了。
make-bcache -B并且-C都告诉我设备上有非 bcache 超级块,所以我sudo wipefs -a在两个设备上都做了。然后,分区在 GParted 中显示为未格式化且没有 UUID。这是正常的吗?
如果是这样,fstab 和/home启动时会发生什么?我需要在 fstab 中使用 bcache 的 UUID 吗?我做了,但系统/home在下次启动时没有找到分区。
双方echo /dev/sdb2 > /sys/fs/bcache/register并echo /dev/sda2 > /sys/fs/bcache/register返回“权限被拒绝”的消息; 据我所知/sys,无法写入。
所以 echo /dev/sdb2 | sudo tee /sys/fs/bcache/register似乎已经奏效了。
有人可以验证这是在 Ubuntu 中执行此操作的正确方法吗?
我似乎设法创建、注册和附加了后备驱动器,但根据tail /sys/block/bcache0/bcache/stats_total/* 我只绕过了数据。我的整个设置现在很混乱,所以任何澄清将不胜感激。
在 Ubuntu 15.10 中,alex 的答案不再正确。的initramfs图像被锁定在安装程序并不会自动安装系统时重新生成。因此,一个人将有一个bcache安装,但它将无法启动。我在别处写了对以下过程的更详细的描述;但是,以下是基础知识:
启动到 Ubuntu live-cd 并使用fdisk或创建以下分区方案gparted。假设/dev/sda是您的 SSD 和/dev/sdb您的 HDD:
/dev/sda1 - 1024 MB, EXT4, used for /boot (grub/grub2 doesn't support bcache)
/dev/sda2 - any format, for cache
/dev/sdb1 - EFI partition (if your machine needs it)
/dev/sdb2 - swap
/dev/sdb3 - any format, backing partition
Run Code Online (Sandbox Code Playgroud)
打开终端,擦除备份和缓存设备上的文件系统:
sudo wipefs -a /dev/sda2
sudo wifefs -a /dev/sdb3
Run Code Online (Sandbox Code Playgroud)
安装bcache-tools并创建bcache设备:
sudo apt-get update
sudo apt-get install bcache-tools
sudo make-bcache -B /dev/sdb3 -C /dev/sda2
sudo mkfs.ext4 /dev/bcache0
Run Code Online (Sandbox Code Playgroud)
使用自定义分区程序安装操作系统,如下所示:
/dev/bcache0 - format EXT4, use as /
/dev/sda1 - format EXT4, use as /boot
/dev/sdb1 - EFI partition (if your machine needs it)
/dev/sdb2 - swap
Run Code Online (Sandbox Code Playgroud)
安装完成后不要重启!
使用chroot我们bcache-tools在新安装上安装。设置环境并启用 DNS 解析
sudo mount /dev/bcache0 /mnt
sudo mount /dev/sda1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Run Code Online (Sandbox Code Playgroud)
对于 Ubuntu 17.10 或更新版本,您还需要复制 resolv.conf 文件,以便 DNS 解析在chroot环境中工作。
sudo mv /mnt/etc/resolv.conf /mnt/etc/resolv.conf.backup
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
进入chroot并进行安装
sudo chroot /mnt
sudo apt-get update
sudo apt-get install bcache-tools
Run Code Online (Sandbox Code Playgroud)
在安装过程中,您应该注意到initramfs重新生成并安装到 ( chroot-ed)/boot分区。
彻底卸载文件系统并重新启动。
exit
sudo mv /mnt/etc/resolv.conf.backup /mnt/etc/resolv.conf # for 17.10+ only
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
sudo reboot
Run Code Online (Sandbox Code Playgroud)
经过一番尝试和错误后,我得到了以下全新安装的解决方案:
/dev/sdb2是您想要的空间/home)。# apt-get install bcache-tools# make-bcache -B /dev/sdb2 -C /dev/sda2 (这会创建/dev/bcache0,但 UI 安装程序尚无法使用它。)# mkfs.ext4 /dev/bcache0 (这使得安装程序在“device /dev/bcache0”下看到一个“partition /dev/bcache0”,并允许您在安装过程中将其用作“/home”。)initrd映像bcache,因为我们bcache-tools之前已经安装了该模块,因此重新启动后它就可以正常工作。bcache-tools再次安装,以便进一步的更新不会通过从 initrd 映像中省略必要的 bcache 内核模块来削弱启动过程。小智 0
我也尝试并失败了很多次,直到找到这些说明: http://www.wdong.org/wordpress/blog/2014/05/28/installing-ubuntu-14-04-to-bcache/
它们听起来有些毛茸茸的,但这可能是让 bcache 运行的唯一可行的方法,至少在 bcache 成为 ubuntu 安装程序的一部分之前是这样。
说明中唯一奇怪的遗漏是最后一个阶段。
完成所有操作后,在 /sys/fs/bcache 中查找缓存集的 UUID 并执行以下操作:
echo <UUID> > /sys/block/bcache0/bcache/attach
Run Code Online (Sandbox Code Playgroud)
如果您想启用写回模式(我强烈推荐):
echo writeback > /sys/block/bcache0/bcache/cache_mode
Run Code Online (Sandbox Code Playgroud)
捕获各种文件/sys/block/bcache0/bcache/将告诉您有关缓存如何运行的所有信息。我于今年 7 月 26 日使用这些说明设置了我的系统,从那以后一切都运行良好。cat /sys/block/bcache0/bcache/stats_total/cache_hit_ratio显示出非常令人满意的 88%,主观上,该机器感觉像是全 SSD 设置。
| 归档时间: |
|
| 查看次数: |
19038 次 |
| 最近记录: |