1、磁盘结构
1.1设备文件
I/O Ports: I/O设备地址
Linux中一切皆文件:open(),read(), write(), close() 这四个均是函数
设备类型:块设备:block,存取单位“块”,磁盘
随机读写;访问顺序随机;
字符设备:char,存取单位“字符”,键盘
按照顺序进行读写
设备号码:
主设备号:major number, 标识设备类型
次设备号:minor number, 标识同一类型下的不同设备
1.1.1、硬盘接口类型
并行:(早期磁盘采用并行)
IDE:133MB/s (字节)
SCSI:640MB/s
串口:(目前)
SATA:6Gbps (位)
SAS:6Gbps
USB:480MB/s
串行接口比并行接口快,原因是;在计算机内部传输依靠电信号,速度达到一定强度,并行产生的干扰,影响速率。
1.1.2、机械硬盘和固态硬盘
机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘
片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控
制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、
功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘
二者区别:
1、相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传
输速率性能是HDD的2倍
2、相较于SSD,HDD在价格、容量占有绝对优势
3、硬盘有价,数据无价,目前SSD不能完全取代HHD
centos 5版本 IDEè hd 除了IDE接口的都是è sd
centos 6版本以后均是sd 命名
1.1.3、设备文件
磁盘设备的设备文件命名:/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd
虚拟磁盘:/dev/vd KVM、/dev/xvd XEN
不同磁盘标识:a-z,aa,ab…
/dev/sda, /dev/sdb, ...
同一设备上的不同分区:1,2, ...
/dev/sda1, /dev/sda5
硬盘存储术语
head:磁头
track:磁道
cylinder:柱面
sector:扇区,512bytes
1.1.4硬盘结构
机械硬盘结构
固态硬盘(SSD)
判断机械硬盘还是固态硬盘;
[root@centos7 ~]#cat /sys/block/sda/queue/rotational
1
1表示机械硬盘 0表示固态硬盘
扩展分区不能存数据,如下图sda4就是扩展分区,是起始位置和结束位置是以扇区为单位,centos7 sector 单位是block,1bloack=1k /dev/sda5的扇区起始位置在/dev/sd4 里面
盘面=磁头数
8bit head 000000~111111 255
10bit track 1024
6bit sector 63
1cylinder=512*63*255=8M
CHS cylinder header sector 传统的硬盘最多8G
Centos7 查看分区的按照传统的方式
[root@centos7 ~]#fdisk -l -u=clinder
2、分区
两种分区方式:MBR,GPT
MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
如何分区:按柱面
0磁道0扇区:512bytes
446bytes: boot loader
64bytes:分区表,其中每16bytes标识一个分区
2bytes: 55AA 如果拿到一块硬盘,没有55AA标识则没有分区
MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
2.1、MBR内部结构图
2.1.1MBR分区结构图的分析;
1、主引导程序:446字节的Boot Record,二进制;它负责从活动分区中装载,并运行
系统引导程序,与计算机启动有关,如果破坏,系统将无法启动;
2、16*4字节,描述分区的信息,执行hexdump -C -n 512 /dev/sda 可以看出,sda分区中;
3、80是活动分区,引导操作系统的相关文件,正常情况下只能有一个活动分区,否则系统在系统过程中会发生紊乱;
- 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果没有55AA,则说明此硬盘没有分区;
- 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为 0字节
- 磁头占8位,磁道数等于柱面数;
7、扩展引导程序:(EBR) 512字节;
8、由于扩展分区的大小不固定,所以EBR逻辑分区的位置不固定;而MBR是固定的;
dd File Name 也可以查看二进制文件
hexdump -C FileName 也可以查看二进制
2.1.2、硬盘分区表备份还原:
1、备份 dd if=/dev/sda of=/data/dpt bs=1 count=66 skip=446
if input file 输入文件的位置
of out file
bs block size
count 读取66个字节,最好将55AA也备份出来
Skip 跳过前446,恰好到后面64字节
2、查看上一步骤备份好的磁盘文件:hexdump -C /data/dpt
3、模拟破坏(破坏55AA标志位):dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510
count 只写2字节
seek 对应的是 /dev/zero
查看fdisk,分区表已经消失,lsblk 查看分区表还在,刚才模拟的破坏的是硬盘中的分区表,如果系统重启,将从硬盘中读取数据,分区表自然消失!!!
fdisk -l 查看的是硬盘里的分区表 lsblk 查看的是内存中的分区表 |
4、还原:dd if=/dev/dpt of=/dev/sda bs=1 count skip=64 seek=510
如果破坏里面分区表数据,需要通过救援模式
分区破坏,本机没有多余的硬盘,需要将备份放在别的机器上;如果有多余的硬盘,可以放在其他盘上面
救援模式里面 ifconfig ens33 192.168.48.200 可以添加手动添加ip地址
救援模式 sync 强迫系统将缓冲区里面的内容同步到磁盘里
当硬盘空间超过2T,MBR无法管理
2.2GPT 分区
1、GUID(Globals Unique Identifiers),全球唯一标识符,每一个分区都有唯一标识编号;128位的二进制
2、总共含有128个分区
3、不区分主分区和扩展分区
4、GUID是微软发布的,属于UUID的具体表现
5、UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持
GPT,使操作系统启动
2.2.1、GPT分区内部结构
1、图中标识符1是保护MBR,同时为了兼容老的系统,并非真正的MBR。
2、LBA 表示描述分区的组,32*4=128个
3.Partion 1 表示分区表,
4、使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表
自动备份在头和尾两份,并有CRC校验位,上图中图标2
5、UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使操作系统启动
随机生成UUID,可以确保唯一
[root@centos7 ~]#uuidgen
bacc2ad8-c537-4a40-bdf1-b2912c5a7a21
BIOS+MBR与UEFI+GPT 必须这样搭配使用。
GPT分区只支持存放数据的分区,如果作为操作系统的启动分区,必须搭配UEFI来引导操作系统;当然UEFI也支持老的bios,意义不大
3、管理分区
列出块设备 lsblk
创建分区使用:
• fdisk 创建MBR分区
• gdisk 创建GPT分区
• parted 高级分区操作,创建就会立即生效,一定小心操作
重新设置内存中的内核分区表版本
• partprobe
3.1、高级分区管理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 #1是编号
parted –l 列出分区信息
查看磁盘的分区表
hexdump -C -n 512 /dev/sdb -v
fdisk -l /dev/sda
dos 表示的是MBR分区
创建GPT分区
hexdump -C -n 512 /dev/sdb -v MBR中的55AA标志位
查看分区类型fdisk -l /dev/sdb
分区:
sdb1
sdb2
删除sdb1
parted /dev/sdb rm 1
GPT、MBR必须是连续空间,对于MBR、GPT都是一样的规定
parted /dev/sdb mkpart primary 1 3000
parted /dev/sdb print
删除分区信息,包括GPT标签
dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510
fdisk -l /dev/sdb 发现已经没有GPT类型的分区
3、2分区工具fdisk
fdisk -l [-u] [device...] 查看分区
fdisk /dev/sdb 管理分区
子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区 和partprobe /dev/sdb rm 1 等价 #1是编号
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
3、3同步分区表
1、查看内存中分区的不同方式,查看内核是否已经识别新的分区
cat /proc/partations
2、centos6通知内核重新读取硬盘分区表
新增分区用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
删除分区用
partx -d --nr M-N /dev/DEVICE
3、Centos5、Centos7 以扇区为单位,将硬盘中partprobe /dev/sda,
逻辑分区导致设备名不稳定
Centos6 将硬盘分区到内存中:partx -a /dev/sda ,且是以柱面为单位
具体同步方式参照 man partx
且需要注意的是,只能对硬盘分区,不能对分区再进分区,比如 fdisk /dev/sdb1
Centos7 如果以柱面为单位 fdisk -u=cylinders /dev/sda
克隆分区表:
只能同步主分区,扩展分区中逻辑分区同步不了
dd if=/dev/sda of=/dev/sdb bs=1 count=66 skip=446 seek=446
Centos6中,编号越小,在外圈,速度快;反之速度慢
4、文件系统
划分分区相当于是盖房子,分区划好算是毛坯房,文件系统相当于装修,分区的话通过二进制进行传输数据,为了更好的管理文件,需要创建文件系统。
1、文件系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结 构称为文件管理系统,简称文件系统;
2、从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立 文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压 缩,加密等;
3、支持的文件系统:ls /lib/modules/`uname-r` /kernel/fs
4、各种文件系统:
https://en.wikipedia.org/wiki/Comparison_of_file_systems
4.1、文件系统类型
Linux文件系统:
1、ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况,容易奔溃,无法恢复,后续基本不用了。
例如 /boot 分区
2、ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中
恢复。它通常被用作通用的文件系统 ,性能比较差。
上面两个本质是一样的,ext2加上日志就是ext3
3、ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使
用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
4、xfs :SGI,支持最大8EB的文件系统, centos7 使用的就是xfs文件系统
5、btrfs(Oracle), reiserfs(老牌unix), jfs(AIX IBM), swap
6、光盘:iso9660
7、Windows:FAT32, exFAT,NTFS
8、Windows:FAT32, exFAT,NTFS
9、Unix: FFS(fast), UFS(unix), JFS2
10、网络文件系统:NFS, CIFS
11、集群文件系统:GFS2, OCFS2(oracle)
12、分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
13、RAW:未经处理或者未经格式化产生的文件系统
4.1.1、文件系统分类
根据是否支持“journal”功能:
包含日志的文件系统:ext3、ext4、xfs
非日志文件系统:ext2、vfat
文件系统组成部分:
内核模块:ext4、xfs、vfat
用户空间的管理工具:mkfs.ext4、mkfs.xfs、mkfs.vfat
linux中虚拟文件系统:vfs
利用工具创建文件系统
查看文件系统驱动,例如查看xfs locate xfs.ko
查看内核支持的文件系统
cat /proc/filesystems
mkfs. tab键补全
创建xfs文件系统
mkfs命令:
- mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs (用的很少)
vfat
- mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL' 设定卷标
mkfs.xfs /dev/sda6
mkfs -t xfs|ext4
mkfs.ext4 /dev/sda6
重新格式化:
mkfs.xfs -f /dev/sda3
查看各分区文件系统blkid
创建ext文件系统
mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4} 指定文件系统类型
-b {1024|2048|4096} 指定块大小
-L ‘LABEL’ 设置卷标
-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 关闭指定特性
专门创建ext文件系统,如果不指定-t 参数,默认创建的是ext2文件系统
mke2fs -t ext3 /dev/sda5
文件的块大小 1k 2k 4k
tune2fs
tune2fs:重新设定ext系列文件系统可调整参数的值
-l 查看指定文件系统超级块信息;super block
-L 'LABEL’ 修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2升级为ext3
-O 文件系统属性启用或禁用, -O ^has_journal
-o 调整文件系统的默认挂载选项,–o ^acl -U UUID 修改UUID号
查看ext系列的分区中超级块大小
tune2fs -l /dev/sda1
dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
-h:查看超级块信息,不显示分组信息
查看分组
dumpe2fs /dev/sda2
xfs_info:显示已挂载的 xfs 文件系统信息
xfs_info mountpoint
超级块和INODE TABLE
1、
2、
3、
查看分区
xfs_growfs
文件系统检测和修复
1、文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“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
挂载mount
1、linux中一切皆文件,磁盘设备通过挂载便于管理,此时需要一个挂载点进行关联,进而使此目录作为其他文件访问入口的行为
2、卸载:为解除此关联关系的过程
3、卸载时:可使用设备,也可以使用挂载点
取消挂载:mount 设备名| 挂载点
例如:umount /dev/sda3
重新挂载,/ 分区特殊,不能取消挂载
mount -o remount,rw /data
mount命令挂载文件系统
1、查看目前挂载情况,根据mount实时修改
cat /etc/mtab,在centos6 上的查看状态
而在Centos7 是一个链接文件
mount [-fnrsvw] [-t vfstype] [-o options] device dir
(1)device:指明要挂载的设备;
(2)设备文件:例如/dev/sda5
(3)卷标:-L 'LABEL', 例如 -L 'MYDATA'
UUID, -U 'UUID':
例如;通过UUID挂载
mount -U 8f71aaef-8b2d-4c6f-a971-6246705b807a /data
(4)伪文件系统名称:proc, sysfs, devtmpfs, configfs
dir:挂载点
事先存在,建议使用空目录
进程正在使用中的设备无法被卸载
mount时候需要注意的3点,之前确实不知道!!!
(1)、一个磁盘可以有多个挂载点,都来自于同一个分区
(2)、一个挂载点同一时间只能挂载一个磁盘设备,新挂载的会把旧的取消掉,如果取消新的挂载,旧的挂载就会回来
(3)、需要挂载的文件夹,一定是空文件夹;如果文件夹本身有数据,重新挂载原来文件会被隐藏起来
mount常用命令选项
-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
centos 6中查看所有挂载,如果在挂载时-n 隐藏起来,通过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
将文件作为设备进行挂载
mount -B /boot /mount/boot
非设备(文件)挂载到文件夹中
- 构造100M数据
2、格式化成xfs的文件系统
3、查看文件系统信息
4、手动挂载
5、默认系统不允许将非设备文件挂载到文件夹中,centos7 中遇到此问题,系统会自动分配,而对于centos6,因为系统不会识别,在挂载时需要加 -o loop 参数,例如:mount -o /data/disk /mount/disk。
下图是同样的操作在centos6 中的操作结果,df 并不能显示/dev/loop,需要执行 losetup -a查看/dev/loop0是被/data/disk占用
Centos6 上0-7这样的loop* ,换言之系统只支持8个文件挂载目录,当然如果有业务需要,可以手工添加loop设备
当然还有一种办法,可以让操作系统在启动时候预先准备好足够的loop设备,需要修改内核参数追加max_loop=N, reboot以后就能生效
vim /boot/grub/grub.conf
将loop设备与文件关联 losetup /dev/loop6 /data/disk
而在Centos7 上是即时生成,并没有限制,所以无需手动干预
loop设备可以吧文件当作U盘使用,将文件scp到另一台机器,然后再另一台机器上挂载就可以使用
7、也可以设置ACL
设置ACL 报错不支持
remount 时设置acl 操作,再次设置acl没问题
如果取消ACL ,需要执行remount,且多次执行acl 操作,最新执行的命令会将前面的操作覆盖。
卸载命令
我们经常会遇到,umount时报错设备正在忙碌,可以通过fuser -v 挂载点,可以查看哪些用户正在占用资源,可以使用kill 杀掉进程,只针对与少数登录用户。如果大量用户通过网络链接,通过kill不能解决问题,而且不现实.....
1、查看正在访问指定文件系统的进程 fuser -v 挂载点
2、终止所有在正访问指定的文件系统的进程fuser -km /data
3、查看是否为挂载点: findmnt 挂载点
4、查看正在访问指定文件系统的进程:lsof 挂载点
fuser -v 与lsof 相似,且fuser -v功能更强大
永久挂载
前面所讲的都是临时挂载,reboot后会失效,写在/etc/fatab里面的挂载点就会永久生效
cat /etc/fstab
1、文件系统类型:ext4,xfs,iso9660(光盘的文件系统),nfs,none
2、挂载选项:defaults ,acl,bind
3、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
4、fsck检查的文件系统的顺序:允许的数字是0 1 2 0:不自检 1:首先自检;一般只有rootfs才用 2:非root使用
mount -a 重新读取文件就会生效,且此文件只适用于新挂载的设备,如果对文件里面内容修改,需要mount -o remount /dev/sda4,就会生效
划分交换分区以及挂载
1、之前介绍过swap分区支持虚拟内存。它是为了解决内存不足,在磁盘中的空间临时用作内存中,并将数据写入swap分区中,swap比较特殊,且文件系统就是swap,在编辑fstab 文件中就可以看到。
2、当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap空间还会掩盖内存泄露。
3、推荐系统 swap 空间(仅仅推荐,并非固定)
挂载交换分区
基本设置包括:
• 创建交换分区或者文件
• 使用mkswap写入特殊签名
• 在/etc/fstab文件中添加适当的条目
• 使用swapon -a 激活交换空间
启用:swapon
swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区
-p PRIORITY:指定优先级 /etc/fstab 在第4列中:pri=value
禁用:swapoff [OPTION]... [DEVICE]
一般来讲,划分swap分区会找一块单独的磁盘分区,且在外圈的速率较高,越到内圈速率越低
在我本机的环境,swap分区为4G,total为1.8G,如果某一时刻写入文件为2G,系统将从swap中临时分配,而swap不能修改大小,只能通过划分swap分区,在本机环境中用/dev/sdb划分4G大小来做实验。
- 划分swap分区
fdisk /dev/sdb
操作步骤为:m n p 1 +4G +4G p m t 82(swap分区id) w
再次查看显示已经划分好swap分区
- 初始化swap文件系统
mkswap /dev/sdb1
blkid /dev/sdb1
3、查看分区表里面信息:
hexdump -C -n 1048576 /dev/sdb
4、永久挂载
vim /etc/fstab
修改优先级以后,/dev/sdb1的优先级高,/dev/sda5 是装操作系统时分配的。
将文件作为swap分区
1、构造2G数据
- 格式化文件系统
mkswap /swapfile
blkid /swapfile
swapon -a
chmod 600 /swapfile
swap 分区需要写文件名称,pri 是优先级,对于文件可以不用修改
- 修改文件后执行swapon -a,生效
- swapon -s 显示,等同于cat /proc/swaps
- 构建2G数据
- 查看内存使用情况
- 查看swap情况
swapon -s
swap禁用 swapoff /dev/sdb1
重新生效 swapon -a
swap的优先级
1、可以指定swap分区0到32767的优先级,值越大优先级越高
2、如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从 -1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
3、先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
4、优化性能:分布存放,高性能磁盘存放
文件夹的挂载
vim /etc/fstab
/boot /mount/boot none bind 0 0
mount -a
查看mount
光盘的挂载
mkdir /mount/cdrom
mount -a
查看 df
迁移/home 到新分区/dev/sdb2
经常会遇到磁盘写满,想要迁移一部分数据到新盘中,如下图,普通用户往里写数据越来越多,迁移/home 文件,由于它实际占用/ 分区的磁盘大小,先需要将home单独分配一个分区出来
- 找一块大的盘,划分磁盘 fdisk /dev/sdb
操作步骤为:m n p 2 +2G p m w
- 同步内存中的分区 partprobe
- mkdir /mount/home
- mount /dev/sdb2 /mount/home/
- 查看挂载
- copy /home 下的文件到新的挂载点,-a 保留原有属性 . 包括隐藏文件
cp -av /home/. /mount/home
- 查看迁移过来数据
- 为确保数据完整性,查看大小
- 永久挂载
- mount 查看挂载,发现有2个挂载点,此时/home的数据为新数据
- 一般为了确保挂载无误,过一段时间后取消挂载
umount /home
12.删除原有文件夹数据
rm -rf /home/*
注意:
为了确保数据完整性,可能在操作时候,另外的终端也在访问并进行插入数据,
一般在操作前,需要进入到维护模式,即init 1 单用户模式,ctrl+D 退出模式
显示进入紧急救援模式,此时需要输入root密码,输入runlevel
外围设备使用:
使用光盘
1、在图形环境下自动启动挂载/run/media/<user>/<label>
2、否则就必须被手工挂载 mount /dev/cdrom /mnt/
3、操作光盘
将光驱弹出 eject
弹入 eject -t
4、linux中将光盘制作成iso文件
cp /dev/sr1 /data/centos7.iso
将/etc文件夹打包成.iso文件
mkisofs -r -o /data/etc.iso /etc
- 刻录光盘 wodim –v –eject centos.iso
挂载USB介质
1、查看USB设备是否识别
• lsusb
2、被内核探测为SCSI设备
• /dev/sdaX、/dev/sdbX或类似的设备文件
3、在图形环境中自动挂载
• 图标在[计算机]窗口中创建
• 挂载在/run/media/<user>/<label>
4、手动挂载
• mount /dev/sdb1 /mnt
du工具
文件系统空间占用等信息的查看工具
df [OPTION]... [FILE]...
-H 以10为单位 -T 文件系统类型
-h human-readable
-i inodes instead of blocks
-P 以Posix兼容的格式输出
查看某目录总体空间占用状态
du [OPTION]... DIR
-h human-readable
-s summary
--max-depth=# 指定最大目录层级
du DirectoryName显示每个子目录,且单位为k
只显示目录大小 du -sh DirectoryName
dd工具
dd 命令:convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
if=file 从所命名文件读取而不是从标准输入
of=file 写到所命名的文件而不是到标准输出
ibs=size 一次读size个byte obs=size 一次写size个byte
bs=size block size, 指定块大小(既是是ibs也是obs)
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块
seek=blocks 从开头忽略blocks个obs大小的块
count=n 复制n个bs
conv=conversion[,conversion...] 用指定的参数转换文件
转换参数:
ascii 转换 EBCDIC 为 ASCII
ebcdic 转换 ASCII 为 EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐 fdatasync 写完成前,物理写入输出文件(默认dd是将if写入buffer中,然后再写入of中,加上此参数是直接写入of中)
稀疏文件:
dd if=/dev/zero of=/boot/test bs=1G count=0 seek=10
seek表示跳过10个块(bs)
查看总大小:
echo {0..9}|tr -d ' ' > /data/f1.txt
echo {a..z}|tr -d ' ' > /data/f2.txt
dd if=/data/f1.txt of=/data/f2.txt bs=1 skip=2 seek=3 count=4
dd工具实现备份:
1、备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
- 破坏MBR中的bootloader dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
例子:
有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读 取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开 始的位置,替换128Bytes,实现如下;
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
- 备份:
dd if=/dev/sdx of=/dev/sdy 将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/path/to/image 将/dev/sdx全盘数据备份到指定路径的image文件 dd if=/dev/sdx | gzip >/path/to/image.gz
备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
- 恢复
dd if=/path/to/image of=/dev/sdx 将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx 将压缩的备份文件恢复到指定盘
- 拷贝内存资料到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件
- 从光盘拷贝iso镜像
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件
7、销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1
有时为了数据安全性,利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作 以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行