精华内容
下载资源
问答
  • 计算机文件系统概述

    2018-10-22 10:38:07
    EXT2文件系统 The second Extended File System在Linux中应用极为广泛是GUN/Linux系统中标准...每个数据块具有相同的大小,所有块又被分为若干个组块,每个块组包含相同个数的数据块,整个文件系统布局如下: 超级...

    计算机系统文件系统分类

    • NT文件系统 (NT File System :NTFS):windows系统常用
    • FAT32文件系统(windows系统常用)
    • Linux虚拟文件系统 : 较高的抽象层(VFS)
    • EXT2: Linux嵌入式文件系统(The second Extended File System)
    • EXT3: VFS实现的通用文件系统接口转向Linux中的具体文件系统
    • CTSS文件系统
    • Multics文件系统
    • RT-11文件系统
    • 4.3BSD文件系统 (快速文件系统:FFS)
    • Inferno文件系统 (kfs)

    挂载磁盘分区

    1. 对磁盘分区fdisk /dev/sdb
    2. 对分区进行格式化,挂载需要超级块等数据元素mkfs.ext4 /dev/sdb1
    3. 格式化好的分区进行挂载mount /dev/sdb1 /mnt/sdb

    1. 嵌入式文件系统

    普通PC上,一般使用IDE硬盘等外存设备。而在嵌入式系统中特殊的应用目的对存储器提出特殊要求,体积,功耗等。

    大部分嵌入式系统的文件系统建立在Flash上,由于Flash操作的特殊性。Flash上的文件系统和普通磁盘上的文件系统有很大的区别。Flash操作特殊性如下:

    • 不能对单个字节进行擦除,最小的擦写单位为块(Block),有时称为扇区。
    • 写操作只能对一个原来是空的位置操作。如果要改写,只能将整个块读到内存,在内存中修改,然后再写入整个扇区。
    NOR Flash NAND Flash
    接口如SRAM,易使用 地址/数据线复用,数据位窄
    读速度快 速度慢
    64k~128k的块为单位 8~32K为单位
    写速度慢 速度快
    单片容量小1~32M 单片容量大8~128M
    擦写次数10万次 最大擦写次数100万次~1000万次

    2. EXT2文件系统

    The second Extended File System在Linux中应用极为广泛是GUN/Linux系统中标准的文件系统性能好,开销小,中小型文件的存储性能好,主要得益于优良的设计。
    EXT2文件系统由一系列逻辑上线形排列的数据块组成,数据就存储在这些数据块中。每个数据块具有相同的大小,所有块又被分为若干个组块,每个块组包含相同个数的数据块,整个文件系统布局如下:EXT2的文件系统结构

    1. 超级块
      超级块包含了对文件系统基本大小和状态的描述,文件系统管理者可以用这些信息来使用和维护文件系统。当文件系统被安装之后,通常情况下只读位于块组0的超级块。但每个块组都包含一份超级块的备份,当文件系统被破坏时能被恢复。
    2. 组描述符
      每一个块有一个组描述符,组描述符用于描述每个块组的控制和统计信息。所有块组的组描述符在每个块组中都有备份,以便破坏时可以恢复。
    3. 块位图
      每个块组都有一个块位图,位于组描述表之后,用来描述本块组数据块的使用状况。
    4. inode结构
      通过使用inode数据结构来描述系统中的每一个文件或者目录,它表示文件系统树形结构的节点。
    5. inode表和inode位图
      一个块组中所有文件的inode形成了inode表,表项的序号就是inode号,inode表存放在块组中所有数据块之前,在块组中要占用几个逻辑块,由s_inodes_per_group决定。
      inode位图反应了inode表中各个表项的使用情况,它的一位表示inode表中的一个表项,若某位为1表示对应的表项已被占用,为0表示表项空闲。

    3.FAT12文件系统介绍

    • 基本数据分布
      在这里插入图片描述
      可以看出,FAT1和FAT2紧紧接着引导扇区,每个FAT占9扇区,根目录又紧随其后,从第19扇区开始,但根目录区的大小则不固定,依赖于Directory Entry的数目,最多有BPB_RootEntCnt个。
      • FAT项
      1. 每个目录(directory entry)占32个字节其中,DIR_FstClus对应了文件的第一个簇号,但需注意,数据区的簇号是从2开始,不是0和1.为此,FAT中前两个FAT项(0项和1项)不被使用,从第二个FAT项开始有效。
      2. 每个FAT项(FATEntry)长度为12bits,即一个半字节,FAT表中每三个字节存放两个FATEntry。
      3. FATEntry代表文件的下一个簇号,但是如果其值大于0xFF8,则表示当前簇是文件的最后一个簇;如果是0xFF7,则表示这是一个坏簇。
      4. FATEntry就是数据区对应簇的next字段,它使一个文件以链表结构存放在数据区各个不连续的簇中,而把‘索引’放在FAT中。

    文件存储到磁盘上时至少要占用1个扇区,即使这个文件只有1个字节,如果文件有513字节,那就得占用2个扇区,下一个文件就不能用这只使用了一个字节的扇区。

    • 文件分配表(File Allocation Table)
      1. 如果我们用一个表来表示有一个文件占用了 1-6扇区 和 17扇区,那事情就简单了——我们不必为文件不连续而烦恼。这个表就叫它:文件分配表(File Allocation Table)。
      2. FAT12每个表项的值指出文件存放的下一个扇区号,同时也是表项入口。比如文件的存放的第一个扇区是002,那系统首先找FAT的002,在002处得到一个值003,表示文件下一个扇区是003号,再接着003表项找,得到006…
        下面的图来说明FAT的基本原理:
        表项编号 | 值(16位) | 备注
        000 | FF0 | <- 000 项 001项为表头,1字节 0xF0表示存储介质
        001 | FFF | <- 2、3字节为 0xFFFF ,固定值,FAT标志
        002 | 003 | <- 文件下一簇为003
        003 | 005 | <- 下一簇:005
        004 | FF7 | <- 坏簇,不可用
        005 | 011 | <- 下一簇:011

        011 | FF8 | <- 该文件结束
        012 | 000 | <- 可用簇
    • 文件目录表(File Directory Table)。
    1. 那怎样才能知道这个文件存储的文件名和文件存放的起始扇区?再建一个表,用于存放文件名、起始扇区、文件创建时间、文件实际大小等等资料,这个表叫:文件目录表(File Directory Table)。
    2. 在文件系统中新建文件时,如果新建的文件只占用一个簇,为其分配的簇所对应的FAT表项将会被写入结束标记。如果新建的文件不只占用一个簇,则在其所占用的每个簇对应的FAT表项中写入为其分配的下一簇的簇号,在最后一个簇对应的FAT表项中写入结束标记。
    3. 新建目录时,只为其分配一个簇的空间,对应的FAT表项中写入结束标记。当目录增大超出一个簇的大小时,将会在空闲空间中继续为其分配一个簇,并在FAT表中为其建立FAT表链以描述它所占用的簇情况。
    4. 对文件或目录进行删除操作时,它们所对应的FAT表项将会被清空,设置为0以表示其所对应的簇处于未分配状态。
    • 将这两个表放在磁盘指定的位置,以便操作系统使用,磁盘的其它扇区全都用来存放文件的实际内容,这就构成了有文件系统的磁盘。
    展开全文
  • 存储文件系统

    2020-06-12 11:00:00
    不同的存储方式在各方面具有不同的特点,如易失性(断电是否失去数据),容量大小,读写支持(读写,只读,快读慢写,一次性写入等),数据存取方式(连续存取,随机存取),性能(如延迟,吞吐量等),能耗等。...

    存储 (Storage)

    存储是用于保有数据的技术。

    目前计算机存储采用的技术方式主要有以下几种:磁介质(硬盘,磁带),半导体(内存,固态硬盘,闪存卡等),光介质(光盘)等。不同的存储方式在各方面具有不同的特点,如易失性(断电是否失去数据),容量大小,读写支持(读写,只读,快读慢写,一次性写入等),数据存取方式(连续存取,随机存取),性能(如延迟,吞吐量等),能耗等。

    下文所说的存储指二级存储,又称外存,或辅存。与此对应的主要存储是指内存,即“运行内存”。事实上只有这一种内存,把移动设备的持久化存储称为内存在技术上是错误的,这些其实是外存。外存与内存的区别在于是否能直接与 CPU 连接。常见的外存设备包括硬盘,固态硬盘等。
    硬盘 (HDD, Hard Disk Drive)

    硬盘是一种电子机械设备,使用转动的磁盘和可平面移动的磁头来存取数据。

    硬盘的存取延迟一般在几毫秒左右。它支持随机存取,每秒大概几十次到二百次。硬盘适用于连续存取较多的场景如多媒体数据或备份等,其吞吐量可达到 100 ~ 200 MB/s.

    硬盘驱动器中可以有多张磁碟,互相平行重叠,碟间和两侧有读写磁头(Head)。每张碟被划分为若干个同心圆,称为磁道(Track),每个磁道划分为多个扇区(Sector);所有碟相同位置的磁道构成一个柱面(Cylinder)。硬盘可以通过 CHS 方式对每个扇区进行寻址:Cylinde 编号(0 ~ 1023),Head 编号(0~254),Sector(1 ~ 63)。这种方式在常见的 512 字节扇区大小下,能处理的最大硬盘容量是 7844 GB。历史上这些值直接对应硬盘的内部的物理器件,但随着存储密度的增大,硬盘向 BIOS 报告的参数也变为了逻辑数据。为解决更大容量的寻址问题,同时提升部分场景的性能,AF (Advanced Formatting) 技术将扇区大小调整为 4 KB。较新的存储系统现在主要采用 LBA(Logical Block Addressing) 寻址方式,直接使用 32 位或 64 位的扇区编号。

    硬盘根据磁极与盘面的方向关系可分为 LMR 和 PMR 两种。LMR(Longitudinal Magnetic Recording, 纵向磁性记录)仅用于早期的硬盘,磁极与盘面平行。PMR(Perpendicular Magnetic Recording, 垂直磁性记录)是目前所有硬盘都采用的技术,磁极与盘面垂直,这样能做到更高的数据密度。PMR 又分为两种:CMR 和 SMR。CMR(Conventional PMR) 中磁道之间留有空白区域,以避免存取时与相邻磁道相互影响。SMR(Shingled Magnetic Recording , 叠瓦磁性记录) 中磁道间没有间隔,修改数据时需要特殊处理,以免影响相邻磁道。SMR 提升了数据存储密度,在性能和稳定性上做了一定的妥协。

    硬盘的“硬”字是相对于软盘而言的。软盘(Floppy disk)是一种可移动的磁存储媒体,塑料硬壳里边的盘片使用较软的聚酯薄膜制成。硬盘的盘片则由铝或玻璃制成。
    固态硬盘 (SDD, Solid-state Drive/Solid-state Disk)

    固态硬盘使用闪存芯片存储数据。

    固态硬盘的存取延迟一般在几十到几百微秒之间。随机存取每秒可以达到千次以上,并且可在内部使用类似 RAID 0 的技术进一步提升性能。吞吐量一般大于硬盘,高端的产品甚至经常被物理接口(SATA, PCIE等)所限制。

    由于 NAND(Not AND) 闪存的特性,固态硬盘长期不通电会损失数据(正常室温情况下若干年)。闪存芯片可按字节读取,但是写入时则只能在特定情况下进行:代表 1 的位(bit)可被改写为 0, 反之则不行;只有整块(一般单块在 16KB 到 512KB 之间)擦写才能将 0 变为 1。闪存具有有限的 P/E 周期(Program-Eraspe),数据写入量过大会造成写入耗尽(wear out)。由于这些特性,针对固态硬盘,固件及软件系统需要进行相关的处理,才能将保持高性能和保证设备状态。文件系统可以发送 TRIM 命令,通知 SSD 块已经不再使用,可以擦除;固件可能会将数据分布到不同的位置,以平衡不同块的写入量。

    固态硬盘里边没有“盘”。它不包含可运动的机械装置,因此称为“固态”。它也不包含磁性组件,但是由于习惯和翻译的原因,通常还是把它和硬盘等可按块随机访问的二级存储设备统称为磁盘(disk)。
    S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology)

    磁盘可能因为机械磨损,材料降级等原因发生故障。为增强数据安全性,现代的磁盘基本都支持通过 S.M.A.R.T. 向软件系统报告自身健康状态。S.M.A.R.T. 标准仅定义了软硬件间通信的接口协议,并未规定具体的监控指标(Attribute, 特性),因此不同厂商的产品或不同的产品系列报告的数据意义并不完全相同。

    S.M.A.R.T 报告的数据中,有一个最基本的状态,代表是否已超过健康阈值。另外还有一系列的指标,每个指标包含以下几个值:

    ID,整数,指标的标识,由厂商定义,但有部分是通用的
    原始值(Raw value),整数,其意义由厂商定义
    正规值(Normalized value),1 到 253 之间,通常默认为 100,数字越小代表磁盘健康情况越差
    最差值(Worst value),代表历史记录到的最差的正规值
    阈值(Threshold value),当正规值小于或等于该值时,磁盘的健康程度已经到达了临界点,必须进行处理了
    

    部分较关键的通用指标包括 5(0x05, Reallocated Sectors Count,重映射扇区数), 10(0x0A, Spin Retry Count,旋转重试次数), 187(0xBB, Reported Uncorrectable Errors, 无法使用硬件 ECC 恢复的错误次数), 196(0xC4, Reallocation Event Count, 重映射事件次数),197(0xC5, Current Pending Sector Count,待重映射扇区数) 等。
    独立磁盘冗余阵列 (RAID, Redundant Array of Independent Disks)

    RAID 技术用于将多个二级存储设备(下称磁盘)虚拟为一个,以提升性能和/或安全性。 RAID 有不同的等级,分别达到不同的整合效果。常用的等级有以下几种:

    RAID 0 将两个以上的磁盘并联,提供多倍容量,多倍性能。数据无冗余,无容错,单个磁盘损坏时会丢失所有数据。
    
    RAID 1 使用两个以上的磁盘互为镜像,提供单盘的容量,多倍读取性能,略低于单盘的写入性能。只有所有磁盘同时损坏才会丢失数据。
    
    RAID 5 使用三个以上的磁盘分布式存储数据和容错信息。读写性能稍低于 RAID 0, 单个磁盘损坏时不会丢失数据。
    
    RAID 6 类似 RAID 5,存储两份容错信息,使用四个以上磁盘。读写性能类似 RAID 5。两个以内磁盘损坏时不会丢失数据。
    
    RAID 10 为 RAID 1 和 RAID 0 的结合,以更高的代价同时提供性能和安全性。
    

    文件系统 (FS, File System)

    文件系统是用于在存储介质上组织和存取数据的软件。它提供了数据分组的抽象机制(文件,目录等),以及在此抽象机制上的操作接口。文件系统有很多种,以适应不同的底层存储机制(如硬盘,光盘,网络等),达到不同的设计目标(如速度,灵活性,安全等)。
    磁盘文件系统 (Disk file system)

    磁盘文件系统借助于磁盘的随机读写能力,提供方便而高效的文件服务。它通常把存储介质抽象为卷(Volume),即逻辑磁盘,一个卷可能对应一个或多个物理磁盘或磁盘分区。常见的磁盘文件系统包括以下几种:

    FAT(File Allocation Table) 家族是支持最广泛的文件系统。FAT 把卷的空间分为三个部分:目录表,文件分配表和数据区。其中数据区被分为不同的簇(cluster),每个簇包含 N (N 可以为 1, 2, 4, 8, 16, 32, 64, 128)个物理连续的扇区。文件内容存储在这些簇中,单个文件至少占用一个簇。文件分配表中为记录了每个簇的使用情况:未使用,文件末尾,同文件下个簇的编号。这样,文件内容所使用的簇就形成了一个单链表。磁盘上存有两份文件分配表,以便在数据损坏或硬件故障时进行恢复。目录表中记录每个文件/目录的名称,属性,存取日期等元数据,以及内容起始簇的编号等。FAT 中文件名最长为 8 个字符加上 3 个字符的扩展名(称为 8.3 文件名格式),Windows 95 以后对此进行了扩展,最多可达 255 个 UCS-2 字符。目前最常用的 FAT32 中单个文件不能超过 4 GB,单卷(逻辑磁盘)不能超过 2 TB(格式化为 4KB 扇区时为 16 TB)。
    
    exFAT 是在 FAT32 的基础上,专门为闪存设备设计的文件系统,通常用于移动存储,移动设备或嵌入式系统。它放宽了 FAT32 对文件和卷尺寸的限制。exFAT 中只有一份文件分配表,它支持对连续的文件内容使用扩展(extend),而忽略文件分配表中的数据,从而减少了文件修改时对闪存的写入量。Windows 10 仅允许 32 GB 以上的分区格式化为 exFAT, 更小的分区会被推荐使用 FAT32 格式。
    
    NTFS (New Technology File System) 是 Windows 的默认文件系统,在 macOS 和 Linux 中也能作为只读装载。NTFS 中,文件/目录的所有信息都是属性(Attribute),包括文件内容(称为流,一个文件可以有多个流,其中至少有一个是默认流,其它的需要单独命名)。这些属性都保存在主文件表(Master File Table, MFT)的记录里,每条记录大小为 1 KB。如果空间足够,一个文件仅需要这么一条记录即可,无需另外分配磁盘空间;如果空间不足以容纳所有的属性,则会把部分属性存储在同卷的其它地方,在MFT中记录这些位置。NTFS 使用了日志系统,保证文件系统元数据不被意外破坏。
    
    ext系列(ext2/ext3/ext4)是 Linux 下常用的文件系统。ext2 中每个文件或目录对应一个索引节点(inode, index node),其中记录了文件的尺寸,权限等信息,以及数据块的位置(指针)。单个 inode 中可以有 15 个指针:其中前 12 个直接指向数据块;第 13 个是间接指针,它指向一个指针块,指针块中包含若干指向数据块的指针;第 14 个是双重间接指针,指向指向指针块的指针块;第 15 个是三重间接指针。ext3 在 ext2的基础上增加了日志功能,提升了系统故障时的容错性。ext4 支持更大的卷,为元数据和日志添加了校验码,同时在其它方面也有更多的改进。这些文件系统也可以通过第三方软件在 Windows/macOS 中受限使用(部分特性不受支持)。
    
    ZFS 是一种独特的先进文件系统,在 Solaris 操作系统中原生可用,也可通过第三方软件在 Linux/macOS 中使用。ZFS 为长期大量数据存储而设计,有多种安全措施来防止软硬件错误带来的数据丢失:所有数据都存有多层级校验码,数据和校验码可存储多份,支持写入日志,提供软 RAID。功能上它支持快照,写时复制(copy-on-write);性能上,ZFS 支持多级缓存设备,如内存和固态硬盘。与大部分其它文件系统不同的是,ZFS 还提供了虚拟设备的功能,在虚拟设备上可以使用其它文件系统,这样可以用 ZFS 提供优异的性能和数据安全性,同时使用其它文件系统的功能。ZFS 是新一代文件系统中较为成熟和完善的,但是潜在的版权法律问题,限制了它在 Linux 各发行版中的采用率。
    
    Btrfs(B-tree file system) 基于写时复制(copy-on-write)的原则,解决传统文件系统中欠缺存储池,快照,校验码,多设备整合等功能的问题。功能上它和 ZFS 类似,经过完善和成熟后,有希望成为未来 Linux 的默认文件系统。
    
    ReFS(Resilient File System) 是微软设计开发的新一代文件系统,类似 ZFS 和 Btrfs,尚未大规模普及,目前仅在 Windows Server 和 Windows 10 企业版本可用。
    

    网络文件系统 (Network File System)

    网络文件系统作为远程文件访问协议的客户端,提供服务器上文件的存取服务。常见的网络文件系统(及类似系统)包括以下几种:

    NFS(Network File System) 是一套分布式文件系统协议的开放标准。目前主要在 *nix 系统上应用,在 macOS 和 Windows 下使用较少。目前主流使用的 NFS v3 以上版本,可选使用 TCP 或 UDP 作为底层传输协议。NFS v4 及以后的版本只使用一个端口 2049。
    
    SMB(Server Message Block) 也叫 CIFS(Common Internet File System),是 Windows 自带的网络协议,用于共享文件,打印机等。macOS 自带了 SMB 支持, Linux 可使用包 cifs-utils 和 samba 来使用该协议。SMB v2.0 及以后的版本基于 TCP, 使用端口 445。
    
    9P(Plan 9 File System Protocol) 是一套轻量级的远程文件系统协议,经常用于虚拟机与外界的文件共享。WSL2(Windows Subsystem for Linux 2) 就使用了该协议与 Linux 文件系统交互。 9P 通常使用 TCP 端口 564。
    
    WebDAV(Web Distributed Authoring and Versioning) 是 HTTP 的扩展,允许客户端执行远程文件编辑操作。它在标准的 HTTP 方法(GET, POST, PUT, DELETE 等)外,添加了新的方法:COPY, LOCK, UNLOCK, MKCOL, MOVE, PROPFIND, PROPPATCH。主流 HTTP 服务器(Nginx, Apache, IIS 等)都有内置或第三方的 WebDAV 支持,部分私人云软件(ownCloud, Nextcloud等)也支持 WebDAV 访问方式。 Windows 集成了 WebDAV 客户端。WebDAV 和 HTTP/HTTPS 使用相同的端口,默认为 80 和 443。
    
    FTP(File Transfer Protocol) 是用于文件传输的标准网络协议,应用十分广泛。FTP 的控制流和数据流使用不同的端口(通常是21 和 20)。数据连接可选主动或被动模式,被动模式下服务器侦听客户端的请求,可解决客户端由于 NAT 或防火墙等原因无公开端口的问题。 FTP 可设置为匿名连接,也可使用明文传输的用户名/密码进行身份认证。FTPS(FTP Secure) 在 FTP 的基础上增加了数据加密的功能,以提升安全性,它通常使用 990(控制)和 989 端口。
    
    SFTP(SSH File Transfer Protocol) 用于在安全数据连接上管理和传输文件。它是 SSH(Secure Shell)协议的扩展,通常由 SSH 服务器提供支持,但是也可以作为独立的文件服务使用。一般 SFTP 和 SSH 使用同一端口 22。
    
    展开全文
  • “占用空间”表示为计算机磁盘为存储该文件,所需分配的存储空间,显然“占用空间”必须不小于“文件大小”。事实上,windows 采用 NTFS 和 FAT 的文件系统管理磁盘文件,所有文件系统都是基于簇(分

    0. 文件大小与占用空间

    “文件大小”和“占用空间”的差别

    首先需要明确的是,“文件大小”代表着文件的真实大小(文件内容实际包含的全部字节数),“占用空间”往往略大于“ 文件大小”,如下图所示:


    这里写图片描述

    “占用空间”表示为计算机磁盘为存储该文件,所需分配的存储空间,显然“占用空间”必须不小于“文件大小”。事实上,windows 采用 NTFS 和 FAT 的文件系统管理磁盘文件,所有文件系统都是基于簇(分配单元)为大小,即文件在磁盘上的所占空间不再以 Byte 为衡量单位,最小计量单位是“簇(Cluster)”。

    1. 磁盘分区与文件系统及簇大小的查看

    windows 下使用 Chkdsk(check disk)来查看文件系统类型以及簇大小。

    首先以管理员权限运行 cmd,在命令行输入 Chkdsk,即可在只读模式检查本地文件系统。检测结束得到的分析结果中,“分配单元”或者“Allocation unit”即表示簇的大小。

    2. 为什么单个大文件比总体积相同的多个小文件复制起来要快很多?

    将一个1GB大小的文件分割为 1024 个 1MB 大小的文件快,拷贝的效率要远低于直接拷贝 1 GB 大小的整个块。

    从源到目的,复制一个文件需要做的有1-3步:

    • 1、在目标位置创建对应的文件名项,因为文件名也是要保存在磁盘上的;
    • 2、如果文件有内容,把文件内容写入磁盘,并按照块对齐(512字节-64K不等)
    • 3、如果文件有内容,在一个特定的位置把文件内容的块的信息记录下来,标记这些块属于这个文件并且是被使用了

    对于1G的文件,需要的也是这三步,对于1024个1M的文件,需要的是 1024×3 步。对于磁盘设备有IOps的概念,就是每秒能执行的 I/O 次数,对于复制1024个1M文件来说,那么至少需要1024*3次 I/O,对于1G的文件来说,至少需要3次。所以从次数来说,复制小文件越多,磁盘读写次数越多,虽然有 cache 等一系列优化的机制,但整体次数还是要高很多的。并且,磁盘写1字节,和写512字节(一个扇区)的代价是相同的,虽然写入文件名短,但仍然需要写入512字节(一个扇区)。因此写1G文件就至少要比写1024*1M文件多写512K这么多数据。如果说512K这么多数据好像也不太多,但还有一个不可忽略的操作就是比较文件名:复制文件的时候,需要判断是否有重名,复制1个文件,检查1次就可以了,复制1024个文件,就需要检查1024次,并且随着文件的增多,检查的负担也越重(要跟之前的文件都检查一下)。

    所以总结下来有三点:

    • 1、小文件导致IO次数增多,磁盘IO次数本身就有瓶颈;
    • 2、小文件实际写入的内容也更多(这里我没包括索引项,实际索引项也很多,但不好表达);
    • 3、小文件导致CPU负担更重,需要匹配更多的信息。

    以上三点造成了小文件复制比大文件慢,所有操作系统的所有文件系统基本上都有以上三个原因。

    展开全文
  • 生肖工具、系统存储空间获取工具、文件大小格式化工具、获取指定文件大小工具、数字格式化工具、Base64编码解码工具、MD5加密工具、AES加密解码工具(支持android端平台加密解密,java端和android端相互加密解密)、...

    68747470733a2f2f6a69747061636b2e696f2f762f6c6971696e65772f6d797574696c732e737667

    68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2545342542442539432545382538302538352d2545362539442538452545352541352538372d6f72616e67652e737667

    MyUtils

    MyUtils是一个包含全方位的工具的工具项目。项目里面提供时间轴转星座|生肖工具、系统存储空间获取工具、文件大小格式化工具、获取指定文件大小工具、数字格式化工具、

    Base64编码解码工具、MD5加密工具、AES加密解码工具(支持android端平台加密解密,java端和android端相互加密解密)、SharePreference操作工具、

    File文件操作工具、日期获取和计算工具、界面跳转Intent操作工具、字符串验证和数值转换操作工具、手机震动工具、系统资源操作工具、网络检测工具、

    wifi操作工具、单位换算工具、zip压缩和解压操作工具、XML解析操作工具(只支持几种指定格式)、图片加载和处理工具,数据库操作(增删改查)工具。

    V.1.1.7版本新增功能

    FileSizeFormattingUtil 文件大小格式化工具对象

    StaticFileUtils 获取指定文件大小工具对象

    NumericFormatUtils 数字格式化工具对象

    StaticUtility 获取设备屏幕的高度和宽度,获取状态栏高度,获取导航栏高度,判断是否有导航栏,判断是否已经root,判断是否在模拟器上运行, 跳转到首页面

    SystemMemorySpaceGetUtil 系统存储空间获取工具对象

    ZodiacUtil时间轴转星座|生肖工具对象

    内部远程依赖Library(已经远程依赖的Library,切勿主项目里重复依赖。)

    BaseLogger:'com.github.liqinew:baselogger:V.1.0.0'

    universal-image-loader:'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

    appcompat-v7:'com.android.support:appcompat-v7:25.2.0'

    关于权限

    项目targetSdkVersion <= 22,不需要做任何操作。

    项目targetSdkVersion >= 23,请自行动态赋予权限。推荐使用此框架去动态设置权限-AndPermission

    如何使用?

    Gradle远程依赖

    1:在项目根目录build.gradley

    allprojects {

    repositories {

    //依赖仓库

    maven { url 'https://jitpack.io' }

    }

    }

    2:依赖MyUtils

    compile 'com.github.liqinew:myutils:V.1.1.7'

    对应的工具对象

    Base64对象是Base64编码解码工具

    MD5Util对象是MD5加密工具

    AndroidAESEncryptor对象是Android端平台AES加密解密工具

    JToAAesEncryptor对象是java端和android端相互AES加密解密工具

    BaseSharePreference对象是SharePreference操作工具

    StaticFileUtils对象是File文件操作工具

    TimeUtil对象是日期获取和计算工具

    ActivityUtil对象是界面跳转Intent操作工具

    Validation对象是字符串验证和数值转换操作工具

    VibratorUtil对象是手机震动工具

    StaticUtility对象是系统资源操作工具

    NetWorkUtil对象是网络检测工具

    WifiController对象是wifi操作工具

    FDUnitUtil对象是单位换算工具

    ZipUtils对象是zip压缩和解压操作工具

    ImageLoaderUtils对象是图片加载工具,采用image-loader框架实现加载。

    ImageStaticDispose对象是图片处理工具

    BaseDBManagerOperation对象是数据库操作(增删改查)工具

    XmlUtils对象是XML解析操作工具,只支持几种指定格式。(建议下载demo查看支持的XML格式)

    FileSizeFormattingUtil 文件大小格式化工具对象

    StaticFileUtils 获取指定文件大小工具对象

    NumericFormatUtils 数字格式化工具对象

    SystemMemorySpaceGetUtil 系统存储空间获取工具对象

    ZodiacUtil时间轴转星座|生肖工具对象

    如有没有包含的工具,后续会慢慢完善添加进来。如你有好的工具也可以通过QQ:543945827推荐给我。

    另外别忘记给我star哦。^_^..谢谢。

    展开全文
  • 在做文件管理系统的时候,后台可能只会保存文件的最小字节单位,但是在前端显示的时候,为了方便易读,所以需要根据文件大小,选择合适的单位显示,存储的计量单位与单位之间的进制一般为 1024,所以只需要一直除就可以...
  • S3QL是一个文件系统,使用诸如 , 或类的存储服务在线存储其所有数据。 S3QL有效地提供了动态,无限容量的虚拟驱动器,可以从任何具有Internet访问权限的计算机上进行访问。 S3QL是符合标准的,功能齐全的UNIX文件...
  • 文件系统用多级索引结构,若磁盘块的大小为512字节,每个块号需占3字节,那么根索引采用一级索引时的文件最大长度为(B)K字节;采用二级索引时的文件最大长度为(C)K字节。 (1)A.85 B. 170 C.512 D.1024 ...
  • 生肖工具、系统存储空间获取工具、文件大小格式化工具、获取指定文件大小工具、数字格式化工具、Base64编码解码工具、MD5加密工具、AES加密解码工具(支持android端平台加密解密,java端和android端相互加密解密)、...
  • 计算机通过文件系统管理、存储数据,单纯通过增加硬盘个数来扩展计算机文件系统存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。分布式文件系统可以有效解决...
  • 分布式时代,主要解决方案是分布式文件系统 无论是在单机时代还是分布式时代,大规模数据存储都需要解决几个核心问题 1.数据存储容量的问题。既然大数据要解决的是数以PB计的数据计算问题,而一般的服务器磁盘容量...
  • 文件大小换算

    2018-08-01 17:38:57
    文件系统的最大文件大小取决于保留存储尺寸信息的位数量,及文件系统的总大小。例如,在FAT32文件系统中,单个文件的大小不能超过4 GiB。 一些常见的文件大小单位是: 1 byte = 8 bits1 KiB = 1,024 bytes1 MiB = 1,...
  • 分布式存储系统的第一印象HDFS是基于谷歌的GFS的克隆版本HDFS的特点:可扩展性(当节点不够添加一台机器就可以了),可容错的(多副本的方式可存储的),海量数据的存储将上传文件切分成指定大小的数据块(128M)并...
  • 前面聊的FAT 文件系统最怕 大文件,我们这里聊一...块是我们存储有效数据的数据块,为了方便计算和理解,我们假设块中的每个小格式1K 的大小,实际上每个小格子的大小都是4K起步的,这里假设是1K 是为了方便理解。 ...
  • 文件系统

    2016-12-18 15:49:46
    计算机的文件是一种存储和组织计算机数据的方法,是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型。设备文件设备文件系统的某个设备相对应。在内核中,每种设备文件都有与之相对应的设备驱动...
  • 计算机通过文件系统管理、存储数据,而信息爆炸时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都...
  • 但是,分区存储的数据不方便管理和维护,迫切需要一种文件系统来管理多台机器上的文件,这就是分布式文件系统。 分布式文件系统是一种允许文件通过网络在多台主机上进行分享的文件系统,可让多台机器上的多用户分享...
  • 增长,单纯通过增加硬盘个数来扩展计算机文件系统存储容量的方式,在容量大小、容 量增长速度、数据备份、数据安全等方面的表现都差强人意。分布式文件系统可以有效解 决数据的存储和管理难题:将固定于某个地点的...
  • FastDFS分布式文件系统

    2019-08-28 15:24:38
    ​ 计算机通过文件系统管理、存储数据,而信息爆炸时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的...
  • Hadoop分布式文件系统1HDFS产生背景随着日常生活和工作中数据量越来越大,文件和数据被越来越多地存储到系统管理的磁盘中,单台机器已经不能满足大量的文件存储需求,当数据集的大小超过一台独立物理计算机的存储...
  • HDFS分布式文件系统

    2020-08-14 17:53:37
    但是,分区存储的数据不方便管理和维护,迫切需要一种文件系统来管理多台机器上的文件,这就是分布式文件系统。 分布式文件系统是一种允许文件通过网络在多台主机上进行分享的文件系统,可让多台机器上的多用户分享...
  • 进行如下操作: ...先说结果,这几项有计算哪些文件(夹)。 1.应用,由三项组成 /data/data/com.myapp/lib,即so库文件夹大小/data/app/com.myapp-1.apk,原始apk文件的复制/data/dalvik-cache/data@app@com.
  • Hadoop分布式文件系统

    千次阅读 多人点赞 2018-11-15 20:09:25
    管理网络上跨多台计算机存储文件系统称为分布式文件系统。 Hadoop有一个称为HDFS的分布式系统,全称为Hadoop Distributed FileSystem。 HDFS HDFS以流式数据访问模式来存储超大文件 流式数据访问: HDFS的...
  • MFS 分布式文件系统

    2018-09-06 12:31:51
    一、分布式文件系统:背景:计算机通过文件系统管理、存储数据,而信息爆炸时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统存储容量的方式,在容量大小、容量增长速度、数据...
  • 1、hdfs简介 1.1 什么是HDFS? HDFS(Hadoop Distributed File System)是hadoop生态系统的一个重要组成部分,是hadoop...存储超大文件 HDFS适合存储大文件,单个文件大小通常在百MB以上 HDFS适合存储海量文件,总存储
  • HDFS 分布式文件系统

    2018-04-16 09:35:55
    hdfs getconf -confKey dfs.namenode....—— 跨网络管理多个计算机储存的文件系统 —— 分布式文件系统 存储方式:以流式数据访问模式来存储超大文件流式数据访问模式(如mapreduce):一次写入,多次读取是...
  • 操作系统-文件系统

    2019-06-18 12:35:00
    文件是以计算机硬盘为载体存储在计算机上的信息集合,可以是文本文档、图片、程序等等。 在系统运行的时候,计算机以进程为基本单位进行资源的调度和分配。在用户的输入、输出中,则以文件为基本单位 文件的属性...
  • 管理网络中跨多台计算机存储文件系统称为分布式文件系统。 该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。 例如,使文件系统能够容忍节点故障且不丢失任何数据,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,142
精华内容 456
关键字:

文件系统存储文件大小计算