Linux基础命令-磁盘管理和文件系统

盘管理和文件系统

一、磁盘结构

1. 设备文件

I/O Ports: I/O设备地址
	一切皆文件:open(), read(), write(), close()
设备类型:
	块设备:block,存取单位“块”,磁盘
	字符设备:char,存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码:
	主设备号:major number, 标识设备类型
	次设备号:minor number, 标识同一类型下的不同设备
磁盘设备的设备文件命名:/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd
虚拟磁盘:/dev/vd 、/dev/xvd
不同磁盘标识:a-z,aa,ab…
	/dev/sda, /dev/sdb, ...
同一设备上的不同分区:1,2, ...
	/dev/sda1, /dev/sda5
硬盘存储术语
	head:磁头
	track:磁道
	cylinder:柱面
	sector:扇区,512bytes
	
CHS和LBA
CHS
	采用24bit位寻址
	其中前10位表示cylinder,中间8位表示head,后面6位表示sector
	最大寻址空间8GB
LBA(logical block addressing)
	LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
	ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定
义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以
每扇区512位组计算容量上限可达128 Petabytes
	由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB
时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则
只能使用LBA寻址方式

2. 磁盘结构类型

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

机械硬盘和固态硬盘的区别:

机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘
片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘
中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有
一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制
器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每
分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数
据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。
硬盘为精密设备,进入硬盘的空气必须过滤

固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、
DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致

相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍

相较于SSD,HDD在价格、容量占有绝对优势

硬盘有价,数据无价,目前SSD不能完全取代HHD

二、分区类型

1.使用分区空间

1)设备识别
2)设备分区
3)创建文件系统
4)标记文件系统
5)在/etc/fstab文件中创建条目
6)挂载新的文件系统

2.分区的优点

1)优化I/O性能
2)实现磁盘空间配额限制
3)提高修复速度
4)隔离系统和程序
5)安装多个OS
6)采用不同文件系统

3.分区

两种分区方式:MBR,GPT
	MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
	如何分区:按柱面
	0磁道0扇区:512bytes
		446bytes: boot loader
		64bytes:分区表,其中每16bytes标识一个分区
		2bytes: 55AA
	MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

在这里插入图片描述

GPT分区
1.GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
2.使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
3.UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使操作系统启动

EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域

在这里插入图片描述

4.BIOS+MBR与UEFI+GPT

在这里插入图片描述

三、管理分区

1.管理分区

列出块设备
	lsblk
创建分区使用:
	fdisk 创建MBR分区
	gdisk 创建GPT分区
	parted 高级分区操作
重新设置内存中的内核分区表版本
	partprobe

2.parted命令

parted命令的操作都是实时生效的,小心使用
用法:parted [选项]... [设备 [命令 [参数]...]...]
		parted /dev/sdb mklabel gpt|msdos
		parted /dev/sdb print
		parted /dev/sdb mkpart primary 1 200 (默认M)
		parted /dev/sdb rm 1
		parted –l 列出分区信息
(1)创建分区前查看全新的磁盘属性
	hexdump -Cv -n512 /dev/sdb
	fdisk -l /dev/sdb
	lsblk
(2)创建gpt/MBR分区
	parted /dev/sdb mklabel gpt/msdos
	查看创建成功的分区属性信息
	parted /dev/sdb print
(3)在刚创建的分区中创建主分区(默认是以M为单位)
	parted /dev/sdb mkpart primary 1 200
	parted /dev/sdb mkpart primary 200 400
(4)删除主分区
	parted /dev/sdb rm 1
	1)如果想创建从1-3000的主分区可以嘛?
	答案是不可以
	parted /dev/sdb mkpart primary 1 3000
	输入yes
	查看结果会发现只有1-200的主分区生成了后面的生成不了,由于有主分区2的存在
(5)查看磁盘分区的属性信息
	parted -l
	可以看出/dev/sdb磁盘存在gpt标识符,所以通过第六步来删除标识符
