分类
NAS专区 综合技术

AI柠檬的个人数据治理之路

(在苹果系统下,如果文章中的图片不能正常显示,请升级Safari浏览器到最新版本,或者使用Chrome、Firefox浏览器打开。)

在当前的计算机技术和互联网应用技术的发展浪潮之下,很多传统的线下物质资料记录存储方式逐步转移到了计算机设备(包含手机、平板、手环等)或者线上存储中,这种新的记录方式、无处不在的互联网应用和硬盘技术的发展,使得在计算机介质中生产、存储的个人数据规模变得越来越大。而且在企业数据的重要性越来越被得到认知从而出现“数据治理”这一概念的大背景下,个人数据也需要进行“数据治理”,从而提升我们生活的便捷性,享受科技发展带来的好处。

1.    日常中个人数据存在哪些问题?

1.1  数据产生的来源多样

我们都知道,在当前的技术应用规模下,一个人同时可以拥有大量的电子设备,家庭台式机、个人笔记本电脑、平板电脑、手机、智能手环等,甚至还包括众多的物联网设备,比如家用无线路由器、智能电视、智能冰箱空调等,还有一部分数据来源于网络,比如利用互联网下载的文件之类。

1.2 数据存储位置多样

计算机介质有多种多样的存储类型(设备内置硬盘、移动硬盘、SD卡、SaaS云端等),每种存储类型还有多个不同的存储位置(不同设备上、不同硬盘中、有无联网等),会导致数据分布在多个存储节点上,使得数据的混乱程度大幅增加。

1.3 数据访问情景多样

例如,自己在家里台式机电脑上刚刚编辑完一个文档,出了门后突然需要访问。又例如,自己出门在外,有一些事情需要记录下来,或者拍了一些照片而且还想拍更多的照片,但是手机没有存储空间了,但是此时手上除了手机以外,没有任何其他的设备可用。再或者,自己在家写了一些文档,通过电子邮件、微信等发送给自己,然后去上班了,然后休息时间在公司电脑上继续编辑,下班后回到家发现坏了,忘记把文档再发送回来了……再或者比如,很多人都有一出门后就想不起来自己是否关了门、关了窗之类的事情,甚至不得不折返确认,或者查看自家的喵星人、汪星人是否又在家里捣乱了,此时就可以安一个摄像头来解决,但是又怎么才能够随时随地看到呢。

1.4 数据安全问题难以保障

这个安全问题分为两个方面。一个是存储的安全性,简单说就是,这个数据在硬盘中存的时候会不会因为硬盘损坏、数据误删除导致数据丢失。另一个就是保密意义上的安全性,是否有不该看的人看到了自己的数据,比如用移动硬盘给别人传文件或者借手机、平板时,小伙伴可能会看到你在上面存的一些不能说的秘密。而且如果存储在SaaS云端,也有潜在的数据隐私安全问题,不是所有的网盘都真的能够保护你的隐私的,有些甚至会利用你上传的文件来盈利。

1.5 数据共享方式繁琐

有很多数据是需要共享的。比如装机常用的系统镜像、做机器学习时候的数据集等,你用我也用,本来一个人存100GB就可以,但是由于信息的不互通,10个人每人都存一份,严重浪费了每个人自己的硬盘空间。

当需要几个人协同写一些文档的时候,文件的命名会变成这种风格:“文件.docx”“文件修改版.docx”“文件再次修改版.docx”“文件最终版.docx”“文件真的最终版.docx” “文件真的最终版 (2).docx” “文件真的最终版 (2) – 副本.docx”……

另外当你想给别人发送文件的时候,打开微信电脑版,发送,提示不支持大于100MB的文件,然后打开QQ,输了半天密码发现不对,想起自己已经好久没登过QQ了,想打开度盘上传给别人,但是对方因为没开会员所以下载速度太慢,太消耗时间了。明明在同一个学校内,甚至在同一个大内网里,互相可以ping通,但因为不在同一个房间里就表现得好像远在天涯海角一般。当然,如果太着急的话,跑个腿,打个车,用U盘亲自过去送一趟好像也可以……

