Linux 磁盘管理

博客作者:联系请点击,搬运不易,希望请作者喝咖啡,可以点击联系博客作者

前言

Linux磁盘管理好坏直接关系到整个系统的性能问题。

列出文件系统的整体磁盘使用量

df

df命令参数功能:检查文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法

df [-ahikHTm] [目录或文件名]

选项

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;

  • -k :以 KBytes 的容量显示各文件系统;

  • -m :以 MBytes 的容量显示各文件系统;

  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

  • -H :以 M=1000K 取代 M=1024K 的进位方式;

  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;

  • -i :不用硬盘容量,而以 inode 的数量来显示

案列 1

将系统内所有的文件系统列出来

[root@hezhiqiang ~]# df
文件系统            1K-块    已用      可用  已用% 挂载点
devtmpfs        1918964       0  1918964    0% /dev
tmpfs           1934444     176  1934268    1% /dev/shm
tmpfs           1934444     556  1933888    1% /run
tmpfs           1934444       0  1934444    0% /sys/fs/cgroup
/dev/vda1      41931756 6581260 35350496   16% /
tmpfs            386888       0   386888    0% /run/user/0

在 Linux 系统中,如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来

案列 2

将容量结果以易读的容量格式显示出来

[root@hezhiqiang ~]# df -h
文件系统          容量  已用   可用  已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G  176K  1.9G    1% /dev/shm
tmpfs           1.9G  556K  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/vda1        40G  6.3G   34G   16% /
tmpfs           378M     0  378M    0% /run/user/0

实例 3

将系统内的所有特殊文件格式及名称都列出来

[root@hezhiqiang ~]# df -aT
文件系统        类型            1K-块     已用      可用 已用% 挂载点
sysfs          sysfs              0       0        0     - /sys
proc           proc               0       0        0     - /proc
devtmpfs       devtmpfs     1918964       0  1918964    0% /dev
securityfs     securityfs         0       0        0     - /sys/kernel/security
tmpfs          tmpfs        1934444     176  1934268    1% /dev/shm
devpts         devpts             0       0        0     - /dev/pts
tmpfs          tmpfs        1934444     556  1933888    1% /run
tmpfs          tmpfs        1934444       0  1934444    0% /sys/fs/cgroup
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/systemd
pstore         pstore             0       0        0     - /sys/fs/pstore
bpf            bpf                0       0        0     - /sys/fs/bpf
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/blkio
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/hugetlb
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/memory
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/perf_event
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/net_cls,net_prio
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/devices
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/cpu,cpuacct
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/freezer
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/cpuset
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/rdma
cgroup         cgroup             0       0        0     - /sys/fs/cgroup/pids
configfs       configfs           0       0        0     - /sys/kernel/config
/dev/vda1      xfs         41931756 6581260 35350496   16% /
systemd-1      -                  -       -        -     - /proc/sys/fs/binfmt_misc
hugetlbfs      hugetlbfs          0       0        0     - /dev/hugepages
debugfs        debugfs            0       0        0     - /sys/kernel/debug
mqueue         mqueue             0       0        0     - /dev/mqueue
tracefs        tracefs            0       0        0     - /sys/kernel/debug/tracing
tmpfs          tmpfs         386888       0   386888    0% /run/user/0
binfmt_misc    binfmt_misc        0       0        0     - /proc/sys/fs/binfmt_misc

实例 4

将 /etc 底下的可用的磁盘容量以易读的容量格式显示

[root@hezhiqiang ~]# df -h /etc
文件系统          容量  已用   可用  已用% 挂载点
/dev/vda1        40G  6.3G   34G   16% /

检查磁盘空间使用量

du

du命令参数功能:是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。

语法

du [-ahskm] 文件或目录名称

选项与参数

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

  • -h :以人们较易读的容量格式 (G/M) 显示;

  • -s :列出总量而已,而不列出每个各别的目录占用容量;

  • -S :不包括子目录下的总计,与 -s 有点差别。

  • -k :以 KBytes 列出容量显示;

  • -m :以 MBytes 列出容量显示;

案列 1

只列出当前目录下的所有文件夹容量(包括隐藏文件夹):

