Linux 磁盘管理

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

前言

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

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

df

df命令参数功能:检查文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法
1
df [-ahikHTm] [目录或文件名]
Copied!
选项
  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示

案列 1

将系统内所有的文件系统列出来
2
文件系统 1K-块 已用 可用 已用% 挂载点
3
devtmpfs 1918964 0 1918964 0% /dev
4
tmpfs 1934444 176 1934268 1% /dev/shm
5
tmpfs 1934444 556 1933888 1% /run
6
tmpfs 1934444 0 1934444 0% /sys/fs/cgroup
7
/dev/vda1 41931756 6581260 35350496 16% /
8
tmpfs 386888 0 386888 0% /run/user/0
9
Copied!
在 Linux 系统中,如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来

案列 2

将容量结果以易读的容量格式显示出来
1
2
文件系统 容量 已用 可用 已用% 挂载点
3
devtmpfs 1.9G 0 1.9G 0% /dev
4
tmpfs 1.9G 176K 1.9G 1% /dev/shm
5
tmpfs 1.9G 556K 1.9G 1% /run
6
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
7
/dev/vda1 40G 6.3G 34G 16% /
8
tmpfs 378M 0 378M 0% /run/user/0
Copied!

实例 3

将系统内的所有特殊文件格式及名称都列出来
1
[[email protected] ~]# df -aT
2
文件系统 类型 1K-块 已用 可用 已用% 挂载点
3
sysfs sysfs 0 0 0 - /sys
4
proc proc 0 0 0 - /proc
5
devtmpfs devtmpfs 1918964 0 1918964 0% /dev
6
securityfs securityfs 0 0 0 - /sys/kernel/security
7
tmpfs tmpfs 1934444 176 1934268 1% /dev/shm
8
devpts devpts 0 0 0 - /dev/pts
9
tmpfs tmpfs 1934444 556 1933888 1% /run
10
tmpfs tmpfs 1934444 0 1934444 0% /sys/fs/cgroup
11
cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd
12
pstore pstore 0 0 0 - /sys/fs/pstore
13
bpf bpf 0 0 0 - /sys/fs/bpf
14
cgroup cgroup 0 0 0 - /sys/fs/cgroup/blkio
15
cgroup cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
16
cgroup cgroup 0 0 0 - /sys/fs/cgroup/memory
17
cgroup cgroup 0 0 0 - /sys/fs/cgroup/perf_event
18
cgroup cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
19
cgroup cgroup 0 0 0 - /sys/fs/cgroup/devices
20
cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
21
cgroup cgroup 0 0 0 - /sys/fs/cgroup/freezer
22
cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpuset
23
cgroup cgroup 0 0 0 - /sys/fs/cgroup/rdma
24
cgroup cgroup 0 0 0 - /sys/fs/cgroup/pids
25
configfs configfs 0 0 0 - /sys/kernel/config
26
/dev/vda1 xfs 41931756 6581260 35350496 16% /
27
systemd-1 - - - - - /proc/sys/fs/binfmt_misc
28
hugetlbfs hugetlbfs 0 0 0 - /dev/hugepages
29
debugfs debugfs 0 0 0 - /sys/kernel/debug
30
mqueue mqueue 0 0 0 - /dev/mqueue
31
tracefs tracefs 0 0 0 - /sys/kernel/debug/tracing
32
tmpfs tmpfs 386888 0 386888 0% /run/user/0
33
binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
Copied!

实例 4

将 /etc 底下的可用的磁盘容量以易读的容量格式显示
1
[[email protected] ~]# df -h /etc
2
文件系统 容量 已用 可用 已用% 挂载点
3
/dev/vda1 40G 6.3G 34G 16% /
Copied!

检查磁盘空间使用量

du

du命令参数功能:是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法
1
du [-ahskm] 文件或目录名称
Copied!
选项与参数
  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :列出总量而已,而不列出每个各别的目录占用容量;
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;

案列 1

