我们知道一块磁盘是可以被分区成多个分区的(partition),以Windows的观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘,那个C, D,E就是分区。Linux的设备都是以文件的型态存在,磁盘设备接口的不同也早就了磁盘文件名的不同。即IDE接口的磁盘设备文件名都是/dev/hd[a-z]的格式,例如:/dev/hda./dev/hdb。SCSI, SATA, SAS, USB接口的磁盘设备文件名都是:/dev/sd[a-z],例如sda.sdb,磁盘设备的命名主要是根据Linux核心侦测到磁盘的顺序来进行的,例如你有两块SATA接口的硬盘要插在有六个SATA插槽的主板上,一块插在SATA1接口上一块插在STAT3接口上,因为是使用侦测到的顺序来决定设备文件名,并非与实际插槽代号有关,所以这两块磁盘的命名就是SATA1插槽上为/dev/sda,而SATA3插槽上的为/dev/sdb。那么同一设备上的不同分区表示就是1.2.3.4.5这样,/dev/sda磁盘上的分区命名为/dev/sda1,/dev/sda2….注意:centos6和centos7统统将硬盘设备文件标识为/dev/sda[a-z]#
文件系统是操作系统用于明确存储设备,或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
磁盘分区
两种分区方式: MBR, GPT
早期的 Linux 系统为了兼容Windows的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主要开机纪录区)的方式来处理开机管理程序与分区表!而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是512Bytes的大小(旧的磁盘扇区是512Bytes)所以说,第一个扇区及(0扇区)512Byte会有两个数据;
主要开机记录区(Master Boot Record, MBR):主要用于引导系统启动,有446 Bytes
分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes
由于分区表所在区块仅有64 Bytes容量,而每个分区要占用16Bytes,因此最多仅能记录4个分区,每个记录区记录了该区段的启始与结束的柱面号码。假设这个设备名称为/dev/sda/那么这个4个分区的命名分别是/dev/sda1,sda2,sda3,sda4.而这4个分区又被称为主分区和扩展分区,通常这4个分区为3个主分区和一个扩展分区,而扩展分区又可延伸N个逻辑分区(注意;一旦运用扩展分区,即此扩展分区不在存储实际数据,而是存储指向逻辑分区的信息,逻辑分区的设备名只能从5开始。)
GPT支持128个分区,已经没有所谓的主、延伸、逻辑分区的概念,每个都可以视为是主分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)GPT磁盘分区结构解决了MBR只能分4个主分区的的缺点,并且支持大硬盘,分区结构清晰简单而且有备份。
使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
结构如;
保护MBR区:与 MBR 模式相似的,记录开机引导信息程序。
GPT头:这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的GPT分区放置的位置,同时放置了分区表的检验码(CRC32),操作系统可以根据这个检验码来判断GPT是否正确。若有错误,还可以通过这个纪录区来取得备份的GPT(磁盘最后的那个备份区块) 来恢复GPT的正常运行!
分区表:实际记录分区信息处
管理分区
工具;fdisk,parted,sfdisk
fdisk 创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区
gdisk 创建GPT分区
GNU parted 高级分区操作(创建、复制、调整大小等等)
partprobe-重新设置内存中的内核分区表版本
fdisk /dev/sdb
gdisk /dev/sdb 类fdisk 的GPT分区工具
lsblk:查看当前所有磁盘分区情况
fdisk命令
fdisk -l [-u] [device…]:列出指定磁盘设备上的分区情况;查看磁盘的分区信息
]# fdisk -l /dev/sda Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 15666 125316096 8e Linux LVM
上面可看到设备名称是/dev/sda,大小为128G,等信息….,下边一栏则显示的是分区信息,可看到目前有两个分区,分别sda1和sda2,而sda1作为了系统的引导分区,开始柱面为1,结束柱面为64,块大小,分区类型ID等等…(注意;对cenots6来说start是开始柱面,End是结束柱面,对centos7来说start是开始扇区,End是结束扇区)
fdisk device(设备)
fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有操作均在内存中进行,没有直接同步到磁盘;直到使用w命令保存到磁盘上才会生效
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已知id
w:保存并且退出
q:不保存并退出
m:查看帮助信息
p:显示现有分区信息
示例
~]# fdisk /dev/sda Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (7859-15665, default 7859): Using default value 7859 Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G Command (m for help): n Command action e extended p primary partition (1-4) e Selected partition 4 First cylinder (9165-15665, default 9165): Using default value 9165 Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): Using default value 15665 Command (m for help): n First cylinder (9165-15665, default 9165): Using default value 9165 Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): +10G Command (m for help): w ~]# partx -a /dev/sda
重读分区表
创建后
partx -a /device
删除后
partx -d -n M:N /dev/DEVICE
centos6: –nr N-M
CentOS 5, 7: 使用partprobe
partprobe [/dev/DEVICE]
也可在fdisk交互界面进行删除分区动作
swap交换分区
交换分区是系统RAM的补充
linux上的交换分区必须使用独立的文件系统
且文件系统的system id 必须为82
创建swap设备:mkswap命令
mkswap [option] device
-L label:指明卷标
-f:强制
交换分区的启用和禁用:
启用:swapon
swap [option][option]
使用swapon -a 激活交换空间:定义在/etc/fstab文件中的所有swap设备
禁用:swapoff
swapoff device
findfs :查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
]# findfs UUID=40ad1cd6-2e57-422d-9af7-1015a582636d /dev/sdb1
管理文件系统:
Linux文件系统: : ext2(Extended file system), ext3,ext4, xfs( SGI) , btrfs( Oracle) , reiserfs, jfs(AIX) , swap
光盘: iso9660
Windows: fat32, ntfs
Unix: FFS( fast) , UFS( unix) , JFS2
网络文件系统: NFS, CIFS
集群文件系统: GFS2, OCFS2( oracle)
分布式文件系统: ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未经处理或者未经格式化产生的文件系统
文件系统的组成部分:
文件系统驱动:由内核提供,
文件系统管理工具:由用户空间的应用程序提供
如果一个文件系统想要在系统上运行起来的话,必须要装载对应的模块
lsmod:查看当前系统内核已经装载的模块,如果内核相应识别一个文件系统,必须先装载这个模块
创建文件系统的工具
mkfs;
mkfs.ext2(无日志功能),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat…
centos6如果使用xfs文件系统,需要安装(xfsgrogs)
再次执行mkfs.ext3 /dev/sda6,将ext2文件系统格式化为ext3。
当然了也可以再次格式话为ext4格式,ext4格式同样支持日志功能,而且在单个文件和单个文件系统的大小比ext3性能更强大
centos6 默认不支持xfs
如果要安装得先安装xfsprogs工具;可用yum进行安装,然后在执行]# mkfs.xfs /dev/sda6 -f 强制将文件系统格式化为xfs格式
检测及修复文件系统的工具
fsck:check and repair a Linux file system(通用所有文件系统)使用此修复功能必须先取消挂载,要不会然会破坏数据
修复的工作特性就是把不连续的文件删除进行的。
-t fstype:指明文件系统类型
fsck -t ext4 = fsck.ext4
-a:无需交互而自动档修复所有错误;(不建议)
-r: 交互式修复;
windows文件系统
#mkfs.vfat device
windows无法识别linux的文件系统;因此,存储设备需要两种系统之间交叉使用时,应该使用windows和linux同时支持的文件系统;fat32(vfat);
blkid命令:可查看文件系统类型
blkid /dev/sda#
blkid -L label:根据label定位为设备
blkid -U UUID:根据UUID定位设备
每一个设备都有一个随机的UUID;全局唯一标识符
lsblk命令
lsblk /device:查看磁盘分区类型
-f :磁盘分区类型和文件系统类型一起显示
ext系列文件系统的管理工具:
mkfs.两次tab可看到多种文件系列
mkfs.ext2,mkfs.ext3,mkfs.ext4(向前兼容较老的版本)
mkfs -t ext2=mkfs.ext2
ext2:没有日志功能,ext3,4有日志功能,ext4性能有很大提升,建议使用ext4文件系统
命令
mkfs.ext2 /dev/sda#(敲下回车,及完成格式化文件系统)
mke2fs;
mke2fs [ option] device
-t{ext2|ext3|ext4}:指明要创建的文件系统类型
mkfs.etx4=mkfs -t ext4=mke2fs -t ext4
-b{1024|2048|4096}:指明文件系统的块大小;
-L LABEL:指明卷标;
-j:创建有日志功能的文件系统ext3;
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i#:bytes-per-inode:指明inode与字节的比率;即每多少字节创建一个inode
-N#:直接指明要给此文件系统创建的inode的数量;
-m#:指定预留的空间,百分比;
-O[^]FEATURE:以指定的特性创建目标文件系统,不加^表示启用此特性,加^表示关闭此特性
创建文件系统后回显信息;
e2label命令:卷标的查看与设定
查看:e2label device
设定:e2label device LABEL
tune2fs命令:查看或修改ext系统文件系统的某些属性
adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems:
注意:块大小创建后不可修改
tune2fs [option]device
-l:查看超级块的内容;
修改指定文件系统的属性
-j:ext2 –>ext3
增加了日志功能,实际操作就是把ext2改为ext3
-L:LABEL:修改卷标
-m #:调整预留空间百分比
-O[^]FEATHER:开启或关闭某种特性;
-o[^]mount_option:开启或关闭某种默认挂载选项
acl
^acl
dumpe2fs命令:显示ext系列文件系统的属性信息
dumpe2fs [-h]device和tune2fs -l /device效果一样
查看超级块信息(分组信息),分区用分组管理
实现文件系统检测的工具
因进程意外终止或系统崩溃等原因导致写入操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行
e2fsck:check a Linux ext2/ext3/ext4 file system(ext系列文件专用的检测修复工具)
e2fsck[option]device
-y:对所有问题自动回答为yes
-f:强制修复;即使文件系统处于clean状态,也要强制进行检测
使用文件系统:
首先要挂载:mount(挂载)命令和umount(卸载)命令
跟文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;
挂载点需要具备一下条件:mount_point,用于作为另一个文件系统的访问入口
(1)事先存在
(2)应该使用未被或不会被其他进程使用到的目录
(3)挂载点下原有的文件将会被隐藏;
mount命令:
mount [-nrw][-fnrsvw] [-t vfstype] [-o options] device dir
使用不带任何选项的mount命令可以显示当前所有已经挂载了的文件系统
设备挂载或卸
命令选项:
-r:readonly,只读挂载;
-w:read and write,读写挂载
-n:默认情况下,载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;
-t vfstype:指明要挂载的设备上的文件系统类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型
-L LABEL:挂载时以卷标方式指明设备;
mount -L LABEL dir
-U UUID:挂载时以UUID方式指明设备;
-o option:挂载选项,多个选项之间用逗号隔开
默认挂载选项以外的选项才会显示在/etc/mtab和/proc/mounts中
sync/async:同步/异步操作;
atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
diratime/nodirname:目录在被访问时是否更新其访问时间戳;
remount:重新挂载
acl:支持使用facl功能
#mount -o acl device dir
#tune2fs -o acl device
ro:只读
rw:读写
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:是否支持自动挂载,是否支持-a选项
user/nouser:是否允许普通用户挂载此文件系统;
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效
mount –bind 源目录 目标目录(可以实现将目录绑定在另一个目录上,作为其临时访问入口;)
defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.(不加任何选项的默认挂载生效的选项)
查看当前系统上所有已挂载的设备
#mount
#cat /etc/matb
#cat /proc/mounts
挂载光盘;
mount -r /dev/cdrom mount_point
===================================================================
光盘设备文件:/dev/cdrom
挂载U盘:
实现识别u盘的设备文件;
====================================================================
umount卸载命令:
umount device|dir
注意:正在被进程访问到的挂载点无法被卸载;
查看被哪个或者哪些进程所用:
#lsof mount_point
#fuser -v mount_point
=====================================================================
终止所有正在访问某挂载点的进程
#fuser -km mount_point
=====================================================================
挂载本地的回环设备;
#mount -o loop /path/to/some_loop_file mount_point
======================================================================
设定除了根文件系统以外的其他文件系统能够开机时自动挂载:/etc/fstab文件
]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Aug 24 19:00:44 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 # /dev/mapper/vg0-root / ext4 defaults 1 1 UUID=8eba0853-3403-459b-9021-b3fc0da22d99 /boot ext4 defaults 1 2 /dev/mapper/vg0-usr /usr ext4 defaults 1 2 /dev/mapper/vg0-var /var ext4 defaults 1 2 /dev/mapper/vg0-swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
每行定义一个要挂载的文件系统及其相关属性
6个字段:
(1)要挂载的设备
设备文件
LABEL
UUID
伪文件系统:如sysfs,proc,tmpts
(2)挂载点
swap类型的设备的挂载点为swap
(3)文件系统类型:
(4)挂载选项
defaults:使用默认挂载选项:
如果要同时指明多个挂载选项,彼此间以逗号分隔
(5)转储频率(备份)
0:从不备份
1:每天备份
2:每隔一天备份
(6)自检次序
0:不自检
1:首先自检,通常只能是根文件系统可用1
2:次级自检
mount -a :可自动挂载定义在此文件中的所支持自动挂载的设备;
df和du补充
df命令:
df[option]…[file]
-l:仅显示本地文件的相关信息
-h:human-readable
-i:显示inode的使用状态而非blocks
============================================
du命令:查看目录大小
du[option]…[file]
-s:sumary
-h:human-readble
]# du -sh /root/ 78M /root/
命令整理
原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/40037
评论列表(1条)
文章对各命令的作用,用法和常用选项总结的很完整,建议下来多加作,尝试着灵活运用这些工具来实现,分区的创建与格式化并挂载使用。多动手才能明白自己的不足哦。