专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Linux文件系统磁盘IO是怎么工作的

  同前面讲述的CPU、内存一样,文件系统和磁盘IO,也是Linux操作系统最核心的功能。磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘基础上,提供了一个用来管理文件的树状结构。文件系统1。索引节点和目录项
  Linux中的一切都由统一的文件系统来管理,包括普通的文件和目录,以及块设备、套接字、管道等。Linux文件系统为每个文件都分配了两个数据结构,索引节点(indexnode)和目录项(directoryentry),主要用来记录文件的元信息和目录结构。索引节点,简称为inode,用来记录文件的元数据,比如inode编号、文件大小、访问权限、修改日期、数据的位置等。索引节点和文件一一对应,它跟文件内容一样会被持久化到磁盘,所以,索引节点同样占磁盘。目录项,简称为dentry,用来记录的文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构,它是由内核维护的一个内存数据结构,通常也被称为目录项缓存。
  换句话说,索引节点是每个文件的唯一标志,目录项维护的是文件系统的树状结构。目录项和索引节点的关系是多对一,或者可理解为一个文件多个别名。举个例子,通过硬链接为文件创建的别名,就会对应不同目录项,这些目录项本质上是连接同一个文件,所以索引节点相同。
  更具体地说,文件数据是怎么存储的,是直接保存到磁盘的?实际上磁盘读写的最小单位是扇区,扇区只有512B大小,如果每次读写这么小的单位,效率一定很低。所以,文件系统又把连续的扇区组成逻辑块,再以逻辑块为最小单元去管理数据。常见的逻辑块大小是4KB,即连续的8个扇区。下面展示一张示意图:
  这里需要注意两点:
  第一,目录项本身在内存中,索引节点在磁盘中。前面的Buffer和Cache原理中提到,为了协调慢速磁盘和快速CPU之间的性能差异,文件内容会缓存到页缓存Cache中。索引节点自然也会缓存到内存中,增加速文件访问。
  第二,磁盘在执行文件系统格式化时,会被分成三个存储区域,超级块、索引节点区和数据块区。其中,超级块存储整个文件系统状态;索引节点区存储索引节点;数据块区,存储文件数据。2。虚拟文件系统
  目录项、索引节点、超级块、逻辑块构成Linux文件系统四大基本要素。不过,为了支持各种不同的文件系统,Linux内核在用户进程和文件系统中间,引入了一个抽象层,即虚拟文件系统VFS。VFS定义了一套所有文件系统都支持的数据结构和标准接口。这样,用户层和内核其他子系统都只需要跟VFS提供的统一接口交互就可以了,不需要关心底层各种文件系统的实现细节。下图很好展示了Linux文件系统的架构图,能更好的帮助理解系统调用、VFS、缓存、文件系统以及块存储之间的关系:
  从图中可以看到,在VFS下面Linux可以支持各种文件系统,按照存储位置的不同,可以分为三类:基于磁盘的文件系统,也就是把数据直接存储到计算机本地挂载的磁盘中。如EXT4、XFS、OverlayFS等。基于内存的文件系统,也就是虚拟文件系统,不需要磁盘分配任何存储空间,只占用内存。如proc文件系统、sys文件系统(主要向用户空间导出层次化的内核对象)。网络文件系统,用来访问其他计算机数据的文件系统,如NFS、SMB、iSCSI等。
  这些文件系统,要先挂载到VFS目录树中的子目录(挂载点),然后才能访问其中文件。比如安装系统时,要先挂在一个根目录(),在根目录下,再把其他文件系统挂在进来。
  相关视频推荐
  3个linux内核的秘密,让你彻底搞懂文件系统
  剖析Linux内核虚拟文件系统(VFS)架构
  Linux内核源码分析之Ext23文件系统
  需要CCLinux服务器架构师学习资料加qun812855908获取(资料包括CC,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCPIP,协程,DPDK,ffmpeg等),免费分享
  3。文件系统IO
  把文件挂到挂载点后,就能通过它去访问它管理的文件了。VFS提供的访问文件的标准接口,以系统调用的方式提供给应用程序使用。比如,cat命令,相继调用open()、read()、write()。文件读写方式的各种差异,也导致IO的分类多种多样。常见的有,缓冲与非缓冲IO、直接与非直接IO、阻塞与非阻塞IO、同步与异步IO等。下面详细解释下这四种IO分类:
  第一种,根据是否利用标准库缓存,可以把文件IO分为缓冲IO和非缓冲IO。这里的缓冲,其实指的是标准库内部实现的缓存。例如,很多程序遇到换行时才真正输出,换行前的内容,就是被标准库暂时缓存起来。因此,缓冲IO指的是利用标准库缓存来加速文件的访问,在标准库内部再通过系统调用访问文件;非缓冲IO指的是直接通过系统调用访问文件,而不通过标准库缓存。无论是缓冲还是非缓冲IO,最后都是通过系统调用访问文件。而根据前面内容,系统调用后,还通过页缓存,来减少磁盘IO操作。
  第二种,根据是否利用操作系统的页缓存,可以把文件IO分为直接IO和非直接IO。想要实现直接IO,需要在系统调用中指定标志ODIRECT,如果不指定,默认是非直接IO。不过注意,这里的直接、非直接IO,其实最终还是和文件系统交互。如果实在数据库等场景中,还会看到,跳过文件系统读写磁盘的情况,即裸IO。
  第三种,根据应用程序是否阻塞自身运行,可以把文件IO分为阻塞IO和非阻塞IO。在应用程序执行IO操作后,如果没获得响应,就阻塞当前线程,自然不能执行其他任务,这是阻塞IO;如果没获得响应,却不阻塞当前线程,继续执行其他任务,随后通过轮询或者时间通知的形式,获得之前调用的结果。比如,访问管道或者网络套接字时,设置ONONBLOCK标志,表示非阻塞方式访问,若不做任何设置,默认就是阻塞方式访问。
  第四种,根据是否等待响应结果,可以把文件IO分为同步IO和异步IO。在应用程序执行IO操作后,如果一直等到整个IO完成后才获得响应,就是同步IO;如果不等待IO完成以及完成后的响应,继续往下执行,等到IO完成后,响应会用事件通知的方式,告诉应用程序。比如,在操作文件时,如果设置了OSYNC或ODSYNC标志,就代表同步IO,后者是等待文件数据写入磁盘后才返回,而前者是在后者基础上,要求文件元数据也要写入磁盘后才能返回。再比如,在访问管道或者网络套接字时,设置选项OASYNC后,就是异步IO内核会通过SIGIO或者SIGPOLL,来通知进程,文件是否可读写。
  总之,无论是普通文件和块设备、还是网络套接字和管道等,都通过统一的VFS接口来被访问。4。文件系统性能观测dfdevsda1Filesystem1KblocksUsedAvailableUseMountedondevsda13030824031670202712483611dfhdevsda1FilesystemSizeUsedAvailUseMountedondevsda129G3。1G26G11dfidevsda1FilesystemInodesIUsedIFreeIUseMountedondevsda1387072015746037132605
  加上i参数查看索引节点的使用情况,索引节点的容量,(也就是Inode个数)是在格式化磁盘时设定好的,由格式化工具自动生成。当你发现索引节点空间不足时,但磁盘空间充足时,很可能是过多的小文件导致的,一般的删除它们或者移到其他的索引节点充足的磁盘上,就能解决问题。
  接下来,文件系统的目录项和索引节点的缓存,如何查看呢?
  实际上,内核使用Slab机制,管理目录项和索引节点的缓存。procmeminfo只给出了Slab整体大小,具体到每一种Slab缓存,就要查看procslabinfo。运行下面命令可以得到,所有目录项和各种文件系统的索引节点的缓存情况:catprocslabinfogrepEdentryinodenamenumobjsobjsizeobjperslabpagesperslab:tunableslimitbatchcountsharedfactor:slabdatanumslabssharedavailxfsinode00960174:tunables000:slabdata000。。。ext4inodecache32104345901088154:tunables000:slabdata230623060hugetlbfsinodecache1313624132:tunables000:slabdata110sockinodecache11901242704234:tunables000:slabdata54540shmeminodecache16222139712234:tunables000:slabdata93930procinodecache35604080680122:tunables000:slabdata3403400inodecache2517225818608132:tunables000:slabdata198619860dentry76050121296192211:tunables000:slabdata577657760
  dentry行表示目录项缓存,inodecache行,表示VFS索引节点缓存,其余的则是各种文件系统的缓存。这里列比较多,可查询manslabinfo。实际性能分析时,更多使用slabtop,来找到占用内存最多的缓存类型:按下c按照缓存大小排序,按下a按照活跃对象数排序slabtopActiveTotalObjects(used):277970358914(77。4)ActiveTotalSlabs(used):1241412414(100。0)ActiveTotalCaches(used):83135(61。5)ActiveTotalSize(used):57816。88K73307。70K(78。9)MinimumAverageMaximumObject:0。01K0。20K22。88KOBJSACTIVEUSEOBJSIZESLABSOBJSLABCACHESIZENAME698042309400。19K33242113296Kdentry163801585400。59K12601310080Kinodecache582605539700。13K1942307768Kkernfsnodecache48541305。69K9753104Ktaskstruct1472139702。00K92162944Kkmalloc2048
  从这个结果可以看到,目录项和索引节点占用最多的Slab缓存,但其实并不大,约23MB。
  思考:findnamefilename命令导致会不会导致缓存升高,如果会,导致哪类缓存升高呢?
  findname命令是全盘扫描(包括内存文件系统、磁盘文件系统等),所以这里会导致xfsinode、procinodecache、dentry、inodecache这几类缓存的升高,而且在下次执行find命令时,就会快很多,因为它大部分会直接在缓存中查找结果。这里你可以在执行find命令前后,比较slabtop、free、vmstat输出结果,又会有更深的理解。磁盘IO1。磁盘
  首先,根据存储介质的不同,可以分为两类,机械磁盘和固态磁盘。
  机械磁盘:也称为硬盘驱动器(HardDiskDriver,缩写HDD),机械磁盘由盘片和读写磁头组成,数据存储在盘片的环状磁道中,最小读写单位扇区,一般大小为512B。在读写数据时,需要移动磁头,定位到数据所在的盘片磁道中,然后才访问数据。如果IO请求刚好连续,那就不需要磁道寻址,可获得最佳性能,这就是顺序IO的工作原理。随机IO,需要不停地移动磁头,来定位数据位置,读写速度比较慢。
  固态磁盘:SolidStateDriver,缩写SSD,由固态电子元器件组成,最小读写单位页,一般大小4KB、8KB等。固态磁盘不需要磁道寻址,不管是连续IO,还是随机IO的性能,都比机械磁盘好得多。
  另外,相同磁盘的顺序IO都要比随机IO快得多,原因如下:对于机械磁盘来说,随机IO需要更多的磁头寻道和盘片旋转,性能比顺序IO慢。对于固态盘来说,虽然随机IO性能比机械盘好很多,但是它也会有先擦除、再写入的限制。随机读写也有大量的垃圾回收,所以还是会比顺序IO慢很多。另外,顺序IO可以通过预读的方式,来减少IO请求的次数,这也是其性能优异的原因之一。
  在上一节提到过,如果每次都读写512B数据,效率会很低。文件系统会把连续的扇区或页组成逻辑块,作为最小单元管理数据,常见的逻辑块是4KB,即连续的8个扇区,或者一个页。
  其次,还可以按照接口来分类,可以把硬盘分为IDE、SCSI、SAS、SATA、FC等。不同的接口,分配不同的设备名称。比如IDE的会分配一个前缀为hd的设备名,SCSI和SATA会分配一个sd前缀的设备名。如果是多块同类型的磁盘,会按照a、b、c等字母顺序编号。
  第三,还可以根据使用方式,将磁盘划分为不同架构。最简单的就是,作为独立磁盘来使用。然后再根据需要,将磁盘划分成多个逻辑分区,再给分区编号。比如前面多次用到的devsda,还可以分成两个分区devsda1和devsda2。另一个比较常用的架构是,将多块磁盘组成一个逻辑磁盘,构成冗余独立的磁盘阵列,RAID,提高数据访问性能,增强数据存储的可靠性。
  根据容量、性能、可靠性的不同,RAID可以分为多个级别,如RAID0、RAID1、RAID5、RAID10等。RAID0有最优的读写性能,但不提供数据冗余的功能,其他级别的RAID,在数据冗余的基础上,对读写性能有一定的优化。
  最后一种架构,把磁盘组合成网络存储集群,再通过NFS、SMB、iSCSI等网络存储协议,暴露给服务器使用。
  其实,在Linux下,磁盘是作为块设备来管理的,也就是以块为单位来读写数据,且支持随机读写。每个块设备都被赋予主、次两个设备号,主设备号用在驱动程序中区别设备类型,次设备号用来给多个同类设备编号。2。通用块层
  为了减少不同块设备的差异带来的影响,Linux通过一个统一的通用块层,来管理各种不同的块设备。通用块层其实是处在文件系统和磁盘驱动中间的一个块设备抽象层。有两个功能:
  第一个跟虚拟文件系统的功能类似。向上,为文件系统和应用程序,提供访问块设备的标准接口;向下,把各种异构的磁盘设备抽象成统一的块设备,并提供统一框架来管理这些设备的驱动程序。
  第二个功能,通用块层还给文件系统和应用程序发来的IO请求排队,并通过请求排队、合并等,提高磁盘读写的效率。
  对IO请求排序也是IO调度。事实上,Linux内核支持四种IO调度算法,NONE、NOOP、CFQ、DeadLine。
  NONE:确切的说并不能算调度,因为它完全不使用任何调度器,对文件系统和应用程序的IO不作任何处理,常用在虚拟机中(此时磁盘IO调度完全由物理机支持)。
  NOOP:最简单的一种调度算法,是一个先进先出的队列,只做一些最基本的请求合并,常用于SSD盘。
  CFQ:完全公平调度器,是现在很多发行版的默认IO调度器。它为每个进程维护了一个IO调度队列,并按时间片来均匀分布每个进程的IO请求。类似于进程的CPU调度,CFQ调度还支持进程IO的优先级调度,所以适用运行着大量进程的系统,像桌面环境、多媒体应用等。
  DeadLine:分别为读、写请求创建不同的IO队列,可以提高机械磁盘的吞吐量,并确保达到最终期限的请求被优先处理。这种调度算法多用在IO压力比较大的场合,如数据库等。3。IO栈
  结合上面讲的文件系统、磁盘和通用块层的工作原理,我们可以整体来看Linux存储系统的IO原理了。事实上,我们可以把Linux存储系统的IO栈,由上至下分为三层:文件系统层、通用块层、设备层。看图:
  根据这张全景图,我们可以更清楚理解,存储系统的IO的工作原理:文件系统层,包括虚拟文件系统和其他各种文件系统的具体实现。首先为上层的应用程序提供标准的文件访问接口,对下会通过通用块层,来存储和管理磁盘数据。通用块层,是Linux磁盘IO的核心,包括设备IO队列和IO调度器。会对文件系统的IO请求进行排队,再通过重新排序和请求合并,再发给下一级设备层。设备层,包括存储设备和相应的驱动程序,负责最终物理设备的IO操作。
  存储系统的IO,通常是整个Linux系统中最慢的一环。所以,Linux通过多种缓存机制来优化IO效率。比如,为了优化文件访问性能,会使用页缓存、索引节点缓存、目录项缓存等多种缓存机制,减少对下层块设备的直接调用。同样,为了优化块设备的访问性能,会使用缓冲区,来缓存块设备的数据。4。磁盘性能指标以及观测
  这里说一下常见的五个指标,使用率、饱和度、IOPS、吞吐量以及响应时间等,这五个指标是衡量磁盘性能的基本指标。使用率,是指磁盘处理IO的时间百分比。过高的使用率(如超过80),通常意味着磁盘IO的性能瓶颈。饱和度,磁盘处理IO的繁忙程度,过高的饱和度,意味着磁盘存在严重的性能瓶颈。当达到100时,磁盘就无法接受新的IO请求。IOPS,每秒的IO请求数。吞吐量,每秒的IO请求大小。响应时间,从发出请求到收到响应的时间间隔。
  注意,使用率只考虑有没有IO,而不考虑IO大小,即使达到100,也有可能接受新的IO请求。在数据库、大量小文件等这类随机读写比较多的场景中,IOPS更能反应系统整体性能。在多媒体等顺序读写较多的场景中,吞吐量更能反应系统整体性能。
  一般来说,我们在为应用程序的服务器选型时,要先对磁盘IO的性能进行基准测试,推荐的性能测试工具fio,来测试磁盘的IOPS,吞吐量以及响应时间等核心指标。用性能工具得到的指标,作为后续分析应用程序的性能依据。一旦发生性能问题,就可以把它们作为磁盘性能的极限值,进而评估磁盘IO的使用情况。
  接下来看看怎么观测磁盘IO?首推的工具iostat,它提供每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然这些指标来自procdiskstats。iostats的输出界面如下:dx表示显示所有磁盘IO的指标iostatdx1DevicerswsrkBswkBsrrqmswrqmsrrqmwrqmrawaitwawaitaquszrareqszwareqszsvctmutilloop00。000。000。000。000。000。000。000。000。000。000。000。000。000。000。00loop10。000。000。000。000。000。000。000。000。000。000。000。000。000。000。00sda0。000。000。000。000。000。000。000。000。000。000。000。000。000。000。00sdb0。000。000。000。000。000。000。000。000。000。000。000。00
  下图说明了这些列的具体含义:
  这些指标,你要注意,util磁盘使用率,rswsIOPS,rkBswkBs吞吐量,rawaitwawait响应时间。另外从iostat并不能直接得到磁盘的饱和度,但是可以把观测到的,平均请求队列长度或者读写请求完成的等待时间,跟基准测试的结果进行对比,综合来评估。
  我们再来看看,每个进程的IO情况。iostat只能看到磁盘整体的IO性能数据,并不能知道具体哪些进程在进行磁盘读写,推荐两个工具:pidstat和iotop。具体使用这里略过。