只列出当前目录下的所有文件夹容量(包括隐藏文件夹):
2
0 ./.pki/nssdb <==每个目录都会列出来
3
0 ./.pki
4
....中间省略....
5
12 ./.gconfd <==包括隐藏文件的目录
6
220 . <==这个目录(.)所占用的总量
Copied!
直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。

案列 2

将文件的容量也列出来
1
2
4 ./.bash_logout <==有文件的列表了
3
4 ./.bash_profile
4
8 ./.bash_history
5
0 ./.pki/nssdb
6
0 ./.pki
7
....中间省略....
8
12 ./.gconfd
9
220 .
Copied!

案列 3

检查根目录底下每个目录所占用的容量
1
[[email protected] ~]# du -sm /*
2
7 /bin
3
6 /boot
4
.....中间省略....
5
0 /proc
6
.....中间省略....
7
1 /tmp
8
3859 /usr <==系统初期最大目录
9
77 /var
Copied!
通配符 * 来代表每个目录。
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

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

lsblk

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

语法

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

选项

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

案例1

lsblk命令默认情况下将以树状列出所有块设备。打开终端,并输入以下命令:
1
lsblk
2
3
NAME MAJ:MIN rm SIZE RO type mountpoint
4
sda 8:0 0 232.9G 0 disk
5
├─sda1 8:1 0 46.6G 0 part /
6
├─sda2 8:2 0 1K 0 part
7
├─sda5 8:5 0 190M 0 part /boot
8
├─sda6 8:6 0 3.7G 0 part [SWAP]
9
├─sda7 8:7 0 93.1G 0 part /data
10
└─sda8 8:8 0 89.2G 0 part /personal
11
sr0 11:0 1 1024M 0 rom
Copied!
7个栏目名称如下:
  1. 1.
    NAME:这是块设备名。
  2. 2.
    MAJ:MIN:本栏显示主要和次要设备号。
  3. 3.
    RM:本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
  4. 4.
    SIZE:本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
  5. 5.
    RO:该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
  6. 6.
    TYPE:本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
  7. 7.
    MOUNTPOINT:本栏指出设备挂载的挂载点。
默认选项不会列出所有空设备。要查看这些空设备,请使用以下命令:
1
lsblk -a
Copied!
lsblk命令也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式。可以通过以下命令来获取这些信息:
1
lsblk -m
Copied!
该命令也可以只获取指定设备的信息。这可以通过在提供给lsblk命令的选项后指定设备名来实现。例如,你可能对了解以字节显示你的磁盘驱动器大小比较感兴趣,那么你可以通过运行以下命令来实现:
1
lsblk -b /dev/sda
2
3
等价于
4
5
lsblk --bytes /dev/sda
Copied!
你也可以组合几个选项来获取指定的输出。例如,你也许想要以列表格式列出设备,而不是默认的树状格式。你可能也对移除不同栏目名称的标题感兴趣。可以将两个不同的选项组合,以获得期望的输出,命令如下:
1
lsblk -nl
Copied!
要获取SCSI设备的列表,你只能使用-S选项。该选项是大写字母S,不能和-s选项混淆,该选项是用来以颠倒的顺序打印依赖的。
1
lsblk -S
Copied!
lsblk列出SCSI设备,而-s是逆序选项(将设备和分区的组织关系逆转过来显示),其将给出如下输出。输入命令:
1
lsblk -s
Copied!

案例2

查看多块磁盘拓扑信息
1
[[email protected] ~]# lsblk -t /dev/sda /dev/sda1 /dev/sda2
2
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
3
sda 0 512 0 512 512 1 deadline 128 4096 32M
4
├─sda1 0 512 0 512 512 1 deadline 128 4096 32M
5
└─sda2 0 512 0 512 512 1 deadline 128 4096 32M
6
├─centos-root 0 512 0 512 512 1 128 4096 32M
7
├─centos-swap 0 512 0 512 512 1 128 4096 32M
8
└─centos-home 0 512 0 512 512 1 128 4096 32M
9
sda1 0 512 0 512 512 1 deadline 128 4096 32M
10
sda2 0 512 0 512 512 1 deadline 128 4096 32M
11
├─centos-root 0 512 0 512 512 1 128 4096 32M
12
├─centos-swap 0 512 0 512 512 1 128 4096 32M
13
└─centos-home 0 512 0 512 512 1 128 4096 32M
14
Copied!

