创建文件系统的含义:就是格式化一个硬盘分区,不同的格式化方式,就是创建了不同的文件系统。

格式化:

  • 低级格式化:划分分区前执行,主要是划分硬盘的磁道等。

  • 高级格式化:划分分区后执行,创建文件系统

    • 创建文件系统时做的目的:当我们在硬盘上创建文件后,以后可以用文件的名字还能找到这个文件。

      文件包含2部分:

      • 元数据(包括:权限,属主/组,时间戳,大小,数据块指针等)

        数据块指针:指向文件内容在数据区的位置(根据文件内容的大小,位置会有多个)

      • 数据本身的内容。

      创建文件系统时,把整个分区划分成2个区域,一大一小。

      • 小的区域放每个文件的元数据,叫元数据区(也叫:Inode table)

        每个文件的元数据,叫 inode(index node)

      • 大的区域放文件本身的内容,叫数据区

        数据区需要再次划分成一堆block,block的大小一般是扇区的倍数。一个扇区是512bytes。

      • 元数据区和数据区图例:

      • 元数据区和数据区的大小比例怎么决定呢?

        如果文件的size小,而且文件数量多,则会发生元数据区已经满了,但是数据区还有很多空余。

        如果文件的size大,而且文件数量少,则会发生数据区已经满了,但是元数据区还有很多空余。

  • 一般文件:它的元数据里的数据块指针区域,存放的是数据区的地址。占用分区的数据区域的存储空间。

  • 符号链接文件:它的元数据里的数据块指针区域,存放不是是数据区的地址,而是实际文件的路径。所以它不占用分区的数据区域的存储空间。它只占用元数据区域的存储空间。

  • 设备文件:它的元数据里的数据块指针区域,存放不是是数据区的地址,而是主设备号和次设备号。所以它不占用分区的数据区域的存储空间。它只占用元数据区域的存储空间。

查看文件的inode编号。

  • 使用ls -i files,或者stat files

操作系统,如何知道哪些inode别使用了,哪些block被使用了?

搜索整个数据区域,肯定能知道block的使用情况,

搜索整个元数据区域,肯定能知道inode的使用情况,可是性能太低下了。

所以,在元数据区域找块空间,存放2个东西,叫位图索引(bitmap)。

一个是inode的位图索引(Inode bitmap)。

一个是block的位图索引(Block bitmap)。

位图索引的每个bit位对应一个inode/block,0代表此inode/block未被使用,1代表此inode/block已被使用。

搜索位图索引,速度就快多了。

super block

若一个分区里只有一个元数据区,一个数据区的话,即便有位图索引,索引也是太多了,遍历一遍也很费时间,所以实际的文件系统,都是有多个元数据区和数据区,如下图,每个元数据区和数据区组成一个独立的逻辑分区,独立自治,每个逻辑分区里,再建立位图索引。有了逻辑分区的话,还需要一个中央政府,去管理这些逻辑分区,这个中央政府叫【super block】。

super block:记录着逻辑分区的信息。

如果super block损坏了的话,那整个分区就废了,所以super block就必须做冗余处理,所以把super block放到了多个逻辑分区的数据区里。如下图:

inode里没有存放文件的名字,名字放哪里了呢?放目录里了。目录也是文件,可不是windows里的文件夹。

目录的block里放的是:目录里的文件和文件所对应的inode编号。

下图表示了:元数据区,和数据区,和如何找到文件/var/log/messages的

找到硬盘上的文件后,就放到内存的【buff/cache】中,下次用户再访问此文件就能快速的从内存中读取到。

用free命令查看内存情况:

# free -h
total used free shared buff/cache available
Mem: 3.7G 336M 3.0G 13M 429M 3.1G
Swap: 3.9G 0B 3.9G

硬链接和符号链接的区别

操作系统能根据文件路劲,找到它对应的inode编号。

  • 硬链接:

    • 创建硬链接命令:ln src link_file
    • 多个硬链接文件,所对应的inode编号相同
    • 硬链接不能跨文件系统,因为每个文件系统的inode计数方式不同。
    • 创建硬链接会增加inode的引用计数,同样删除硬链接会减少inode的引用技术,当inode的引用计数变成零时,是否数据区对应的空间。
    • 目录不支持硬链接,防止循环引用。
  • 符号链接:

    • 创建符号链接命令:ln -s src link_file
    • 符号链接文件,有自己独立的inode。
    • 可以跨文件系统
    • 创建或删除符号链接,不影响inode的引用计数
    • 符号链接可以指向目录
    • 符号链接的mode是777,但实际的mode还是要取决于它指向的文件的mode
    • 符号链接的size是其指定的文件的路径字符串的字节数
      $ ls -l
      lrwxrwxrwx. 1 ys ys 14 Dec 27 13:25 sl1 -> 符号链接11
      -rw-rw-r--. 1 ys ys 0 Dec 27 13:24 符号链接11

