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

8.7.1 命令详解

【命令星级】 ★★★★☆

【功能说明】

​ resize2fs命令用于扩容或收集未挂载的ext2/ext3/ext4文件系统。在Linux 2.6或更高版本的内核中,该命令还支持在线扩容已经挂载的文件系统,该命令常用来针对LVM扩容后的分区使用。

【语法格式】

resize2fs [option] [device]
resize2fs [选项] [设备名]

​ **说明:**在resize2fs命令及后面的选项和设备名里,每个元素之间都至少要有一个空格。

【选项说明】

​ 表8-8针对该命令的参数选项进行了说明。

​ 表8-8 resize2fs命令的参数选项及说明

8.7.2 使用范例

​ **范例8-16:**动态修改分区大小的例子。

​ 出现这种情况一般是当初对系统分区的时候没有规划好,限制想要重新调整分区的大小。假设是要对/dev/sdb上的分区进行操作,将/mnt/data1扩容。

[root@centos7 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +200M
Partition 1 of type Linux and of size 200 MiB is setCommand (m for help): n
Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (411648-2097151, default 411648):
Using default value 411648
Last sector, +sectors or +size{K,M,G} (411648-2097151, default 2097151): +200M
Partition 2 of type Linux and of size 200 MiB is setCommand (m for help): pDisk /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: 0xe8dce880Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      411647      204800   83  Linux
/dev/sdb2          411648      821247      204800   83  LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.[root@centos7 ~]# partprobe /dev/sdb[root@centos7 ~]# mkfs.ext4 /dev/sdb1
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
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done [root@centos7 ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
52752 inodes, 210688 blocks
10534 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=216006656
7 block groups
32768 blocks per group, 32768 fragments per group
7536 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done[root@centos7 ~]# ls /mnt
hgfs
[root@centos7 ~]# mkdir /mnt/data1
[root@centos7 ~]# mkdir /mnt/data2
[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk
├─sda1   8:1    0    1G  0 part
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   17G  0 part /
sdb      8:16   0    1G  0 disk
├─sdb1   8:17   0  200M  0 part /mnt/data1
└─sdb2   8:18   0  200M  0 part /mnt/data2
sr0     11:0    1  9.6G  0 rom
[root@centos7 ~]# mount /dev/sdb1 /mnt/data1
[root@centos7 ~]# mount /dev/sdb2 /mnt/data2
[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        17G  2.4G   15G  14% /
tmpfs            98M     0   98M   0% /run/user/0
/dev/sdb1       190M  1.6M  175M   1% /mnt/data1
/dev/sdb2       190M  1.6M  175M   1% /mnt/data2
[root@centos7 ~]# touch /mnt/data1/{1..5}.html
[root@centos7 ~]# touch /mnt/data2/{a..e}.html
[root@centos7 ~]# ls /mnt/data1
1.html  2.html  3.html  4.html  5.html
[root@centos7 ~]# ls /mnt/data2
a.html  b.html  c.html  d.html  e.html

提示:/dev/sdb是一块1GB的磁盘,限制分了两个主分区sdb1、sdb2,分别是200MB,剩余800MB未分区。限制需要把Sdb2分区和Sdb1分区合并,以实现对sdb1的扩容,注意,此种情况不要在生产场景操作,仅作为演示用,生产场景一般是事先规划好不会出现扩容需求,非I/0密集应用可以采用LVM实现规范动态扩容。

​ 以下是扩容实战步骤。

​ 1)记录分区的扇区起始信息:

[root@centos7 ~]# 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: 0xe8dce880Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      411647      204800   83  Linux   #记录开始扇区号2048。
/dev/sdb2          411648      821247      204800   83  Linux   #记录结束扇区号821247。

​ 2)卸载分区:

[root@centos7 ~]# umount /mnt/data1     #卸载/mnt/data1目录。
[root@centos7 ~]# umount /mnt/data2        #卸载/mnt/data2目录。
[root@centos7 ~]# df -h    #确认成功卸载目录。
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        17G  2.4G   15G  14% /
tmpfs            98M     0   98M   0% /run/user/0

​ 3)重新分区:

[root@centos7 ~]# fdisk /dev/sdb    #对/dev/sdb分区。
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): d   #删除分区,重新建立新的分区。
Partition number (1,2, default 2): 1    #删掉第一个分区。
Partition 1 is deletedCommand (m for help): d   #删掉第2个分区。
Selected partition 2
Partition 2 is deletedCommand (m for help): n   #创建新的分区。
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p   #创建主分区。
Partition number (1-4, default 1): 1    #设置分区编号为1。
First sector (2048-2097151, default 2048):  #起始值一定要和原来的sdb1的一样,否则数据会受损。
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 821247 #结束扇区号和sdb2结束的一样,因为有未分区的空间。
Partition 1 of type Linux and of size 400 MiB is setCommand (m for help): pDisk /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: 0xe8dce880Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      821247      409600   83  LinuxCommand (m for help): w    #保存退出。
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.[root@centos7 ~]# partprobe /dev/sdb #使得修改生效。
[root@centos7 ~]# mount /dev/sdb1 /mnt/data1   #重新挂载。
[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        17G  2.4G   15G  14% /
tmpfs            98M     0   98M   0% /run/user/0
/dev/sdb1       190M  1.6M  175M   1% /mnt/data1    #此时分区大小并没有变化。
[root@centos7 ~]# ls /mnt/data1
1.html  2.html  3.html  4.html  5.html  lost+found #内容也还是原来sdb1里的,没有sdb2的。
[root@centos7 ~]# resize2fs /dev/sdb1  #在线调整磁盘大小,本节的主人公命令。
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb1 is mounted on /mnt/data1; on-line resizing required     #提示没有卸载分区。
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/sdb1 is now 409600 blocks long.  #扩容成功。[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        17G  2.4G   15G  14% /
tmpfs            98M     0   98M   0% /run/user/0
/dev/sdb1       384M  2.3M  360M   1% /mnt/data1    #容量变大了。
[root@centos7 ~]# ls /mnt/data1
1.html  2.html  3.html  4.html  5.html  lost+found
#但是数据还是只有sdb1里的了,sdb2的数据丢失了。此种方法不适合生产场景扩容,比较规范方法是通过LVM逻辑卷进行扩容,扩容后也需要reseze2fs进行最终实现扩容。

8.8 fsck:检查并修复Linux文件系统

8.8.1 命令详解

【命令星级】 ★★★★☆

【功能说明】

​ fsck命令用于检查并修复文件系统中的错误,即针对有问题的系统或磁盘进行修复,类似的命令还有e2fsck命令。有关fsck的使用需要特别注意的是:1)文件系统必须是卸载状态,否则可能会出现故障。2)不要对正常的分区使用fsck,在不加参数的情况下,fsck会根据/etc/fstab进行文件系统检查,这相当于fsck -As参数的功能。