磁盘分区

fdisk

fdisk 是 Linux 的磁盘分区表操作工具。
语法:
1
fdisk [-l] 装置名称
Copied!
选项与参数:
  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

案例 1

列出所有分区信息
1
[[email protected] ~]# fdisk -l
2
3
Disk /dev/xvda: 21.5 GB, 21474836480 bytes
4
255 heads, 63 sectors/track, 2610 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: 0x00000000
9
10
Device Boot Start End Blocks Id System
11
/dev/xvda1 * 1 2550 20480000 83 Linux
12
/dev/xvda2 2550 2611 490496 82 Linux swap / Solaris
13
14
Disk /dev/xvdb: 21.5 GB, 21474836480 bytes
15
255 heads, 63 sectors/track, 2610 cylinders
16
Units = cylinders of 16065 * 512 = 8225280 bytes
17
Sector size (logical/physical): 512 bytes / 512 bytes
18
I/O size (minimum/optimal): 512 bytes / 512 bytes
19
Disk identifier: 0x56f40944
20
21
Device Boot Start End Blocks Id System
22
/dev/xvdb2 1 2610 20964793+ 83 Linux
Copied!

案例 2

找出系统中的根目录所在磁盘,并查阅该硬盘内的相关信息
1
[[email protected] ~]# df / <==注意:重点在找出磁盘文件名而已
2
文件系统 1K-块 已用 可用 已用% 挂载点
3
/dev/mapper/centos-root 52403200 1562240 50840960 3% /
4
5
[[email protected] ~]# fdisk /dev/mapper/centos-root <==仔细看,不要加上数字喔!
6
欢迎使用 fdisk (util-linux 2.23.2)。
7
8
更改将停留在内存中,直到您决定将更改写入磁盘。
9
使用写入命令前请三思。
10
11
Device does not contain a recognized partition table
12
使用磁盘标识符 0xf500aa0e 创建新的 DOS 磁盘标签。
13
14
15
命令(输入 m 获取帮助): <==等待你的输入!
Copied!
输入 m 后,就会看到底下这些命令介绍
1
命令(输入 m 获取帮助):m <== 输入 m 后,就会看到底下这些命令介绍
2
命令操作
3
m :显示菜单和帮助信息
4
a :活动分区标记/引导分区
5
d :删除分区
6
l :显示分区类型
7
n :新建分区
8
p :显示分区信息
9
q :退出不保存
10
t :设置分区号
11
v :进行分区检查
12
w :保存修改
13
x :扩展应用,高级功能
Copied!
离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。
注意:不保存退出按 q ,保存退出 w ,如上操作有改动或有删除分区,w保存会初始化磁盘,重新分区会清除磁盘上的数据
使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。

parted

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

语法

1
parted(选项)(参数)
Copied!

选项

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

参数

  • 设备:指定要分区的硬盘所对应的设备文件;
  • 命令:要执行的parted命令。

安装

1
yum install parted
Copied!

案例 1