Linux支持大部分的文件系统,哪个文件系统最好呢?没有最好只有更好。

不同的文件系统,适应不同的使用场景。

不同的文件系统,对分区的划分方法都不一样。对应读写文件的程序来说,就太难了,不可能针对每种文件系统,写不同的代码。那么,linux是如何解决这个问题的呢?使用VFS。

VFS:virtual FIle System虚拟文件系统。

文件读写程序,只跟VFS打交道,然后VFS和各个文件系统打交道。

VFS给程序员统一的,简洁的API接口。

Linux支持哪些文件系统:

  • ext2,ext3,ext4:基本被淘汰了。单个文件的大小有限制
  • xfs:红帽7开始好像使用xfs了。centos7好像使用此文件系统。特点:单个文件的大小没有限制
  • relserfs:能相对容易找回误删除的文件,但是作者入狱了,所以不是主流了。
  • btrfs:特点:单个文件的大小没有限制。性能好,但还是处于测试阶段。
  • iso9660:光盘(包括dvd和vcd)的文件系统
  • nfs,cifs:网络文件系统
  • gfs2,ocfs2:集群文件系统
  • ceph:内核级分布式文件系统
  • vfat(fat32),ntfs:windows的文件系统
  • proc, sysfs, tmpfs, hugepagefs:伪文件系统
  • UFS(unix文件系统),FFS(fast文件系统),JFS(日志文件系统):Unix下的文件系统。
  • swap:交换文件系统
  • mogilefs,moosefs,glusterfs:用户空间的分布式文件系统。

文件系统里的日志功能

由一个问题引出了文件系统里的日志功能。

当往硬盘里写入的时候,先去找一个空闲的inode,写入元数据信息,但是size在数据全部写入完前,是不知道的,在写入数据区的途中,突然断电了,数据写了一部分;再次开机的时候,操作系统为了检查出坏数据,

就要扫描硬盘的inode区和数据区,找出坏的block,这样一来开机的就太慢了。如何解决呢?日志功能(journal)登场了!

日志功能:

  • 在硬盘找一块区域当日志区域。
  • 当要创建文件的时候,先不往元数据区,写入元数据信息,而是往日志区域,写入元数据信息,
  • 然后写入数据到数据区,当数据全部写入到数据区后,把日志区的元数据,剪切到元数据区域。
  • 系统启动时,只要看硬盘的日志区域,如果日志区域里有数据,就说明这是坏数据。加速了系统的系统速度。

日志功能的缺点:

  • 由于要从把日志区域的数据,剪切到元数据区域,增加了一次IO。

Linux里常用的文件系统:ext2,ext3,ext4, xfs, relserfs, btrfs

只有ext2是无日志功能的。

文件系统组成部分

  • 文件系统驱动程序:由内核空间提供。

    文件系统的驱动程序,可以选择直接编译到内核空间;也可以选择作为一个module,安装到内核空间。

    使用lsmod命令可以看到,内核安装了哪些文件系统的驱动程序module。

    # lsmod
    Module Size Used by
    fuse 91880 3
    xt_CHECKSUM 12549 1
    iptable_mangle 12695 1
    xfs 997127 3

    如果发现想要的文件系统的驱动程序module没有在里面,也有可能是直接编译到内核空间了。

    直接编译到内核空间的文件系统的驱动程序,不在lsmod结果里。

  • 文件系统管理工具:由用户空间的应用程序提供

文件系统工具

