Linux磁盘和文件系统管理

时间:2022-10-26 18:29:35

磁盘分区管理命令:fdisk


查看磁盘的分区信息:

常用格式:

fdisk -l [-u] [device...]

常用选项:

  • -l:列出分区表。
  • -u:在CentOS 6中,在不加-u选项时,默认使用柱面标注分区范围,加了-u选项后,使用扇区标注;在CentOS 7中,不加-u选项默认使用扇区标注分区范围,加-u="sector | cylinders"可指定使用扇区或分区标注。

查看所有磁盘分区信息:

[root@www ~]# fdisk -l

查看指定磁盘的分区信息:

[root@www ~]# fdisk -l /dev/sda1

CentOS 6中,使用扇区标注分区范围(默认是使用柱面标注):

[root@www ~]# fdisk -lu /dev/sda1

CentOS 7中,使用柱面标注分区范围(默认是使用扇区标注):

 fdisk -lu="cylinders" /dev/sdb

管理分区

使用命令fdisk device可对指定的磁盘进行分区管理。
fdisk提供一个交互式接口来管理分区,它有许多子命令,对应不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘,直到使用w命令保存至磁盘中。
交互式接口中的常见命令:

  • n:创建新分区
  • d:删除已有分区
  • t:修改分区类型
  • l:查看所有已有ID
  • w:保存并退出
  • q:不保存并退出
  • m:查看帮助信息
  • p:显示现有分区信息

内核识别新创建的分区

注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新的分区,内核可能会创建完成后无法直接识别,可通过cat /proc/partitions查看内核是否识别,如下:

[root@www ~]# cat /proc/partitions 
major minor #blocks name

8 16 125829120 sdb
8 17 2104483 sdb1
8 0 125829120 sda
8 1 512000 sda1
8 2 125316096 sda2
253 0 52428800 dm-0
253 1 983040 dm-1
253 2 71901184 dm-2

若内核未能自动识别分区,可通过以下命令强制重读磁盘分区表:
CentOS 5:partprobe [device]
CentOS 6/7:partx -a [device]kpartx -af [device]


常见的文件系统

常见的文件系统如下表:

类型 文件系统
Linux的文件系统 ext2、ext3、ext4、xfs、reiserfs、btrfs
光盘 iso9660
网络文件系统 nfs、cifs
集群文件系统 gfs2、ocfs2
内核级分布式文件系统 ceph
windows的文件系统 vfat、ntfs
Unix的文件系统 UFS、FFS、JFS
交换文件系统 swap
用户空间的分布式文件系统 mogilefs、moosefs、gluterfs

文件系统管理工具简介


创建文件系统的工具

mkfs
mkfs.ext2、mkfs.ext3、mkfs.ext4、mkfs.xfs、mkfs.vfat ……


检测及修复文件系统的工具

fsck
fsck.ext2、fsck.ext3、fsck.ext4、fsck.xfs、mkfs.vfat……


查看文件系统属性的工具

dumpe2fs、tune2fs


调整文件系统特性

tune2fs


通用的创建文件系统工具


mkfs命令

mkfs命令起始是一个Linux下各个mkfs.fstype类型命令的前端工具,它通过 -t 选项指定要创建的文件系统,然后调用PATH变量包含的路径下的 mkfs.FSTYPE 命令,来实现创建文件系统的操作。

SYNOPSIS:mkfs [options] [-t type] [fs-options] device [size]

OPTION:

  • -t:指定要创建的文件系统类型
  • fs-options:指定的要创建的文件系统所支持的命令,取决于 mkfs.fstype 命令,不同文件系统支持的命令各不相同。
  • size:指定数据块数。

fsck命令

检测并且修复Linux文件系统。

fsck命令与mkfs命令相似,都是调用fsck.fstype等命令,以实现对不同文件系统的检测与修复。

其中,e2fsck、fsck.ext2、fsck.ext3、fsck.ext4、fsck.ext4dev是指向同一inode的硬链接。

[root@www ~]# ll -i /sbin/* |grep "^31963"
31963 -rwxr-xr-x. 5 root root 197352 724 2015 /sbin/e2fsck
31963 -rwxr-xr-x. 5 root root 197352 724 2015 /sbin/fsck.ext2
31963 -rwxr-xr-x. 5 root root 197352 724 2015 /sbin/fsck.ext3
31963 -rwxr-xr-x. 5 root root 197352 724 2015 /sbin/fsck.ext4
31963 -rwxr-xr-x. 5 root root 197352 724 2015 /sbin/fsck.ext4dev

SYNOPSOS: fsck [OPTIONS]… [-t fstype] [device | LABEL=”STRING” | UUID=”STRING”]
可通过设备块文件、卷标或UUID来指明要检测的文件系统。
在不指定文件系统类型时,程序会自动识别文件系统的类型。

OPTION:

  • -t fstype:指明文件系统类型;
  • -a:无需交互而自动修复所有错误;
  • -r:交互式修复;
