把Ubuntu系统安装在LVM上并且添加SSD做cache加速

2020-12-26 16:40:12 13点赞 66收藏 18评论

把--cachemode 改为了writeback 后,写入速度有了大幅提高,和SSD几乎一样的。但是注意,这样做有数据丢失的风险。 原文中的 --cachemode 是设为 writethrough 的,如果已经跟着我的原文设置了的,可以用下面命令更改这个设置: sudo lvchange --cachemode writeback MyVg/root 更改后的 Bonnie++ 测试成绩: Version 1.98 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP ubuntu-d-lvm 15664M 327k 96 463m 88 262m 53 1112k 89 642m 80 +++++ +++ Latency 27652us 196ms 160ms 7894us 4781us 1972us Version 1.98 ------Sequential Create------ --------Random Create-------- ubuntu-d-lvm-2g -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 0 41 +++++ +++ 3072 58 +++++ +++ +++++ +++ +++++ +++ Latency 302us 381us 539us 188us 32us 339us Block Write 463MB, 几乎和SSD一样了。

前段时间看到一篇介绍如何为LVM添加SSD作为cache加速的文章,不禁为之拍案叫绝。这么好的东西我之前怎么不知道呢!!!

Ubuntu Server使用LVM Cache机制为大容量机械硬盘加速(保姆级教程)小编注:此篇文章来自#原创新人#激励计划,新人发文前三篇文章,篇篇额外奖励50金币。参加超级新人计划活动,新人发文即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情追加修改(2020-10-1413:19:21):ubuntulvmcache官方文档地址最近用UbuntuSe春之叔| 17 评论21 收藏66查看详情

顺带学习了一下LVM相关的知识 《LVM 命令参考》,LVM的命令很多,但是还是很容易理解的。也找到了@春之叔 这篇文章的英文版本 -- Redhat上关于创建cache LV的介绍:

Creating LVM Cache Logical Volumesaccess.redhat.com去看看

为什么我对这个技术怎么感兴趣呢?

这里要交待一下背景,我有一台老电脑,Q45主板,Intel Q9500 四核CPU,8G DDR。因为机箱很大,其他地方不要了的垃圾就往里面一扔。所以它有:

  • 一块1T的笔记本硬盘

  • 3块 320G的台式机硬盘

  • 还有一个500G的M.2 SSD 用转接卡插在它的PCIe槽上

让我郁闷的是 它的主板太老,不支持PCIe的启动,也就是说我不能把系统安装在SSD上,而那几块机械硬盘的速度都非常慢,装什么系统都让我觉得十分不爽。(Windows上可以在SSD上开启ReadyBoost 来给机械盘加速,但是性能几乎没有提升)

看完上面这些LVM的介绍,我简直就像发现了新大陆一样:有了LVM我就可以把所有这些乱七八糟的盘合并成一个2T的逻辑盘,然后用整个500G的SSD给它加速。如果速度够快我就可以用它做编译服务器了,耶!!!

开始操作

先安装一个Ubuntu,选硬盘的时候勾选LVM选项,它会自动在第一个硬盘上创建一个卷组vgubuntu,里面有两个逻辑卷root和swap。照着上面的两篇文章,添加两个逻辑卷cache和meta,然后把它绑定到root卷。

一路都很顺利,然后重启。What?!!!

GRUB界面GRUB界面

开不了机了,在座的各位有懂 grub 命令的吗? 我只会一个命令“exit”。

去春之叔的文章里提问也没有人理我 把Ubuntu系统安装在LVM上并且添加SSD做cache加速


只好自己研究了......

经过一番研究(好几天过去了),原来跟 GRUB 对 LVM 的支持有关系,改进的方法有两种:

  1. 改一堆GRUB里的设置,使它支持LVM,并找到相应的逻辑卷

  2. 把/boot目录放到LVM外面来

以我的水平当然使用第二种方法了。

Ubuntu的安装程序可以选择LVM安装,但是它只会把/boot放在LVM里面。我们需要点"Try Ubuntu"来自己创建相应的分区。

手工创建EFI和Boot分区

这个可以用GPartEd,也可以用fdisk。先建一个EFI分区

sudo fdisk /dev/sda
n
p
1
<use default first sector>
+512M
t
ef (不知道选啥code 可以敲L看一下,这里选ef 表示 EFI 分区)
w

再建一个分区给/boot 用

sudo fdisk /dev/sda
n
p
<use default 2>
<use default first sector>
+2G
w

再把剩下的所有空间建成一个分区,格式用格式代码8e,FDISK就会把它设成一个LVM的PV(物理卷)。