(6)恢复该分区的为空白的标识符
	dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510
	parted /dev/sdb print

3.分区工具fdisk和gdisk

gdisk /dev/sdb 类fdisk 的GPT分区工具
fdisk -l [-u] [device...] 查看分区
fdisk /dev/sdb 管理分区
子命令:
	p 分区列表
	t 更改分区类型
	n 创建新分区
	d 删除分区
	v 校验分区
	u 转换单位
	w 保存并退出
	q 不保存并退出

查看分区是否成果:
	lsblk
	cat /proc/partitions
	ls /dev/sdb*
	fdisk -l /dev/sdb

4.同步分区表

同步分区表(一般已经存在分区的磁盘再次分区就可能需要同步,注意看w退出的时候也没有报出WARNING的警告)
	cat /proc/partitions
	centos6通知内核重新读取硬盘分区表
		新增分区用
			partx -a /dev/DEVICE
			kpartx -a /dev/DEVICE -f: force
		删除分区用
			partx -d --nr M-N /dev/DEVICE
	CentOS 57: 使用partprobe
		partprobe [/dev/DEVICE]

克隆分区表(一般如果两个磁盘一样大小,和主磁盘只有主分区的没有扩展分区的情况可以使用)
	dd if=/dev/sda of=/dev/sdb bs=1 count=64 skip=446 seek=446
	小技巧快速删除磁盘的分区表
	dd if=/dev/zero of=/dev/sdb bs=1 count=66  seek=446

四、管理文件系统

1.文件系统

	1.文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即
在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结
构称为文件管理系统,简称文件系统
	2.从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文
件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立
文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压
缩,加密等
	3.支持的文件系统:/lib/modules/`uname –r`/kernel/fs
	4.各种文件系统:https://en.wikipedia.org/wiki/Comparison_of_file_systems

文件系统类型
1.Linux文件系统:
	ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区
	ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统
	ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
	xfs:SGI,支持最大8EB的文件系统
	btrfs(Oracle), reiserfs, jfs(AIX), swap
2.光盘:iso9660
3.Windows:FAT32, exFAT,NTFS
4.Unix: FFS(fast), UFS(unix), JFS2
5.网络文件系统:NFS, CIFS
6.集群文件系统:GFS2, OCFS2(oracle)
7.分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
8.RAW:未经处理或者未经格式化产生的文件系统

文件系统分类:
1.根据其是否支持"journal"功能:
	日志型文件系统: ext3, ext4, xfs, ...
	非日志型文件系统: ext2, vfat
2.文件系统的组成部分:
	内核中的模块:ext4, xfs, vfat
	用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
3.Linux的虚拟文件系统:VFS
4.查前支持的文件系统:cat /proc/filesystems

2.创建ext文件系统

mkfs命令:
	(1) mkfs.FS_TYPE /dev/DEVICE(一般情况用该命令来创建文件系统)
		ext4
		xfs
		btrfs
		vfat
	(2) mkfs -t FS_TYPE /dev/DEVICE
		-L 'LABEL' 设定卷标
		
mke2fs:ext系列文件系统专用管理工具
	-t {ext2|ext3|ext4} 指定文件系统类型
	-b {1024|2048|4096} 指定块大小
	-LLABEL’ 设置卷标
	-j 相当于 -t ext3
	 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
	-i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
	-N # 指定分区中创建多少个inode
	-I 一个inode记录占用的磁盘空间大小,128---4096
	-m # 默认5%,为管理人员预留空间占总空间的百分比
	-O FEATURE[,...] 启用指定特性
	-O ^FEATURE 关闭指定特性
例子:
mkfs.ext2 -b 1024 -m 1 -I 128 -L /mnt/sdb2 /dev/sdb2
创建ext2文件系统,指定块大小为1024 为管理人员预留百分之1的空间,并且一个inode记录占用磁盘空间128字节,和设置/mnt/sdb2为卷标.blkid命令查看属性