[root@hezhiqiang ~]# du
0	./.pki/nssdb      <==每个目录都会列出来
0	./.pki
....中间省略....
12      ./.gconfd   <==包括隐藏文件的目录
220     .           <==这个目录(.)所占用的总量

直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。

案列 2

将文件的容量也列出来

[root@hezhiqiang ~]# du -a
4	./.bash_logout   <==有文件的列表了
4	./.bash_profile
8	./.bash_history
0	./.pki/nssdb
0	./.pki
....中间省略....
12      ./.gconfd
220     .

案列 3

检查根目录底下每个目录所占用的容量

[root@hezhiqiang ~]# du -sm /*
7       /bin
6       /boot
.....中间省略....
0       /proc
.....中间省略....
1       /tmp
3859    /usr     <==系统初期最大目录
77      /var

通配符 * 来代表每个目录。

与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

列出所有可用块设备的信息

lsblk

lsblk命令参数功能:列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。 yum install util-linux-ng来安装该包。

语法

lsblk [选项] [<设备1> <设备2> <设备3> ...]

选项

-a, --all            显示所有设备。
-b, --bytes          以bytes方式显示设备大小。
-d, --nodeps         不显示 slaves 或 holders。
-D, --discard        print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs             显示文件系统信息。
-h, --help           显示帮助信息。
-i, --ascii          use ascii characters only。
-m, --perms          显示权限信息。
-l, --list           使用列表格式显示。
-n, --noheadings     不显示标题。
-o, --output <list>  输出列。
-P, --pairs          使用key="value"格式显示。
-r, --raw            使用原始格式显示。
-t, --topology       显示拓扑结构信息。

案例1

lsblk命令默认情况下将以树状列出所有块设备。打开终端,并输入以下命令:

lsblk

NAME   MAJ:MIN rm   SIZE RO type mountpoint
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0  46.6G  0 part /
├─sda2   8:2    0     1K  0 part 
├─sda5   8:5    0   190M  0 part /boot
├─sda6   8:6    0   3.7G  0 part [SWAP]
├─sda7   8:7    0  93.1G  0 part /data
└─sda8   8:8    0  89.2G  0 part /personal
sr0     11:0    1  1024M  0 rom

7个栏目名称如下:

  1. NAME:这是块设备名。

  2. MAJ:MIN:本栏显示主要和次要设备号。

  3. RM:本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。

  4. SIZE:本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。

  5. RO:该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。

  6. TYPE:本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。

  7. MOUNTPOINT:本栏指出设备挂载的挂载点。

默认选项不会列出所有空设备。要查看这些空设备,请使用以下命令:

lsblk -a

lsblk命令也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式。可以通过以下命令来获取这些信息:

lsblk -m

该命令也可以只获取指定设备的信息。这可以通过在提供给lsblk命令的选项后指定设备名来实现。例如,你可能对了解以字节显示你的磁盘驱动器大小比较感兴趣,那么你可以通过运行以下命令来实现:

lsblk -b /dev/sda

等价于

lsblk --bytes /dev/sda

你也可以组合几个选项来获取指定的输出。例如,你也许想要以列表格式列出设备,而不是默认的树状格式。你可能也对移除不同栏目名称的标题感兴趣。可以将两个不同的选项组合,以获得期望的输出,命令如下:

lsblk -nl

要获取SCSI设备的列表,你只能使用-S选项。该选项是大写字母S,不能和-s选项混淆,该选项是用来以颠倒的顺序打印依赖的。

lsblk -S

lsblk列出SCSI设备,而-s是逆序选项(将设备和分区的组织关系逆转过来显示),其将给出如下输出。输入命令:

lsblk -s

案例2

查看多块磁盘拓扑信息

[root@hezhiqiang ~]# lsblk -t /dev/sda /dev/sda1 /dev/sda2
NAME            ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED    RQ-SIZE   RA WSAME
sda                     0    512      0     512     512    1 deadline     128 4096   32M
├─sda1                  0    512      0     512     512    1 deadline     128 4096   32M
└─sda2                  0    512      0     512     512    1 deadline     128 4096   32M
  ├─centos-root         0    512      0     512     512    1              128 4096   32M
  ├─centos-swap         0    512      0     512     512    1              128 4096   32M
  └─centos-home         0    512      0     512     512    1              128 4096   32M
