Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#1

帖子 mgqqlwq » 2017-11-17 11:15

自己手头现在有一块SSD,想把它利用起来,查了很多资料之后决定采取的方案为:SSD上的挂载点为/boot、/和/home,而HDD上的挂载点为swap和一个自定义分区/mydata,自定义分区用于存贮一些资料和数据。
因为SSD价格相对还是高很多,所以希望能把原本在/home下面的一些文件甚至一些自定义目录的程序放在HDD上。比如/home/username/Downloads的资料放在HDD上,我查了一些资料似乎是用软链接的方式,但是还是不确定,请大家帮我看看下面的方法是否正确,不当之处或者有更好的方法还请各位大神多多指教。
首先,是资料的存放,比如是否可以在/mydata下建一个文件夹Downloads,然后用建立软连接的方式

代码: 全选

ln -s /mydata/Downloads /home/username/Downloads
来实现。这样如果我下载的文件目标目录选择/home/username/Downloads的话,实际上文件是存放在/mydata/Downloads下面的,重要的是实际的多硬盘的写操作是在HDD上的,也是我期望的效果。
另外,如果有的程序想安装在HDD上,比如/home/usename/apps是我自己存放自定义位置程序的位置,那么是否可以同样用软连接的方式,

代码: 全选

ln -s /mydata/apps/thefirstapp /home/username/apps/thefirstapp
,比如/mydata/apps/thefirstapp下面有个可执行文件firstapp,如果我在.bashrc中添加路径/home/username/apps/thefirstapp,那么在终端中输入firstapp也就可以调用这个程序了,而这个程序实际上是安装在HDD上的,一般情况下firstapp这个程序的读写操作也是在HDD上的。
请大家多多指导,先谢过大家了!
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#3

帖子 mgqqlwq » 2017-11-17 14:45

科学之子 写了:楼主的目的是什么?最大化速度吗?
这样的话可以考虑bcache
如果不想格式化或迁移现有数据可以直接用dmsetup做映射
您好!用ssd的目的是体验更好,因为读写的速度更快。
但是因为ssd比较精贵,想把一些写入量比较大的文件放在HDD上,因为/home在SSD上,所以我想着是不是可以通过软链接的方式来实现呢?
然后就发帖子求助了
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#4

帖子 科学之子 » 2017-11-17 15:04

mgqqlwq 写了:
科学之子 写了:楼主的目的是什么?最大化速度吗?
这样的话可以考虑bcache
如果不想格式化或迁移现有数据可以直接用dmsetup做映射
您好!用ssd的目的是体验更好,因为读写的速度更快。
但是因为ssd比较精贵,想把一些写入量比较大的文件放在HDD上,因为/home在SSD上,所以我想着是不是可以通过软链接的方式来实现呢?
然后就发帖子求助了
bcache 和 dmsetup 的原理是缓存,个人认为比直接存放固定的文件要好的多,因为可以根据使用情况动态改变缓存内容.
如果像您说的固定的放一些文件,一旦那些固定文件某段时间变得不常用,也是没发自动更换的,而缓存可以做到根据使用情况实时更换.
固定文件的另一个缺点是有些时候只是频繁读取文件的固定部分,如果将整个大文件放在SSD上,那些不常用的数据就会浪费SSD宝贵的空间.
缓存可以做到把单个文件的常用部分单独搬到SSD的效果

Fri Nov 17 15:18:27 CST 2017补充:
貌似bcache可以不缓存写操作,dmsetup貌似不行
相关概念介绍:
https://www.kernel.org/doc/Documentation/bcache.txt
https://www.kernel.org/doc/Documentatio ... /cache.txt

对于个别写入量大的文件或目录用软链接方式当然也是可行方法之一.
更多SSD优化措施:
https://wiki.debian.org/SSDOptimization ... ia_RAMDISK
推荐使用zram来代替普通HDD的swap,体验会更好.
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#5

帖子 mgqqlwq » 2017-11-17 21:26

科学之子 写了:
mgqqlwq 写了:
科学之子 写了:楼主的目的是什么?最大化速度吗?
这样的话可以考虑bcache
如果不想格式化或迁移现有数据可以直接用dmsetup做映射
您好!用ssd的目的是体验更好,因为读写的速度更快。
但是因为ssd比较精贵,想把一些写入量比较大的文件放在HDD上,因为/home在SSD上,所以我想着是不是可以通过软链接的方式来实现呢?
然后就发帖子求助了
bcache 和 dmsetup 的原理是缓存,个人认为比直接存放固定的文件要好的多,因为可以根据使用情况动态改变缓存内容.
如果像您说的固定的放一些文件,一旦那些固定文件某段时间变得不常用,也是没发自动更换的,而缓存可以做到根据使用情况实时更换.
固定文件的另一个缺点是有些时候只是频繁读取文件的固定部分,如果将整个大文件放在SSD上,那些不常用的数据就会浪费SSD宝贵的空间.
缓存可以做到把单个文件的常用部分单独搬到SSD的效果