1, 创建文件系统的工具

  • mkfs:mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat等

    可以用选项:-t指定安装说明文件系统。例:mkfs -t ext4= mkfs.ext4

    ext4兼容ext3,ext3兼容ext2.

    下面是创建ext2文件系统:

    # fdisk -l /dev/sdb
    Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x2594e4e1
    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 411647 204800 83 Linux
    /dev/sdb2 411648 616447 102400 5 Extended
    /dev/sdb5 413696 516095 51200 83 Linux # mkfs.ext2 /dev/sdb1 #在/dev/sdb1里,安装文件系统ext2
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=识别设备的卷标
    OS type: Linux
    Block size=1024 (log=0)块的大小,没有指定大小,默认是1K
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    51200 inodes(创建了51200个inode), 204800 blocks(创建了204800个blocks)
    10240 blocks (5.00%) reserved for the super user(给管理员预留了5%的空间)
    First data block=1(第一个数据在编号为1的block)
    Maximum filesystem blocks=67371008
    25 block groups(把block分成了25个组)
    8192 blocks per group(每个组有8192个block), 8192 fragments per group
    2048 inodes per group(每个组有2048个block)
    Superblock backups stored on blocks:(super block存放在块编号为下面的块)
    8193, 24577, 40961, 57345, 73729 Allocating group tables: done
    Writing inode tables: done
    Writing superblocks and filesystem accounting information: done
    # blkid /dev/sdb1 查看/dev/sdb1的文件系统和UUID
    /dev/sdb1: UUID="4752177b-e026-483d-b166-19229b64e4c3" TYPE="ext2"

    下面是创建ext3文件系统:和ext2相比,多了下面的存放日志的空间。

    Creating journal (4096 blocks): done

    # mkfs.ext3 /dev/sdb5
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    12824 inodes, 51200 blocks
    2560 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=52428800
    7 block groups
    8192 blocks per group, 8192 fragments per group
    1832 inodes per group
    Superblock backups stored on blocks:
    8193, 24577, 40961 Allocating group tables: done
    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    # blkid /dev/sdb5
    /dev/sdb5: UUID="8f066109-6fcf-4c40-812a-66909b54469e" SEC_TYPE="ext2" TYPE="ext3"

    创建xfs文件系统:

    centos5和6里没有xfs,需要安装。安装命令:yum install xfsprogs

    # mkfs.xfs -f /dev/sdb5
    meta-data=/dev/sdb5 isize=512 agcount=2, agsize=6400 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=12800, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=855, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
    [root@localhost ~]# blkid /dev/sdb5
    /dev/sdb5: UUID="d73b8a2c-147d-4322-80a4-812553696c26" TYPE="xfs"

    yum小知识:查看用yum安装的包里都包含哪些东西:

    # rpm -ql xfsprogs
    /usr/lib64/libhandle.so.1
    /usr/lib64/libhandle.so.1.0.3
    /usr/sbin/fsck.xfs
    /usr/sbin/mkfs.xfs
    /usr/sbin/xfs_admin
    /usr/sbin/xfs_bmap
    /usr/sbin/xfs_copy
    /usr/sbin/xfs_db
    /usr/sbin/xfs_estimate
    /usr/sbin/xfs_freeze
    /usr/sbin/xfs_fsr
    /usr/sbin/xfs_growfs
    /usr/sbin/xfs_info
    /usr/sbin/xfs_io
    /usr/sbin/xfs_logprint
    /usr/sbin/xfs_mdrestore
    /usr/sbin/xfs_metadump
    /usr/sbin/xfs_mkfile
    /usr/sbin/xfs_ncheck
    /usr/sbin/xfs_quota
    /usr/sbin/xfs_repair
    /usr/sbin/xfs_rtcp
    ...后面省略

    ext文件系统专用管理程序:mke2fs

    • 语法:mke2fs [options] device

    • 指定文件系统:-t

      mke2fs -t {ext2|ext3|ext4}

    • 指定blocksize:-b {1024|2048|4096}

      # mke2fs -t ext4 -b 2048 /dev/sdb5
      mke2fs 1.42.9 (28-Dec-2013)
      Filesystem label=
      OS type: Linux
      Block size=2048 (log=1)
      Fragment size=2048 (log=1)
    • 指定卷标(filesystem label):-L

      一般不指定卷标,因为容易重复。

      指定卷标后,用blkid命令就能看到卷标了。

      # mke2fs -t ext4 -L myLabel1 /dev/sdb5
      mke2fs 1.42.9 (28-Dec-2013)
      Filesystem label=myLabel1
      # blkid /dev/sdb5
      /dev/sdb5: LABEL="myLabel1" UUID="3bd32005-bea7-42bb-969e-3b37de466f3e" TYPE="ext4"

      卷标虽然重复了,但是UUID是不一样的。

      # mke2fs -t ext4 -L myLabel1 /dev/sdb6
      mke2fs 1.42.9 (28-Dec-2013)
      Filesystem label=myLabel1
      # blkid /dev/sdb5
      /dev/sdb5: LABEL="myLabel1" UUID="3bd32005-bea7-42bb-969e-3b37de466f3e" TYPE="ext4"
      [root@localhost ~]# blkid /dev/sdb6
      /dev/sdb6: LABEL="myLabel1" UUID="7e71e3a9-5075-4b07-97fc-af7eefae27fc" TYPE="ext4"

      更改ext2,ext3,ext4的卷标:e2label

      • 查看分区的卷标:e2label device
      • 修改分区的卷标:e2label device LABEL
    • 创建有日志功能的文件系统:-j

      mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3

    • 每多少个字节创建一个inode:-i

      指明inode与字节的比率。

    • 指定inode的数量:-N 数字

      和用-i指定比率相比,直接指定inode的数量可能更好。

    • 指定inode的size:-I(大i)

      The inode-size value must be a power of 2 larger or equal to 128.

    • enable文件系统某个特性:-O feature

      或者disable文件系统某个特性:-O -feature后者-O ^feature

      feature一览:用 man 5 ext4查看

      mke2fs -O has_journal device:启动日志功能

    • 指定预留空间(super block)的大小的百分比:-m 数字(不需要加%,2就是2%)

      默认是预留5%,但是如果是100G的分区,5G就太大了。

