磁盘管理之文件系统及管理工具
我们在之前的文章中讲到了硬盘的MBR与GPT分区,我们这篇文章来讲一下怎么使用工具对硬盘进行分区,硬盘的分区有什么区别,以及分区的管理。
管理分区
首先我们来看一下分区。那么什么是分区呢?简单的比喻一下,硬盘就像一个大房子,那么在向房间里放东西(比如家具)之前,它需要有一定的结构,划分出不同大小,不同功能的房间(也就像我们的硬盘要划分出不同的硬盘分区来存放数据)。
centos6 划分分区的单位是:柱面开始结束;centos7 以扇区开始结束。
ID 表示类型(分区场景类型),正常83 , 扩展(Extended 扩展)5 ,交换分区82。
查看块设备命令:blkid
[root@localhost ~]# blkid /dev/mapper/vg0-var: UUID="7f5db057-b8d7-43cd-b3dc-045b24c6bd23" TYPE="ext4" /dev/sda1: UUID="c95af470-1451-408d-9902-ca403c2db569" TYPE="ext4" /dev/sda2: UUID="lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz" TYPE="LVM2_member" /dev/mapper/vg0-root: UUID="31c728a6-3443-4a20-90b4-05c04be458e1" TYPE="ext4" /dev/mapper/vg0-swap: UUID="43ad7eb7-5f24-4180-89e1-8bf557f6da30" TYPE="swap" /dev/mapper/vg0-usr: UUID="7ce272b9-6e36-4180-93c8-2fb4ca038e47" TYPE="ext4" /dev/sda3: UUID="62d5b227-642e-4b4f-b133-0de62c291be8" TYPE="xfs" /dev/sda6: UUID="7be8caf3-12e5-4363-b4f6-3f5c850d52b6" TYPE="swap" /dev/sda5: UUID="e9a007df-6175-4187-907e-733407175e99" TYPE="ext4" LABEL="/mnt/sda5"
查看分区:fdisk
fdisk -l
查看单个分区
]# fdisk -l /dev/sda
选项:
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已知ID
w:保存并退出
q:不保存并退出
p:显示现有分区信息
这里需要注意的是:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的分区,内核可能在创建完成后无法直接识别。
查看内核已识别的所有分区:
[root@centos7 bin]# cat /proc/partitions major minor #blocks name 8 0 209715200 sda 8 1 204800 sda1 8 2 104857600 sda2 8 3 4194304 sda3 8 4 1 sda4 8 5 20971520 sda5 11 0 7587840 sr0
这里如果没有识别你可以使用下面的命令来试试重读分区表:
centos5:partprobe[device]
centos6,7:partx,kpartx
partx -a [device]
kpartx -af [device]
[root@centos7 bin]# partx -a /dev/sda partx: /dev/sda: error adding partitions 1-5 [root@centos7 bin]# partx -a /dev/sda partx: /dev/sda: error adding partitions 1-6
文件系统
有了分区之后我们是不是就可以直接使用硬盘写入和读取信息了呢?当然不是,分区需要文件系统来支持。那么什么是文件系统?文件系统是操作系统用于明确存储设备或分区上的文件的方 法和数据结构;即在存储设备上组织文件的方法。操作系统 中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修 改、转储文件,控制文件的存取,安全控制,日志,压缩, 加密等。
了解到什么是文件系统之后我们需要知道都有什么类型的文件系统,以及我们可以在Linux中使用什么类型的文件系统?一起来看下文件系统类型:
Linux文件系统: ext2, ext3, ext4, xfs(SGI), btrfs( Oracle), reiserfs, jfs(AIX), swap
swap: 交换分区
光盘:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2, OCFS2(oracle)
分布式文件系统:ceph, moosefs, mogilefs, glusterfs, Lustre
这么多的文件系统类型我们怎么去加以分类呢?
文件系统分类:
根据其是否支持"journal"功能:
日志型文件系统: ext3, ext4, xfs, …
非日志型文件系统: ext2, vfat
文件系统管理工具:
mkfs
检测修复工具
fsck
检查属性工具
dumpe2fs
查看内核以装载模块
lsmod
(装载到内核是看不见模块的,但能正常使用)
调整文件系统特性
tune2fs
ext系列文件系统的管理工具:mkfs (创建)
mkfs.ext2 mkfs.ext3 mkfs.ext4 向后兼容
mkfs.ext2没有日志功能
这里要注意:格式化会破坏原有数据
我们看下下面的例子:(创建ext2格式的文件系统)
[root@localhost ~]# mkfs.ext2 /dev/sda3 mke2fs 1.41.12 (17-May-2010) Filesystem label= (卷标) OS type: Linux (操作系统类型) Block size=4096 (log=2) (块大小) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655776 inodes, 2622361 blocks (创建了655776个inode,一共有2622361个自盘快) 131118 blocks (5.00%) reserved for the super user (预留5%给超级管理员) First data block=0 Maximum filesystem blocks=2688548864 (最大快编号) 81 block groups (UI共多少个块组) 32768 blocks per group, 32768 fragments per group (每个组内有多少个块) 8096 inodes per group (每一个group内有多少个inode) Superblock backups stored on blocks: (超级快被备份到··) 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
查看对应系统type:
[root@localhost ~]# blkid /dev/sda3 /dev/sda3: UUID="c69362e0-b42e-4b2f-8d45-a8dbd52594b0" TYPE="ext2"
在Centos 6 上默认是不支持xfs文件系统的,需要实现的话要安装xfsprogs;
[root@localhost yum.repos.d]# yum install xfsprogs
安装好软件后我们尝试一下:
[root@localhost yum.repos.d]# mkfs.xfs /dev/sda3 mkfs.xfs: /dev/sda3 appears to contain an existing filesystem (ext4). mkfs.xfs: Use the -f option to force overwrite. [root@localhost yum.repos.d]# mkfs.xfs -f /dev/sda3 meta-data=/dev/sda3 isize=256 agcount=4, agsize=655591 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=2622361, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=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 [root@localhost yum.repos.d]# blkid /dev/sda3 /dev/sda3: UUID="7c524070-0b4e-4535-a1de-14af31663d16" TYPE="xfs"
mkfs工具的选项:
mkfs -t 指定系统类型
mkfs -t ext2 = mkfs.ext2
ext系列文件系统的专用管理工具:mke2fs
mke2fs [options] device
-t {ext2|ext3|ext4}
mkfs -t ext2 = mkfs.ext2 = mke2fs -t ext2
-b {1024|2048|4096} 用于指明系统文件系统的块大小
示例:
[root@localhost yum.repos.d]# mke2fs -b 2048 /dev/sda3 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=2048 (log=1)
-L LABEL :用于指明卷标;
示例:
[root@localhost ~]# mke2fs -t ext4 -L DATA -b 2048 /dev/sda3 mke2fs 1.41.12 (17-May-2010) Filesystem label=DATA OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 657408 inodes, 5244722 blocks 262236 blocks (5.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 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 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. /dev/sda3: LABEL="DATA" UUID="80588779-aedc-4f3d-bf94-ed96dba524b6" TYPE="ext4"
-j : 创建有日志功能的文件系统ext3
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i #: 指定每多少字节准备一个inode
-N #:直接指明要给此文件系统创建的inode的数量
-m :指定为管理人员预留空间所占百分比(默认是5%)
-O FEATURE[,…]:启用指定特性
-O ^FEATURE:关闭指定特性
e2label命令:查看与设定卷标
[root@localhost ~]# e2label /dev/sda3 DATA [root@localhost ~]# e2label /dev/sda3 DATA
查看或修改ext系列文件系统的默写属性:tune2fs
-l :列出超级块中的内容
[root@localhost ~]# tune2fs -l /dev/sda3 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> (卷标) Last mounted on: <not available> (最近一次挂载) Filesystem UUID: 8613385e-c75c-429e-a202-a56d0f7d77f2 (UUID) Filesystem magic number: 0xEF53 (文件系统类型专用标示) Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file (已经启用特性) Filesystem flags: signed_directory_hash Default mount options: (none) (默认挂载特性) Filesystem state: clean (状态,clean正常) Errors behavior: Continue Filesystem OS type: Linux Inode count: 655776 Block count: 2622361 Reserved block count: 131118 (预留块数量) Free blocks: 2575429 (空闲块数量) Free inodes: 655765 (空闲inode数量) First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 640 (预留给GTD大小) Blocks per group: 32768 (每一组多少块) Fragments per group: 32768 Inodes per group: 8096 (每组多少个inode) Inode blocks per group: 506 (每一个组有多少个块放置inode) Filesystem created: Mon Jul 25 12:14:00 2016 Last mount time: n/a Last write time: Mon Jul 25 12:14:00 2016 Mount count: 0 Maximum mount count: 37 Last checked: Mon Jul 25 12:14:00 2016 Check interval: 15552000 (6 months) Next check after: Sat Jan 21 12:14:00 2017 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Default directory hash: half_md4 Directory Hash Seed: 46401477-d447-4687-b242-426481012bba -j:ext2 --> ext3 [root@localhost ~]# tune2fs -j /dev/sda3 tune2fs 1.41.12 (17-May-2010) Creating journal inode: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. /dev/sda3: UUID="8613385e-c75c-429e-a202-a56d0f7d77f2" SEC_TYPE="ext2" TYPE="ext3" [root@localhost yum.repos.d]#
-L:LABEL :修改卷标
-m #:调整预留空间百分比
[root@localhost ~]# tune2fs -m 2 /dev/sda3 tune2fs 1.41.12 (17-May-2010) Setting reserved blocks percentage to 2% (52447 blocks)
-O:调整属性;开启或关闭[^]某种特性
-o[^]mount_options:开启或关闭某种默认挂载选项;例如acl
显示ext系列文件系统的属性信息:dumpe2fs命令
dumpe2fs [选项] device
Group 0: (Blocks 0-32767) Primary superblock at 0, Group descriptors at 1-1 (主superblock在0) Reserved GDT blocks at 2-641 (保留的GDT块在2-641) Block bitmap at 642 (+642), Inode bitmap at 643 (+643) Inode table at 644-1149 (+644) (inode块位于...) 31612 free blocks, 8085 free inodes, 2 directories (空间块,空闲inode) Free blocks: 1156-32767 (空闲块) Free inodes: 12-8096 (可用iNode)
fsck:文件系统检测工具
因进程意外导致崩溃等导致指定操作非正常终止时,可能导致文件损坏;此时应该检测并修复文件系统;但是建议离线进行(即非挂载下进行)
fsck:check and repair a Linux file system
检查和修复Linux文件系统
-t(TYPE):指明文件系统类型
fsck -t ext4 = fsck.ext4
-a:无须交互自动修复所有错误(不建议使用);
-r:交互式修复;
ext系列文件系统的专用工具:e2fsck
e2fsck –> e2fsck – check a Linux ext2/ext3/ext4 file system
e2fsck [选项] device
-y:对所有问题自动回答yes
-f:强制;即使文件系统处于clean状态,也强制进行检测
示例:
[root@localhost ~]# e2fsck -f /dev/sda3 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes 检查inode,块,大小 Pass 2: Checking directory structure 检查目录结构 Pass 3: Checking directory connectivity 检查目录链接性 Pass 4: Checking reference counts 检查引用计数 Pass 5: Checking group summary information 检查簇概要信息 /dev/sda3: 11/655776 files (0.0% non-contiguous), 79733/2622361 blocks
swap文件系统:
Linux上的交换分区必须使用独立的文件系统;且文件系统的systemID必须为82.
创建swap设备:mkswap
mkswap [options] device
-L:指明卷标
-f:强制
交换分区的启用和禁用:
创建交换分区:mkswap
启用swapon
swapon [optine] [device]
-a:所有swap设备
禁用swapoff
swapoff device
交换分区建立、使用:
1)查看硬盘、分区:
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /media/CentOS_6.8_Final sda 8:0 0 100G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 60G 0 part │ ├─vg0-root (dm-0) 253:0 0 20G 0 lvm / │ ├─vg0-swap (dm-1) 253:1 0 2G 0 lvm [SWAP] │ ├─vg0-usr (dm-2) 253:2 0 10G 0 lvm /usr │ └─vg0-var (dm-3) 253:3 0 20G 0 lvm /var ├─sda3 8:3 0 10G 0 part ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 20G 0 part ├─sda6 8:6 0 2G 0 part └─sda7 8:7 0 7.8G 0 part
2)设置/dev/sda6
[root@localhost ~]# fdisk /dev/sda Command (m for help): t Partition number (1-7): 6 Hex code (type L to list codes): 82 Command (m for help): p Disk /dev/sda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 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: 0x000448b1 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM /dev/sda3 7859 9164 10489446 83 Linux /dev/sda4 9165 13054 31246425 5 Extended /dev/sda5 9165 11776 20980858+ 83 Linux /dev/sda6 11777 12038 2104483+ 82 Linux swap / Solaris /dev/sda7 12039 13054 8160988+ 83 Linux Command (m for help): w The partition table has been altered!
3)创建交换分区 /dev/sda6分区
[root@localhost ~]# mkswap /dev/sda6 Setting up swapspace version 1, size = 2104476 KiB no label, UUID=7be8caf3-12e5-4363-b4f6-3f5c850d52b6 [root@localhost ~]# blkid /dev/mapper/vg0-var: UUID="7f5db057-b8d7-43cd-b3dc-045b24c6bd23" TYPE="ext4" /dev/sda1: UUID="c95af470-1451-408d-9902-ca403c2db569" TYPE="ext4" /dev/sda2: UUID="lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz" TYPE="LVM2_member" /dev/mapper/vg0-root: UUID="31c728a6-3443-4a20-90b4-05c04be458e1" TYPE="ext4" /dev/mapper/vg0-swap: UUID="43ad7eb7-5f24-4180-89e1-8bf557f6da30" TYPE="swap" /dev/mapper/vg0-usr: UUID="7ce272b9-6e36-4180-93c8-2fb4ca038e47" TYPE="ext4" /dev/sda3: UUID="62d5b227-642e-4b4f-b133-0de62c291be8" TYPE="xfs" /dev/sda6: UUID="7be8caf3-12e5-4363-b4f6-3f5c850d52b6" TYPE="swap" /dev/sda5: UUID="e9a007df-6175-4187-907e-733407175e99" TYPE="ext4" LABEL="/mnt/sda5"
4)查看swap;启用所有swap分区;再次查看
[root@localhost ~]# free -h total used free shared buffers cached Mem: 3.7G 787M 3.0G 3.4M 72M 317M -/+ buffers/cache: 397M 3.3G Swap: 2.0G 0B 2.0G [root@localhost ~]# swapon /dev/sda6 [root@localhost ~]# free -h total used free shared buffers cached Mem: 3.7G 789M 3.0G 3.4M 72M 317M -/+ buffers/cache: 398M 3.3G Swap: 4.0G 0B 4.0G
完成
mount挂载
mount [-fnrsvw] [-t vfstype] [-o options] device dir
挂载点:mount_point,用于作为另一个文件系统的访问入口,
1)事先存在;
2)使用未被使用或不会被其他进程使用的目录;
3)挂载点下原有的文件将会被隐藏
-r:readonly,只读挂载;
-w:read and write,读写挂载;
-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;
-t:vfstype,指明要挂载的设备上的文件系统的类型;多数情况下省略,mount会通过blkid判断要挂载的设备的文件系统类型;
-L:挂载时以卷标的方式指明设备;
-U:挂载时以UUID的方式指明设备;
挂载选项:-o
sync/async:同步/异步操作;
atime/notime:文件或目录被读取访问时是否更新其访问时间戳;
diratime/nodiratime:目录被访问时是否更新其访问时间戳;
remount:重新挂载;
acl:支持使用facl功能;
( mount -o acl device dir
tune2fs -o acl device)设置acl的两种方式;
ro:只读
rw:读写
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:是否自动挂载;
user/nouser:是否允许普通用户挂载此文件系统;
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
defaults:
Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
查看当前系统所有已挂载的设备:
mount
cat /etc/mtab
cat /proc/mounts
挂载光盘设备:
mount -r /dev/cdrom mount_point
umount卸载
umount device|dir
这里要注意:正在被进程访问的挂载点无法被卸载;
假设需要卸载/mnt,如果进程被占用无法卸载,先使用lsof查看挂载点/mnt被什么进程占用。
lsof /mnt 或 fuwer -v /mnt
使用fuser命令来终止所有正在访问某挂载点的进程。
fuser -km /mnt
我们设置的挂载关机之后下次开机就无法自动挂载上来,那么我们需要怎么设置文件系统开机自动挂载?
设定除根文件系统以外的其他文件系统能开机自动挂载:/etc/fstab
每行定义一个要挂载的文件系统及相关属性:
6个字段:
1)要挂载的设备:
设备文件;LABAL;UUID;伪文件系统:如sysfs,proc等。
2)挂载点:
swap类型的设备的挂载点为swap
3)文件系统类型:
4)挂载选项:
defaults:默认挂载选项;如同时使用多个选项使用“,”分割,如:defaults,acl
5)转储频率:
0:从不转储 1:每天转储 2:每隔一天
6)自检次序:
0:不自检 1:首先自检,通常是根文件 2:次级自检 …
mount -a:可自动挂载定义在此文件中的所有支持自动挂载的设备;
df和du命令
df命令:
df [OPTION]… [FILE]…
df -l:只显示本地文件系统相关信息;
df -h:以人能看懂的格式显示
df -i:显示inode的使用状况
du命令:
显示文件大小
du [OPTION]… [FILE]…
原创文章,作者:zanghonglei,如若转载,请注明出处:http://www.178linux.com/41981
评论列表(1条)
文章总结的很好,从磁盘分区到挂载使用,都由了详细的操作,但对于如何调整文件系统的属性,确实略微带过,这里对于我们来说也是至关重要的,希望多加练习。