8.5 mkfs:创建Linux文件系统

    mkfs命令用于在指定的设备(或硬盘分区等)上创建格式化并创建文件系统,fdisk和parted等分区工具相当于建房的人,把房子(硬盘),分成几居室(分区),mkfs就相当于对不同的居室装修(创建文件系统)了,只有装修好的房子(有文件系统)才能入住,分区也是一样,只有格式化创建文件系统(存取数据的机制)后,才能用来存取数据。
 
 
mkfs [选项] [设备名]
 
 
-t    指定要创建的文件系统类型
-c    创建文件系统时检查磁盘坏块
-v    显示详细信息
 
 
    mkfs只是一个前端命令,它通过-t参数指定文件系统类型后会调用相应的命令mkfs.fstype。因此可以直接使用mkfs.ext4这个命令创建ext4文件系统。
 
  1. [root@cs6 ~]# ls /sbin/mkfs*
  2. /sbin/mkfs /sbin/mkfs.ext2 /sbin/mkfs.ext4 /sbin/mkfs.xfs
  3. /sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.ext4dev

通过mkfs 命令创建文件系统(-t参数)的例子

  1. [root@cs6 ~]# mkfs -t ext4 -v /dev/sdb
  2. mke2fs 1.41.12 (17-May-2010)
  3. /dev/sdb is entire device, not just one partition!
  4. Proceed anyway? (y,n) y
  5. fs_types for mke2fs.conf resolution: 'ext4', 'default'
  6. Filesystem label=
  7. OS type: Linux
  8. Block size=4096 (log=2)
  9. Fragment size=4096 (log=2)
  10. Stride=0 blocks, Stripe width=0 blocks
  11. 65536 inodes, 262144 blocks
  12. 13107 blocks (5.00%) reserved for the super user
  13. First data block=0
  14. Maximum filesystem blocks=268435456
  15. 8 block groups
  16. 32768 blocks per group, 32768 fragments per group
  17. 8192 inodes per group
  18. Superblock backups stored on blocks:
  19. 32768, 98304, 163840, 229376
  20.  
  21. Writing inode tables: done
  22. Creating journal (8192 blocks): done
  23. Writing superblocks and filesystem accounting information: done
  24.  
  25. This filesystem will be automatically checked every 39 mounts or
  26. 180 days, whichever comes first. Use tune2fs -c or -i to override.

通过mkfs.ext4创建文件系统

  1. [root@cs6 ~]# mkfs.ext4 /dev/sdb
  2. mke2fs 1.41.12 (17-May-2010)
  3. /dev/sdb is entire device, not just one partition!
  4. Proceed anyway? (y,n) y
  5. Filesystem label=
  6. OS type: Linux
  7. Block size=4096 (log=2)
  8. ....
  9. Creating journal (8192 blocks): done
  10. Writing superblocks and filesystem accounting information: done
  11.  
  12. This filesystem will be automatically checked every 25 mounts or
  13. 180 days, whichever comes first. Use tune2fs -c or -i to override.

8.6 dumpe2fs:导出ext2/ext3/ext4文件系统信息

dumpe2fs命令用于导出ext2/ext3/ext4文件系统内部的相关信息,例如:文件系统的组成包含超级快、块组、inode、block等信息。
 
dumpe2fs命令的参数选项及说明
 
-b    打印文件系统中预留的块信息
-h    仅显示超级块信息
-i    从指定的文件系统映像文件中读取文件的系统信息
-x    以16进制格式打印信息块成员

