教程

ntfs硬盘无损转Ext4——记一次骚操作

前年买了一块Wd Elements 10T便携移动硬盘,由于当时是买来插Windows上,切该硬盘出场格式是NTFS,自然直接插上就能用了。但是最近我把它插到树莓派(Raspbian)上时,每次读取写入的速度都特别慢,更有甚者,连qBittorrent直接罢工,无法写入到硬盘。后来htop查看进程才知道有个ntfs-3g的进程,在读写时几乎占用了100%cpu(一核心)。 查资料得知,Linux系统在读取ntfs格式硬盘时,会调用ntfs-3g程序去实时转换。由于树莓派cpu性能一般,所以导致读写超级慢(20m/s)。于是便有了想将手头的影片转成Linux支持的ext4格式的想法。由于硬盘过大,里面的数据也太多,刚好遇上挖矿热,买不到比较便宜的硬盘,所以才有了这篇文章的骚操作。之所以称之为“骚操作”,是因为此篇文章所涉及到的无损转格式的方式虽说是某知名网站推荐的方式,但对于数据安全极不友好,不建议不了解硬盘、Linux系统相关知识的小白尝试。 如果你实在有需求要按照本文操作来转格式的话,由停电,电脑死机等一系列问题导致的数据丢失,本人概不负责! 主要流程 由于整个过程实在耗费时间和资源,这里先讲讲主要流程,在每个板块都会写出详细步骤,以及遇到的问题和解决方法。 Linux下停止正在使用该磁盘的进程,卸载磁盘 磁盘压缩主分区ntfs(分区N1),格式化出一个Ext4分区(分区E1) 将主分区的文件尽可能多的移动到Ext4分区,知道Ext4分区塞满 如果主分区还有文件,则重复2-3步骤,直到主分区文件全部被移动到新的分区。 格式化主分区为Ext4(N1),将临近主分区、存有数据的Ext4分区(E1)里面的全部数据移到主分区。 删除Ext4分区(E1),并将删除腾出来的空间去扩容主分区(N1) 如果之前有创建多个Ext4分区的话,重复5-6步骤,直到整个硬盘只剩一个Ext4分区即完工! 强烈建议数据在1/2磁盘空间以下,比如我10T硬盘4.7T数据,这样就可以只用分出一个区来保存数据就行,省了很多步骤。 卸载硬盘 为避免出现数据被更改的问题,先停止正在使用该硬盘的进程,然后使用umount命令卸载硬盘才进行数据转移的操作。 如上,如果使用umount卸载时出现“target is busy”,则说明该磁盘正在被进程占用,我们使用lsof查看占用的进程,将其关掉再卸载即可。 压缩分区(6h) 由于数据是散乱存放(非连续)在硬盘上的,所以导致我是用Windows磁盘管理工具去压缩卷的时候,本应该有5T空间剩余,磁盘管理工具却只能压缩出500G左右空间。 所以我使用DiskGenius工具,它应该是帮忙整理磁盘的内容尽量靠前且连续,然后再压缩卷。我这里使用DiskGenius可以压缩出4.55TB,耗时大概6小时。 压缩完成后,将新分区格式化为Ext4格式即可。Windows下无法识别,可以用DiskGenius软件看到新的分区。 数据转移(10h+23h) 考虑到稳定性,我原本打算用DiskGenius在windows下将ntfs分区的数据转移到ext4分区的,可这货居然提醒我 “该功能是Pro用户才能使用”,便转换思路,使用双系统的Ubuntu去操作转移。后来想想,Ubuntu远程操作也方便,应该为首选方案的,最后,我还是将硬盘插上我的Ubuntu,然后使用使用命令行在tmux下进行mv操作。操作完我就去上班了。 好景不长,等我回到家时,想查查进度的我却发现硬盘没了!然后键盘也失灵。仔细想想,既然硬盘已不存在挂载中,键盘也失灵,那我本着重启能解决99%问题的心态重启Ubuntu(对,就这么严谨...)。重启后,系统正常使用,然后查看日志,便发现HC died报错。 果然不是我一人,万能的网友也有遇到这个问题的,也给出了详细解决方案。 https://zhuanlan.zhihu.com/p/158688481 于是我重新运行mv命令去转移数据,由于之前已经转移过部分数据,所以只需要转移未转移的部分即可。 最后终于转移完成(我已经将ntfs分区格式化为Ext4了,第一个卷) 最后将清空的ntfs分区(N1)格式化为Ext4即可。 最后的数据转移(30h) 由于分区无法向前合并,我这里还是将tmp分区的内容全部转移到Elements分区。 考虑到复制任务占用电脑,便把硬盘插到树莓派上进行mv操作。(由于我的硬盘是外部供电,也不用担心供电不足或者其他问题) 此番很顺利,没有出现Ubuntu的HC died的报错,花费30小时终于将所有内容转移到第一个Ext4分区了。 分区合并(15mins) 首先卸载分区。然后使用fdisk进行分区合并的操作。 使用Linux下的fdisk命令操作。内容有点多,由于没有截图,这里不详细展开。 流程:删除第二个分区(9999999-66666666),再删除第一个分区(2048-9999999),最后新建一个分区(2048-66666666)即可。 注意:新建分区的时候,如果显示“已检测到文件系统,是否清空?”的提示,千万选择否,不然数据可能被清空。 最后,使用fdisk检查你的硬盘编号,再使用e2fsck来执行磁盘检测。最后使用resize2fs命令来扩容区分1即可。 至此,本文的ntfs无损转Ext4已完成,最后只需使用mount挂载在树莓派系统即可。 后记 本次是本人的作死之旅,望不要盲目跟从,数据无价,在对硬盘进行任何操作时,请提前备份。 由于读写“同时”进行,所以数据转移过程极慢,我这边WD Elements 10T硬盘拷贝5T大概30h,瞬时读写速度大概50m/s,该数据仅供参考。 如果你是和本人一样不怕丢失数据,手头有没有多的硬盘,并且ntfs格式的硬盘实在用不下去了,你可以跟着本文的操作去走,但是如出现数据丢失,本人概不负责。 最后,放几张图吧。 Windows SMB本地挂载 fdisk磁盘信息 读写速度测试 参考 https://recoverit.wondershare.com/partition-management/ntfs-to-ext4-easily.html#part3

