一、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] # 不加任何设备,默认查看所有
# 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保存退出后,内核不会立即识别新分区,此处如果有需要,可以使用命令使内核强制读取。
查看已经读取分区列表:
# 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]
# 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
# e2label /dev/sdb2 MYDATA # e2label /dev/sdb2 DATA # e2label /dev/sdb2 DATA
3、检查及修复文件系统工具
e2fsck
-y:对所有问题自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;
# 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:交互式修复;
# 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:
# dumpe2fs /dev/sdb1
tune2fs:
命令格式:tune2fs [OPTIONS] device
常用参数:
-l:查看超级块的内容;
# tune2fs -l /dev/sdb1
-j:启用日志系统,在ext3以上默认启用,此处仅针对ext2文件系统
-L LABEL:修改卷标;
# 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
# 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:交互式修复;
# fsck -t xfs -a /dev/sdb1 fsck from util-linux 2.23.2 /sbin/fsck.xfs: XFS file system.
C、其他文件系统管理工具
swap管理工具:
# 注意:swap需要在分区时文件系统类型改为82
# 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
# 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,只读挂载;
# mount -r /dev/sdb2 /mnt/ # mkdir /mnt/test mkdir: cannot create directory ‘/mnt/test’: Read-only file system
-w:read and write, 读写挂载,默认为读写挂载
# mount -w /dev/sdb2 /mnt/ # mkdir /mnt/testfile # ls /mnt/ lost+found testfile
-t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;
# 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:挂载时以卷标的方式指明设备;
# 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的方式指明设备;
# 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.
# 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
# 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:可自动挂载定义在此文件中的所支持自动挂载的设备;
实例:
# 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