sda1                    0    512      0     512     512    1 deadline     128 4096   32M
sda2                    0    512      0     512     512    1 deadline     128 4096   32M
├─centos-root           0    512      0     512     512    1              128 4096   32M
├─centos-swap           0    512      0     512     512    1              128 4096   32M
└─centos-home           0    512      0     512     512    1              128 4096   32M

磁盘分区

fdisk

fdisk 是 Linux 的磁盘分区表操作工具。

语法:

fdisk [-l] 装置名称

选项与参数:

  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

案例 1

列出所有分区信息

[root@hezhiqiang ~]# fdisk -l

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1        2550    20480000   83  Linux
/dev/xvda2            2550        2611      490496   82  Linux swap / Solaris

Disk /dev/xvdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x56f40944

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb2               1        2610    20964793+  83  Linux

案例 2

找出系统中的根目录所在磁盘,并查阅该硬盘内的相关信息

[root@hezhiqiang ~]# df /     <==注意:重点在找出磁盘文件名而已
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 52403200 1562240 50840960    3% /

[root@hezhiqiang ~]# fdisk /dev/mapper/centos-root   <==仔细看,不要加上数字喔!
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xf500aa0e 创建新的 DOS 磁盘标签。


命令(输入 m 获取帮助):      <==等待你的输入!

输入 m 后,就会看到底下这些命令介绍

命令(输入 m 获取帮助):m    <== 输入 m 后,就会看到底下这些命令介绍
命令操作
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能

离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。

注意:不保存退出按 q ,保存退出 w ,如上操作有改动或有删除分区,w保存会初始化磁盘,重新分区会清除磁盘上的数据

使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。

parted

parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

语法

parted(选项)(参数)

选项

-h:显示帮助信息;
-i:交互式模式;
-s:脚本模式,不提示用户;
-v:显示版本号。

参数

  • 设备:指定要分区的硬盘所对应的设备文件;

  • 命令:要执行的parted命令。

安装

yum install parted

案例 1

从串行技术出现以来,越来越多用户选择使用大容量的SATA硬盘创建磁盘阵列;特别是MD1000/MD3000,很轻易就突破2T的LUN,故在此给大家一些指引。

红帽企业 Linux 4 Update 4供对大于 2 terabytes(TB)的磁盘设备的支持。

请参考以下操作步骤:

[root@hezhiqiang ~]# fdisk -l
Disk /dev/sda: 35.8 GB, 35862976512 bytes
255 heads, 63 sectors/track, 4360 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         144     1052257+  82  Linux swap
/dev/sda3             145        4360    33865020   83  Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
[root@hezhiqiang ~]# parted /dev/sdb
GNU Parted Copyright (C) 1998 - 2004 free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU General Public License for more details.
使用/dev/sdb
(parted)mklabel gpt
(parted)print
/dev/sdb的磁盘几何结构:0.000-2048.000兆字节
磁盘标签类型:gpt
Minor   起始点       终止点 文件系统   名称                 标志
(parted)mkpart primary 0 2048  <-----上面print显示的数字
(parted)print
/dev/sdb的磁盘几何结构:0.000-2048.000兆字节
磁盘标签类型:gpt
Minor   起始点       终止点 文件系统   名称                 标志
1          0.017   2047.983
(parted)quit

如果必要,不要忘记更新/etc/fstab

[root@hezhiqiang ~]# fdisk -l
Disk /dev/sda: 35.8 GB, 35862976512 bytes
255 heads, 63 sectors/track, 4360 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         144     1052257+  82  Linux swap
/dev/sda3             145        4360    33865020   83  Linux
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
 
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2097151+  ee  EFI GPT
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 0, 1) logical=(0,0, 2)
Partition 1 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(261, 21, 16)
[root@hezhiqiang ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
262144 inodes, 524279 blocks
26213 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@hezhiqiang ~]# mount /dev/sdb1 /mnt
[root@hezhiqiang ~]# df -h
Filesystem            容量  已用 可用 已用% 挂载点
/dev/sda3              <?xml:namespace prefix = st1 />32G  2.6G   28G   9% /
/dev/sda1              99M   12M   82M  13% /boot
none                  252M     0  252M   0% /dev/shm
/dev/sdb1             2.0G   36M  1.9G   2% /mnt