blkid:块设备属性信息查看(常用)
	blkid [OPTION]... [DEVICE]
		-U UUID 根据指定的UUID来查找对应的设备
		-L LABEL 根据指定的LABEL来查找对应的设备
		
e2label:管理ext系列文件系统的LABEL
	e2label DEVICE [LABEL]
	
findfs :查找分区
	findfs [options] LABEL=<label>
	findfs [options] UUID=<uuid>

tune2fs:重新设定ext系列文件系统可调整参数的值
	-l 查看指定文件系统超级块信息;super block
	-L 'LABEL’ 修改卷标
	-m # 修预留给管理员的空间百分比
	-j 将ext2升级为ext3
	-O 文件系统属性启用或禁用,O ^has_journal
	-o 调整文件系统的默认挂载选项,–o ^acl
	-U UUID 修改UUID号
例子:
tune2fs -O has_journal /dev/sdb2
将ext2文件系统改为ext3
tune2fs -U d4b50a2e-cc32-4a22-8a3a-9c9943338c52 /dev/sdb2
修改uuid
tune2fs -L /mnt/sdb /dev/sdb2
修改卷标

	
dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
	-h:查看超级块信息,不显示分组信息
例子:
dumpe2fs -h /dev/sdb2

xfs_info:显示已挂载的 xfs 文件系统信息
	xfs_info mountpoint
例子:
mount /dev/sdb1 /data/sdb1/
xfs_info /data/sdb1/

3.文件系统检测和修复

文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下执行下面命令修复
fsck: File System Check
	fsck.FS_TYPE
	fsck -t FS_TYPE
注意:FS_TYPE 一定要与分区上已经文件类型相同
	-a 自动修复
	-r 交互式修复错误
	
e2fsck:ext系列文件专用的检测修复工具
	-y 自动回答为yes
	-f 强制修复
	-p 自动进行安全的修复文件系统问题
	
xfs_repair:xfs文件系统专用检测修复工具
	-f 修复文件,而设备
	-n 只检查
	-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

总结
文件系统管理工具
通用:mkfs、blkid、fsck
ext系列文件系统专用工具:mke2fs、dumpe2fs、tune2fs、e2label、e2fsck

五、挂载设备

1.挂载mount

