系统学习----Linux磁盘分区管理;文件系统介绍、挂载及管理

一、磁盘基础知识

Linux: 一切皆文件 磁盘-块设备文件 b
系统库文件可以调用(与文件相关的): open() read() write() close()


块设备文件: block 存取单位: 块 -> 磁盘
字符设备文件: char 存取段位:字符


设备文件: 关联至一个驱动程序,进而能够与之对应设备进行通信

设备号:
主设备号: 标识设备类型
次设备号: 标识同一类型下的不同设备


磁盘接口类型

并行:
	IDE: 133MB/s
	SCSI : 640MB/s
串行:
	SATA: 6Gbps
	SAS: 6Gbps 
	USB: 480MB/s

磁盘设备命名:

IDE : /dev/hd.
SCSI,SATA,SAS,USB : /dev/sd.

不同设备: a-z  
同一设备上的不同分区: 1,2,3...

分区方式:

MBR(默认方式):使用32位表示扇区数,分区不超过2T,按柱面进行分区,
4个主分区:3个主分区+1扩展分区(N多逻辑分区)
GPT:支持128个分区,使用64位,使用128UUID表示磁盘和分区,GPT分区表
能够自动备份头尾两份

分区管理命令:

分区管理命令: fdisk(建议)| parted
fdisk和parted区分: fdisk所有在操作只有最后进行保存才生效;parted每执行的操作都立即生效

fdisk命令:

对于一块硬盘来说最多管理15个分区

[root@test ~]# fdisk --help
fdisk: invalid option -- '-'
Usage:
 fdisk [options] <disk>    change partition table	编辑某块磁盘的分区
 fdisk [options] -l <disk> list partition table(s)	列出某块磁盘的分区表
 fdisk -s <partition>      give partition size(s) in blocks  查看某个分区的block大小
  • fdisk <device>
    子命令:
    d delete a partition # 删除分区
    g create a new empty GPT partition table # 创建新分区(分区格式:GPT)
    l list known partition types # 列出所有分区类型及其ID号
    n add a new partition # 创建新分区
    p print the partition table # 打印分区表
    q quit without saving changes # 直接退出
    t change a partition’s system id # 改变指定分区的分区类型
    w write table to disk and exit # 保存并退出

parted命令

[root@test ~]# parted --help
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
	COMMAND
		mklabel,mktable LABEL-TYPE        create a new disklabel 创建新磁盘标签(改变分区格式)
		print [devices|free|list,all|NUMBER]     display the partition table 打印分区列表
		mkpart PART-TYPE [FS-TYPE] START END     make a partition  创建新分区 
		rm NUMBER                                delete partition NUMBER  删除指定分区
		
[root@test ~]# parted /dev/sdb mkpart primary 2 10M

查看分区:

查看内核中是否已经识别到新的分区:

[root@test ~]# cat /proc/partitions 

通知内核重新获取磁盘分区表:

[root@test ~]# partx -a /dev/<device>
[root@test ~]# partprobe [/dev/device]

步骤
添加磁盘 --> 磁盘格式化(选择分区格式)–> 分区 --> 通知内核重新获取磁盘分区
—> 文件系统格式化 —> 挂载

二、文件系统介绍及管理

文件系统基础知识

文件系统: 简单理解成数据存储在硬盘上的组织方式
Linux文件系统:ext2 ext3 ext4 xfs btrfs …
swap: 交换分区
光盘: iso9660

Windows: fat32 nfs …
Unix: FFS UFS …
网络文件系统: NFS CIFS
集群文件系统: GFS2 OCFS2
分布式文件系统: Ceph GlusterFS…

  • 根据是否支持"journal"功能
    日志型文件系统:ext3 ext4 xfs btrfs
    非日志型文件系统: ext2 vfat

文件系统的组成部分:
内核中的模块: ext2/3/4 xfs …
用户空间的管理命令: mkfs ext4 xfs mkfs.vfat …

Linux虚拟文件系统: VFS (/proc/ 虚拟文件系统: 查看系统内核相关参数及属性信息)

文件系统管理

管理命令:mkfs / mkfs2fs /mkswap

mkfs命令:

[root@test ~]# mkfs -h
Usage:
mkfs [options] [-t <type>] [fs-options] <device> [<size>]
	-t <type> : 指定文件系统类型
	<device> : 指定分区

FS_TYPE: (支持的文件系统类型:) ext4 xfs btrfs vfat …

其他写法:等同于-t指定文件系统类型

[root@test ~]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.minix   
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.xfs     

格式化/dev/sdb1;其文件系统为:ext4

[root@test ~]# mkfs -t ext4 /dev/sdb1 

mke2fs命令:ext系列文件系统专用管理工具

[root@test ~]# mke2fs --help

常用参数:
	-t <FS_TYPE> : 指定文件系统类型
	-b [1024|2048|4096] : 指定block数
	-L ‘Label’
	-j : 相当于 -t ext3 
	-I # : 为数据空间中每#字节创建inode;此大小不应该小于block数的大小
	-N # : 为数据空间创建#个inode
	-m # : 为管理人员预留的空间占据的百分比
	-O Feature... : 启用指定特性
	-O ^Feature... : 关闭指定特性