Fri Nov 17 15:18:27 CST 2017补充:
貌似bcache可以不缓存写操作,dmsetup貌似不行
相关概念介绍:
https://www.kernel.org/doc/Documentation/bcache.txt
https://www.kernel.org/doc/Documentatio ... /cache.txt

对于个别写入量大的文件或目录用软链接方式当然也是可行方法之一.
更多SSD优化措施:
https://wiki.debian.org/SSDOptimization ... ia_RAMDISK
推荐使用zram来代替普通HDD的swap,体验会更好.
谢谢您的回复!bcache 和 dmsetup第一次听说,感觉有点复杂,超出了我目前能够尝试的范围。
我还是先尝试软链接来实现,您给的资料我再仔细学习一下。
fuhuizn
帖子: 947
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#6

帖子 fuhuizn » 2017-11-18 14:08

“/” 挂在SSD 上,“/home”挂在HDD上,速度快,重装系统也不会损失自己下载的文件
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#7

帖子 mgqqlwq » 2017-11-20 9:10

fuhuizn 写了:“/” 挂在SSD 上,“/home”挂在HDD上,速度快,重装系统也不会损失自己下载的文件
谢谢!
我看到有些人是这样做的,原来我也是这样打算的,不过最近再搜索的时候看到很多人建议把/home也放在ssd上,具体我也没搞懂,好像是/home/username下面也有很多软件的配置文件啥的,这样速度还是会更快一点。
所以我也想着把一些下载文件啥的放到HDD上去,减少对ssd的写入。
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#8

帖子 科学之子 » 2017-11-21 23:23

mgqqlwq 写了:
fuhuizn 写了:“/” 挂在SSD 上,“/home”挂在HDD上,速度快,重装系统也不会损失自己下载的文件
谢谢!
我看到有些人是这样做的,原来我也是这样打算的,不过最近再搜索的时候看到很多人建议把/home也放在ssd上,具体我也没搞懂,好像是/home/username下面也有很多软件的配置文件啥的,这样速度还是会更快一点。
所以我也想着把一些下载文件啥的放到HDD上去,减少对ssd的写入。
需要注意有些软件,比如浏览器会不停写自己的配置文件,因此造成很大的写入量.
如果非要固定存放的话
个人建议把/usr和/lib*这几个目录存优先放进SSD
因为我个人觉得这几个目录写入量小,同时大量随机读取操作又依赖于这些目录中的文件.
这两个目录的建议完全是抄preload的配置.
不过我个人试过把/usr和/lib搬进tmpfs然后"sudo sysctl vm.drop_caches=3"丢弃缓存测试,打开Firefox基本就跟缓存了一样,丝毫感觉不出缓存被丢弃.
/var/cache好像是apt什么的会比较密集的操作,但我没试过搬进tmpfs是什么效果.
如果不经常装软件的话,不建议放进SSD,因为感觉里面都是缓存的软件安装包之类,占用空间很大但看起来使用并不怎么频繁.
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#9

帖子 mgqqlwq » 2017-11-23 9:06

科学之子 写了:
mgqqlwq 写了:
fuhuizn 写了:“/” 挂在SSD 上,“/home”挂在HDD上,速度快,重装系统也不会损失自己下载的文件
谢谢!
我看到有些人是这样做的,原来我也是这样打算的,不过最近再搜索的时候看到很多人建议把/home也放在ssd上,具体我也没搞懂,好像是/home/username下面也有很多软件的配置文件啥的,这样速度还是会更快一点。
所以我也想着把一些下载文件啥的放到HDD上去,减少对ssd的写入。
需要注意有些软件,比如浏览器会不停写自己的配置文件,因此造成很大的写入量.
如果非要固定存放的话
个人建议把/usr和/lib*这几个目录存优先放进SSD
因为我个人觉得这几个目录写入量小,同时大量随机读取操作又依赖于这些目录中的文件.
这两个目录的建议完全是抄preload的配置.
不过我个人试过把/usr和/lib搬进tmpfs然后"sudo sysctl vm.drop_caches=3"丢弃缓存测试,打开Firefox基本就跟缓存了一样,丝毫感觉不出缓存被丢弃.
/var/cache好像是apt什么的会比较密集的操作,但我没试过搬进tmpfs是什么效果.
如果不经常装软件的话,不建议放进SSD,因为感觉里面都是缓存的软件安装包之类,占用空间很大但看起来使用并不怎么频繁.
谢谢您的建议!不过你说的这种挂载方式比较复杂了,我对linux了解有限暂时还没能力去尝试。
我现在就是把\boot,\,和\home放在ssd上了,然后通过软链接将~/Downloads这些写入操作比较多的文件夹链接到放在HDD上的文件夹内。如果下次装的话再试下您的建议。
感觉有个小问题是SSD上装Ubuntu之后,没法检测SSD的总写入量了。我用的三星的SSD,Windows下有三星自己的软件可以用。这样的话现在没法看到底对SSD的写入情况,您了解有什么方法可以检测吗在Ubuntu下?
fuhuizn
帖子: 947
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#10

