Linux文件系统管理

简介:

Linux支持的文件系统类型: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap(交换分区)

扩展:

Windows支持文件系统:Fat32、NTF

Unix: FFS, UFS, JFS2    
网络文件系统:NFS, CIFS     
集群文件系统:GFS2, OCFS2     
分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre

Ext4

由于Ext4是Ext2、Ext3的改进版,所以这里直接介绍Ext4。Linux Kernel自2.6.28开始正式支持新的文件系统Ext4,它修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,主要有如下几点:

1、与Ext3兼容。支持无须重新格式化磁盘或重新安装系统就能直接从Ext3在线迁移至Ext4,原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。

2、支持更大的文件系统和更大的文件,Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB,EB=http://www.aliyun.com/zixun/aggregation/12560.html">1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

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

4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

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

6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。

8. 日志校验。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

XFS

XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,是一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求,它主要包含以下几点特性:

数据完全性

传输特性

可扩展性

传输带宽

它跟Ext3、Ext4一样属于日志型文件系统。日志文件系统是一种即使在断电或者是操作系统崩溃的情况下保证文件系统一致性的途径。

XFS的日志保存的是在更高层次上描述已进行的操作的“逻辑”实体。相比之下,“物理”日志存储每次事务中被修改的块。为了保证性能,日志的更新是异步进行的。当系统崩溃时,崩溃的一瞬间之前所进行的所有操作可以利用日志中的数据重做,这使得XFS能保持文件系统的一致性。XFS在挂载文件系统的同时进行恢复,恢复速度与文件系统的大小无关。对于最近被修改但未完全写入磁盘的数据,XFS保证在重启时清零所有未被写入的数据块,以防止任何有可能的、由剩余数据导致的安全隐患(因为虽然从文件系统接口无法访问这些数据,但不排除裸设备或裸硬件被直接读取的可能性)

BTRFS

由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小

平台支持:OpenSUSE、Ubuntu、Red Hat Enterprise Linux 6、Debian、Arch Linux、

 

文件系统的组成部分:

           内核中的模块:ext4, xfs, vfat    
           用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat     

创建文件系统命令

1
2
3
4
5
6
7
8
9
10
11
mkfs命令
语法格式:mkfs [options] [-t  type ] [fs-options] device [size]
使用语法一:mkfs.FS_TYPE  /dev/DEVICE
#mkfs.ext4 /dev/DEVICE #创建设备为ext4文件系统
#mkfs.xfs /dev/DEVICE   #创建设备为xfs文件系统
#mkfs.btrfs /dev/DEVICE  #创建设备为btrfs文件系统
#mkfs.vfat /dev/DEVICE  #创建设备为vfat文件系统
使用语法二:mkfs –t FS_TYPE  /dev/DEVICE
#mkfs –t ext4 /dev/DEVICE  #创建设备为ext4文件系统
选项“-L” Label 设定文件系统标签
#mkfs –t ext4 –L “Mydata”/dev/DEVICE  #创建设备为ext4文件系统,标签为Mydata

mke2fs: Ext系统文件系统专用管理工具

常用选项:

1
2
3
4
5
6
7
8
9
  -t {ext2|ext3|ext4}    
  -b {1024|2048|4096}     
  -L  'LABEL'     
  -j: 相当于 -t ext3;mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3     
  -i  #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;     
  -N  #:为数据空间创建个多少个inode;     
  -m  #: 为管理人员预留的空间占据的百分比;     
  -O FEATURE[,...]:启用指定特性     
  -O ^FEATURE:关闭指定特性

mkswap:创建交换分区

语法格式:mkswap [options] device [size]

blkid:块设备属性信息查看;  

1
2
3
4
5
6
语法格式:  blkid [OPTION]... [DEVICE]                    
-U UUID: 根据指定的UUID来查找对应的设备                     
-L LABEL:根据指定的LABEL来查找对应的设备
[root@localhost ~] # blkid /dev/sdb1  #以设备名查找    
/dev/sdb1 : LABEL= "testd"  UUID= "b097348b-0d0e-42d2-b687-ffcd32ef7554"  TYPE= "ext4"     
[root@localhost ~] # blkid -U b097348b-0d0e-42d2-b687-ffcd32ef7554  #以UUID查找/dev/sdb1  [root@localhost ~]# blkid -L testd   #以标签查找     /dev/sdb1