2,检测及修复文件系统的工具

因进程意外终止或系统崩溃(断电)的原因,导致系统非正常终止时,可能会造成文件损坏;此时,应该检查并修复文件系统。建议:离线进行

  • ext文件系统系列:e2fsck

    • -y:对所有问题自动回答yes
    • -f:即使文件系统处于clean状态,也要强制进程检查。
    # e2fsck -f /dev/sdb6
    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
    L1: 11/6400 files (0.0% non-contiguous), 2155/25600 blocks
  • 所有文件系统:fsck

    # fsck.
    fsck.btrfs fsck.ext2 fsck.ext4 fsck.minix fsck.vfat
    fsck.cramfs fsck.ext3 fsck.fat fsck.msdos fsck.xfs
    • -t:指明文件系统类型

    • -a:无须交互自动修复所有错误(不建议使用)

      若有个2G的文件,写入了1.9G后,系统断电。如果不修复还能保持1.9G,如果用-a修复,则把这1.9G也删除了。

    • -r:交互式修复

3,查看ext系列文件系统的属性和组的详细信息的工具:​dumpe2fs

  • 只查看属性:-h

    # dumpe2fs -h /dev/sdb6
    dumpe2fs 1.42.9 (28-Dec-2013)
    Filesystem volume name: L1
    Last mounted on: <not available>
    Filesystem UUID: c48a5e5a-2ebf-42e6-a191-87496b19e281
    Filesystem magic number: 0xEF53
    Filesystem revision #: 1 (dynamic)
    Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super
    Filesystem flags: signed_directory_hash
    Default mount options: user_xattr acl
    Filesystem state: clean
    Errors behavior: Continue
    Filesystem OS type: Linux
    Inode count: 6400
    Block count: 25600
    Reserved block count: 1536
    Free blocks: 23445
    Free inodes: 6389
    First block: 1
    Block size: 1024
    Fragment size: 1024
    Reserved GDT blocks: 99
    Blocks per group: 8192
    Fragments per group: 8192
    Inodes per group: 1600
    Inode blocks per group: 200
    Filesystem created: Fri Dec 27 21:24:40 2019
    Last mount time: n/a
    Last write time: Fri Dec 27 22:19:54 2019
    Mount count: 0
    Maximum mount count: -1
    Last checked: Fri Dec 27 21:24:40 2019
    Check interval: 0 (<none>)
    Reserved blocks uid: 0 (user root)
    Reserved blocks gid: 0 (group root)
    First inode: 11
    Inode size: 128
    Journal inode: 8
    Default directory hash: half_md4
    Directory Hash Seed: ea467d23-e9b0-43ca-b762-f6b70ea21180
    Journal backup: inode blocks
    Journal features: (none)
    Journal size: 1029k
    Journal length: 1024
    Journal sequence: 0x00000001
    Journal start: 0
  • 组的详细信息:不加选项

    组的详细信息包括:

    • super block存储在哪个块
    • Reserved GDT blocks存储在哪些块
    • inode的位图索引(Inode bitmap)存储在哪些块
    • block的位图索引(Block bitmap)存储在哪些块
    • 组里的哪些块是存储元数据(Inode table)的
    • 多少个block是可以使用的;多少个inode是可以使用的;组里有几个目录。
    • 可以使用的block的编号是多少;可以使用的inode的编号是多少。
    # dumpe2fs /dev/sdb6
    此处省略了head的信息。
    Group 0: (Blocks 1-8192)
    Primary superblock at 1, Group descriptors at 2-2
    Reserved GDT blocks at 3-101
    Block bitmap at 102 (+101), Inode bitmap at 103 (+102)
    Inode table at 104-303 (+103)
    7875 free blocks, 1589 free inodes, 2 directories
    Free blocks: 318-8192
    Free inodes: 12-1600
    Group 1: (Blocks 8193-16384)
    Backup superblock at 8193, Group descriptors at 8194-8194
    Reserved GDT blocks at 8195-8293
    Block bitmap at 8294 (+101), Inode bitmap at 8295 (+102)
    Inode table at 8296-8495 (+103)
    7889 free blocks, 1600 free inodes, 0 directories
    Free blocks: 8496-16384
    Free inodes: 1601-3200
    Group 2: (Blocks 16385-24576)
    Block bitmap at 16385 (+0), Inode bitmap at 16386 (+1)
    Inode table at 16387-16586 (+2)
    6961 free blocks, 1600 free inodes, 0 directories
    Free blocks: 17616-24576
    Free inodes: 3201-4800
    Group 3: (Blocks 24577-25599)
    Backup superblock at 24577, Group descriptors at 24578-24578
    Reserved GDT blocks at 24579-24677
    Block bitmap at 24678 (+101), Inode bitmap at 24679 (+102)
    Inode table at 24680-24879 (+103)
    720 free blocks, 1600 free inodes, 0 directories
    Free blocks: 24880-25599
    Free inodes: 4801-6400

