前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础之文件系统 原

Linux基础之文件系统 原

作者头像
云飞扬
发布2019-03-13 10:25:51
1.1K0
发布2019-03-13 10:25:51
举报
文章被收录于专栏:星汉技术

一、Ext2/Ext3/Ext4区别

这三个都是文件系统格式NTFS和FAT32。

Linux kernel自2.6.28开始正式支持新的文件系统Ext4,Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构。Ext3对Ext2,只是增加了一个日志功能而已。Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能,更大的文件系统和更大的文件。较之Ext3所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。

1、无限数量的子目录

Ext3只支持32,000个子目录,而Ext4支持无限数量的子目录。

2、Extents(区段)

Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一 个100MB大小的文件,在Ext3中要建立25,600个数据块(每个数据块大小为4KB)的映射表。在Ext3中,每个物理块都需要一个逻辑块结构与之相对应。

Ext4引入了extents概念,提高效率,每个extent为一组连续的数据块,理想情况下,上述文件则表示为只需要一个extent来记录映射关系。

3、多块分配

当写入数据到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块,写一个100MB文件就要调用25600次数据块分配器,而Ext4的多块分配器“multiblockallocator”(mballoc)支持一次调用分配多个数据块。

4、延迟分配 

Ext3的数据块分配策略是尽快分配,而Ext4是尽可能地延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘。如此能优化整个文件的数据块分配,显著提升性能。

5、快速fsck(文件系统检查)

老的fsck会很慢,因为它要检查所有的inode,Ext4给每个组的inode表中都过它们而只去检查那些在用的inode添加了一份未使用inode的列表,执行 fsck就可以跳过它们而只去检查那些在用的inode。

6、日志校验

日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。

Ext4的日志校验功能可以很方便地判断日志数据是否损坏,将过去两阶段日志机制合并成一个阶段,提高性能。

补充,两阶段提交:

    (1)文件系统将准备执行的事务的具体内容写入日志。

    (2)文件系统进行文件操作。

    (3)操作成功后,将事务具体的内容从日志中删除。

7、“无日志”(NoJournaling)模式

Ext4允许关闭日志,以便某些有特殊需求的用户可以借此进一步提升性能。

8、在线碎片整理

Ext4支持在线碎片整理,并提供e4defrag工具进行个别文件或整个文件系统的碎片整理。

9、inode相关特性

Ext4支持更大的inode,较之Ext3默认的inode大小128字节,Ext4为了在inode中容纳更多的扩展属性(如纳秒时间戳或inode版本),默认inode大小为256字节。

10、持久预分配(Persistentpreallocation)

P2P软件为了保证下载文件有足够的空间存放,常常会预先创建 一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。Ext4在文件系统层面实现了持久预分配并提供相应的API,比应用软件自己实现更有效率。

二、swap

1、Swap(交换分区)概述

使用磁盘存储内存不够而“溢出来”的内容。 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。

最容易成为被释放的对象:一些很长时间没有什么操作的程序。被保存到Swap空间中。等到那些被换出的程序要继续运行时,再从Swap中恢复保存的数据到内存中。

一般来说可以按照如下规则设置swap大小:

8G以内的物理内存,SWAP设置为内存的2倍。

8G-16G以内的的物理内存,SWAP等于内存大小或者设置为8G。

16G-256G的物理内存,SWAP设置为实际内存的1/2即可。

2、系统如何使用swap

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness参数值控制。

代码语言:javascript
复制
[root@localhost ~]# cat /proc/sys/vm/swappiness
60
[root@localhost ~]#

默认值是60。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

3、修改swap参数 

1.临时性修改

使用命令:sysctl,可以进行临时修改swap的使用比例。

命令格式:sysctl vm.swappiness=0-100的数字

示例:

代码语言:javascript
复制
[root@localhost ~]# sysctl vm.swappiness=10 
vm.swappiness = 10 
[root@localhost ~]# cat /proc/sys/vm/swappiness 
     10 

这里我们的修改已经生效,但是如果我们重启了系统,又会变成60。

2.永久修改

在/etc/sysctl.conf 文件里添加如下参数:vm.swappiness=10。 vim /etc/sysctl.conf ->i->修改 esc->wq。

4、swap开启与关闭

代码语言:javascript
复制
swapon -a #开启
swapoff -a #关闭

三、文件系统的操作

1、挂载点的意义

每个文件系统都有独立的inode/block/superblock等信息,这个文件系统要能够链接到目录树才能被我们使用。将文件系统和目录树结合的动作我们称为挂载。

挂载点:一定是目录,此目录为文件系统的入口。

2、挂载操作

mount命令:将设备挂载到某个目录。

命令格式:mount [-fnrsvw] [-o option[,option]...] 设备文件 挂载点

1.选项和参数

-t:指定设备的文件系统类型。