查看系统的inode信息

  1. [root@cs6 ~]# dumpe2fs /dev/sda1|egrep -i "inode size|inode count"
  2. dumpe2fs 1.41.12 (17-May-2010)
  3. Inode count: 128016 #<==单位;个。
  4. Inode size: 128 #<== /boot 分区默认128字节。
  5.  
  6. [root@cs6 ~]# dumpe2fs /dev/mapper/vg_cs6-lv_root |egrep -i "inode size|inode count"
  7. dumpe2fs 1.41.12 (17-May-2010)
  8. Inode count: 1738080
  9. Inode size: 256 #<==普通分区默认256字节。
  10.  
  11. [root@cs6 ~]# df -i
  12. Filesystem Inodes IUsed IFree IUse% Mounted on
  13. /dev/mapper/vg_cs6-lv_root
  14. 1738080 23534 1714546 2% /
  15. tmpfs 238145 1 238144 1% /dev/shm
  16. /dev/sda1 128016 38 127978 1% /boot
  17.  
  18. [root@cs6 ~]# dumpe2fs /dev/sda1|egrep -i "block size|block count"
  19. dumpe2fs 1.41.12 (17-May-2010)
  20. Block count: 512000 #<==分区的block总量。
  21. Reserved block count: 25600
  22. Block size: 1024 #<==/boot分区默认1024字节即1K
  23. [root@cs6 ~]# dumpe2fs /dev/mapper/vg_cs6-lv_root |egrep -i "block size|block count"
  24. dumpe2fs 1.41.12 (17-May-2010)
  25. Block count: 6948864
  26. Reserved block count: 347443
  27. Block size: 4096 #<==普通分区4K=4096字节。

8.7 resize2fs:调整ext2/ext3/ext4文件系统大小

    resize2fs命令用于扩容或收缩未挂载的ext2/ext3/ext4文件系统。在Linux2.6或更高
版本的内核中,该命令还支持在线扩容已经挂载的文件系统,该命令常用来针对LVM扩容
后的分区使用。
 
-p    打印完成任务的进度条
-f    强制执行操作
 

动态修改分区大小的例子

    出现这种情况一般是当初对系统分区的时候没有规划好,现在想要重新调整分区的大小。假设是要对/dev/sdb上的分区进行操作,将/mnt/data1扩容。
  1. [root@cs6 ~]# df -h
  2. Filesystem Size Used Avail Use% Mounted on
  3. /dev/mapper/vg_cs6-lv_root
  4. 26G 834M 24G 4% /
  5. tmpfs 931M 0 931M 0% /dev/shm
  6. /dev/sda1 477M 28M 424M 7% /boot
  7. /dev/sdb1 194M 1.8M 182M 1% /mnt/data1
  8. /dev/sdb2 194M 1.8M 182M 1% /mnt/data2
  9. [root@cs6 ~]# touch /mnt/data1/{1..5}.html
  10. [root@cs6 ~]# touch /mnt/data2/{1..5}.html
提示:/dev/sdb是一块1GB的磁盘,现在分了两个主分区sdb1、sdb2,分别是200MB,剩余800MB未分区。现在需要把sdb2分区和sdb1分区合并,以实现对sdb1的扩容,注意,此种情况不要在生产场景操作,仅作为演示用,生产场景一般是事先规划好不会出现扩容需求,非I/O密集应用可以采用LVM实现规范动态扩容。
 
以下是扩容实战步骤。
1)记录分区的柱面起始信息:
 
  1. [root@cs6 ~]# fdisk -l /dev/sdb
  2.  
  3. Disk /dev/sdb: 1073 MB, 1073741824 bytes
  4. 255 heads, 63 sectors/track, 130 cylinders
  5. Units = cylinders of 16065 * 512 = 8225280 bytes
  6. Sector size (logical/physical): 512 bytes / 512 bytes
  7. I/O size (minimum/optimal): 512 bytes / 512 bytes
  8. Disk identifier: 0x1bc7d413
  9.  
  10. Device Boot Start End Blocks Id System
  11. /dev/sdb1 1 26 208813+ 83 Linux
  12. /dev/sdb2 27 52 208845 83 Linux
2)卸载分区:
 
  1. [root@cs6 ~]# umount /mnt/data1
  2. [root@cs6 ~]# umount /mnt/data2
  3.  
  4. [root@cs6 ~]# df -h
  5. Filesystem Size Used Avail Use% Mounted on
  6. /dev/mapper/vg_cs6-lv_root
  7. 26G 834M 24G 4% /
  8. tmpfs 931M 0 931M 0% /dev/shm
  9. /dev/sda1 477M 28M 424M 7% /boot