挂载方法:mount DEVICE MOUNT_POINT
	mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
	mount [-fnrsvw] [-t vfstype] [-o options] device dir
	device:指明要挂载的设备;
		(1) 设备文件:例如/dev/sda5
		(2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
		(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-
85c0-a126711d406e'
		(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
		
	dir:挂载点
		事先存在,建议使用空目录
		进程正在使用中的设备无法被卸载
		
	命令选项:
	-t vsftype 指定要挂载的设备上的文件系统类型
	-r readonly,只读挂载
	-w read and write, 读写挂载
	-n 不更新/etc/mtab,mount不可见
	-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件
中,且挂载选项中有auto功能)
	-L 'LABEL' 以卷标指定挂载设备
	-U 'UUID'UUID指定要挂载的设备
	-B, --bind 绑定目录到另一个目录上
	查看内核追踪到的已挂载的所有设备
		cat /proc/mounts
	-o options:(挂载文件系统的选项),多个选项使用逗号分隔
		async 异步模式 sync 同步模式,内存更改时,同时写磁盘
		atime/noatime 包含目录和文件
		diratime/nodiratime 目录的访问时间戳
		auto/noauto 是否支持自动挂载,是否支持-a选项
		exec/noexec 是否支持将文件系统上运行应用程序
		dev/nodev 是否支持在此文件系统上使用设备文件
		suid/nosuid 是否支持suid和sgid权限
		remount 重新挂载
		ro 只读 rw 读写
		user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
		acl 启用此文件系统上的acl功能
		loop 使用loop设备
	defaults:相当于rw, suid, dev, exec, auto, nouser, async

例子:
(1)只读挂载,不能创建文件
	mount -r /dev/sdb1 /data/sdb1/
(2)相当于重新挂载,一般都用该命令,/目录需要重新挂载的时候必须用该方法
	mount -o remount,rw /data/sdb1/
(3)把一个文件系统挂载多个目录(可以看到相同的文件)
	mount /dev/sdb1 /data/sdb1/
	mount /dev/sdb1 /data/sdb2/
	tree  /data/sd*
	df查看是看不到/dev/sdb1挂载在哪两个目录下的,需要用mount查看
(4)后挂载的文件系统会覆盖旧挂载的文件(一般情况挂载文件系统选择空的目录)
	mount /dev/sdb1 /data/sdb2
	mount /dev/sdb2 /data/sdb2
	可以看到/data/sdb2的文件消失了
	umount /dev/sdb2
	可以看到/data/sdb2的文件回复了
	umount /data/sdb2(使用该和使用umount /dev/sdb2一样,如果需要把挂载的文件系统全部取消需要umount两次)
(5)文件夹往文件夹挂载(就像可以解决硬链接不能挂目录的功能)
	mount -B /boot/ /data/boot/
(6)文件往目录挂载(centos7)(可以使用当u盘使用,写完的文件可以传输给其他系统然后对方只要挂载就可以看到里面的文件了)
	1)创建二进制文件
		dd if=/dev/zero of=/data/disk bs=1M count=100
	2)二进制文件格式化成xfs文件系统
		mkfs.xfs /data/disk
		blkid /data/disk
	3)将文件往目录进行挂载
		mkdir -p /data/mnt/disk ;mount /data/disk /data/mnt/disk
		ls /data/mnt/disk/
		touch /data/mnt/disk/f2.txt
		losetup -a(查看挂载情况mount也可以和df可以看到):centos6,挂载的时候需要加-o loop,
	1.由于centos6默认只有8个loop所以不够使用需要自己创建loop
		mknod /dev/loop100 b 7 100
		ll /dev/loop*
	2.可以系统启动的时候自动创建多个loop设备
		vim /boot/grub/grub.conf
		在kernel行最后加入max_loop=100(数量自己写)
(7)centos6中如果挂载的文件系统没有acl功能
	mount -o remount,acl /dev/sdb1

2.卸载命令

查看挂载情况
	findmnt MOUNT_POINT|device
查看正在访问指定文件系统的进程
	lsof MOUNT_POINT
	fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程
	fuser -km MOUNT_POINT
卸载
	umount DEVICE
	umount MOUNT_POINT

挂载点和/etc/fstab
	配置文件系统体系
	被mount、fsck和其它程序使用
	系统重启时保留文件系统体系
	可以在设备栏使用文件系统卷标
	使用mount -a 命令挂载/etc/fstab中的所有文件系统

/etc/fstab每行定义一个要挂载的文件系统
	1、要挂载的设备或伪文件系统
		设备文件
		LABELLABEL=""
		UUIDUUID=""
		伪文件系统名称:proc, sysfs
	2、挂载点
	3、文件系统类型:ext4,xfs,iso9660,nfs,none
	4、挂载选项:defaults ,acl,bind
	5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
	6、fsck检查的文件系统的顺序:允许的数字是0 1 2
		0:不自检
		1:首先自检;一般只有rootfs才用
		2:非rootfs使用

例子:
1.查看挂载的磁盘是否有用在使用(在隔壁窗口打开另一个连接,然后进入到对应的目录下):
	fuser -v /data/sdb1
	fuser -km /data/sdb1
	
2.查看挂载的情况:
	findmnt /data/sdb1
	findmnt /dev/sdb1
		TARGET     SOURCE    FSTYPE OPTIONS
		/data/sdb1 /dev/sdb1 xfs    rw,relatime,attr2,inode64,noquota
	1)取消挂载
		umount /data/sdb1
		findmnt /data/sdb1
		echo $?输出的结果是1,可以通过这样来判断目录是否被挂载成功了,如果输入结果是1那么就重新开始挂载,

