Linux文件系统总结(7.4课上作业)

一、什么是文件系统

        文件系统是对一个存储设备上的数据和元数据进行组织的机制。它使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用的数据块的概念,用户使用文件系统来保存数据而不必关心数据实际保存在硬盘(or光盘)的地址为多少数据块上,只需要记住这个文件的所属目录和文件名。在写入数据前,用户也不必关系硬盘上的哪个块地址没有被使用,硬盘上的存储空间管理功能由文件系统自动完成,用户只需记住数据被写入到了哪个文件中。

        文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。但是,实际上文件系统也可能仅仅是一种访问数据的界面而已,实际的数据是通过网络协议,如NFS,SMB等提供的或者内存上,甚至可能根本没有对应的文件,如proc文件系统。

        严格地说,文件系统是一套实现了数据的存储,分级组织,访问和获取等操作的抽象数据类型。


二、常见的文件系统:

  • Linux文件系统:

ext2,ext3,ext4,xfs,btr,reiserfs,jfs,swap

swap:交换分区:将磁盘当作内存使用

光盘:iso9660

  • windows:fat32(vfat),ntfs

  • unix:FFS,UFS,JFS2

  • 网络文件系统:NFS,CIFS

  • 集群文件:GFS2,OCFS2

  • 分布式文件系统:ceph

moosefs,mogilegfs,GlusterFS,Lustre

  • 根据其是否支持“Journal”功能:

非日志型文件系统:ext2,vfat

日志型文件系统:ext3,ext4,xfs…

  • 文件系统的组成部分

内核中的模块:ext4

用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

  • Linux的虚拟文件系统:VFS

  • 查看支持的文件系统:# cat /proc/filesystems


三、创建文件系统:

        先创建一个环回设备用作临时文件系统:

        使用dd命令创建一个指定大小的用0填充的文件,并用losetup命令将一个环回设备与此文件关联起来,使其作为一个块设备而不是常规文件。

# dd if=/dev/zero of=file.img bs=1k count=10000
记录了10000+0 的读入
记录了10000+0 的写出
10240000字节(10 MB)已复制,0.0116915 秒,876 MB/秒
# losetup /dev/loop0 file.img

  此时/dev目录出现一个块设备文件/dev/loop0

# ls /dev |grep loop0
loop0

        命令:

    1)mkfs

        用法:1)mkfs [options] [-t type] [fs-options] device [size]

                  2)mkfs.ext3

        选项:     

            [-b 块大小] [-C 簇大小]

            [-i 为数据空间中每多少个字节创建一个inode索引节点;该大小不应该小于block的大小]

            [-N 为数据空间创建多少个inode]

            [-m 为管理人员预留的空间占据的百分比] 

            [-L 卷标] 

            [-O 启用制定特性[,…]]

            [-t 文件系统类型] 

            [-U UUID] 

# mkfs -t ext3 -L LOOP /dev/loop0 
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成                            
文件系统标签=LOOP
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
2512 inodes, 10000 blocks
500 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=10485760
2 block groups
8192 blocks per group, 8192 fragments per group
1256 inodes per group
Superblock backups stored on blocks: 
        8193

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (1024 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

2)mke2fs:ext系列文件系统的专用管理工具

    选项同mkfs

# mke2fs -t ext3 -L Loop /dev/loop0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成                            
文件系统标签=Loop
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
2512 inodes, 10000 blocks
500 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=10485760
2 block groups
8192 blocks per group, 8192 fragments per group
1256 inodes per group
Superblock backups stored on blocks: 
        8193

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (1024 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

  

3)mkswap:创建一个交换空间

    选项:

     -c, –check               创建交换区前检查坏块

     -f, –force               允许交换区大于设备大小

     -p, –pagesize SIZE       指定页大小为 SIZE 字节

     -L, –label LABEL          指定标签为 LABEL

     -v, –swapversion NUM     指定交换空间版本号为 NUM

     -U, –uuid UUID           指定要使用的 UUID

     -V, –version             输出版本信息并退出

     -h, –help                显示此帮助并退出

# mkswap /dev/loop0
mkswap: /dev/loop0: warning: wiping old ext3 signature.
正在设置交换空间版本 1,大小 = 9996 KiB
无标签,UUID=1d6c45f5-bcd0-44fd-a39b-ec9826a8e008

四、修改文件系统

(1)blkid 显示分区的属性信息

         blkid [option]… [device]

            -U UUID:根据指定的UUID来查找对应的设备

            -L LABEL:根据指定的LABEL来查找对应的设备