从串行技术出现以来,越来越多用户选择使用大容量的SATA硬盘创建磁盘阵列;特别是MD1000/MD3000,很轻易就突破2T的LUN,故在此给大家一些指引。
红帽企业 Linux 4 Update 4供对大于 2 terabytes(TB)的磁盘设备的支持。
请参考以下操作步骤:
1
[[email protected] ~]# fdisk -l
2
Disk /dev/sda: 35.8 GB, 35862976512 bytes
3
255 heads, 63 sectors/track, 4360 cylinders
4
Units = cylinders of 16065 * 512 = 8225280 bytes
5
Device Boot Start End Blocks id System
6
/dev/sda1 * 1 13 104391 83 Linux
7
/dev/sda2 14 144 1052257+ 82 Linux swap
8
/dev/sda3 145 4360 33865020 83 Linux
9
Disk /dev/sdb: 2147 MB, 2147483648 bytes
10
255 heads, 63 sectors/track, 261 cylinders
11
Units = cylinders of 16065 * 512 = 8225280 bytes
12
Disk /dev/sdb doesn't contain a valid partition table
Copied!
1
[[email protected] ~]# parted /dev/sdb
2
GNU Parted Copyright (C) 1998 - 2004 free Software Foundation, Inc.
3
This program is free software, covered by the GNU General Public License.
4
This program is distributed in the hope that it will be useful, but WITHOUT ANY
5
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
6
PARTICULAR PURPOSE. See the GNU General Public License for more details.
7
使用/dev/sdb
8
(parted)mklabel gpt
9
(parted)print
10
/dev/sdb的磁盘几何结构:0.000-2048.000兆字节
11
磁盘标签类型:gpt
12
Minor 起始点 终止点 文件系统 名称 标志
13
(parted)mkpart primary 0 2048 <-----上面print显示的数字
14
(parted)print
15
/dev/sdb的磁盘几何结构:0.000-2048.000兆字节
16
磁盘标签类型:gpt
17
Minor 起始点 终止点 文件系统 名称 标志
18
1 0.017 2047.983
19
(parted)quit
Copied!
如果必要,不要忘记更新/etc/fstab
1
[[email protected] ~]# fdisk -l
2
Disk /dev/sda: 35.8 GB, 35862976512 bytes
3
255 heads, 63 sectors/track, 4360 cylinders
4
Units = cylinders of 16065 * 512 = 8225280 bytes
5
Device Boot Start End Blocks Id System
6
/dev/sda1 * 1 13 104391 83 Linux
7
/dev/sda2 14 144 1052257+ 82 Linux swap
8
/dev/sda3 145 4360 33865020 83 Linux
9
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
10
11
Disk /dev/sdb: 2147 MB, 2147483648 bytes
12
255 heads, 63 sectors/track, 261 cylinders
13
Units = cylinders of 16065 * 512 = 8225280 bytes
14
Device Boot Start End Blocks Id System
15
/dev/sdb1 1 262 2097151+ ee EFI GPT
16
Partition 1 has different physical/logical beginnings (non-Linux?):
17
phys=(0, 0, 1) logical=(0,0, 2)
18
Partition 1 has different physical/logical endings:
19
phys=(1023, 254, 63) logical=(261, 21, 16)
Copied!
1
[[email protected] ~]# mkfs.ext3 /dev/sdb1
2
mke2fs 1.35 (28-Feb-2004)
3
Filesystem label=
4
OS type: Linux
5
Block size=4096 (log=2)
6
Fragment size=4096 (log=2)
7
262144 inodes, 524279 blocks
8
26213 blocks (5.00%) reserved for the super user
9
First data block=0
10
Maximum filesystem blocks=536870912
11
16 block groups
12
32768 blocks per group, 32768 fragments per group
13
16384 inodes per group
14
Superblock backups stored on blocks:
15
32768, 98304, 163840, 229376, 294912
16
Writing inode tables: done
17
Creating journal (8192 blocks): done
18
Writing superblocks and filesystem accounting information: done
19
This filesystem will be automatically checked every 28 mounts or
20
180 days, whichever comes first. Use tune2fs -c or -i to override.
Copied!
1
[[email protected] ~]# mount /dev/sdb1 /mnt
2
3
Filesystem 容量 已用 可用 已用% 挂载点
4
/dev/sda3 <?xml:namespace prefix = st1 />32G 2.6G 28G 9% /
5
/dev/sda1 99M 12M 82M 13% /boot
6
none 252M 0 252M 0% /dev/shm
7
/dev/sdb1 2.0G 36M 1.9G 2% /mnt
Copied!

​案例 2