1.6 公有SaaS云服务成本偏高

某云盘上2TB存储空间每年需要249元,如果以个人用普通硬盘寿命5年来算,需要1245元,而一个普通的家用2TB硬盘在某东上只需要349元,即使组RAID1阵列,也不过700元,即使用得比较狠,按三年就报废两块组了RAID1阵列的硬盘算,云存储空间总共也要花费747元,并不便宜。而且这还不算网络带宽成本,在使用中直接用公有云盘时自己的网络的带宽或者流量开销较大。

因此,在如此众多的数据来源、存储、访问、安全性、成本、共享等多种复杂问题之下,如何能够最大限度地优化数据产生、传输、存储、获取、编辑、删除的流程,成为了一个待解决的问题。我们需要一套能够支持标准接口进行连接,大容量存储,既能随时随地方便地访问和编辑以及给他人分享,又能够实现访问权限控制,还具有成本优势的解决方案。

2.    日常中个人数据的治理实践

其实从好几年前,AI柠檬就开始从一些方面着手解决个人数据在实际应用中遇到的问题,比如数据备份容灾恢复、源代码管理、文件分享等。这两年来,AI柠檬博主尽量充分利用现有条件,以及现成技术产品,初步形成了一套基础的个人数据治理的方案。

2.1 数据治理的策略

2.1.1 数据按访问频繁程度分组

数据一般都可以划分为热数据温数据冷数据,因此,我们可以按照这种理论将个人数据分为:常用数据、低频数据和归档数据。对于笔记本电脑硬盘数据而言,常用数据直接使用本地SSD硬盘存储即可,低频访问的数据则转移到NAS服务器中进行存储(看过之前柠檬菌的文章的同学应该知道,柠檬菌自己在内网搭建了一个NAS服务器),NAS可以使用机械硬盘作为存储介质,以降低存储成本,对于很可能一两年都不访问一次,甚至几乎再也用不到的数据,则直接离线归档,可以使用移动硬盘,也可以利用NAS,将相关文件归档后离线,此时离线的硬盘寿命一般不会再随着时间的推移而减少,从而确保数据存储的安全性。

2.1.2 数据按重要程度决定是否需要备份

数据可以根据其存在的必要程度分为重要数据(必须备份)非重要数据(不必备份)两种。哪些是重要数据呢?比如自己写的项目代码,申报材料等,这些数据文件一旦丢失,后果不堪设想,如果是毕业论文及其相关代码的丢失,那……

2.1.3 数据按生成来源分组

根据数据产生的来源,可以分为文档数据软件数据,文档数据是由用户直接操作设备和使用软件产生的,例如word文档、照片视频等,软件数据则是由软件在使用的过程中根据其实际需要产生的,例如ssh密钥文件(必须备份且随时都需要用)、配置文件(分为随时使用的配置文件和第一次初始化用的配置文件两种)、日志文件(基本不需要再次访问,甚至直接删除)等。虽然这样划分有时还是不准确,比如物联网摄像头监控时产生的照片视频之类(可以视为日志文件,且包含隐私性),但是比较符合一般规律。

2.1.4 数据按访问权限分组

根据数据的访问权限,以及其本身的性质,可以分为共享数据个人数据,共享数据可以被允许范围内的人访问,个人数据则只允许自己访问。Linux的文件系统天然对文件的权限有指定,比如Ext4,而Windows的NTFS就不行。Linux的rwx再加上user group other,权限可以从000(虽然一般不会,一般至少700)指定到777。而一些运行在NAS上的软件则实现了更多更加复杂的权限管理功能。

2.1.5 数据按访问方式分组