sudo fdisk /dev/sda
n
p
<use default 3>
<use default first sector>
<use default last sector>
t
<select patition 3>
8e (不知道选啥可以敲 L 看一下,这里写8e 表示 LVM 分区)
w

上面这个命令相当于把 PV(物理卷)也已经建好了,我们直接创建VG(卷组)就好。

sudo vgcreate MyVg /dev/sda1
sudo lvcreate -n swap -L 2G MyVg
sudo lvcreate -n root -l 100%VG MyVg

这里我们建了一个名为“MyVg”的卷组,然后添加了两个逻辑卷:swap和root。这里有个小技巧,建swap的时候用的参数 -L,后面跟具体大小;建root的时候用的 -l,后面跟百分比把所有空间用完。

好了 现在可以启动Ubuntu的安装程序了,在安装类型(Installation Type)里选择 Something Else。

然后这里要把每一个盘都点一下 Change,手工改一下的它的Type和MountPoint。
sda1 设为efi
sda2 设为ext4,mount to /boot
MyVg/swap 设为 swap
MyVg/root 设为ext4,mount to /

这个截图是虚拟机里抓的 它的硬盘都叫 这个截图是虚拟机里抓的 它的硬盘都叫

开始安装吧。

安装好了以后 基本上就跟着春之叔的文章操作,把SSD也转成PV,加入MyVg,然后在它上面建两个LV(逻辑卷)一个叫cache,一个叫meta。然后进行绑定。

先把SSD也转换成LVM格式

sudo fdisk /dev/nvme0n1
d (如果有必要先删除所有现有分区)
n
p
<use default patition number>
<use default first sector>
<use default last sector>
t
8e
w

然后把SSD加入 M'y'VG

sudo vgextend MyVg /dev/nvme0n1p1

sudo lvcreate -n lv_cache -L 470G MyVg /dev/nvme0n1p1
sudo lvcreate -n lv_meta -l 100%VG MyVg /dev/nvme0n1p1

前面的链接文章里要求 cache:meta 不小于 1000:1,我这里把500G里的 470G的空间给了cache,剩下的空间100%(大约10G左右)给了meta,这样算下来差不多100:2了。

sudo lvconvert --type cache-pool --cachemode writethrough --poolmetadata MyVg/lv_meta MyVg/lv_cache
sudo lvconvert --type cache --cachepool MyVg/lv_cache MyVg/root

有可能在做绑定的过程中它会报错,说没有空间了。因为它需要一个额外的卷来存放卷管理数据。而我在前面的命令里把剩余空间全部分给 my_vg/root 了。这时候需要用到 lvreduce 命令

sudo lvreduce MyVg/root -L-512M -r

然后再操作一遍绑定cache的命令,应该就好了。

最后看到这句话应该就是大功告成了

It is now cachedIt is now cached

Good Luck!!!

下面我们来测试一下各种盘的 Disk IO 速度吧

测试方法:Bonnie++

sudo apt install bonnie++

测试比较的对象:HDD;SSD;LVM-On-HDD;LVM+SSD-Cache

Bonnie的测试方法很简单,

bonnie++ -d <后面加上一个你要测试盘下的一个目录就好>

LVM+SSD-CachedLVM+SSD-Cached

测试结果测试结果

相对SSD的性能表现(SSD为100%)相对SSD的性能表现(SSD为100%)

测试的结果有些遗憾,在写入上没有作用,反而有所降低,在读取上有显著提升,但是和SSD还是有很大差距。


最后

我的方法是把/boot移出LVM的,如果有完美主义者希望/boot也能被cache加速,或者想把现有的LVM移到一个有cache的LVM。可以参考下面的文章。

BootdevicetoLVM:Migratefromsingle-partitionbootdevicetoLVMinCentOS7Convert from a single partition boot device to LVM. FileSystem contains all of the files for Linux and user files into a system need a separate partitwww.linuxsysadmins.com去看看

继而研究一下LVM的灾难恢复。如果系统是安装在LVM上的,恢复起来那是相当的困难啊,而且是在备份了LVM配置的情况下。所以一般专家都是不建议把系统安装在LVM上的。LVM上的任意一个硬盘起不来,整个LVM就不能起来,LVM起不来,系统也就起不来了。


展开 收起

GLOWAY 光威 48GB套装 DDR5 6400 台式机内存条 龙武系列 海力士M-die颗粒

GLOWAY 光威 48GB套装 DDR5 6400 台式机内存条 龙武系列 海力士M-die颗粒

819元起