ext4 linux目前常用的文件系统。

nfs网络文件系统。

iso9660 CD-ROM光盘标准文件系统。

auto自动检测文件系统 

-o:指定挂载文件系统时的选项。

ro以只读方式挂载。

rw以读写方式。

2.挂载镜像文件

将ISO镜像文件挂载到Linux虚拟机中,准备工作:

挂载到某个目录。

代码语言:javascript
复制
[root@localhost ~]# mount /dev/cdrom /media
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sr0        4.2G  4.2G     0 100% /media/CentOS_6.5_Final
[root@localhost ~]# ll /dev/cdrom1 
lrwxrwxrwx. 1 root root 3 Feb  9 14:53 /dev/cdrom1 -> sr0
[root@localhost ~]# ls /media

CentOS_6.5_Final 挂载到某个目录

代码语言:javascript
复制
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount -t iso9660 /dev/cdrom1  /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sr0        4.2G  4.2G     0 100% /mnt/cdrom
[root@localhost ~]# lsblk      #查看块设备
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom 
3.挂载U盘
代码语言:javascript
复制
[root@localhost /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        29G  2.3G   27G   8% /media/7E4E-815B
[root@localhost /]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom  
sdb      8:16   1 28.9G  0 disk 
└─sdb1   8:17   1 28.9G  0 part /media/7E4E-815B
[root@localhost /]# mkdir /mnt/udisk
[root@localhost /]# mount /dev/sdb1 /mnt/udisk/
[root@localhost /]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   1 28.9G  0 disk 
└─sdb1   8:17   1 28.9G  0 part /media/7E4E-815B
[root@localhost /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        29G  2.3G   27G   8% /media/7E4E-815B
/dev/sdb1        29G  2.3G   27G   8% /mnt/udisk

如果挂载后查看U盘内容出现乱码?

代码语言:javascript
复制
[root@localhost ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8“
[root@localhost ~]#man mount

使用”/iocharset”查找

代码语言:javascript
复制
[root@localhost ~]# mount -o iocharset=utf8 /dev/sdb1 /mnt/udisk

Ntfs需要下载ntfs-3g驱动

代码语言:javascript
复制
yum install ntfs-3g

用完要记得使用umount“弹出”,并断开连接。

3、取消挂载

umount:取消挂载。 命令格式:umount 设备或是挂载点 示例:

代码语言:javascript
复制
umount /mnt/cdrom
#或
umount /dev/cdrom1 
#或
umount /dev/sr0

4、自动挂载

/etc/fstab文件:开机引导的时候自动挂载到linux的文件系统。

5、文件系统相关命令

1.df

df:列出文件系统整体磁盘使用情况。即整个硬盘的分区情况。相当于Windows中查看磁盘分区情况。

命令格式:df 选项参数

选项参数

-a:列出所有文件系统。

-k:以KBytes的容量显示文件系统。

-m:以MBytes的容量显示文件系统。

-h:GBytes、MBytes、KBytes等格式自行显示。

-i:以inode数量显示。

2.du

du:文件系统的磁盘使用量或是目录使用量。即具体的目录或者文件的大小详情。相当与Windows中打开我的电脑进行文件查看。

命令格式:du 选项参数 目录名称

选项参数

-a:列出所有的文件与目录容量。

-h:以人们较易读的容量格式(G/M)显示。

-s:列出总量而已,而不列出每个各别的目录占用容量。

-k:以KBytes列出容量显示。

-m:以MBytes列出容量显示。

3.dumpe2fs

dumpe2fs:观察文件系统。

命令格式:dumpe2fs [options] < device>

参数选项:

-h :仅列出superblock的数据,不会列出其他的区段内容。

代码语言:javascript
复制
#dumpe2fs  -h /dev/sda1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/07/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Ext2/Ext3/Ext4区别
    • 1、无限数量的子目录
      • 2、Extents(区段)
        • 3、多块分配
          • 4、延迟分配 
            • 5、快速fsck(文件系统检查)
              • 6、日志校验
                • 7、“无日志”(NoJournaling)模式
                  • 8、在线碎片整理
                    • 9、inode相关特性
                      • 10、持久预分配(Persistentpreallocation)
                      • 二、swap
                        • 1、Swap(交换分区)概述
                          • 2、系统如何使用swap
                            • 3、修改swap参数 
                              • 1.临时性修改
                              • 2.永久修改
                            • 4、swap开启与关闭
                            • 三、文件系统的操作
                              • 1、挂载点的意义
                                • 2、挂载操作
                                  • 1.选项和参数
                                  • 2.挂载镜像文件
                                  • 3.挂载U盘
                                • 3、取消挂载
                                  • 4、自动挂载
                                    • 5、文件系统相关命令
                                      • 1.df
                                      • 2.du
                                      • 3.dumpe2fs
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档