3)重新分区:
  1. [root@cs6 ~]# fdisk /dev/sdb
  2.  
  3. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
  4. switch off the mode (command 'c') and change display units to
  5. sectors (command 'u').
  6.  
  7. Command (m for help): d
  8. Partition number (1-4): 1
  9.  
  10. Command (m for help): d
  11. Selected partition 2
  12.  
  13. Command (m for help): n
  14. Command action
  15. e extended
  16. p primary partition (1-4)
  17. p
  18. Partition number (1-4): 1
  19. First cylinder (1-130, default 1):
  20. Using default value 1
  21. Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): 52
  22.  
  23. Command (m for help): p
  24.  
  25. Disk /dev/sdb: 1073 MB, 1073741824 bytes
  26. 255 heads, 63 sectors/track, 130 cylinders
  27. Units = cylinders of 16065 * 512 = 8225280 bytes
  28. Sector size (logical/physical): 512 bytes / 512 bytes
  29. I/O size (minimum/optimal): 512 bytes / 512 bytes
  30. Disk identifier: 0x1bc7d413
  31.  
  32. Device Boot Start End Blocks Id System
  33. /dev/sdb1 1 52 417658+ 83 Linux
  34.  
  35. Command (m for help): w
  36. The partition table has been altered!
  37.  
  38. Calling ioctl() to re-read partition table.
  39. Syncing disks.
  40. [root@cs6 ~]# partprobe /dev/sdb
  41. [root@cs6 ~]# mount /dev/sdb1 /mnt/data1
  42. [root@cs6 ~]# df -h
  43. Filesystem Size Used Avail Use% Mounted on
  44. /dev/mapper/vg_cs6-lv_root
  45. 26G 834M 24G 4% /
  46. tmpfs 931M 0 931M 0% /dev/shm
  47. /dev/sda1 477M 28M 424M 7% /boot
  48. /dev/sdb1 194M 1.8M 182M 1% /mnt/data1
  49.  
  50. [root@cs6 ~]# ls /mnt/data1
  51. 1.html 2.html 3.html 4.html 5.html lost+found
  52. [root@cs6 ~]# resize2fs /dev/sdb1 #<==在线调整磁盘大小,
  53. resize2fs 1.41.12 (17-May-2010)
  54. Filesystem at /dev/sdb1 is mounted on /mnt/data1; on-line resizing required
  55. old desc_blocks = 1, new_desc_blocks = 2
  56. Performing an on-line resize of /dev/sdb1 to 417656 (1k) blocks.
  57. The filesystem on /dev/sdb1 is now 417656 blocks long.
  58.  
  59. [root@cs6 ~]# df -h
  60. Filesystem Size Used Avail Use% Mounted on
  61. /dev/mapper/vg_cs6-lv_root
  62. 26G 834M 24G 4% /
  63. tmpfs 931M 0 931M 0% /dev/shm
  64. /dev/sda1 477M 28M 424M 7% /boot
  65. /dev/sdb1 392M 2.3M 369M 1% /mnt/data1
  66. [root@cs6 ~]# ls /mnt/data1
  67. 1.html 2.html 3.html 4.html 5.html lost+found

#<==但是数据还是只有sdb1里的了,sdb2的数据丢失了。此种方法不适合生产场景扩容,比较规范方法是通过LVM逻辑卷管理进行扩容,扩容后也需要resize2fs进行最终实现扩容。