3.把挂载的属性信息写入文件,完成开机自动挂载或者通过(mount -a):
	1)vim /etc/fstab(在查看模式进入:r ! blkid /dev/sdb1)
	2)根据格式写入
	UUID=f5ea93ef-1686-4c26-9780-2ec9ec350e2b /data/sdb1         xfs     defaults        0 0
	3)保存退出
	mount -a
	df
	注意:在centos6的话可以在defaults这个选项修改为acl这样挂载的时候自动启动acl的功能,
	 ( tune2fs -l /dev/sdb1)可以查看是没有acl功能的,也可以在一开始创建文件系统的时候
	 通过tune2fs命令来添加功能,具体看上文.

4.创建新的磁盘空间来挂载/home目录
	1)创建磁盘空间给/home目录
		gdisk /dev/sdb(添加:n	大小:+5G		格式:8200	保存退出:w)
	2)查看有没有划分成功,需要同步一下数据
		lsblk
		partprobe
		blkid /dev/sdb4
	3)格式化文件系统
		mkfs.xfs /dev/sdb4
	4)先将创建好的文件系统挂载空目录上再把/home目录下文件拷贝过来
		mkdir /data/mnt/sdb4
		mount /dev/sdb4 /data/mnt/sdb4
		cp -av /home/. /data/mnt/sdb4/
	5)查看两个文件夹大小是否相同
		du -sh /data/mnt/sdb4
		du -sh /home/
	6)/dev/sdb4挂载到/home目录
		mount /dev/sdb4 /home/
	注意:一般情况下都是会进去单用户模式来进行添加(init 1)避免有其他用户在使用/home目录

六、管理虚拟内存

1.交换分区

	1.swap交换分区是系统RAM的补充,Swap 分区支持虚拟内存。当没有足够的RAM 保存系统处理的数据时会将数据写入 swap 分区
	2.当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过多swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存泄露
	3.基本设置包括:
		• 创建交换分区或者文件
		• 使用mkswap写入特殊签名
		• 在/etc/fstab文件中添加适当的条目
		• 使用swapon -a 激活交换空间
	4.启用:swapon
 		swapon [OPTION]... [DEVICE]
		-a:激活所有的交换分区
		-p PRIORITY:指定优先级
		/etc/fstab 在第4列中:pri=value
	5.禁用:swapoff [OPTION]... [DEVICE]
	6.可以指定swap分区032767的优先级,值越大优先级越高
	7.如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
	8.先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
	9.优化性能:分布存放,高性能磁盘存放

例子:
(1)创建新的一个swap分区:
	1)将一个磁盘划分成swap格式
		gdisk /dev/sdb(添加:n	大小:+4G		格式:8200	保存退出:w)
	2)查看有没有划分成功,需要同步一下数据
		lsblk
		partprobe
		blkid /dev/sdb3
	3)格式化系统
		mkswap /dev/sdb3
		blkid /dev/sdb3
	4)挂载swap分区
		swapon -a /dev/sdb3
	5)查看结果
		swapon -s
		free -h
	6)将创建的swap分区写到文件中,可以将新创建的swap分区作为首个分区,主要是优先级修改大一些就好了
		vim /etc/fstab(在查看模式进入:r! blkid /dev/sdb3)
		UUID=04459e83-7d3d-4713-94a9-0fd1f8714126 swap        swap    pri=10          0 0
		swapoff -a
		swapon -s
	7)小测试
		dd if=/dev/zero of=/dev/null bs=3G count=1
		swapon -s
			Filename                            Type            Size    Used    Priority
			/dev/sda3                           partition       4194300 0       -1
			/dev/sdb3                           partition       4194300 121568  10
		可以看出不再是先使用一开始创建的swap分区了,已经使用了刚才创建的/dev/sdb3的分区了
		
