练习 20:文件系统:修改和创建文件系统,tune2fsmkfs

    • - 一种组织数据的方式,通过提供存储,检索和更新数据的过程,以及管理包含它的设备上的可用空间,数据预期在终止后保留。
    • Inode - 索引节点是一种结构,存储文件系统对象(文件,目录等)的所有信息,除数据内容和文件名之外。
    • 块 - 可以分配的最小块磁盘空间。它通常默认为 4096 字节,或 4 千字节。
    • 日志 - 一种结构,允许文件系统跟踪什么时候写入了什么。这样可以快速了解在断电或类似问题时,未正确写入的内容。

    接下来,让我给大家简要介绍文件系统的工作原理。为了按名称访问文件,Linux 内核将:

    • 在包含该文件的目录中查找文件名。
    • 获取文件 Inode 号。
    • 通过 Inode 区域中的数字查找 Inode。
    • 读取此 Inode 的数据块的位置。
    • 使用这个位置在数据区域中从这个块读取文件。

    现在,每个文件系统都有很多与之相关的选项。这些选项可以通过tune2fs程序查看和更改。这是一个带注解的tune2fs -l /dev/sda8的输出:

    很可怕,是嘛?实际上你会发现,这个描述中只有几个参数实际上是有用的,它们是:

    • 保留块数量。
    • 最大挂载数。
    • 检查间隔。
    • mkfs.ext3 - 创建一个ext3文件系统。如果在具有现有文件系统的设备上执行此命令,则该文件系统将被销毁,因此请小心。
    • mkfs.ext4 - 创建一个ext4文件系统。这其实是相同的程序,尝试sudo find /sbin -samefile sbin/mkfs.ext3
    • tune2fs - 打印并更改文件系统参数。

    现在,你将学习如何创建新的文件系统并修改其参数。

    1. 1: sudo -s
    2. 2: umount /tmp
    3. 3: blkid | grep /dev/sda8
    4. 4: mkfs.ext3 /dev/sda8
    5. 5: blkid | grep /dev/sda8
    6. 6: blkid | grep /dev/sda8 >> /etc/fstab
    7. 7: vim /etc/fstab

    现在你必须将/tmp那一行的 UUID。

    替换为你添加到文件末尾的那个:

    1. /dev/sda8: UUID="53eed507-18e8-4f71-9003-bcea8c4fd2dd" TYPE="ext3" SEC_TYPE="ext2"
    1. user1@vm1:~$ sudo -s
    2. root@vm1:/home/user1# umount /tmp
    3. root@vm1:/home/user1# blkid | grep /dev/sda8
    4. /dev/sda8: UUID="869db6b4-aea0-4a25-8bd2-f0b53dd7a88e" TYPE="ext3" SEC_TYPE="ext2"
    5. root@vm1:/home/user1# mkfs.ext3 /dev/sda8
    6. mke2fs 1.41.12 (17-May-2010)
    7. Filesystem label=
    8. OS type: Linux
    9. Block size=4096 (log=2)
    10. Fragment size=4096 (log=2)
    11. Stride=0 blocks, Stripe width=0 blocks
    12. 62464 inodes, 249856 blocks
    13. 12492 blocks (5.00%) reserved for the super user
    14. First data block=0
    15. Maximum filesystem blocks=255852544
    16. 8 block groups
    17. 32768 blocks per group, 32768 fragments per group
    18. 7808 inodes per group
    19. Superblock backups stored on blocks:
    20. 32768, 98304, 163840, 229376
    21. Writing inode tables: done
    22. Creating journal (4096 blocks): done
    23. This filesystem will be automatically checked every 28 mounts or
    24. 180 days, whichever comes first. Use tune2fs -c or -i to override.
    25. root@vm1:/home/user1# blkid | grep /dev/sda8
    26. /dev/sda8: UUID="53eed507-18e8-4f71-9003-bcea8c4fd2dd" TYPE="ext3" SEC_TYPE="ext2"
    27. root@vm1:/home/user1# vim /etc/fstab
    28. # that works even if disks are added and removed. See fstab(5).
    29. #
    30. # <file system> <mount point> <type> <options> <dump> <pass>
    31. proc /proc proc defaults 0 0
    32. # / was on /dev/vda5 during installation
    33. UUID=128559db-a2e0-4983-91ad-d4f43f27da49 / ext3 errors=re
    34. # /home was on /dev/vda10 during installation
    35. UUID=32852d29-ddee-4a8d-9b1e-f46569a6b897 /home ext3 defaults
    36. # /tmp was on /dev/sda8 during installation
    37. UUID=869db6b4-aea0-4a25-8bd2-f0b53dd7a88e /tmp ext3 defaults
    38. # /usr was on /dev/vda9 during installation
    39. UUID=0221be16-496b-4277-b131-2371ce097b44 /usr ext3 defaults
    40. # /var was on /dev/vda8 during installation
    41. UUID=2db00f94-3605-4229-8813-0ee23ad8634e /var ext3 defaults
    42. # swap was on /dev/vda6 during installation
    43. UUID=3a936af2-2c04-466d-b98d-09eacc5d104c none swap sw
    44. /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
    45. /dev/sda8: UUID="53eed507-18e8-4f71-9003-bcea8c4fd2dd" TYPE="ext3" SEC_TYPE
    46. 22,1 Bot
    47. #
    48. # <file system> <mount point> <type> <options> <dump> <pass>
    49. proc /proc proc defaults 0 0
    50. # / was on /dev/vda5 during installation
    51. UUID=128559db-a2e0-4983-91ad-d4f43f27da49 / ext3 errors=re
    52. # /home was on /dev/vda10 during installation
    53. UUID=32852d29-ddee-4a8d-9b1e-f46569a6b897 /home ext3 defaults
    54. # /tmp was on /dev/sda8 during installation
    55. UUID=53eed507-18e8-4f71-9003-bcea8c4fd2dd /tmp ext3 defaults
    56. # /usr was on /dev/vda9 during installation
    57. UUID=0221be16-496b-4277-b131-2371ce097b44 /usr ext3 defaults
    58. # /var was on /dev/vda8 during installation
    59. UUID=2db00f94-3605-4229-8813-0ee23ad8634e /var ext3 defaults
    60. # swap was on /dev/vda6 during installation
    61. UUID=3a936af2-2c04-466d-b98d-09eacc5d104c none swap sw
    62. /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
    63. "/etc/fstab" 22L, 1277C written
    64. root@vm1:/home/user1# mount /tmp
    65. root@vm1:/home/user1# tune2fs -c 2 /dev/sda8
    66. tune2fs 1.41.12 (17-May-2010)
    67. Setting maximal mount count to 2
    68. root@vm1:/home/user1# unmount /tmp
    69. fsck from util-linux-ng 2.17.2
    70. e2fsck 1.41.12 (17-May-2010)
    71. /dev/sda8: clean, 11/62464 files, 8337/249856 blocks (check in 2 mounts)
    72. root@vm1:/home/user1# for ((i=1;i<=4;i++)); do mount /tmp ; umount /tmp ; cat /var/log/messages | tail -n 4 ; done
    73. Jul 2 12:11:58 vm1 kernel: [21096.363787] kjournald starting. Commit interval 5 seconds
    74. Jul 2 12:11:58 vm1 kernel: [21096.364167] EXT3 FS on sda8, internal journal
    75. Jul 2 12:11:58 vm1 kernel: [21096.364171] EXT3-fs: mounted filesystem with ordered data mode.
    76. Jul 2 12:11:58 vm1 kernel: [21096.364171] EXT3-fs: mounted filesystem with ordered data mode.
    77. Jul 2 12:11:58 vm1 kernel: [21096.381372] kjournald starting. Commit interval 5 seconds
    78. Jul 2 12:11:58 vm1 kernel: [21096.381539] EXT3 FS on sda8, internal journal
    79. Jul 2 12:11:58 vm1 kernel: [21096.381542] EXT3-fs: mounted filesystem with ordered data mode.
    80. Jul 2 12:11:58 vm1 kernel: [21096.396152] kjournald starting. Commit interval 5 seconds
    81. Jul 2 12:11:58 vm1 kernel: [21096.396158] EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
    82. Jul 2 12:11:58 vm1 kernel: [21096.396344] EXT3 FS on sda8, internal journal
    83. Jul 2 12:11:58 vm1 kernel: [21096.396348] EXT3-fs: mounted filesystem with ordered data mode.
    84. Jul 2 12:11:58 vm1 kernel: [21096.412434] kjournald starting. Commit interval 5 seconds
    85. Jul 2 12:11:58 vm1 kernel: [21096.412441] EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
    86. Jul 2 12:11:58 vm1 kernel: [21096.412610] EXT3 FS on sda8, internal journal
    87. Jul 2 12:11:58 vm1 kernel: [21096.412612] EXT3-fs: mounted filesystem with ordered data mode.
    88. root@vm1:/home/user1# fsck /tmp
    89. fsck from util-linux-ng 2.17.2
    90. e2fsck 1.41.12 (17-May-2010)
    91. /dev/sda8 has been mounted 4 times without being checked, check forced.
    92. Pass 1: Checking inodes, blocks, and sizes
    93. Pass 2: Checking directory structure
    94. Pass 3: Checking directory connectivity
    95. Pass 4: Checking reference counts
    96. Pass 5: Checking group summary information
    97. /dev/sda8: 11/62464 files (0.0% non-contiguous), 8337/249856 blocks
    98. root@vm1:/home/user1# mount -a
    99. root@vm1:/home/user1#
    1. 执行 root(超级用户)shell。
    2. 解除挂载/tmp,从/etc/fstab读取它的位置 。
    3. 打印出/dev/sda8的UUID,/dev/sda8是挂载在/tmp上的文件系统。
    4. /dev/sda8上创建一个新的文件系统。
    5. 再次打印出/dev/sda8的 UUID,注意如何变化,因为你创建了一个新的文件系统。
    6. 将此 UUID 附加到/etc/fstab
    7. 打开/etc/fstab进行编辑。
    8. 挂载新创建的文件系统。这实际上是一个检查,是否你已经正确替换了 UUID,如果不是会有一个错误消息。
    9. 设置每两次挂载检查/dev/sda8
    10. 解除挂载/dev/sda8
    11. 检查/dev/sda8
    12. 挂载,接触挂载/dev/sda8, 并连续四次向你展示/var/log/messages/的最后4 行。请注意,从第三次开始,挂载系统通知你 需要运行e2fsck。如果你重新启动系统,它将为你运行e2fsck
    13. 检查/dev/sda8fsck确定文件系统类型并自动调用e2fsck
    14. 挂载所有文件系统。如果没有错误,你已经完成了这个练习。
    • 阅读man mkfsman mkfs.ext3man tune2fs
    • 阅读页面顶部的列表,并为你的所有文件系统读取幻数。
    • 手动计算文件系统的大小,使用在tune2fs -l列表的块描述中提供的公式。
    • 阅读这个幻灯片,并完成它展示的东西:http://mcgrewsecurity.com/training/extx.pdf