e2label:管理ext系列文件系统的LABEL

例如我们知道/dev/sdb1的标签为”testd“,我们把它修改为”mylable“

1
2
3
[root@localhost ~] # e2label /dev/sdb1 mylable    
[root@localhost ~] # blkid /dev/sdb1     
/dev/sdb1 : LABEL= "mylable"  UUID= "b097348b-0d0e-42d2-b687-ffcd32ef7554"  TYPE= "ext4"

tune2fs:重新设定ext系列文件系统可调整参数的值

常用选项:

1
2
3
4
5
6
7
8
-i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]
-l:查看指定文件系统超级块信息;super block    
-L  'LABEL' :修改卷标,功能类型于e2label     
-m  #:修预留给管理员的空间百分比     
-j: 将ext2升级为ext3     
-O: 文件系统属性启用或禁用     
-o: 调整文件系统的默认挂载选项     
-U UUID: 修改UUID号;

例如我们将设备/dev/sdb1从ext2升级为ext3,命令如下:

1
2
3
4
5
[root@localhost ~] # tune2fs -j /dev/sdb1    
tune2fs 1.42.9 (28-Dec-2013)     
Creating journal inode:  done     
[root@localhost ~] # blkid /dev/sdb1     
/dev/sdb1 : UUID= "17a6e508-5b46-45d8-9734-4fa180a9b7ea"  SEC_TYPE= "ext2"  TYPE= "ext3"

例如开机取消自检:     

1
2
tune2fs -l  /dev/sdb1  grep  -E ‘Maximum  mount  count:|Check interval’     
tune2fs -i 0 -c 0  /dev/sdb1

 Fsck 文件系统检测

语法格式:fsck.FS_TYPE 或者 fsck -t FS_TYPE

1
2
3
4
5
6
7
8
9
例如:加一个参数-f,让 fsck 对于没有错的档案也强行检测,它可以修复一些分区的轻微的错误
[root@localhost ~] # fsck.ext3 -f /dev/sdb1    
e2fsck 1.42.9 (28-Dec-2013)     
Pass 1: Checking inodes, blocks, and sizes     
Pass 2: Checking directory structure     
Pass 3: Checking directory connectivity     
Pass 4: Checking reference counts     
Pass 5: Checking group summary information     
/dev/sdb1 : 11 /327680  files (0.0% non-contiguous), 55935 /1310720  blocks
1
2
3
4
加一个参数-r,交互式修复错误,在检测到硬件有错误,可以先进行判断后再执行操作,以免损坏数据
[root@localhost ~] # fsck.ext3 -r /dev/sdb1    
e2fsck 1.42.9 (28-Dec-2013)    
/dev/sdb1 : clean, 11 /327680  files, 55935 /1310720  blocks









本文转自 Nico_Lv 51CTO博客,原文链接:http://blog.51cto.com/nearlv/1737609,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
28天前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
35 0
|
28天前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
38 0
|
23天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
54 5
|
28天前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
49 1
|
28天前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
31 0
|
28天前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
32 2
|
24天前
|
存储 算法 Linux
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
36 0
|
10天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
18天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。
|
21天前
|
Linux
linux中服务管理
在Linux服务管理中,从传统的System V init到Upstart,再到广泛采用的systemd,管理方式不断发展。systemd以其强大的功能和依赖解决成为现代Linux的核心。`systemctl`是管理服务的关键命令,如启动(`start`)、停止(`stop`)、重启(`restart`)服务及设置开机启动(`enable`)或取消(`disable`)。了解和服务管理,特别是systemd和`systemctl`的使用,对系统管理员至关重要。其他如xinetd用于控制网络服务,而特定环境下有OpenRC等工具。
17 2