mkswap命令:创建交换分区

常用方法:
mkswap device
-L “Label”

如果想要创建swap分区: 提前需要调整分区类型为swap(ID=82)

blkid命令:查看块设备属性信息

Usage:
blkid -L

e2label命令: 管理ext系列文件系统的LABEL

[root@test ~]# blkid /dev/sdb1
/dev/sdb1: UUID="45136d17-4ce6-4c03-aebc-076821b408ca" TYPE="ext4" 
[root@test ~]# blkid -i /dev/sdb1
DEVNAME=/dev/sdb1
MINIMUM_IO_SIZE=512
PHYSICAL_SECTOR_SIZE=512
LOGICAL_SECTOR_SIZE=512
[root@test ~]# blkid -p /dev/sdb1

文件系统检测工具: fsck , e2fsck

fsck命令: 检测文件系统

常用方法:
fsck.FS_TYPE
fsck -t <FS_TYPE>
-a : 自动修复错误
-r : 交互式修复错误

Note: FS_TYPE 一定要与分区上已经的文件系统类型相同

e2fsck命令: ext系列文件专用的检测工具

-y : 自动回答为yes
-f : 强制修复

三、文件系统挂载及管理

挂载:将一个设备(通常是存储设备)挂载一个已经存在的目录上,我们要访问存储
设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过
访问这个目录来访问存储设备

卸载: 解除挂载的关联关系

Note: 挂载点下的原有文件在挂载完成之后都被临时隐藏(挂载点选用空目录)


  • 挂载: mount命令
    mount: 显示当前系统已经挂载的所有设备
[root@test ~]# mount --help
Usage:
 mount [-lhV]
 mount -a [options]
 mount [options] [--source] <source> | [--target] <directory>
 mount [options] <source> <directory>
 mount <operation> <mountpoint> [<target>]
	<source: device>: 指明要挂载的设备
		(1) 设备文件: 例如: /dev/sdb1 
		(2) 卷标: -L "Label"
		(3) UUID 
		(3) 伪文件系统名称: proc | sysfs | configfs 
	
	<directory>: 挂载点 
		事先存在;建议使用空目录

常用选项:
-t fs_type: 指定要挂载的设备上的文件系统类型
-r :readonly 只读形式挂载
-w :读写形式挂载
-n : 不更新/etc/mtab
-a :自动挂载所有支持自动挂载的设备(定义在/etc/fstab文件中,且挂载选项有“自动挂载”)
-L “Label”: 以卷标方式挂载
-U “UUID”: 以UUID方式挂载
-B :绑定目录到另一个目录上

Note: 查看内核追踪到的已挂在所有设备: /proc/mounts

-o [options] : 指定挂载文件系统的选项

options:
	async: 异步模式
	sync: 同步模式
	atime/noatime : 包含目录和文件
	diratime/nodiratime: 目录的访问时间戳
	auto/noauto: 是否支持自动挂载 
	exec/noexec: 是否支持将文件系统上的应用程序运行为进程
	dev/nodev: 是否支持在此文件系统上使用设备文件
	suid/nosuid: 是否支持suid特殊权限
	remount: 重新挂载
		ro 
		rw 
		user/nouser: 是否支持普通进行重新挂载操作
		acl :启用该文件系统上的acl功能

Note: 上述选项可以同时使用,彼此之间使用逗号分隔符
默认选项: defaults
包含的特性: rw suid dev exec auto nouser async


  • 卸载命令:umount
    umount <device|mount_point>

交换分区管理:

swapon命令: 启用交换分区

swapon [options] [devices…]
选项:
-a : 激活所有的交换分区
-p PRIORITY: 指定优先级

swapoff命令: 禁用交换分区

swapoff [options…] [device…]

Note : 临时方式;系统重启之后又失效了

相关命令:
内存使用空间状态: free命令
free [options]
-m : 以MB为单位
-g :以GB为单位

[root@test ~]# free 
total        used        free      shared  		 buff/cache          available
内存总量	使用量		空闲量 	 共享内存空间	buff/cache使用量      可用量

文件系统空间占用等信息查看工具:df命令

- h : human-readable
- i : inodes 代替 blocks 
- P : 以Posix兼容的格式输出 
	(Posix : 开源可移植性操作系统)
- T : 输出文件系统类型信息

查看某目录总体空间占用状态:

du命令

-h : human-readable
-s :summary 

dd命令:

Copy a file, converting and formatting according to the operands
作用: 测试磁盘IO及数据迁移等工作

用法:
dd if=/path/from/src of=/path/to/dest
bs= : 复制数据的单元大小(block size)
count= : 复制多少个bs

磁盘的拷贝:
	dd if=/dev/sdb1  of=/dev/sdb2
	
备份MBR:
	dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1 
	
破坏MBR中的启动程序:
	.......

测试:
	/dev/null : 数据黑洞
	/dev/zero :吐0机
	

测试一块新硬盘的IO速率:
dd if=/dev/zero of=/dev/<device>  # 生产环境中:千万不要把目的地搞错

步骤
添加磁盘 --> 磁盘格式化(选择分区格式)–> 分区 --> 通知内核重新获取磁盘分区
—> 文件系统格式化 —> 挂载 --> du(测试IO)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值