一、CentOS 7磁盘及文件系统特性
在CentOS 7,不管是IDE硬盘还是SATA硬盘,在linux里面的硬盘设备文件标识都为/dev/sd[a-z]。(当然这一特性在CentOS 6中就已经实现)
CentOS 7默认使用的文件系统为xfs。
二、磁盘分区管理工具
磁盘分区管理工具有很多,在CentOS 7上也支持传统的fdisk工具,还有parted,sfdisk,本文以fdisk介绍,如果对parted、sfdisk等工具有兴趣可以看我的另外一篇博客:http://xinzong.blog.51cto.com/10018904/1750472 浅谈在Linux中磁盘超出2T的管理方式
fdisk命令:
fdisk -l [-u] [device...]
1、查看分区表信息
fdisk -l [device] # 不加任何设备,默认查看所有
1
2
3
4
5
6
7
8
9
10
|
# fdisk -l /dev/sda
Disk
/dev/sda
: 128.8 GB, 128849018880 bytes, 251658240 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: 0x000b0d11
Device Boot Start End Blocks Id System
/dev/sda1
* 2048 1026047 512000 83 Linux
/dev/sda2
1026048 251658239 125316096 8e Linux LVM
|
2、管理分区
fdisk提供了一个交互式的借口来管理分区,他有许多子命令,分别实现不同管理功能;特点是在内存中完成,不直接同步到硬盘上,可通过w来保存。
常用命令:
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已经ID
w:保存并退出
q:不保存并退出
m:查看帮助信息
p:显示现有分区信息
注意:使用w保存退出后,内核不会立即识别新分区,此处如果有需要,可以使用命令使内核强制读取。
查看已经读取分区列表:
1
2
3
4
5
6
7
8
9
10
11
12
|
# cat /proc/partitions
major minor
#blocks name
8 16 20971520 sdb
8 17 5242880 sdb1
8 18 5242880 sdb2
8 0 125829120 sda
8 1 512000 sda1
8 2 125316096 sda2
11 0 7413760 sr0
253 0 52428800 dm-0
253 1 2097152 dm-1
253 2 70721536 dm-2
|
通知内核强制重读磁盘分区表:
CentOS 5:partprobe [device]
CentOS 6,7:partx, kpartx
partx -a [device]
kpartx -af [device]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# partx -a /dev/sdb
partx:
/dev/sdb
: error adding partitions 1-4
# cat /proc/partitions
major minor
#blocks name
8 16 20971520 sdb
8 17 5242880 sdb1
8 18 5242880 sdb2
8 19 5242880 sdb3
8 20 1 sdb4
8 0 125829120 sda
8 1 512000 sda1
8 2 125316096 sda2
11 0 7413760 sr0
253 0 52428800 dm-0
253 1 2097152 dm-1
253 2 70721536 dm-2
|
三、文件系统管理
创建文件系统,就是对分区进行格式化,格式化分为:低级格式化(分区之前进行,划分磁道)、高级格式化(分区之后对分区进行,创建文件系统),一般低级格式化都有硬盘厂商来完成。
文件系统管理工具:
A、ext系列文件系统管理工具:
1、创建文件系统工具
mkfs系列(mkfs.ext2, mkfs.ext3, mkfs.ext4)
# mkfs系列的使用方法比较简单,没有过多参数
mke2fs:
使用格式: mke2fs [OPTIONS] device
常用命令参数:
-t {ext2|ext3|ext4}:指明要创建的文件系统类型
mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
-b {1024|2048|4096}:指明文件系统的块大小;
-L LABEL:指明卷标;
-j:创建有日志功能的文件系统ext3;
# mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
2、卷标查看与设定
e2label
1
2
3
4
5
|
# e2label /dev/sdb2
MYDATA
# e2label /dev/sdb2 DATA
# e2label /dev/sdb2
DATA
|
3、检查及修复文件系统工具
e2fsck
-y:对所有问题自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;
1
2
3
4
5
6
7
8
9
10
11
|
# e2fsck /dev/sdb2
e2fsck 1.42.9 (28-Dec-2013)
DATA: clean, 11
/655360
files, 204238
/10484736
blocks
# e2fsck -yf /dev/sdb2
e2fsck 1.42.9 (28-Dec-2013)
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
DATA: 11
/655360
files (0.0% non-contiguous), 204238
/10484736
blocks
|
fsck:
-t fstype:指明文件系统类型;
fsck -t ext4 = fsck.ext4
-a:无须交互而自动修复所有错误;
-r:交互式修复;
1
2
3
4
|
# fsck -t ext4 /dev/sdb1
fsck
from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdb1
: clean, 11
/196608
files, 31036
/786432
blocks
|
4、查看修改ext系列文件的某些属性
dumpe2fs:
1
|
# dumpe2fs /dev/sdb1
|
tune2fs:
命令格式:tune2fs [OPTIONS] device
常用参数:
-l:查看超级块的内容;
1
|
# tune2fs -l /dev/sdb1
|
-j:启用日志系统,在ext3以上默认启用,此处仅针对ext2文件系统
-L LABEL:修改卷标;
1
2
3
4
5
6
|
# e2label /dev/sdb1
MYDATA
# tune2fs -L TESTDATA /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
# blkid /dev/sdb1
/dev/sdb1
: LABEL=
"TESTDATA"
UUID=
"2ca4b66c-3e37-460d-a300-022e916413a8"
TYPE=
"ext4"
|
-m #:调整预留空间百分比,默认为5%;
# 此操作一般在硬盘比较大的场景中适用
-O [^]FEATHER:开启或关闭某种特性;
-o [^]mount_options:开启或关闭某种默认挂载选项
B、xfs文件系统管理工具:
创建文件系统工具:
1、mkfs.xfs
1
2
3
4
5
6
7
8
9
10
|
# mkfs.xfs -f /dev/sdb1
meta-data=
/dev/sdb1
isize=256 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
|
修复文件系统工具:
2、fsck
-t fstype:指明文件系统类型;
-a:无须交互而自动修复所有错误;
-r:交互式修复;
1
2
3
|
# fsck -t xfs -a /dev/sdb1
fsck
from util-linux 2.23.2
/sbin/fsck
.xfs: XFS
file
system.
|
C、其他文件系统管理工具
swap管理工具:
# 注意:swap需要在分区时文件系统类型改为82
1
2
3
4
5
6
7
8
9
10
11
12
|
# fdisk -l /dev/sdb
Disk
/dev/sdb
: 21.5 GB, 21474836480 bytes, 41943040 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: 0x7a37859b
Device Boot Start End Blocks Id System
/dev/sdb1
2048 20973567 10485760 83 Linux
/dev/sdb2
20973568 41943039 10484736 82 Linux swap / Solaris
|
格式化:mkswap
启用/禁用:swapon、swapoff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# mkswap /dev/sdb2
mkswap:
/dev/sdb2
: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 10484732 KiB
no label, UUID=f21d2d05-a2c7-49ab-b7fd-202ceceb182c
# free -m
total used
free
shared buff
/cache
available
Mem: 977 136 673 6 167 685
Swap: 2048 0 2048
# swapon /dev/sdb2
# free -m
total used
free
shared buff
/cache
available
Mem: 977 144 666 6 167 677
Swap: 12287 0 12287
# swapoff /dev/sdb2
# free -m
total used
free
shared buff
/cache
available
Mem: 977 136 673 6 167 685
Swap: 2048 0 2048
|
四、文件系统使用
在Linux中文件系统想要使用,需要挂载,挂载分为临时挂载(重启后不能继续使用,需要重新挂载)、永久挂载(卸载配置文件中)。
1、临时挂载
说mount之前说一下umount,因为期间可能会用到,方便朋友们理解
a、umount:卸载
umount {dir|device}
查看被哪个或哪些进程所战用:
# lsof MOUNT_POINT
# fuser -v MOUNT_POINT
终止所有正在访问某挂载点的进程:
# fuser -km MOUNT_POINT
2、mount命令:
mount [-nrw] [-t vfstype] [-o options] device dir
选项:
-r:readonly,只读挂载;
1
2
3
|
# mount -r /dev/sdb2 /mnt/
# mkdir /mnt/test
mkdir
: cannot create directory ‘
/mnt/test
’: Read-only
file
system
|
-w:read and write, 读写挂载,默认为读写挂载
1
2
3
4
|
# mount -w /dev/sdb2 /mnt/
# mkdir /mnt/testfile
# ls /mnt/
lost+found testfile
|
-t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;
1
2
3
4
5
6
7
8
9
10
11
12
|
# mount -t xfs /dev/sdb2 /mnt
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2
xfs 40G 247M 40G 1% /
devtmpfs devtmpfs 475M 0 475M 0%
/dev
tmpfs tmpfs 489M 0 489M 0%
/dev/shm
tmpfs tmpfs 489M 6.8M 483M 2%
/run
tmpfs tmpfs 489M 0 489M 0%
/sys/fs/cgroup
/dev/sda3
xfs 20G 2.6G 18G 13%
/usr
/dev/sda1
xfs 497M 138M 359M 28%
/boot
tmpfs tmpfs 98M 0 98M 0%
/run/user/0
/dev/sdb2
xfs 10G 33M 10G 1%
/mnt
|
-L LABEL:挂载时以卷标的方式指明设备;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# blkid /dev/sdb2
/dev/sdb2
: LABEL=
"MYDATA"
UUID=
"ddbd612d-3830-49ba-86ce-65ba1519f6ae"
TYPE=
"xfs"
# mount -L MYDATA /mnt
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2
xfs 40G 247M 40G 1% /
devtmpfs devtmpfs 475M 0 475M 0%
/dev
tmpfs tmpfs 489M 0 489M 0%
/dev/shm
tmpfs tmpfs 489M 6.8M 483M 2%
/run
tmpfs tmpfs 489M 0 489M 0%
/sys/fs/cgroup
/dev/sda3
xfs 20G 2.6G 18G 13%
/usr
/dev/sda1
xfs 497M 138M 359M 28%
/boot
tmpfs tmpfs 98M 0 98M 0%
/run/user/0
/dev/sdb2
xfs 10G 33M 10G 1%
/mnt
|
-U UUID:挂载时以UUID的方式指明设备;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# umount /dev/sdb2
# blkid /dev/sdb2
/dev/sdb2
: LABEL=
"MYDATA"
UUID=
"ddbd612d-3830-49ba-86ce-65ba1519f6ae"
TYPE=
"xfs"
# mount -U ddbd612d-3830-49ba-86ce-65ba1519f6ae /mnt
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2
xfs 40G 247M 40G 1% /
devtmpfs devtmpfs 475M 0 475M 0%
/dev
tmpfs tmpfs 489M 0 489M 0%
/dev/shm
tmpfs tmpfs 489M 6.8M 483M 2%
/run
tmpfs tmpfs 489M 0 489M 0%
/sys/fs/cgroup
/dev/sda3
xfs 20G 2.6G 18G 13%
/usr
/dev/sda1
xfs 497M 138M 359M 28%
/boot
tmpfs tmpfs 98M 0 98M 0%
/run/user/0
/dev/sdb2
xfs 10G 33M 10G 1%
/mnt
|
-o options:挂载选项
sync/async:同步/异步操作;
atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
remount:重新挂载;
acl:支持使用facl功能;
# mount -o acl device dir
# tune2fs -o acl device
ro:只读
rw:读写
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:
user/nouser:是否允许普通用户挂载此文件系统;
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效; 有一个默认选项:defaults 其中包含: rw, suid, dev, exec, auto, nouser, async, and relatime.
1
2
3
4
5
6
7
8
9
|
# mount -o remount,ro,rw,auto,atime /dev/sdb2
# mount |tail -1
/dev/sdb2
on
/mnt
type
xfs (rw,relatime,attr2,inode64,noquota)
# mount -o remount,defaults /dev/sdb2
# mount |tail -1
/dev/sdb2
on
/mnt
type
xfs (rw,relatime,attr2,inode64,noquota)
|
2、永久挂载既:设定除根文件系统以外的其它文件系统能够开机时自动挂载
自动挂载文件:/etc/fstab
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar 4 08:36:03 2016
#
# 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 / xfs defaults 0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a
/boot
xfs defaults 0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0
/usr
xfs defaults 0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap swap defaults 0 0
/dev/sdb2
/mnt
xfs defaults 0 0
|
/etc/fstab下面分为6个字段:
1、要挂载的设备(可以使用LABEL、UUID、设备文件)
2、挂载点
3、文件系统类型
4、挂载选项(defaults使用默认挂载选线,如需同时指明,则:defaults,acl) 5、转储频率
0:从不备份
1:每天备份
2:每隔一天备份
6、自检次序
0:不自检
1:首先自检,通常只用于根文件系统
2:次级自检
mount -a:可自动挂载定义在此文件中的所支持自动挂载的设备;
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2
xfs 40G 247M 40G 1% /
devtmpfs devtmpfs 475M 0 475M 0%
/dev
tmpfs tmpfs 489M 0 489M 0%
/dev/shm
tmpfs tmpfs 489M 6.8M 483M 2%
/run
tmpfs tmpfs 489M 0 489M 0%
/sys/fs/cgroup
/dev/sda3
xfs 20G 2.6G 18G 13%
/usr
/dev/sda1
xfs 497M 138M 359M 28%
/boot
tmpfs tmpfs 98M 0 98M 0%
/run/user/0
# vim /etc/fstab #此处使用vim进行编辑,结果如下输出
# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar 4 08:36:03 2016
#
# 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 / xfs defaults 0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a
/boot
xfs defaults 0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0
/usr
xfs defaults 0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap swap defaults 0 0
/dev/sdb2
/mnt
xfs defaults 0 0
# mount -a
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2
xfs 40G 247M 40G 1% /
devtmpfs devtmpfs 475M 0 475M 0%
/dev
tmpfs tmpfs 489M 0 489M 0%
/dev/shm
tmpfs tmpfs 489M 6.8M 483M 2%
/run
tmpfs tmpfs 489M 0 489M 0%
/sys/fs/cgroup
/dev/sda3
xfs 20G 2.6G 18G 13%
/usr
/dev/sda1
xfs 497M 138M 359M 28%
/boot
tmpfs tmpfs 98M 0 98M 0%
/run/user/0
/dev/sdb2
xfs 10G 33M 10G 1%
/mnt
|