数据可以根据需要的访问方式,分为在线数据离线数据。这里的“在线”的定义是相对当前设备的,当需要访问时当前设备通过操作可以直接连接访问到的是在线数据,例如本地硬盘、云存储等,而需要再次对要访问数据所在的介质进行例如连接USB、开关机、连接网络等操作的称为离线数据,例如移动硬盘、离线的NAS或其他设备等。显然,在线数据更适合需要随时需要随时访问的应用情景。

2.1.6 数据按自身尺寸分组

数据还可以分为大尺寸文件数据零碎文件数据。想必大家应该都经历过复制文件的时候,明明刚才还100MB/s在复制文件,怎么突然后面的很多文件就只有几十几百KB/s速度了呢?这就是零碎文件的问题,由于硬盘文件系统建立inode以及机械硬盘的寻道存在一定的开销,当复制零碎文件时,这个开销无法被忽略,从而导致整体速度变慢。因此,零碎的文件管理需要根据具体问题,使用合适的方式解决。对于大尺寸文件,需要解决传输过程中的带宽问题,即bps,而零碎文件需要解决iops问题。

2.1.7 程序员编程时的程序数据管理

程序文件包含了源代码文件程序制品文件,源代码一般是文本型的,而程序制品一般是二进制的,不过更多的往往是若干个二进制文件和相关资源文件(有文本型也有二进制的)混合体。比如某个程序是exe文件,并且还包含了一些dll文件,一些图片文件,以及一个名为app.conf配置文件。源代码文件一般可以使用Git或者SVN进行管理,实现统一存储和版本控制,而制品文件则需要根据发布版本从v0.1开始,一直到v1.0、v2.0、…、vN.0等。

2.2 数据治理的应用

基于此,AI柠檬在进行数据治理的时候,尽量充分利用现有条件,为不同应用场景,使用NAS搭建了支持多种NAS协议的私有云存储服务。并且云存储服务器应用支持在线office文档协作,可以单人也可以多人共同编写文档。同时,服务具有访问权限控制功能,每一个用户的数据访问权限是分离的,除非授权分享,否则只能访问自己账号下的文件。针对公共性文件共享需求,例如常用的系统镜像(比如Ubuntu20.04、Fedora等) 、机器学习数据集、软件安装包等,划分所有人都可访问的专用区域进行共享。

根据数据的访问特性,需要跨设备、需要随时访问的在线数据,统一使用NAS服务进行存储,而不是单一设备本地存储,避免了多设备多副本的版本混乱带来的问题。对于其他类型的热数据,可以直接本地SSD硬盘存储。不过对于低频访问的数据,以及定期备份的数据,由于固态硬盘成本较高,最好将其转移到成本更低的介质中,此时可以将这类数据“沉降”到NAS存储的挂载硬盘中,降低了存储成本,但并没有牺牲太多访问的便利性,确保虽然不怎么用但需要时还是可以访问到。至于归档数据存储,则牺牲了数据访问的便利性,此时当需要访问时,前摇时间会较长。归档数据再用NAS实现也不太划算,直接上移动硬盘最简单粗暴,但是在关联设备较多或者不方便连接USB来归档的情况下,使用可在用后就离线的NAS服务器来做也不失为一个好的选择。至于其他实在没用的数据,该删除就删除吧。

针对程序员用户,代码可以使用开源的Git仓库服务来进行统一的托管,就像使用GitHub一样,并且现在也有很多DevOps相关的开源项目,搭建WorkFlow流水线,一键生成编译打包后的制品,存放在制品库里,实现源码版本和制品版本的同时控制。

为了能够让我们通过网络访问到数据,内网的搭建和接入外部网络是必不可少的,我们都知道,如果不是服务器机房,是没有公网IP的,而内网穿透技术则解决了这一问题,很多家用路由器都带相关的功能。如果我们需要得到更好的体验,也可以选择自己购买云服务器来解决。另外也可以利用相关网络技术实现权限控制。至于内网穿透的实现有多种版本,这里不赘述。

3.    治理效果总结

通过上述治理实践,目前实现了数据的跨设备访问便利性,数据分享的便利性,多达好几个TB数据的存储成本的性价比与重要程度、数据安全的平衡性,文件版本的有序性,以及数据存储本身的安全性等。