1、选择分区硬盘
首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdd: ((parted)表示在parted中输入的命令,其他为自动打印的信息)
1
[[email protected] ~]# parted /dev/hdd
2
GNU Parted 1.8.1
3
Using /dev/hdd
4
Welcome to GNU Parted! Type 'help' to view a list of commands.
Copied!
2、创建分区
选择了/dev/hdd作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):
1
(parted) mklabel
2
New disk label type? gpt # 我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车
Copied!
3、完成分区操作
创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区 的起止位置
1
(parted) mkpart
2
Partition name? []? dp1
3
File system type? [ext2]? ext3
4
Start? 0 (可以用百分比表示,比如Start? 0% , End? 50%)
5
End? 500GB
Copied!
4、验证分区信息
分好区后可以使用print命令打印分区信息,下面是一个print的样例
1
(parted) print
2
Model: VBOX HARDDISK (ide)
3
Disk /dev/hdd: 2199GB
4
Sector size (logical/physical): 512B/512B
5
Partition Table: gpt
6
Number Start End Size File system Name Flags
7
1 17.4kB 500GB 500GB dp1
Copied!
5、删除分区示例
如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果
1
(parted)rm 1 #rm后面使用分区的号码,就是用print打印出来的Number
2
(parted) print
3
Model: VBOX HARDDISK (ide)
4
Disk /dev/hdd: 2199GB
5
Sector size (logical/physical): 512B/512B
6
Partition Table: gpt
7
Number Start End Size File system Name Flags
Copied!
6、完整示例
按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例
1
(parted) mkpart
2
Partition name? []? dp1
3
File system type? [ext2]? ext3
4
Start? 0
5
End? 500GB
6
(parted) mkpart
7
Partition name? []? dp2
8
File system type? [ext2]? ext3
9
Start? 500GB
10
End? 2199GB
11
(parted) print
12
Model: VBOX HARDDISK (ide)
13
Disk /dev/hdd: 2199GB
14
Sector size (logical/physical): 512B/512B
15
Partition Table: gpt
16
Number Start End Size File system Name Flags
17
1 17.4kB 500GB 500GB dp1
18
2 500GB 2199GB 1699GB dp2
Copied!
7、格式化操作
完成以后我们可以使用quit命令退出parted并使用系统的mkfs命令对分区进行格式化了。
1
[[email protected] ~]# fdisk -l
2
WARNING: GPT (GUID Partition Table) detected on '/dev/hdd'! The util fdisk doesn't support GPT. Use GNU Parted.
3
Disk /dev/hdd: 2199.0 GB, 2199022206976 bytes
4
255 heads, 63 sectors/track, 267349 cylinders
5
Units = cylinders of 16065 * 512 = 8225280 bytes
6
Device Boot Start End Blocks Id System
7
/dev/hdd1 1 267350 2147482623+ ee EFI GPT
8
[[email protected] ~]# mkfs.ext3 /dev/hdd1
9
[[email protected] ~]# mkfs.ext3 /dev/hdd2
10
[[email protected] ~]# mkdir /dp1 /dp2
11
[[email protected] ~]# mount /dev/hdd1 /dp1
12
[[email protected] ~]# mount /dev/hdd2 /dp2
Copied!

磁盘格式化

mkfs

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。
语法:
1
mkfs [-t 文件系统格式] 装置文件名
Copied!
选项与参数:
  • -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

案例 1

查看 mkfs 支持的文件格式
1
[[email protected] ~]# mkfs[tab][tab]
2
mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat
Copied!
按下两个[tab],会发现 mkfs 支持的文件格式如上所示。

案例 2

将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:
1
[[email protected] ~]# mkfs -t ext3 /dev/hdc6
2
mke2fs 1.39 (29-May-2006)
3
Filesystem label= <==这里指的是分割槽的名称(label)
4
OS type: Linux
5
Block size=4096 (log=2) <==block 的大小配置为 4K
6
Fragment size=4096 (log=2)
7
251392 inodes, 502023 blocks <==由此配置决定的inode/block数量
8
25101 blocks (5.00%) reserved for the super user
9
First data block=0
10
Maximum filesystem blocks=515899392
11
16 block groups
12
32768 blocks per group, 32768 fragments per group
13
15712 inodes per group
14
Superblock backups stored on blocks:
15
32768, 98304, 163840, 229376, 294912
16
17
Writing inode tables: done
18
Creating journal (8192 blocks): done <==有日志记录
19
Writing superblocks and filesystem accounting information: done
20
21
This filesystem will be automatically checked every 34 mounts or
22
180 days, whichever comes first. Use tune2fs -c or -i to override.
23
# 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!
Copied!