[root@www ~]# fsck /dev/sdb5
[root@www ~]# fsck LABEL="MYDATA"
[root@www ~]# fsck UUID="fa88c3f4-6cfc-482b-b507-063b259dc1ff"

ext系统文件系统专业管理工具


创建ext系列文件系统: mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4


mke2fs:

SYNOPSIS:mke2fs [OPTIONS] device

OPTIONS:

  • -t {ext2 | ext3 | ext4}:指明要穿件的文件系统类型;
  • -b {1024 | 2048 | 4096}:指明文件系统的块大小;
  • -L LABEL:指明卷标;
  • -j:创建有日志功能的文件系统ext3;
  • -i #:bytes-per-inode,指明inode与字节的比率,即多少字节创建一个inode;
  • -N #:直接指明要给此文件系统创建的inode数量;
  • -m #:指定预留的空间百分比;
  • -O [^]FEATURE:以指定的特性创建目标文件系统;

练习:
创建一个ext4文件系,block大小为2048,预留空间为2%,卷标为MYDATA。

[root@www ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb5
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MYDATA #文件系统卷标
OS type: Linux #操作系统类型
Block size=2048 (log=1) #块大小
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
657408 inodes, 5245190 blocks #inode数量,磁盘块数量
104903 blocks (2.00%) reserved for the super user #预留给超级管理员的数据块数
First data block=0 #第一个数据块的编号
Maximum filesystem blocks=543162368 #最大的文件系统块编号
321 block groups #块组数量
16384 blocks per group, 16384 fragments per group #每一个块组的块数量
2048 inodes per group #每一个块组的inode数量
Superblock backups stored on blocks: #超级块被备份在那些块上
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,
2048000, 3981312

Writing inode tables: done
Creating journal (32768 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.

e2label命令

改变ext系列文件系统的卷标。

查看卷标:e2label device

[root@www ~]# e2label /dev/sdb5
MYDATA

设定卷标:e2label device LABEL

[root@www ~]# e2label /dev/sdb5 YOURDATA
[root@www ~]# e2label /dev/sdb5
YOURDATA

tune2fs命令

查看或修改ext系列文件系统的某些属性。

SYNOPSOS:tune2fs [OPTION] device

查看超级快的内容:tune2fs -l device

[root@www ~]# tune2fs -l /dev/sdb5

修改指定文件系统的属性:

  • -j:向文件添加日志功能,即可将ext2文件系统升级为ext3文件系统;
  • -L LABEL:修改卷标;
  • -m #:调整预留空间百分比;
  • O [^]FEATHER:开启或关闭某些特性,多个特性之间可用逗号隔开;

dumpe2fs命令

显示ext系列文件系统的属性信息,包括超级块信息和各块组信息。

SYNOPSOS:dumpe2fs [-h] device

OPTION:

  • -h:只显示超级快信息;

e2fsck命令

用于实现文件系统检测的工具。
在系统执行写入操作时,如因系统断电、进程异常中止等意外,而造成文件写入损坏时,应检测并修复文件系统、这个过程分区应该离线(不挂载)进行。

SYNOPSIS:`e2fsck [OPTIONS] device

OPTION:

  • -y:对所欲问题自动回答为yes;
  • -f:及时文件系统处于ckean状态,也要强制进行检测;
[root@www ~]# e2fsck /dev/sdb5
e2fsck 1.41.12 (17-May-2010)
/dev/sdb5: clean, 11/655776 files, 46932/2622595 blocks

blkid命令

SYNOPSIS:

  • blkid device:查找块设备属性。
  • blkid -L label | -U uuid:根据LABEL或UUID定位设备。
[root@www ~]# blkid /dev/sdb5
/dev/sdb5: UUID="fa88c3f4-6cfc-482b-b507-063b259dc1ff" TYPE="ext4" LABEL="MYDATA"
[root@www ~]# blkid -L MYDATA
/dev/sdb5
[root@www ~]# blkid -U fa88c3f4-6cfc-482b-b507-063b259dc1ff
/dev/sdb5

swap文件系统

Linux上的交换分区必须使用独立的文件系统,其System ID为82。

曾经,有人推荐使用物理内存1/2、1倍、2倍的容量作为SWAP分区的大小。随着计算机内容容量的增大,如果有16G内存的机器,分个16G的Swap空间,似乎感觉有点浪费磁盘空间,而且多数情况下用处也并不大。在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在没有其他特别需求时,可以作为很好的参考依据。

实际内存大小 推荐swap分区大小
小于4GB时 不少于2GB
4GB~16GB 不少于4GB
16GB~64GB 不少于8GB
64GB~256GB 不少于16GB

mkswap命令

创建swap设备。

SYNOPSIS:mkswap [OPTIONS] device

OPTION:

  • -L LABEL:指明卷标;
  • -f:强制

交换分区的启用和禁用

启用:swapon

SYNOPSOS:swapon [OPTION] [DEVICE]
OPTION:

  • -a:定义在/etc/fstab文件中的所有swap设备;

禁用:swapoff

SYNOPSOS:swapoff DEVICE


文件系统的使用


挂载命令:mount

SYNOPSOS:`mount [-nrw] [-t vfstype] [-o options] device dir

OPTION:

  • -a:挂载/etc/fstab文件中定义的支持自动挂载的设备;
  • -r:readonly,只读挂载;
  • w:read and write,读写挂载;
  • -n:默认情况下,设备挂载或卸载操作会同步更新至/etc/mtab文件中,-n选项用于禁止此特性;
  • -L LABEL:挂载时以卷标的方式指明设备,mount -L LABEL dir
  • -U UUID:挂载时以UUID的方式指明设备,mount -U UUID dir
  • -B, –bind:绑定一个本地目录到另一个目录下,作为临时访问入口;
  • -o options:挂载选项

    • sync/async:同步/异步操作;
    • atime/noatime:文件或文件在被访问时是否更新其访问时间戳;
    • diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
    • remount:重新挂载;
    • acl:支持使用facl功能;
    • ro:只读挂载;
    • rw:读写挂载;
    • dev/nodev:此设备上是否允许创建设备文件;
    • exec/noexec:是否允许允许此设备上的程序文件;
    • auto/noauto:是否自动挂载,需写在/etc/fstab下才有效;
    • user/nouser:是否允许普通用户挂载此文件系统;
    • suid/nosuid:是否允许程序文件上的suid和guid特许权限生效;

      default挂载选项:rw, suid, dev, exec, auto, nouser, async and relatime.


查看当前系统所有已挂载的设备

直接使用命令mount

[root@www ~]# mount 
/dev/mapper/vg_livecd-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
...省略更多...

查看/etc/mtab文件,该文件记录了挂载了的文件系统:

[root@www ~]# cat /etc/mtab
/dev/mapper/vg_livecd-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
...省略更多...

查看内核文件,获取挂载信息:

[root@www ~]# cat /proc/mounts 
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
...省略更多...

挂载光盘

挂载普通的只读光盘需要使用只读选项 -r,光盘文件为/dev下的cdrom, cdrw, dvd, dvdrw文件,而这四个文件都是指向/dev/sr0的符号连接文件。

[root@www ~]# ll /dev/cd* /dev/dvd*
lrwxrwxrwx. 1 root root 3 319 20:18 /dev/cdrom -> sr0
lrwxrwxrwx. 1 root root 3 319 20:18 /dev/cdrw -> sr0
lrwxrwxrwx. 1 root root 3 319 20:18 /dev/dvd -> sr0
lrwxrwxrwx. 1 root root 3 319 20:18 /dev/dvdrw -> sr0

挂载光盘:

[root@www ~]# mount -r /dev/cdrom /media/cdrom/

挂载本地的回环设备

对于本地的ios镜像文件,可通过挂载本地回环设备的方式进行挂载使用:mount [-o loop] /PATH/TO/SOME_LOOP_FILE MOUNT_POINT

[root@www ~]# mount -r -o loop CentOS-6.8-x86_64-bin-DVD1.iso /mnt
mount: /root/CentOS-6.8-x86_64-bin-DVD1.iso 已经挂载

[root@www ~]# mount -r CentOS-6.8-x86_64-bin-DVD1.iso /mnt

挂载本地目录

mount {-B|--bind} DIR MOUNT_POINT

[root@www ~]# mount -B /etc /mnt

卸载 umount命令

SYNOPSIS:umount device|dir

若文件系统正在被进程访问,则无法卸载,可使用如下方法插卡被哪些进程所占用:
# lsof MOUNT_POINT
# fuser -v MOUNT_POINT

终止所有正在访问某挂载点的进程:
fuser -km MOUNT_POINT


配置/etc/fstab实现开机自动挂载

/etc/fstab文件用于配置系统开机自动挂载文件系统的,每一行为一项自动挂载的文件系统的配置信息,每项包含六个字段,分别为:

  1. 要挂载的设备;

    可以使用分区设备文件,如/dev/sdb1;也可使用卷标,如LABEL="STRING";也可使用UUID,如UUID="STRING";对于虚拟文件系统,可使用sysfs, proc, tmpfs

  2. 挂载点;

    对于swap文件系统,其挂载点为swap

  3. 文件系统类型;

  4. 挂载选项;

    默认挂载选项使用default,多个挂载选项之间可以用逗号隔开。

  5. 转储选项;

0:从不备份;
1:每天备份;
2:每隔一天备份;

  1. 自检次序;

0:不自检;
1:首先自检,通常只能是根文件系统使用1;
2:次级自检;
……


df命令

报告文件系统磁盘空间使用情况。

SYNOPSIS:df [OPTION]... [FILE]...
OPTION:

  • -l:仅显示本地文件的相关信息;
  • -h:human-readable;
  • -i:显示inode的使用状态而非block;
[root@www ~]# df /dev/sda1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 487652 35222 426830 8% /boot

du命令

查看指定文件的大小或指定目录及目录下所有文件的大小总和。

SYNOPSIS:du [OPTION]... [FILE]...

OPTION:

  • -s:sumary;
  • -h:human-readable;