多设备访问方面,由于数据统一集中存储在私有云NAS上,避免了多个设备的版本混乱问题,实现了随时随地即可在家用台式机访问,也可以出门在外用笔记本电脑访问,也可以用手机连接。由于统一分配了共享存储空间,小伙伴们都可以轻松获取到经常需要用到的系统镜像、安装包和机器学习数据集等,避免了天天微信上到处询问以寻求资源等各种低效的操作。而说到数据安全性,数据的治理策略加上备份,现在已经一年半没有出现过任何丢数据事故了,哪怕只是一个不起眼的文件,而之前自从有记录的2017年开始深入折腾计算机以来,每年都出现过由于各种各样原因丢失了若干个人数据的问题,影响范围不一。

4.    未来展望

当前的实践也仅仅是基于现有技术条件进行的,大量的服务为现有开源服务,针对很多细节问题的优化仍有不足,较为严重的比如说网络延迟、带宽问题,以及入口节点回源的配置问题,往往会导致一定的卡顿,还有比如重复文件合并的问题等。受限于学校大内网的交换机和路由器对终端用户的限速,以及NAS接入公网服务器的带宽,如果不是直接连接在自己的千兆路由器和千兆交换机设备组建的内网下,网络带宽仍不足100Mbps,尽管在当前校内内网带宽条件下也勉强能用,接入外网访问则由于公网服务器带宽成本问题所以也并不高。另外,当前服务对于数据存储类型的提升和沉降也并没有做到智能化,仍需人工处理。而大量的零碎小文件的访问导致性能瓶颈也一直是顽疾,问题从底层硬盘开始就存在,将来可能需要通过新的文件系统来解决。

版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2021/10/13/the-way-of-ailemon-personal-data-governance/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


“AI柠檬的个人数据治理之路”上的2条回复

为什么使用公有云成本高?不是说云计算更省钱吗?如果自己买的话,直接用移动硬盘不香吗?

你这个问题问得很好!
首先应该搞清楚我们使用公有云服务的目的是什么,公有云和本地私有云分别能满足我们什么样的需求。我的博客网站以及附属的一套服务,全部使用的是某公有云服务,但另一部分(比如私有网盘)不是。
如果你计算一下购买硬件的成本,就我的博客来说,我需要买一台性能非常强的服务器吗?明显不需要,我又不是某宝某抖某乎,因此单从机器来说,一个树莓派的性能(价格约400元)足够了,只要不损坏,我甚至使用5年10年都没问题。但为什么我还是用公有云?为了优质公共网络带宽,为了稳定高可用,为了省去人力成本(也就是自己省事)。对于硬件性能,硬盘容量,甚至数据是否泄露等完全不是需要考虑的重点。博客本身就是公开内容的,只需要管好自己的账号密码登录的问题就没事。
但是数据存储是这样吗?我自己的隐私数据如何保护,是否会发生泄露,存储成本和防数据丢失的概率如何平衡等问题,都是需要考虑的。云存储容量一年单价够我买一块同等容量硬盘至少用上3-5年,只要不损坏。公有云对于数据备份的考虑,是按照最高等级处理的。对于我的许多个人数据,即使丢失,也不是太大问题,这时候就没必要上昂贵的存储服务,而真正有价值的数据大小必然是有限的,这些再使用成本较高的RAID阵列等确保数据安全就行。另外数据(尤其是账号密码个人信息类)存储在云端,自己总是不太放心的,万一泄露了怎么办,本地就能够比较好地解决这一问题,至少我还可以断网,自己的NAS服务只要不联网,除了小偷,其他人很难窃取数据。而移动硬盘的性能和寿命不行,且无法组阵列,对于防止数据丢失这个问题是无解的,重要的数据要靠备份来确保不会丢失,更好的方案还应该加上异地备份,只不过限于个人条件以及数据隐私安全问题,不好实现罢了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

20 − 4 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待