4,调整ext系列文件系统的特性:tune2fs

查看/调整ext2/ext3/ext4文件系统的可调整属性,不是所有属性,比如block的大小就不能调整。

  • 查看super block里的信息/查看文件系统的layout信息:-l

    # tune2fs -l /dev/sdb5
    tune2fs 1.42.9 (28-Dec-2013)
    Filesystem volume name: myLabel1(卷标)
    Last mounted on: <not available>(上次挂载,目前还没有挂载过)
    Filesystem UUID: 3bd32005-bea7-42bb-969e-3b37de466f3e(UUID)
    Filesystem magic number: 0xEF53(魔数,标识文件系统的)
    Filesystem revision #: 1 (dynamic)
    Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize(文件系统启用了哪些feature)
    Filesystem flags: signed_directory_hash
    Default mount options: user_xattr acl(文件系统的挂载选项)
    Filesystem state: clean(文件系统状态。clean:文件系统一致,没有损坏的文件。如果有损坏的文件就是dirty状态。)
    Errors behavior: Continue(错误时的处理,continue就是不管错误,继续处理)
    Filesystem OS type: Linux
    Inode count: 12824(inode的数量)
    Block count: 51200(block的数量)
    Reserved block count: 2560(预留给super block的数量)
    Free blocks: 44440(空闲的block数量)
    Free inodes: 12813(空闲的inode数量)
    First block: 1(第一个块的编号)
    Block size: 1024(块的大小,单位是byte)
    Fragment size: 1024
    Group descriptor size: 64
    Reserved GDT blocks: 256(预留给GDT的block数量)
    Blocks per group: 8192(每组里block的数量)
    Fragments per group: 8192
    Inodes per group: 1832(每组里inode的数量)
    Inode blocks per group: 229(每组有多少个块,存放inode)
    Flex block group size: 16
    Filesystem created: Fri Dec 27 16:48:53 2019
    Last mount time: n/a
    Last write time: Fri Dec 27 16:48:53 2019
    Mount count: 0
    Maximum mount count: -1
    Last checked: Fri Dec 27 16:48:53 2019
    Check interval: 0 (<none>)
    Lifetime writes: 4445 kB
    Reserved blocks uid: 0 (user root)
    Reserved blocks gid: 0 (group root)
    First inode: 11
    Inode size: 128(inode的大小)
    Journal inode: 8
    Default directory hash: half_md4
    Directory Hash Seed: 05ca7d6b-d6b6-4e15-854f-e9d49f0f3f61
    Journal backup: inode blocks
  • 把ext2升级到ext3:-j

    无损升级,不会损坏文件系统里的文件

    # blkid /dev/sdb6
    /dev/sdb6: UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" TYPE="ext2"
    # tune2fs -j /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    Creating journal inode: done
    # blkid /dev/sdb6
    /dev/sdb6: UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
  • 无损修改卷标:-L LABEL

    # tune2fs -L L1 /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    [root@localhost ~]# blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
  • 无损修改给super block预留的空间的百分比:-m 数字

    # tune2fs -m 6 /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    Setting reserved blocks percentage to 6% (1536 blocks)
  • enable文件系统某个特性:-O feature

    或者disable文件系统某个特性:-O -feature后者-O ^feature

    disable日志功能后,文件系统类型从原来的ext3变成了ext2;enable后又从ext2变成了ext3

    feature一览:用 man 5 ext4查看

    # tune2fs -O ^has_journal /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    # blkid /dev/sdb6
    disable日志功能后,文件系统类型从ext3变成了ext2
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" TYPE="ext2"
    # tune2fs -l /dev/sdb6
    feature里没有了has_journal
    Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
    # tune2fs -O has_journal /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    Creating journal inode: done
    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
    # tune2fs -l /dev/sdb6
    Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super
  • enable文件系统的挂载选项:-o mount_options

    或者disable文件系统的挂载选项:-o -mount_options后者-o ^mount_options

    具体的mount options可以在man tune2fs的-o选项出查看到。

    例如,disable acl(access control list,文件的特殊权限控制功能)。

    在centos7创建文件系统时,acl是默认启动的。

    只有在文件系统这里,启用了acl功能,getfacl,setfacl命令才有作用。