扩容文件系统

resize2fs

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

语法

1
resize2fs(选项)(参数)
Copied!

选项

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

参数

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

案例

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

xfs_growfs

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

案例

对于 XFS 文件系统,请执行 xfs_growfs 命令扩容文件系统。 以 /dev/vdb 为例, XFS 文件系统执行以下命令:
1
xfs_growfs info /dev/vdb #检查数据块大小和数量
2
xfs_growfs /dev/vdb -D 1986208 #将XFS文件扩展到1986208
3
xfs_growfs /dev/vdb #自动扩展XFS文件系统到最大的可用大小
Copied!

磁盘检验

fsck

fsck(file system check)用来检查和维护不一致的文件系统。
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
语法:
1
fsck [-t 文件系统] [-ACay] 装置名称
Copied!
选项与参数:
  • -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 命令:
1
[[email protected] ~]# fsck[tab][tab]
2
fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat
Copied!

案例 2

强制检测 /dev/hdc6 分区:
1
[[email protected] ~]# fsck -C -f -t ext3 /dev/hdc6
2
fsck 1.39 (29-May-2006)
3
e2fsck 1.39 (29-May-2006)
4
Pass 1: Checking inodes, blocks, and sizes
5
Pass 2: Checking directory structure
6
Pass 3: Checking directory connectivity
7
Pass 4: Checking reference counts
8
Pass 5: Checking group summary information
9
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks
Copied!
如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。

磁盘挂载与卸除

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

mount

磁盘挂载语法:
1
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
Copied!

案例 1

用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面!
1
[[email protected] ~]# mkdir /mnt/hdc6
2
[[email protected] ~]# mount /dev/hdc6 /mnt/hdc6
4
Filesystem 1K-blocks Used Available Use% Mounted on
5
.....中间省略.....
6
/dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6
Copied!

umount

磁盘卸载命令 umount 语法:
1
umount [-fn] 装置文件名或挂载点
Copied!
选项与参数:
  • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
  • -n :不升级 /etc/mtab 情况下卸除。
卸载/dev/hdc6
1
[[email protected] ~]# umount /dev/hdc6
Copied!

开机挂载文件/etc/fstab

执行以下命令,使用 VI 编辑器打开 /etc/fstab 文件。
1
vi /etc/fstab
Copied!
1
<设备信息> <挂载点> <文件系统格式> <文件系统安装选项> <文件系统转储频率> <启动时的文件系统检查顺序>
Copied!

案例1

弹性云硬盘的软链接自动挂载为例:
查看方式:
1
[[email protected] ~]# ls -l /dev/disk/by-id
2
total 0
3
lrwxrwxrwx 1 root root 9 Dec 4 15:42 virtio-disk-drkhklpe -> ../../sr0
Copied!
1
/dev/disk/by-id/virtio-disk-drkhklpe /data ext4 defaults 0 0
Copied!
以使用磁盘分区的 UUID 自动挂载为例:
查看方式:
1
[[email protected] ~]# blkid /dev/vda1
2
/dev/vda1: UUID="d489ca1c-5057-4536-81cb-ceb2847f9954" TYPE="xfs" PARTUUID="76042835-01"
Copied!
1
UUID=d489ca1c-5057-4536-81cb-ceb2847f9954 /data xfs defaults 0 0
Copied!
以使用设备名称自动挂载为例
1
/dev/vdb /data ext4 defaults 0 0
Copied!
Esc,输入 :wq,按 Enter
保存设置并退出编辑器。
执行以下命令,检查 /etc/fstab 文件是否写入成功。
1
mount -a
Copied!
如果运行通过则说明文件写入成功,新建的文件系统会在操作系统启动时自动挂载。