GALAXY 影驰 HOF PRO DDR5 7000MHz RGB 台式机内存 灯条 白色 32GB 16GBx2 C36

GALAXY 影驰 HOF PRO DDR5 7000MHz RGB 台式机内存 灯条 白色 32GB 16GBx2 C36

999元起

Asgard 阿斯加特 女武神·瓦尔基里 DDR5 7000MHz RGB 台式机内存 灯条 白色 32GB 16GBx2

Asgard 阿斯加特 女武神·瓦尔基里 DDR5 7000MHz RGB 台式机内存 灯条 白色 32GB 16GBx2

809元起

GLOWAY 光威 龙武 DDR5 6800MHZ 32GB(16X2)台式机内存条

GLOWAY 光威 龙武 DDR5 6800MHZ 32GB(16X2)台式机内存条

759元起

GLOWAY 光威 48GB套装 DDR5 6800 台式机内存条 神策RGB系列 海力士M-die颗粒 CL34

GLOWAY 光威 48GB套装 DDR5 6800 台式机内存条 神策RGB系列 海力士M-die颗粒 CL34

1299元起

GLOWAY 光威 48GB(24GBx2)套装 DDR5 6800 台式机内存条 龙武系列 海力士M-die颗粒 CL34 助力AI

GLOWAY 光威 48GB(24GBx2)套装 DDR5 6800 台式机内存条 龙武系列 海力士M-die颗粒 CL34 助力AI

1039元起

PREDATOR 宏碁掠夺者 Vesta II 炫光星舰系列 DDR5 6800MHz RGB 台式机内存 灯条 白色 32GB 16GBx2 C32

PREDATOR 宏碁掠夺者 Vesta II 炫光星舰系列 DDR5 6800MHz RGB 台式机内存 灯条 白色 32GB 16GBx2 C32

1049元起

GLOWAY 光威 48GB套装 DDR5 5600 台式机内存条 天策系列 助力AI

GLOWAY 光威 48GB套装 DDR5 5600 台式机内存条 天策系列 助力AI

699元起

Crucial 英睿达 DDR5 Pro 6000MHz 台式机内存 马甲条 黑色 32GB 16GBx2 CL36 CP2K16G60C36U5B

Crucial 英睿达 DDR5 Pro 6000MHz 台式机内存 马甲条 黑色 32GB 16GBx2 CL36 CP2K16G60C36U5B

879元起

GLOWAY 光威 32GB套装 DDR5 6400 台式机内存条 龙武系列 海力士M-die颗粒

GLOWAY 光威 32GB套装 DDR5 6400 台式机内存条 龙武系列 海力士M-die颗粒

679元起

GLOWAY 光威 神策系列 DDR5 6400MHz RGB 台式机内存 灯条 皓月白 32GB 16GB*2 海力士A-die CL34

GLOWAY 光威 神策系列 DDR5 6400MHz RGB 台式机内存 灯条 皓月白 32GB 16GB*2 海力士A-die CL34

899元起

宏碁掠夺者(PREDATOR)32G(16G×2)套装 DDR5 6800频率 台式机内存条 Vesta II 炫光星舰RGB灯条(C34)星光银 AI电脑配件

宏碁掠夺者(PREDATOR)32G(16G×2)套装 DDR5 6800频率 台式机内存条 Vesta II 炫光星舰RGB灯条(C34)星光银 AI电脑配件

949元起

Asgard 阿斯加特 32GB(16Gx2)套装 DDR5 7000 台式机内存条 TUF RGB灯条 海力士A-die

Asgard 阿斯加特 32GB(16Gx2)套装 DDR5 7000 台式机内存条 TUF RGB灯条 海力士A-die

769元起

KINGBANK 金百达 白刃 DDR5 6800MHz RGB 台式机内存 灯条 C34

KINGBANK 金百达 白刃 DDR5 6800MHz RGB 台式机内存 灯条 C34

335元起

KINGBANK 金百达 银爵系列 DDR5 6400MHz 台式机内存 马甲条 白色 32GB 16GB*2 海力士A-die颗粒

KINGBANK 金百达 银爵系列 DDR5 6400MHz 台式机内存 马甲条 白色 32GB 16GB*2 海力士A-die颗粒

299元起

KINGBANK 金百达 32GB套装 DDR5 7600 台式机内存条海力士A-die颗粒 白刃RGB灯条 C36

KINGBANK 金百达 32GB套装 DDR5 7600 台式机内存条海力士A-die颗粒 白刃RGB灯条 C36

999元起
18评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
66
扫一下,分享更方便,购买更轻松