5,根据卷标(LABEL),UUID来定位设备:blkid

  • 查看设备的卷标和UUID

    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
  • 根据卷标定位设备:-L

    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
    # blkid -L L1
    /dev/sdb6
  • 根据UUID定位设备:-U

    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2"
    # blkid -U c48a5e5a-2ebf-42e6-a191-87496b19e281
    /dev/sdb6

swap文件系统

linux上的swap文件系统必须在独立的分区,且system id必须是82

window上的swap文件系统,可以和操作系统在一个分区,比如都在c盘。

1,创建swap文件系统:mkswap

  • 不指定卷标和UUID。若原来的/dev/sdb6上有卷标和UUID,执行mkswap /dev/sdb6后,/dev/sdb6的卷标和UUID都被删除,且生成一个新的UUID。

    # mkswap /dev/sdb6
    mkswap: /dev/sdb6: warning: wiping old ext3 signature.
    Setting up swapspace version 1, size = 25596 KiB
    no label, UUID=c9f3ecb5-d82e-461a-9701-23a364792800

    注意:若/dev/sdb6原来的system id不是82,则执行mkswap /dev/sdb6后,system id是不会自动变成82的,还需要手动用fdisk-t选项,修改system id。

  • 指定卷标:-L LABEL

    # blkid -L L1
    [root@localhost ~]# mkswap -L L1 /dev/sdb6
    mkswap: /dev/sdb6: warning: wiping old swap signature.
    Setting up swapspace version 1, size = 25596 KiB
    LABEL=L1, UUID=3e848623-b82a-4a4f-9c58-53b868260208
    [root@localhost ~]# blkid -L L1
    /dev/sdb6
    [root@localhost ~]# blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="3e848623-b82a-4a4f-9c58-53b868260208" TYPE="swap"
  • 指定UUID:-U UUID

vfat文件系统

windows无法识别Linux的文件系统,因此,存储设备需要两种系统之间交叉使用时,应该使用windows和linux都支持的文件系统:fat32(vfat)。

创建vfat文件系统:mkfs.vfat device

# mkfs.vfat /dev/sdb5
mkfs.fat 3.0.20 (12 Jun 2013)