# blkid 
/dev/sda1: UUID="1ae50cbe-2f3d-4394-a8dd-38804695c18c" TYPE="xfs" 
/dev/sda2: UUID="fiizVI-1uF2-XfxN-qiZM-So42-8Hju-dx8mld" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="98023b04-500a-451c-8db5-e9f77d4b8a7c" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="6de8f2e9-70ad-4956-884e-60d3dc632659" TYPE="swap" 
/dev/loop0: LABEL="point1" UUID="df4b5931-cde8-4842-8807-e7eec08608d2" TYPE="ext3" 
/dev/loop1: UUID="5156094a-a26e-46ce-aa18-57ea46d5900f" TYPE="ext2"

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

            e2label DEVICE :查看设备的卷标

            e2label DEVICE [LABEL]:修改设备的卷标

# e2label /dev/loop0 POINT1 && e2label /dev/loop0
POINT1

(3)tune2fs:重新设定ext文件系统的可调整属性的值

-l:查看指定文件系统的超级块信息:super block

-L ’LABEL‘:修改卷标

-m #:修改预留给管理员的空间百分比

-j:将ext2升级为ext3

-O:文件系统属性的打开或禁用

-o:调整文件系统的默认挂载选项

-U UUID:修改UUID号

        -i:设置相邻两次文件系统检查的间隔时间

        -c:设置检查前文件系统最大加载次数

(4)dumpe2fs:

-h:查看超级块信息


五、挂载文件系统

        在linux中,将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。

        使用mount命令将一个文件系统附着到当前文件系统层次结构中(根)。在进行挂载时,要提供文件系统类型,文件系统和一个挂载点。

        这里将loop0设备挂载到挂载点/mnt/point1。

# mkdir /mnt/point1
# mount -t ext3 /dev/loop0 /mnt/point1/
# ls /mnt/point1
lost+found

        此时还可以重复进行挂载,比如在point1中继续创建新文件,与一个新的环回设备关联,再在上面创建另一个文件系统并挂载(详细信息略)

# dd if=/dev/zero of=/mnt/point1/file.img bs=1k count=1000
# losetup /dev/loop1 /mnt/point1/file.img 
# mkfs.ext3 /dev/loop1
# mkdir /mnt/point2
# mount -t ext2 /dev/loop1 /mnt/point2
# ls /mnt/point2
lost+found

可见Linux的文件系统和环回设备是多么强大,可按照此种方法在文件上用环回设备创建加密的文件系统。在需要的时候使用临时环回设备挂载文件,有助于保护数据。


注:资料来源(上课笔记、Wiki、IBM devloperworks、Linux命令大全等)

原创文章,作者:lichenhan,如若转载,请注明出处:http://www.178linux.com/23141

(1)
lichenhanlichenhan
上一篇 2016-07-10
下一篇 2016-07-10

相关推荐

  • OSI参考模型与TCP/IP参考模型的比较

    OSI参考模型与TCP/IP参考模型的比较 OSI参考模型 OSI参考模型是ISO的建议,它是为了使各层上的协议国际标准化而发展起来的。OSI参考模型全称是开放系统互连参考模型(Open System Interconnection Reference Model)。这一参考模型共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 物理层…

    Linux干货 2017-05-07
  • 20160804课堂作业

    grep正则表达式课堂作业 1、用正则表达式表示IP地址 #grep -E "(\<[1-9]|[1-9][[:digit:]]|1[[:digit:]][[:digit:]]|2[0-4][[:digit:]]|25[0-5]\>)\.(\<[[:digit:]]|[1-9][[:digit:]]|1[[:digit:]] [[…

    Linux干货 2016-08-05
  • linux特殊权限管理

    特殊权限:SUID, SGID, STICKY 正常情况下:  1、进程以某用户的身份运行; 进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作; 2、权限匹配模型: (1) 判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则进入第2步; (2) 判断进程的属主,是…

    Linux干货 2015-12-19
  • 编译内核——制作最适合自己系统的内核

    编译内核: ·程序包的编译安装:         ./configure ,make ,make install ·前提:开发环境(开发工具、开发库),头文件:/usr/include ·开源:源代码–>可执行格式    &nbsp…

    Linux干货 2016-09-11
  • Linux系统时间简单修改方法

          Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。Linux中的所有命令(包括函数)都是采用的系统时钟设置。Linux操作系统运行…

    Linux干货 2015-06-12
  • Linux运维初步—-Linux的基础(第一周)

    Linux运维入门初步—第一周 Linux 运维 Linux入门 写作:N27_李伟 2017-7-4 Linux入门之计算机硬件系统组成 Linux是一种计算机操作系统,操作系统简单讲是控制计算机硬件系统和人类进行交互、反馈的重要界面层。通过操作系统的处理,将人的信息通过操作系统界面转换为机器可以理解和执行的机器语言代码,然…

    Linux干货 2017-07-06