磁盘存储和文件系统

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是活动分区,引导操作系统的相关文件,正常情况下只能有一个活动分区,否则系统在系统过程中会发生紊乱;

  1. 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果没有55AA,则说明此硬盘没有分区;
  2. 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为 0字节
  3. 磁头占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 分区

1GUID(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文件系统

5btrfs(Oracle), reiserfs(老牌unix), jfs(AIX  IBM), swap

6光盘:iso9660

7Windows: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命令:

  1. mkfs.FS_TYPE   /dev/DEVICE

ext4

xfs

btrfs (用的很少)

vfat 

  1. 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

非设备(文件)挂载到文件夹中

  1. 构造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大小来做实验。

  1. 划分swap分区

fdisk  /dev/sdb

操作步骤为:m n p 1 +4G +4G p m t  82(swap分区id)  w

再次查看显示已经划分好swap分区

  1. 初始化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数据

  1. 格式化文件系统

mkswap /swapfile

blkid /swapfile

  swapon -a

chmod 600 /swapfile

swap 分区需要写文件名称,pri 是优先级,对于文件可以不用修改

  1. 修改文件后执行swapon -a,生效
  2. swapon -s 显示,等同于cat /proc/swaps

  1. 构建2G数据

  1. 查看内存使用情况

  1. 查看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单独分配一个分区出来

  1. 找一块大的盘,划分磁盘 fdisk /dev/sdb

   操作步骤为:m n p 2  +2G p m   w

  1. 同步内存中的分区 partprobe
  2. mkdir  /mount/home
  3. mount /dev/sdb2  /mount/home/
  4. 查看挂载

  1. copy /home 下的文件到新的挂载点,-a 保留原有属性  . 包括隐藏文件

cp -av /home/.  /mount/home 

  1. 查看迁移过来数据

  1. 为确保数据完整性,查看大小

  1. 永久挂载

  1. mount 查看挂载,发现有2个挂载点,此时/home的数据为新数据
  2. 一般为了确保挂载无误,过一段时间后取消挂载

  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

  1. 刻录光盘 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

  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

  1. 备份:

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压缩,保存到指定路径

  1. 恢复

dd if=/path/to/image of=/dev/sdx 将备份文件恢复到指定盘

gzip -dc /path/to/image.gz | dd of=/dev/sdx 将压缩的备份文件恢复到指定盘

  1. 拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024

将内存里的数据拷贝到root目录下的mem.bin文件

  1. 从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso

拷贝光盘数据到root文件夹下,并保存为cd.iso文件

7、销毁磁盘数据

dd if=/dev/urandom of=/dev/sda1

有时为了数据安全性,利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作 以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值