帖子 fuhuizn » 2017-11-26 14:36

mgqqlwq 写了:
fuhuizn 写了:“/” 挂在SSD 上,“/home”挂在HDD上,速度快,重装系统也不会损失自己下载的文件
谢谢!
我看到有些人是这样做的,原来我也是这样打算的,不过最近再搜索的时候看到很多人建议把/home也放在ssd上,具体我也没搞懂,好像是/home/username下面也有很多软件的配置文件啥的,这样速度还是会更快一点。
所以我也想着把一些下载文件啥的放到HDD上去,减少对ssd的写入。
那是他们傻!
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#11

帖子 mgqqlwq » 2017-11-26 21:04

fuhuizn 写了:
mgqqlwq 写了:
fuhuizn 写了:“/” 挂在SSD 上,“/home”挂在HDD上,速度快,重装系统也不会损失自己下载的文件
谢谢!
我看到有些人是这样做的,原来我也是这样打算的,不过最近再搜索的时候看到很多人建议把/home也放在ssd上,具体我也没搞懂,好像是/home/username下面也有很多软件的配置文件啥的,这样速度还是会更快一点。
所以我也想着把一些下载文件啥的放到HDD上去,减少对ssd的写入。
那是他们傻!
:Haha
所以您的建议还是\放在SSD上,\home放在HDD上是吗?
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#12

帖子 科学之子 » 2017-11-27 0:23

mgqqlwq 写了:不过你说的这种挂载方式比较复杂了,我对linux了解有限暂时还没能力去尝试。
补充一些:
彻底的"改变" "/usr"和"/lib*"的内容到其它目录需要在initramfs阶段做处理
initramfs 是在硬盘上系统启动前的一个"微型"系统,专门用来处理一些启动后无法处理的事情,比如挂载硬盘上的根目录之类.
只是科普一下概念,如果您要彻底改变"/usr"和"/lib*"的位置就了解initramfs

一个不需要定制initramfs的变通方法是开机后(手动或放进/etc/rc.local):

代码: 全选

mount --bind SSD里的目录 /usr ; mount --bind SSD里的目录 /lib*
详情参阅man mount(链接是Web版的manual page):
https://manpages.debian.org/stretch/mou ... ind_mounts
这么干有个缺点就是可能导致这系统不稳定,因为完全需要手动确保SSD中的目录跟HDD中的目录同步.
如果定制好了initramfs就不会有这种麻烦.

@mgqqlwq
mgqqlwq
帖子: 91
注册时间: 2013-06-18 17:26

Re: Ubuntu装在SSD中想把一些数据存储在HDD上应该采取何种方式?

#13

帖子 mgqqlwq » 2017-11-27 16:25

科学之子 写了:
mgqqlwq 写了:不过你说的这种挂载方式比较复杂了,我对linux了解有限暂时还没能力去尝试。
补充一些:
彻底的"改变" "/usr"和"/lib*"的内容到其它目录需要在initramfs阶段做处理
initramfs 是在硬盘上系统启动前的一个"微型"系统,专门用来处理一些启动后无法处理的事情,比如挂载硬盘上的根目录之类.
只是科普一下概念,如果您要彻底改变"/usr"和"/lib*"的位置就了解initramfs

一个不需要定制initramfs的变通方法是开机后(手动或放进/etc/rc.local):

代码: 全选

mount --bind SSD里的目录 /usr ; mount --bind SSD里的目录 /lib*
详情参阅man mount(链接是Web版的manual page):
https://manpages.debian.org/stretch/mou ... ind_mounts
这么干有个缺点就是可能导致这系统不稳定,因为完全需要手动确保SSD中的目录跟HDD中的目录同步.
如果定制好了initramfs就不会有这种麻烦.

@mgqqlwq
谢谢您的回复!这些内容对我来说有些太复杂了,暂时还理解不了。我收藏下来以后装机的时候慢慢尝试。
回复