# c/c++ 学习互助QQ群:877684253
![](https://img2018.cnblogs.com/blog/1414315/201811/1414315-20181106214320230-961379709.jpg)
# 本人微信:xiaoshitou5854

linux 文件系统管理三部曲之二:创建文件系统的更多相关文章

  1. linux 文件系统管理三部曲之三:挂载文件系统

    linux 文件系统管理三部曲之一:磁盘分区 linux 文件系统管理三部曲之二:创建文件系统 上面说明了,硬盘的划分和格式化,那么怎么使用,还没说,这里说一下,怎么使用创建好的文件系统. 使用文件系 ...

  2. linux 文件系统管理三部曲之一:磁盘分区

    硬盘和主板的连接的地方:叫接口,硬盘的接口类型: iops:i/o per second:每秒的读写次数. IDE(ata):并口(数据并行传输),理论最大传输 133MB/S:iops:100次 S ...

  3. Linux文件系统管理命令(第二版)

    Linux文件系统管理命令 常用命令 1.df命令 查看分区使用情况 常用选项 -h 比较人性化 -m 以兆字节显示分区使用情况 显示信息: Mounted on:挂载点 Filesystem:对应的 ...

  4. Linux 文件系统管理

    Linux 文件系统管理 课程大纲  文件系统构成及命令  硬盘分区及管理  磁盘配额  备份与恢复   文件系统构成 /usr/bin ./bin:存放所有用户可以执行的命令 /usr/s ...

  5. Linux文件系统管理 常见命令df、du、fsck、dumpe2fs

    概述 Linux文件系统管理 常见命令df.du.fsck.dumpe2fs. 文件系统查看命令:df 通过 df 命令可以査看已经挂载的文件系统的信息包括设备文件名.文件系统总大小.已经使用的大小. ...

  6. Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令

    通过前面两篇博客,我们介绍了Linux系统的权限管理.Linux权限管理之ACL权限 介绍了通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,这在Linux只能对于一个文件只能有所有者权限 ...

  7. 操作系统-文件系统(5)Linux文件系统管理

    主流分区机制有MBR和GPT两种 MBR分区:第一个扇区最重要,里面有:引导代码(Bootstrap code area)及分区表(partition table), 其中Bootstrap code ...

  8. Linux文件系统管理

    第九讲 文件系统管理   基础知识点:   硬盘的构成:主要由盘片.机械手臂.磁头与主轴马达所组成,实际的数据都是写在具有磁性物质上的盘片,通过主轴马达让盘片转动,机械手臂可伸展让磁头在盘片上读取数据 ...

  9. linux文件系统管理的工作原理

    一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16 ...

随机推荐

  1. lua学习之基础概念篇

    基础概念 程序块 (chunk) 定义 lua 中的每一个源代码文件或在交互模式(Cmd)中输入的一行代码都称之为程序块 一个程序块就是一连串语句或者命令 lua 中连续的语句不需要分隔符,但为了可读 ...

  2. DRF框架的安装与使用

    目录 DRF框架的安装与配置 基于restful接口规范的接口设计 DRF框架的安装与配置 """ 1)安装 >: pip install djangorestfr ...

  3. Go语言实现:【剑指offer】替换空格

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数,将一个字符串中的每个空格替换成"%20". 例如,当字符串为We Are Happy.则经过替换之后的字符串 ...

  4. 【Codeforces #312 div2 A】Lala Land and Apple Trees

    # [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...

  5. Coroutine 终止协程和异常处理

    终止协程和异常处理 协程中未处理的异常会向上冒泡,传给 next 函数或 send 方法的调用方(即触发协程的对象) 终止协程的一种方式:发送某个哨符值,让协程退出.内置的 None 和 Ellips ...

  6. 20200115--python学习第九天

    今日内容 三元运算 函数 考试题 1.三元运算(又称三目运算) v= 前面 if 条件 else 后面 if 条件: v = '前面' else: v ='后面' 示例:让用户输入值,如果值是整数,则 ...

  7. ORB-SLAM2 论文&代码学习 ——Tracking 线程

    本文要点: ORB-SLAM2 Tracking 线程 论文内容介绍 ORB-SLAM2 Tracking 线程 代码结构介绍 写在前面 上一篇文章中我们已经对 ORB-SLAM2 系统有了一个概览性 ...

  8. C# 获取鼠标在屏幕上的位置

    获取鼠标位置及鼠标单击了哪个按键.private void GetMousePoint() {     Point ms = Control.MousePosition;     this.label ...

  9. 正则表达式验证IP地址(绝对正确)

    正则验证合法_有效的IP地址(ipv4/ipv6) 不墨迹直接上代码: 正则表达式: /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[ ...

  10. MySql优化之mycat

    1. 解压mycat,不要放在有中文目录的地方  下载地址:http://dl.mycat.io/1.6-RELEASE/2 .修改mycat解压目录下的conf文件夹中server.xml文件,配置 ...