松江这片金色海洋,你去打卡了吗?稻浪翻滚,空气中弥漫着淡淡清香。眼下秋粮迎来丰收季,小昆山镇的万亩良田成为新晋网红打卡地,不少市民来到这里赏秋拍照,感受丰年瑞景的喜悦。稻田里满眼金黄,田边的林带,仿佛大自然打翻的骑共享单车乱停乱放驾照要被扣分,12分扣完拉黑大河报大河财立方(记者杨霄实习生王宇文朱哲摄影)骑共享单车也要有驾照?11月3日,哈啰出行发布消息称,近期,该公司在洛阳开封信阳等河南多个城市已上线共享两轮(单车)驾照分机制。新机发现的幽灵粒子,是什么东西?在广东开平地下700米的洞室,迄今世界最大的地下实验洞室,形似地球,在这里,幽灵粒子被捕捉。何为幽灵粒子幽灵粒子其实就是中微子,因为很难被捕捉到,跟幽灵一般得名。幽灵粒子的特性1可千年难解,碑文等你来破译在端庄秀丽的晴川阁武汉大禹文化博物馆晴川阁景区内有一个古朴典雅的禹碑亭。禹碑上的文字,奇特难认,前年难解,吸引着历代文人墨客,想探索它的奥妙。禹碑亭位于晴川阁景区主体建筑禹稷行宫的河南郏县千年古村为何得名渣园顶端新闻河南商报记者孙超通讯员孙书贤渣园村位于平顶山市郏县渣园乡,穿过一座4。8米高的红石过街牌坊,便进入了渣园村。村内红石铺路亭台长廊环绕,古朴的婆娑园古槐树牛王庙等,无不诉说着国际最新研究刚果盆地中心数千年前干旱气候导致碳释放中新网北京11月3日电(记者孙自法)国际著名学术期刊自然最新发表一篇气候科学研究论文认为,刚果盆地中心在50002000年前因干旱气候导致泥炭分解并释放出碳,这项研究发现表明了气候千年古村为何得名渣园河南日报客户端记者张建新通讯员孙书贤渣园村位于平顶山市郏县渣园乡,穿过一座4。8米高的红石过街牌坊,便进入了渣园村。村内红石铺路亭台长廊环绕,古朴的婆娑园古槐树牛王庙等,无不诉说着纬图在玩一种很新的东西,Web3手机说起苹果最经典的广告,我觉得要数第一代麦金塔电脑的那个。女主一个锤子扔向大屏幕,砸出一个80。不少人认为,这广告是向当时个人电脑行业的龙头IBM发起挑战。时隔30多年,如今的苹果早昨晚华为发布会讲了啥?内容大整理,新品最低才百元昨晚,华为全场景新品发布会如期举办。发布会上不但推出了新款折叠屏手机,而且还新推出了很多其他数码产品。本文就把这些新品内容统统整理下来,让大家一眼看明白。华为PocketS首次将国中国女团排名第六,无缘直通巴黎奥运羊城晚报讯记者詹淑真报道北京时间11月2日,在英国利物浦举行的2022体操世锦赛结束了女子团体决赛,中国队在八支队伍中排名第六,前三名美国队英国队加拿大队直接获得巴黎奥运会参赛资格5G大屏智慧守护进博会11月3日,在上海市青浦区服务保障中国国际进口博览会前线指挥部,一块大屏实时闪烁数字,近百个和进博会相关的数字体征数据不断更新,5G巡查车24小时不断线地巡查街面记者了解到,总结前
印度女婴体内有8个寄生胎,医生说她吞并了8个兄弟姐妹,可怕11月4日,英国每日邮报报道了一则让人惊讶的消息。在印度,一名刚出生仅21天的女婴体内,竟然接连发现了8个寄生胎。这让医生们惊叹不已,毕竟这种罕见病在全球也仅有200例左右,而且普小雪吃三宝,不劳医生帮,后天小雪,3宝指的啥?怎么做暖冬生活记11月22号是冬季第二个节气小雪。小雪节气的到来,意味着天气会越来越冷,开始进入初冬。中医认为春夏养阳,秋冬养阴,冬季是人体最舒适消化吸收功能最好的时节。小雪时节正适合冬心梗救治日急诊科医生教你读懂心脏发出的求救信号11月20日是我国心梗救治日。近些年,我国心梗的发病人数明显上升,急性心梗是院外导致死亡的最常见的心血管疾病,也是导致猝死的最常见的心血管急症。那么,什么是心梗?心梗发生前身体会发林心如与众多富婆聚会!素颜出镜皮肤蜡黄,富士康老板娘美过女星饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!11月20日,富士康老板娘曾馨莹在社交平台上晒出她和姐妹们聚会的照片,令人意外的是,这次富婆聚会中,还出现了林心如的身影这群人漂洋过海,故事里还有比钱更重要的东西视频加载中企业是推动经济高质量发展的主体,也是共建一带一路,推动互联互通的重要实践者。2022新丝路故事汇柯桥论坛平行论坛企业高质量共建一带一路,日前在浙江柯桥举行。论坛聚焦中国企回忆罗荣桓他拿着芭蕉扇边扇边说这个东西价钱便宜,一物多用我第一次见到罗荣桓同志,是1939年4月,他在沂蒙山区向中共山东分局和八路军山东纵队的干部传达党的六届六中全会精神的时候。1942年,山东纵队改为山东军区,我任山东军区卫生部部长,知青往事父亲和母亲离婚后,我一直在姥姥家生活张爱莲今年40岁了,是一位老知青后代,张爱莲从小是在姥姥家长大的,对于父亲和母亲,张爱莲没有多少印象,只是听姥姥讲过父亲和母亲之间的故事。张爱莲的父亲是北京人,母亲是陕西农村的,从汪小菲炮轰具俊晔窝囊废!大骂小S恶心老公许雅钧找姑娘最近,大S指控汪小菲未履行离婚协议,3月起不再支付她生活相关费用,至今累积欠超500万元引发热议。结果,汪小菲直接发布多个微博,不仅炮轰前妻大S和具俊晔,就连小S都一起骂了,下面大御史中丞鲍勋其父亲因救曹操而去世,为何曹丕非要杀他?御史中丞鲍勋是曹丕时代的重臣,他以敢言直谏著称。他的父亲因为救曹操而去世,曹操感念他父亲功劳,格外宽待于他。可能是由于出身的缘故,他敢于为人刚正。在曹丕时代,他屡次惹的曹丕不高兴,夜读人因不惜而散,心因不真而凉人与人之间的关系,说简单也简单,说复杂也复杂。说亲密也亲密,说疏远也疏远。因缘分而相遇,因珍惜而拥有,因真心而亲近。因轻视而离散,因虚伪而心凉,所有的结果都需要我们自己去承担。其实保持觉知,回归正念,断除轮回每时每刻都可能出现一大堆不由自主的念头,我们会因为它的出现而焦虑而恐惧,甚至是生无可恋,如果你在意它,抵抗它,这样的结果只会让它越来越顽固,从而打破内在的平衡,被这个顽固的念头严重
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网