【语法格式】

fsck [option] [filesys]
fsck [选项] [文件系统]

说明:

​ 1)在fsck命令及后面的选项和文件系统里,每个元素之间都至少要有一个空格。

​ 2)filesys可以是一个设备名(例如:/dev/sda1、/dev/sda2)、一个挂载点(例如:/、/usr、/home)或一个文件系统的硬盘标签,也可以是UUID指定符(例如:UUID="06760253-ff21-4177-8956-55c96aad8f2c"或LABEL=root)。

【选项说明】

​ 表8-9针对该命令的参数选项进行了说明。

​ 表8-9 fsck命令的参数选项及说明

​ **说明:**必须卸载文件系统后才能对其进行检查,否则可能会出现错误。平时没有必要使用这个命令检查磁盘,只有当系统开机显示磁盘错误时,才需要执行。

8.8.2 使用范例

​ **范例8-17:**系统开机通过fsck自检。

​ Linux在开机过程中系统会自动调用fsck命令对需要自检的磁盘进行自检(如图8-3所示)。

​ 图8-3 Linux开机自检磁盘图示

​ 系统开机之所以会通过fsck自检,就是因为系统开机过程中会优先读取/etc/fstab文件,当最后一列设置为1或2时,这个磁盘在开机时就会调用fsck进行自检, fstab的文件(man fstab看帮助)信息如下:

[root@centos6 ~]# cat /etc/fstab#
# /etc/fstab
# Created by anaconda on Mon Sep 14 02:25:17 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=bbbdb908-d86c-466b-ada6-0dbf80f1419d /                       ext4    defaults        1 1  #根分区最后一列一般为1.
UUID=57f61bfb-4cc4-43a0-a715-b23fe0762ee9 /boot                   ext4    defaults        1 2  #/boot分区一般默认为2,其他默认为0.
UUID=bbf9afb5-260d-4042-b296-91badba278f0 /home                   ext4    defaults        1 2
UUID=8a73de09-5531-4ea6-b90a-745dc71a55c9 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@centos7 ~]# cat /etc/fstab#
# /etc/fstab
# Created by anaconda on Tue Oct 20 16:11:51 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=95c7620f-87ac-46eb-90ef-bbf800bd84ed /                       xfs     defaults        0 0
UUID=06760253-ff21-4177-8956-55c96aad8f2c /boot                   xfs     defaults        0 0
UUID=f8cb776f-c648-43d7-8dd7-89d2134f7130 swap                    swap    defaults        0 0
#CentOS 7分区都是0.

​ **提示:**管理员增加磁盘规划分区,一般最后一列都设置为0,即开机过程中不对磁盘检查,如果真有问题,可以在启动系统后人为进行检查。

​ **范例8-18:**Linux断电后重启故障修复案例。

​ 当Linux系统遭遇突然断电等非正常关机操作时,很容易导致文件系统数据损坏,造成系统不能重新启动,此时,屏幕出现的提示可能是如下内容:

