Linux系统中数据存储在磁盘中,磁盘在冯诺依曼体系中属于输入输出外部存储对象,保存着重要的企业数据,对Linux系统中的磁盘管理尤其需要熟练掌握,由于企业目前使用的主流存储设备还是硬盘,所以这里只叙述硬盘的组织结构;
1.分区:
(1)低级格式化:
硬盘在出厂的时候厂家会做一次分区格式化,主要是划分磁道和的固定大小的扇区,这就是所谓的低级格式化,由厂商完成;
(2)分区作用:
厂家做完低级格式化后,整个磁盘是一个完成完整的物理边界,直接使用当发生故障后,要修复的范围是整个磁盘,同时在整个磁盘上实现对文件系统的管理效率是很低下的,尤其是大空间量的磁盘管理更加困难;可以通过划分分区,划分多个空间作为独立管理对象,在一个相对较小独立的空间中,即提高了故障修复速度,同时也提高了数据管理效率;
(3)分区视角:
通过上面的说明可以看出分区是磁盘空间的逻辑边界;
(4)分区类型:
MBR:主引导记录
这种分区方式通过MBR记录各分区表的信息,开机引导操作系统的方式以及磁盘分区是否可以;具体如下
MBR:总大小512个字节,不参与分区空间划分,记录在磁盘的最开始处;
boot loader:引导加载器,前446byts;
分区表:总大小64bytes,16bytes标识一个分区;所以最多四个分区;
MBR分区类型:可以最多四个主分区或者三个主分区和一个扩展分区;
GPT:GUID(globals unique identfiers)
根据MBR划分主分区的数量限制,满足不了更大磁盘空间管理,所以有了GPT磁盘分区方式,GPT突破了传统可以最大划分128个分区,使用的是64位;分区结构如下:
Protective MBR:GPT分区保护,防止不能识别GPT分区的从而破坏GPT分区数据;
EFI:GPT头
分区表
GPT分区
备份分区
(5)分区工具:
1.查看系统磁盘设备工具:要想管理,首先要知道系统有哪些磁盘可用;方式如下:
lsblk:查看系统磁盘设备情况
[root@xia7 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 488M 0 part /boot ├─sda2 8:2 0 40G 0 part / ├─sda3 8:3 0 20G 0 part /usr ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk ├─sdb1 8:17 0 10G 0 part ├─sdb2 8:18 0 10G 0 part └─sdb3 8:19 0 20G 0 part /tmp/mnt
cat /proc/partitions :查看系统识别的设备信息
[root@xia7 ~]# cat /proc/partitions major minor #blocks name 8 0 209715200 sda 8 1 499712 sda1 8 2 41943040 sda2 8 3 20971520 sda3 8 4 1 sda4 8 5 2098176 sda5 8 32 20971520 sdc 8 33 20970496 sdc1 8 16 104857600 sdb 8 17 10485760 sdb1 8 18 10485760 sdb2 8 19 20971520 sdb3 8 48 20971520 sdd 8 49 20970496 sdd1 11 0 7587840 sr0 8 64 20971520 sde 8 65 20970496 sde1 8 80 20971520 sdf 8 81 20970496 sdf1 253 0 73400320 dm-0
ls -l /dev/sd* :查看系统读取的设备
[root@xia7 ~]# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Aug 30 20:25 /dev/sda brw-rw---- 1 root disk 8, 1 Aug 30 20:25 /dev/sda1 brw-rw---- 1 root disk 8, 2 Aug 30 20:25 /dev/sda2 brw-rw---- 1 root disk 8, 3 Aug 30 20:25 /dev/sda3 brw-rw---- 1 root disk 8, 4 Aug 30 20:25 /dev/sda4 brw-rw---- 1 root disk 8, 5 Aug 30 20:25 /dev/sda5 brw-rw---- 1 root disk 8, 16 Aug 31 09:45 /dev/sdb brw-rw---- 1 root disk 8, 17 Aug 31 09:45 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Aug 31 09:45 /dev/sdb2 brw-rw---- 1 root disk 8, 19 Aug 31 09:45 /dev/sdb3
fdisk -l :查看设备详细信息
[root@xia7 ~]# fdisk -l Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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: 0x000f1359 Device Boot Start End Blocks Id System /dev/sda1 * 2048 1001471 499712 83 Linux /dev/sda2 1001472 84887551 41943040 83 Linux /dev/sda3 84887552 126830591 20971520 83 Linux /dev/sda4 126830592 419430399 146299904 5 Extended /dev/sda5 126834688 131031039 2098176 82 Linux swap / Solaris Disk /dev/sdc: 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: 0xa573c896 Device Boot Start End Blocks Id System /dev/sdc1 2048 41943039 20970496 8e Linux LVM
(6)分区命令fdisk
语法格式:fdisk -l device
Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help):
常用选项解释说明:
m:查看帮助菜单
p:查看分区信息
n:创建分区:其中有子命令
e:创建扩展分区
p:创建主分区:
t:改变其他分区类型;默认为Linux分区
l|L :可以查看创建的分区的类型
d:删除分区;需要指定分区编号,一个默认直接删除;
o:转换磁盘类型为msdos也就是MBR分区
w:保存修改退出
q:不保存修改退出
gdisk工具:专门创建GPT分区命令,使用格式跟fdisk命令使用类似,这里不再介绍;
(7)系统重新读取修改配置命令:
让系统读取设备命令
partprobe [device]
partx -a device
让系统删除已经改变的分区
partx -d device
(8)高级分区parted命令:
这是一个实时生效的非交互式操作命令,实现分区管理
语法格式:
parted [device] [command] [argument]
常用选项:
mklabel gpt|msdos :设置磁盘分区类型
print :查看指定磁盘分区信息;
mkpart parimary 分区编号 分区大小 :创建分区类型指定编号及大小;
rm 分区编号:删除第几个分区
-l :查看所有磁盘信息
文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。
文件系统类型:
这里主要简述常用的Linux系统支持的文件系统类型;
ext系列:ext2,ext3,ext4
xfs
btrfs
reiserfs
光盘:iso9660
上面除了ext2不支持journal日志功能,其他都持续日志功能,同时支持日志的方式也有所不同,这些方式分别有自己特性,不过总的区别是文件安全和性能之间的取舍;
VFS
Linux系统能够支持众多的文件系统并存是因为Linux采用了虚拟文件系统(VFS)
VFS工作原理:
磁盘属于硬件,文件系统是Linux内核kernel的功能,能够真正操作硬盘(硬件)是Linux内核,硬件功能由系统调用systemcall提供,文件操作有open(),read(),write(),close(),create(),delete(),每个文件系统对文件的组织管理是不同的,说明调用方式也有所不同,也就是说管理文件系统的程序要想实现对不同文件系统中的文件操作,必须要把对所有文件系统的操作方式写到程序中,这就势必造成程序显得十分臃肿,为了解决这种现象,Linux
内核通过VFS来磨合多种差异,因为只要让VFS知道对每个文件系统的文件操作方式就行,以一个统一的接口提供给上层跟文件管理操作相关的程序,这就是Linux能够支持众多文件系统的原因;
查看当前内核支持的文件系统:
cat /proc/filesystems
[root@xia7 ~]# cat /proc/filesystems nodevsysfs nodevrootfs nodevbdev nodevproc nodevcgroup nodevcpuset nodevtmpfs nodevdevtmpfs nodevdebugfs nodevsecurityfs nodevsockfs nodevpipefs nodevanon_inodefs nodevconfigfs nodevdevpts nodevramfs nodevhugetlbfs nodevautofs nodevpstore nodevmqueue xfs nodevrpc_pipefs nodevnfsd ext3 ext2 ext4
创建文件系统:
mkfs命令工具:
语法
mkfs.filesystem_type /dev/device
mkfs [option] /dev/device
常用选项:
-t:指定文件系统类型
-L:指定LABEL,卷标
-i:inode
-N:创建多少个inode
-m:预留空间百分比,默认%5,留个系统管理员可操作空间;
mke2fs:创建ext系列文件系统命令工具:
语法格式:
mke2fs [option]…/dev/device
常用选项:
-j:创建ext3相当于-t ext3
-t:创建ext文件系统类型
-L:LABEL
-m:预留空间百分比,默认%5,留个系统管理员可操作空间;
-b:指定block的大小,1024,2048,4096
查看分区文件系统信息:
blkid命令:
语法格式:
blkid [option] /dev/device
[root@xia7 ~]# blkid /dev/sda1: UUID="385fe9f8-1da7-427c-8796-a43a39ea3908" TYPE="xfs" /dev/sda2: UUID="0af6d0c7-d33b-4807-85c1-eb43f2abd6a0" TYPE="xfs" /dev/sda3: UUID="8c33aaa4-511b-443d-b6f8-ef18fc432f48" TYPE="xfs" /dev/sda5: UUID="6cfe3bb8-08ff-450a-957e-dba4ba41ab09" TYPE="swap" /dev/sdb1: UUID="b5feec83-8838-4be8-9dbd-a7e63de2c699" TYPE="ext4" /dev/sdb2: UUID="aee25a1d-1e43-4b33-9a88-625e7d8a2bf6" TYPE="ext4" /dev/sdb3: UUID="60134f39-d392-4f35-a9ef-1eb63db73b0c" TYPE="ext4" /dev/sdd1: UUID="tKcKfd-l4zR-Z930-hyKP-szq8-eLae-usPI4l" TYPE="LVM2_member" /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/myvg/mylv: UUID="ec682d89-d8dc-4f96-8d59-ba30f1b8a6f6" TYPE="ext4"
e2label命令:管理ext系列文件系统卷标命令
语法格式:
e2label [option] /dev/device
[root@xia7 ~]# e2label /dev/sdb3 mydate1 [root@xia7 ~]# e2label /dev/sdb3 mydate1 [root@xia7 ~]#
tune2fs命令:调整ext系列文件系统属性命令
语法格式:
tune2fs [option]… /dev/device
常用选项:
-o:acl
-o:^acl
-L:LABEL
-l:查看设备详细属性
[root@xia7 ~]# tune2fs -o acl /dev/sdb3 tune2fs 1.42.9 (28-Dec-2013) [root@xia7 ~]# tune2fs -l /dev/sdb3 tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: mydate1 Last mounted on: <not available> Filesystem UUID: 60134f39-d392-4f35-a9ef-1eb63db73b0c Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue
findfs :根据分区的UUID和LABEL查分区
findfs [option] LABEL=
findfs [option] UUID=
[root@xia7 ~]# findfs LABEL=mydate1 /dev/sdb3
uuidgen 生成UUID命令
[root@xia7 ~]# uuidgen 4dee18b8-d127-4210-9173-7e8dd02c2e3e
dumpe2fs:查看ext系列文件系统详细信息
语法格式:
dumpe2fs [option] /dev/device
文件系统修复工具:
fsck:修复文件系统命令:
语法格式:
fsck.filesystem_type /dev/device
fsck [option] /dev/device
常用选项:
-r:交互式修复
-a:自动修复
-t:指定文件系统类型
[root@xia7 ~]# fsck.ext4 /dev/sdb2 e2fsck 1.42.9 (28-Dec-2013) mydatedb: clean, 11/655360 files, 83137/2621440 blocks [root@xia7 ~]#
e2fsck:修复ext系列文件系统命令:
语法格式:
e2fsck option [device]
常用选项:
-p:查看文件系统是否正常
-f:强制检查
-y:自动修复
文件系统挂载mount
linux的其他分区文件系统要想使用必须关联至rootfs根文件系统目录下,作为其他分区文件系统的访问入口,关联的目录称为挂载点,关联过程称为挂载,需要使用的命令工具是mount,关机重启时会失效,要想永久有效,需要写入到配置文件/etc/fstab;
mount:挂载命令:
语法格式
mount [option][-o[option]…] 挂载设备 挂载点(目录)
挂载设备
设备名
UUID="UUID"
LABEL="label"
挂载点
注意挂载目录必须事先存在,同时确认挂载目录中没有其他文件,否则挂载成功会隐藏文件
常用选项:
-a:自动挂载/etc/fstab文件中的配置
-n:挂载成功后不把配置信息写入/etc/mtab文件中;
-t:指定挂载设备类型
-r:只读挂载
-w:读写挂载
-o:这个选项有很多其他子命令,列出常用选项
remount:重新挂载
ro:只读挂载
rw:读写挂载
sync/nosync:磁盘写入数据方式,同步还是异步;
suid/nosuid:是否启用suid、sgid特殊权限位;
–bind:简写-B,可以挂载目录
/etc/fstab配置文件语法格式
原创文章,作者:xiashixiang,如若转载,请注明出处:http://www.178linux.com/42599