8.5-7 mkfs、dumpe2fs、resize2fs的更多相关文章

  1. Linux学习--第九天--du、df、fsck、dumpe2fs、mount、NTFS-3G、fdisk、partprobe、/etc/fstab、free、mkswap、swapon

    分区类型 主分区:最多只能分四个 扩展分区:只能有一个,如果有了扩展分区,主分区只能有三个.扩展分区不能格式化和存储数据,再划分为逻辑分区才能进行相应操作. 逻辑分区:IDE硬盘,linux最多支持5 ...

  2. 文件系统常用命令df、du、fsck、dumpe2fs

    df 查看文件系统 [root@localhost ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda5 16558080 1337676 15220404 9% / de ...

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

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

  4. 一个版本烧录过程中记录:fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img

    关键词:dd.fdisk.mkfs.ext4.make_ext4fs.img2simg.simg2img等等. 一个典型的嵌入式系统是由uboot+kernel+rootfs组成的,其中uboot和k ...

  5. linux:磁盘的分割、检验、格式化与挂载

    新增一颗磁碟: 1.对磁碟进行分割,以建立可用的partition 2.对该分割槽partition进行格式化(format),以建立系统可用的filesystem 3.若要仔细点,可对刚刚建立的fi ...

  6. 磁盘分区、格式化、挂载[转自vbird]

    磁盘分区.格式化.挂载磁盘分区    新增分区    查询分区    删除分区磁盘格式化    mkfs    mke2fs磁盘挂载与卸载    mount    umount 磁盘的分区.格式化.挂 ...

  7. Linux学习之CentOS(十二)------磁盘管理之 磁盘的分区、格式化、挂载(转)

    磁盘分区.格式化.挂载磁盘分区    新增分区    查询分区    删除分区磁盘格式化    mkfs    mke2fs磁盘挂载与卸载    mount    umount 磁盘的分区.格式化.挂 ...

  8. MBR分区操作-增加、扩展、删除

    MBR分区操作-增加.扩展.删除 GPT分区参考 http://www.blogjava.net/haha1903/archive/2011/12/21/366942.html l  fdisk 显示 ...

  9. linux硬盘的分区、格式化、挂载以及LVM

    linux硬盘的分区.格式化.挂载以及LVM   多块硬盘的组合: 硬盘分两种:ide和scsi. ide硬盘: /dev/hda 第一块IDE硬盘 /dev/hdb 第二块IDE硬盘 ... /de ...

随机推荐

  1. 刚转行1年测试新手:学习Python编程经验实战分享

    一.开头说两句 作为一名零基础转行刚一年的测试新手来说,深知自己在技术经验方面落后太多,难免会有急于求成的心态,这也就导致自己在学习新知识时似懂非懂,刚开始学完那会还胸有成竹,一段时间之后却又忘的一干 ...

  2. 【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)

    在参考Azure官方文档进行VM创建时,发现其中没有包含如何设置NSG的内容,以及如何在创建时就添加数据磁盘的代码(设置磁盘为SSD类型).本文的内容以"使用 Java 创建和管理 Azur ...

  3. Day11_56_在SortedSet中使用泛型

    在SortedSet中使用泛型 import java.util.SortedSet; import java.util.TreeSet; //主类 public class GenericTest0 ...

  4. JavaScript设计模式(一):单例模式

    单例模式的定义与特点 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式.例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗 ...

  5. 基于MATLAB的手写公式识别(3)

    基于MATLAB的手写公式识别 图像的膨胀化,获取边缘(思考是否需要做这种处理,初始参考样本相对简单) %膨胀 imdilate(dilate=膨胀/扩大) clc clear A1=imread(' ...

  6. 5403. Find the Kth Smallest Sum of a Matrix With Sorted Rows

    You are given an m * n matrix, mat, and an integer k, which has its rows sorted in non-decreasing or ...

  7. Mybatis的简单增删改查

    刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...

  8. 02- web UI测试与UI Check List

    UI英文是 user interface .所以UI测试就是用户界面测试. Web UI测试 用户界面测试:user interface testing,UI Testing指软件中的可见外观及其与用 ...

  9. composer 遇见问题 整理

    修改镜像源:改为阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 报错:Con ...

  10. Win64 驱动内核编程-19.HOOK-SSDT

    HOOK SSDT 在 WIN64 上 HOOK SSDT 和 UNHOOK SSDT 在原理上跟 WIN32 没什么不同,甚至说 HOOK 和 UNHOOK 在本质上也没有不同,都是在指定的地址上填 ...