​ 此时根据系统提示输入root用户的密码,注意而不是直接按Control-D继续,会再重启。

​ 当输入正确的密码之后,正常会出现下面的提示:

​ 此时就可以输入fsck或者fsck -A对磁盘进行修复检查,执行后可能出现一堆询问,按yes即可。


提示:

​ 1)除了按照开机的提示进行修复外,也可以利用系统盘进入救援模式或单用户模式对系统故障进行修复。

​ 2)千万不要在开机正常工作的情况下执行fsck来检查磁盘,因为这样有可能会导致正常的磁盘发生故障。

​ 3)/etc/fstab中的最后一列数字为1或2时,当系统开机时就会读取fsck对这些系统磁盘进行自检。

​ 4)不要在已经挂载的文件系统上执行fsck等磁盘修复命令,因为这样可能会导致故障。

L52.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- resize2fs和fsck相关推荐

  1. L49.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- fdisk和partprobe

    8.1 fdisk:磁盘分区工具 8.1.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ fdisk是Linux下常用的磁盘分区工具.受mbr分区表的限制,fdisk工具只能给小于2 ...

  2. L60.linux命令每日一练 -- 第九章 Linux进程管理命令 -- top和nice

    9.7 top:实时显示系统中各个进程的资源占有状况 9.7.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个 ...

  3. L29.linux命令每日一练 -- 第四章 文本处理三剑客 -- sed命令

    4.2 sed:流编辑器 4.2.1 sed命令语法及参数说明 ​ [命令星级] ★★★★★ ​ [功能说明] ​ sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器.它是Linu ...

  4. L63.linux命令每日一练 -- 第九章 Linux进程管理命令 -- runlevel、init和service

    9.13 runlevel:输出当前运行级别 9.13.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ runlevel命令用于输出当前Linux系统的运行级别. ​ [语法格式] ...

  5. L71.linux命令每日一练 -- 第十章 Linux网络管理命令 -- wget和mailq

    10.15 wget:命令行下载工具 10.15.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ wget命令用于从网络上下载某些资料,该命令对于能够连接到互联网的Linux系统的作 ...

  6. L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss

    10.7 netstat:查看网络状态 10.7.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ netstat命令用于显示本机网络的连接状态.运行端口和路由表等信息. ​ [语法格 ...

  7. L70.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nc和ssh

    10.13 nc:多功能网络工具 10.13.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ nc是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的 ...

  8. L58.linux命令每日一练 -- 第九章 Linux进程管理命令 -- pgrep和kill

    9.3 pgrep:查找匹配条件的进程 9.3.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ pgrep命令可以查找匹配条件的进程号. ​ [语法格式] pgrep [option ...

  9. L61.linux命令每日一练 -- 第九章 Linux进程管理命令 -- renice和nohup

    9.9 renice:调整运行中的进程的优先级 9.9.1 命令详解 ​ [命令星级] ★★★☆☆ ​ [功能说明] ​ nice命令常用于修改未运行的程序运行时的优先级,但是对于正在运行的进程,若想 ...

最新文章

  1. python刷新cdn_api 刷新是什么-和api 刷新相关的问题-阿里云开发者社区
  2. Oracle分析函数FIRST_VALUE、LAST_VALUE
  3. HTML引入第三方类库项目需要授权解决方案
  4. Nagios 配置及监控
  5. 【java】java wait 原理 synchronized ReentrantLock 唤醒顺序
  6. 小米 android 7.0下载地址,小米4安卓7.0
  7. 一元三次方程c语言程序,求解一元三次方程近似解的几种算法(C语言)
  8. 达梦数据库dm8使用心得
  9. linux查询数据库归档日志,关于 Oracle 归档日志
  10. 软件测试的度量方法包括,软件测试过程的度量
  11. ffmpeg MP4 提取 MP3文件
  12. 不明觉厉!用了近10年,才有人读懂这篇论文
  13. python在一个函数中调用另一函数中的变量
  14. wifi技术从了解到熟悉3-----wifi的系统结构分析
  15. 【web系列十一】使用django创建数据库表
  16. 使用lightGBM进行验证的demo
  17. 安装Centos 7与Win7双系统,找不到Win7启动项
  18. DAY29(DAY30拓展):Vulnhub--靶机实战
  19. C语言学习day01
  20. UE4 sequence 播放速率的调整(4.27)

热门文章

  1. 808笔记---小白学Java
  2. 关于 阿里云短信服务测试签名模版使用教程
  3. github源码下载慢问题
  4. 你见过凌晨四点破解密码的john吗?
  5. html弧形列表效果,jQuery效果 弧形弹出菜单
  6. 如何消除视频会议中出现的回音
  7. android自学知乎!百度、阿里、滴滴、新浪的面试心经总结,大厂面试题汇总
  8. 如何在一个固态硬盘中塞下二个操作系统
  9. 笔记本安装ubantu系统
  10. mysql的char占几个字节_mysql varchar和char类型在不同字符集下的字符数和字节数计算...