(2)用文件来创建swap分区
	1)创建文件
		dd if=/dev/zero of=/swapfile bs=1M count=2048
	2)创建swap分区系统
		mkswap /swapfile
	3)查看创建后的结果
		blkid /swapfile
	4)挂载分区
		swapon -a /swapfile
		chmod 600 /swapfile 
		swapon -s
	注:写入/etc/fstab文件的话只能写文件名字不能写uuid
	/swapfile       swap       		swap    	defaults         0 0
	扩展:文件夹挂载到文件夹的情况
	/boot			/mnt/boot		none 		bind    		 0 0
	挂载光盘
	/dev/sr0		/mnt/cdrom 		iso9660 	defaults		 0 0

七、实验

(1)备份磁盘的分区表
	dd if=/dev/sda of=/data/zjl bs=1 count=66 skip=446
	hexdump -C /data/zjl
(2)消除磁盘有效标识符55AA
	dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510
	查看是否消除成功,二进制文件方式:
	hexdump -C -n 512 /dev/sda
	内存方式:
	lsblk /dev/sda(内存中的不是更新,只有文件的才会,因为数据已经被写到内存中了)
	文件方式:
	fdisk -l /dev/sda
(3)恢复磁盘有效标识符(通过刚才备份的文件来恢复):
	dd if=/data/zjl of=/dev/sda bs=1 count=2 skip=64 seek=510
	查看是否恢复成功.和上面命令一样
(4)消除磁盘的分区表
	dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
	查看是否恢复成功.和上面命令一样,(用文件方式查看会和上面第二步骤看到的结果不一样,这次是有标识符的,但是没有分区表)
(5)如果系统重启后该怎么修复
	1)首先要把备份好的分区表文件传输到其他机器
	scp /data/zjl IP地址A:/data	
	2)系统重启后进入救援模式
	3)在救援模式系统配置一个ip(或者可以通过u盘拷贝文件过来)
	ifconfig eno16777736 192.168.31.166/24
	ip addr
	4)从远程拷贝分区表文件
	 scp IP地址A:/data/zjl .
	5)恢复分区表
	dd if=zjl of=/dev/sda bs=1 count=64 seek=446
	查看命令同上
	6)需要刷新内存的数据到磁盘中
	sync(多刷几下,稍等一会再重启就好了)


移动介质
1.挂载意味着使外来的文件系统看起来如同是主目录树的一部分
2.访问前,介质必须被挂载
3.摘除时,介质必须被卸载
4.按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
5.挂载点通常在/media 或/mnt下



使用光盘
在图形环境下自动启动挂载/run/media/<user>/<label>
否则就必须被手工挂载
	mount /dev/cdrom /mnt/
操作光盘:
	eject 弹出光盘
	eject -t 弹入光盘
创建ISO文件
	cp /dev/cdrom /root/centos.iso
	mkisofs -r -o /root/etc.iso /etc
刻录光盘
	wodim –v –eject centos.iso


挂载USB介质
查看USB设备是否识别
	lsusb
被内核探测为SCSI设备
	/dev/sdaX、/dev/sdbX或类似的设备文件
在图形环境中自动挂载
	图标在[计算机]窗口中创建
	挂载在/run/media/<user>/<label>
手动挂载
	mount /dev/sdb1 /mnt

八、练习

1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
2、写一个脚本,完成如下功能:
	(1) 列出当前系统识别到的所有磁盘设备
	(2) 如磁盘数量为1,则显示其空间使用信息
		否则,则显示最后一个磁盘上的空间使用信息
3、将CentOS6的CentOS-6.10-x86_64-bin-DVD1.iso和CentOS-6.10-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.10-x86_64-Everything.iso文件,并将其配置为yum源
发布了12 篇原创文章 · 获赞 4 · 访问量 943

猜你喜欢

转载自blog.csdn.net/qq_41596208/article/details/103920433