​案例 2

1、选择分区硬盘

首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdd: ((parted)表示在parted中输入的命令,其他为自动打印的信息)

[root@hezhiqiang ~]# parted /dev/hdd
GNU Parted 1.8.1
Using /dev/hdd
Welcome to GNU Parted! Type 'help' to view a list of commands.

2、创建分区

选择了/dev/hdd作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):

(parted) mklabel
New disk label type? gpt    # 我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车

3、完成分区操作

创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区 的起止位置

(parted) mkpart
Partition name? []? dp1
File system type? [ext2]? ext3
Start? 0           (可以用百分比表示,比如Start? 0% , End? 50%)
End? 500GB

4、验证分区信息

分好区后可以使用print命令打印分区信息,下面是一个print的样例

(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdd: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500GB 500GB dp1

5、删除分区示例

如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果

(parted)rm 1               #rm后面使用分区的号码,就是用print打印出来的Number
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdd: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags

6、完整示例

按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例

(parted) mkpart
Partition name? []? dp1
File system type? [ext2]? ext3
Start? 0
End? 500GB
(parted) mkpart
Partition name? []? dp2
File system type? [ext2]? ext3
Start? 500GB
End? 2199GB
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdd: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500GB 500GB dp1
2 500GB 2199GB 1699GB dp2

7、格式化操作

完成以后我们可以使用quit命令退出parted并使用系统的mkfs命令对分区进行格式化了。

[root@10.10.90.97 ~]# fdisk -l
WARNING: GPT (GUID Partition Table) detected on '/dev/hdd'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/hdd: 2199.0 GB, 2199022206976 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdd1 1 267350 2147482623+ ee EFI GPT
[root@hezhiqiang ~]# mkfs.ext3 /dev/hdd1
[root@hezhiqiang ~]# mkfs.ext3 /dev/hdd2
[root@hezhiqiang ~]# mkdir /dp1 /dp2
[root@hezhiqiang ~]# mount /dev/hdd1 /dp1
[root@hezhiqiang ~]# mount /dev/hdd2 /dp2

磁盘格式化

mkfs

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。

语法:

mkfs [-t 文件系统格式] 装置文件名

选项与参数:

  • -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

案例 1

查看 mkfs 支持的文件格式

[root@hezhiqiang ~]# mkfs[tab][tab]
mkfs         mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.msdos   mkfs.vfat

按下两个[tab],会发现 mkfs 支持的文件格式如上所示。

案例 2

将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:

[root@hezhiqiang ~]# mkfs -t ext3 /dev/hdc6
mke2fs 1.39 (29-May-2006)
Filesystem label=                <==这里指的是分割槽的名称(label)
OS type: Linux
Block size=4096 (log=2)          <==block 的大小配置为 4K 
Fragment size=4096 (log=2)
251392 inodes, 502023 blocks     <==由此配置决定的inode/block数量
25101 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=515899392
16 block groups
32768 blocks per group, 32768 fragments per group
15712 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (8192 blocks): done <==有日志记录
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!

扩容文件系统

resize2fs

resize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如果文件系统是处于mount状态下,那么它只能做到扩容,前提条件是内核支持在线resize。,linux kernel 2.6支持在mount状态下扩容但仅限于ext3文件系统。

语法

resize2fs(选项)(参数)

选项

-d:打开调试特性;
-p:打印已完成的百分比进度条;
-f:强制执行调整大小操作,覆盖掉安全检查操作;
-F:开始执行调整大小前,刷新文件系统设备的缓冲区。

参数

  • 设备文件名:增大要调整大小的文件系统所对应的设备文件名;

  • 大小:文件系统的新大小。

案例

对于 EXT 文件系统,请执行 resize2fs 命令扩容文件系统。 以 /dev/vdb 为例, EXT 文件系统执行以下命令:

resize2fs /dev/vdb

xfs_growfs

XFS是一个开源的(GPL)日志文件系统,最初由硅谷图形(SGI)开发,现在大多数的Linux发行版都支持。事实上,XFS已被最新的CentOS/RHEL 7采用,成为其默认的文件系统。在其众多的特性中,包含了“在线调整大小”这一特性,使得现存的XFS文件系统在已经挂载的情况下可以进行扩展。然而,对于XFS文件系统的缩减却还没有支持。

要扩展一个现存的XFS文件系统,你可以使用命令行工具xfs_growfs,这在大多数Linux发行版上都默认可用。由于XFS支持在线调整大小,目标文件系统可以挂载,也可以不挂载。

案例

对于 XFS 文件系统,请执行 xfs_growfs 命令扩容文件系统。 以 /dev/vdb 为例, XFS 文件系统执行以下命令:

xfs_growfs info /dev/vdb          #检查数据块大小和数量
xfs_growfs /dev/vdb -D 1986208    #将XFS文件扩展到1986208
xfs_growfs /dev/vdb               #自动扩展XFS文件系统到最大的可用大小

磁盘检验

fsck

fsck(file system check)用来检查和维护不一致的文件系统。

若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

语法:

fsck [-t 文件系统] [-ACay] 装置名称

选项与参数:

  • -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数

  • -s : 依序一个一个地执行 fsck 的指令来检查

  • -A : 对/etc/fstab 中所有列出来的 分区(partition)做检查

  • -C : 显示完整的检查进度

  • -d : 打印出 e2fsck 的 debug 结果

  • -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行

  • -R : 同时有 -A 条件时,省略 / 不检查

  • -V : 详细显示模式

  • -a : 如果检查有错则自动修复

  • -r : 如果检查有错则由使用者回答是否修复

  • -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。

案例 1

查看系统有多少文件系统支持的 fsck 命令:

[root@hezhiqiang ~]# fsck[tab][tab]
fsck         fsck.cramfs  fsck.ext2    fsck.ext3    fsck.msdos   fsck.vfat

案例 2

强制检测 /dev/hdc6 分区:

[root@hezhiqiang ~]# fsck -C -f -t ext3 /dev/hdc6 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
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
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks

如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。

磁盘挂载与卸除

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。

mount

磁盘挂载语法:

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

案例 1

用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面!

[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
.....中间省略.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6

umount

磁盘卸载命令 umount 语法:

umount [-fn] 装置文件名或挂载点

选项与参数:

  • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;

  • -n :不升级 /etc/mtab 情况下卸除。

卸载/dev/hdc6

[root@hezhiqiang ~]# umount /dev/hdc6  

开机挂载文件/etc/fstab

执行以下命令,使用 VI 编辑器打开 /etc/fstab 文件。

vi /etc/fstab
<设备信息> <挂载点> <文件系统格式> <文件系统安装选项> <文件系统转储频率> <启动时的文件系统检查顺序>

案例1

弹性云硬盘的软链接自动挂载为例:

查看方式:

[root@hezhiqiang ~]# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 Dec  4 15:42 virtio-disk-drkhklpe -> ../../sr0
/dev/disk/by-id/virtio-disk-drkhklpe /data ext4 defaults 0 0

以使用磁盘分区的 UUID 自动挂载为例:

查看方式:

[root@hezhiqiang ~]# blkid /dev/vda1
/dev/vda1: UUID="d489ca1c-5057-4536-81cb-ceb2847f9954" TYPE="xfs" PARTUUID="76042835-01"
UUID=d489ca1c-5057-4536-81cb-ceb2847f9954 /data  xfs defaults     0   0

以使用设备名称自动挂载为例

/dev/vdb /data   ext4 defaults     0   0

Esc,输入 :wq,按 Enter

保存设置并退出编辑器。

执行以下命令,检查 /etc/fstab 文件是否写入成功。

mount -a 

如果运行通过则说明文件写入成功,新建的文件系统会在操作系统启动时自动挂载。

最后更新于