教程

利用树莓派自建私人媒体库-Emby

前言 我觉得我小舅说的蛮有道理的 他说:电影发明以后,人类的生命比起以前至少延长了三倍! 《一一》 我一直都是一个电影迷,从高中开始看科幻片,大学开始看悬疑片,一直到现在,除了一些狗血爱情片,我基本都看。文章末尾会放出我搭建的emby私人影库,大家也可以看看我的口味,哈哈。 自从大学开始所看的电影我就一直保存在硬盘里,当然那时候的硬件设备都不太好,移动硬盘也只有2T空间,所以我下载的都是一些720p的内嵌字幕的电影。也不知道是为了什么,像是和那些把所有抓来的娃娃放柜子里展示的小姑娘一样吧,我喜欢把看过的电影陈列起来。当时没有技术,只是简单的将电影按照年分类保存。 慢慢我硬盘换了4T,换了10T,这些大学保存的电影从一个盘拷到另一个盘,好在是没有遗失。之前想过用软件来建立一个已看清单,我用了iOS的一个叫做Mark的软件,花了几天时间将脑子里能想到的电影全部保存,然后每每看完电影就去Mark评分,它会自动加到已看清单。 直到前几日,我在Telegram接触到有这种私人影库,能通过识别电影文件名来刮削电影信息并保存,以此来达到私人影库的实现。刚好我手上有一个正在吃灰的树莓派,我便开始着手去研究搭建一个属于自己的私人影库,不是为了给别人看,光是看到自己所有的电影电视剧全部整齐的摆放在那里就已经很心满意足了! 废话一大堆,正片正式开始咯! 准备工作 我是Raspiberry 4B + 4T +10T移动硬盘 我树莓派用的32位的raspio最新版本 2021-01-11-raspios-buster-armhf-full.img 下载地址:https://downloads.raspberrypi.org/raspios_armhf_latest 不建议使用64位,性能是有提升,但是目前好像有很多坑。同时,如果你是使用64位系统,本篇教程可能不适合你。 此篇文章由于篇幅问题,无法做到能让完全不熟悉Linux系统命令的同学食用,如果你不熟悉Linux系统,建议寻求其他更详细的教程 准备工作 树莓派Docker环境安装 树莓派mount自动挂载硬盘 Linux系统mount自动挂载 按照说明编辑/etc/fstab文件即可 https://wiki.archlinux.org/index.php/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 官方Docker地址 https://hub.docker.com/r/emby/embyserver 支持以下的架构,本文树莓派4B arm32v7使用的是emby/embyserver_arm32v7 文中更详细的安装以及参数配置说明 可以参考 开始搭建 目录创建 emby只需要一个config目录,用于保存配置信息以及影片缓存。官方建议50G以上。这里建议将config目录创建于你挂载的移动硬盘目录即可。(例如我的:/mnt/sdb/emby/config) 在你挂载的目录新建一个emby文件夹,用于存放docker-compose.yml文件和config目录 创建docker-compose文件 在emby文件夹新建一个config目录 然后用vim新建一个docker-compose.yml文件,复制好官方提供的docker-compose配置文件后,按需修改部分配置即可。 我的配置如下: 由于vim编辑yml文件时,粘贴的代码会自动缩进,这里建议先vim docker-compose.txt,复制进docker-compose.txt文件,保存后重命名该文件然后再编辑。mv docker-compose.txt docker-compose.yml 启动Emby 在当前目录(/mnt/emby)下,执行 即可看到docker拉取镜像,等操作,等待其完成即可。 检查成果 embyserver开启之后,你便可以在浏览器输入对应的网址和端口进行访问,配置你的私人影库啦。 比如我的树莓派内网地址是:192.168.50.121 那么emby地址就是192.168.50.121:8096 刚开始可能embyserver没开启起来,等待十几秒之后浏览器访问该网址应该可以看到emby安装引导界面,然后按提示操作即可。