Linux磁盘及文件系统管理

Linux磁盘及文件系统管理

创建文件系统 
    mkfs.ext#
    .xfs
mke2fs 功能比mkfs强大的多

检测及修复
    fsck 
        fsck。ext2 。。。

查看文件系统
dumpe2fs   tune2fs
调整文件系统特性
        tune2fs
part -a  扫描已经创建的分区 删除的分区也行

blkid 查看文件系统
lsmod 查看内核已装载模块
findfs :查找分区

设备文件:FHS(LSB)  /dev/: 设备

设备文件,关联至设备的驱动程序;设备的访问入口
每一个设备文件叫做一个节点

设备类别:一般在/dev下

  • 块(block):随机访问,数据交换单位为“块”(随机访问)

  • 字符(character):线性性访问,数据交换单位为字符(顺序访问)

mknod命令:用来创建块设备或者字符设备,并指明设备号,特殊文件

    mknod [OPTION]... NAME TYPE [MAJOR MINOR]
        -m, --mode=MODE  :创建设备文件时直接指明权限

        设备文件的文件名:ICANN

        [root@localhost testdir]# mknod -m 755  ltt1 b 10 15
        [root@localhost testdir]# mknod -m 755  ltt2 c 8 1
        [root@localhost testdir]# ll
        总用量 0
        brwxr-xr-x+ 1 root root 10, 15 8月  25 20:32 ltt1
        crwxr-xr-x+ 1 root root  8,  1 8月  25 20:32 ltt2
            创建块设备文件时,必需指定主、次设备号

注意:设备文件没有大小,只有设备号!

所以创建个和某设备一样的设备号,那就是同一个文件,

这就相当于复制设备文件了

[root@localhost mnt]# ll /media/qiu/
总用量 18
drwx------. 2 root root 16384 8月  26 19:18 lost+found
-rw-r--r--. 1 root root     0 8月  26 20:45 qqq
drwxr-xr-x. 2 root root  2048 8月  26 19:50 tmps
[root@localhost mnt]# ll 
总用量 18
drwx------. 2 root root 16384 8月  26 19:18 lost+found
-rw-r--r--. 1 root root     0 8月  26 20:45 qqq
drwxr-xr-x. 2 root root  2048 8月  26 19:50 tmps
[root@localhost mnt]# ll ~/CPsdb1 
brw-r--r--. 1 root root 8, 17 8月  26 20:37 /root/CPsdb1
[root@localhost mnt]# ll /dev/sdb1
brw-rw----. 1 root disk 8, 17 8月  26 19:33 /dev/sdb1

设备号:

major:主设备号,区别设备类别,用于标明所需驱动程序
minor:次设备号,区分同种类型下的不同的设备;特定设备的访问入口

磁盘设备文件:

IDE接口(ATA):并行, 133MB/s

两个IDE控制器:每个控制器可通过线缆接入两块磁盘,一主一从;

/dev/hd[a-z][#]
/dev/hda, /dev/hdb,
/dev/hdc, /dev/hdd

SCSI接口: 并行,Small Computer System Interface

  UltraSCSI 320, 320MB/s
  SATA接口:串行,Serial ATA,     **6Gpbs**
    USB接口:串行,480MB/s
    SAS接口:串行

设备文件:/dev/sd[a-z][#]

        [a-z]:标记设备
        [#]:磁盘分区

磁盘的结构

  • track: 磁道

  • sector: 扇区,512bytes

  • cylinder: 柱面(分区划分基于柱面)

  • 寻道时间:平均寻道时间

    • 现在的普通机械硬盘:5400rpm,7200rpm,1000rpm,1500rpm  rpm(转速)

Linux磁盘及文件系统管理Linux磁盘及文件系统管理

磁盘分区:

为什么要分区?

  • 优化I/O性能

  • 实现磁盘空间配额限制

  • 提高修复速度

  • 隔离系统和程序

  • 安装多个OS

  • 采用不同文件系统

两种分区方式:MBR,GPT

MBR:

Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

如何分区:按柱面

MBR:0磁道0扇区,主引导扇区(master boot record):512bytes**

  • 446bytes: boot loader(MBR)

  • 64bytes:磁盘分区表    (DPT)

    • 4个主分区;3主分区+1扩展(N个逻辑分区从5+分)最多每个分区2T

    • 16bytes: 标识一个分区

  • 2bytes:  (BRID)引导记录标示,当前MBR信息是否有效的标记; 55 aa 为有效
    Linux磁盘及文件系统管理

Linux磁盘及文件系统管理
Linux磁盘及文件系统管理

GPT:全局唯一标识分区表

GPT:是一个物理硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。但因为MBR分区表不支持容量大于
2TB的分区,所以也有一些BIOS系统为了支持大容量硬盘而用GPT分区表取代MBR分区表。GPT分区表支持最多128PB的硬盘和分区

划分

  • 使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

  • UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动

Linux磁盘及文件系统管理

管理分区

blkid:显示当前已挂载的文件系统

Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。

1、列出当前系统中所有已挂载文件系统的类型:

sudo blkid

2、显示指定设备 UUID:

sudo blkid -s UUID /dev/sda5

3、用指定的 UUID 查设备

blkid -U ef7a7136-8f3b-403a-93aa-1d3406b0dbca (UUID)

4、以列表形式显示

[root@localhost testdir]# blkid -o list
device       fs_type label    mount point      UUID
-----------------------------------------------------------------------------------
/dev/sda1    xfs              /boot            a7adb729-cfa8-4292-aae5-59fbd6ad64f1
/dev/sda2    swap             <swap>           ef7a7136-8f3b-403a-93aa-1d3406b0dbca
/dev/sda3    xfs              /                d82b626b-bbfb-412f-a994-fbe75ed89e82
/dev/sr0     iso9660 CentOS 7 x86_64 (not mounted) 2015-12-09-22-36-30-00

自动生成UUID命令:uuidgen

lsblk命令 (查看内存中的分区)

相当于
ls /dev/sd* == cat /proc/partitions
默认情况下将以树状列出所有块设备

    lsblk

    NAME   MAJ:MIN rm   SIZE RO type mountpoint
    sda      8:0    0 232.9G  0 disk 
    ├─sda1   8:1    0  46.6G  0 part /
    ├─sda2   8:2    0     1K  0 part 
    ├─sda5   8:5    0   190M  0 part /boot
    ├─sda6   8:6    0   3.7G  0 part [SWAP]
    ├─sda7   8:7    0  93.1G  0 part /data
    └─sda8   8:8    0  89.2G  0 part /personal
    sr0     11:0    1  1024M  0 rom

7个栏目名称如下:

  1. NAME:这是块设备名。

  2. MAJ:MIN:本栏显示主要和次要设备号。

  3. RM:本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。

  4. SIZE:本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。

  5. RO:该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。

  6. TYPE:本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。

  7. MOUNTPOINT:本栏指出设备挂载的挂载点。

默认选项不会列出所有空设备。要查看这些空设备用  -a 选项

开机状态下扫描新加的硬盘(虚拟机适用):

echo " – – – " /sys/class/scsi_host/host0/scan

[root@localhost ~]# echo " - - - " /sys/class/scsi_host/host0/scan 
[root@localhost ~]# lsblk

若扫不出来
后缀变成
host0、1、2、3/scan
都试一下就能出现了

分区工具fdisk命令和gfdisk:

1、查看已经识别的磁盘设备(真实磁盘分区表):

fdisk -l /dev/[hs]d[a-z]可以省略

2、管理分区

fdisk DEVICE —–列出指定设备上的磁盘信息

dos表示 mbr格式的磁盘

boot 引导分区
centos6 start  从哪个柱面
7  从哪个扇区开始

block  剩下一共用多少的块

Id表示,磁盘所在的场景类型  
83表示linux正常分区(16进制数字)

  • 5扩展分区

  • 82 swap分区

fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;
常用命令:
                p: 显示现有分区表;
                n: 创建新分区
                d: 删除现有分区
                t: 修改分区ID
                l: 查看支持哪些分区ID
                w: 保存退出
                q: 不保存退出
                m: 显示帮助信息

            示例:/dev/sdb
                3主+1扩展(3个逻辑)
                2主+1扩展(4个逻辑)
                ...    

        注意:如果本来有sda1-7
           这时你删除了6,那么7还在不过7的盘符就变成了6

    出现警告:
        查看内核是否已经识别新建分区:
            # cat /proc/partitions

        通知内核强制重读分区表:
            CentOS 5, 7: partprobe /dev/DEVICE
            CentOS 6: partx, kpartx
                新增分区用(可不加指明的 -n 选项)
                    **partx -a -n M:N  /dev/DEVICE**(常用 直接 -a )
                    kpartx -a /dev/DEVICE -f: force
                删除分区用 (可不加指明 -n 选项)
                    partx -d -n M:N /dev/DEVICE
                    centos6: –nr N-M

                注意:成功读取分区,可能需要命令重复执行2次或以上;

        此外的工具:sfdisk, parted

parted 此工具直接写入内存非常危险

parted的操作都是实时生效的,小心使用

用法:parted [选项]… [设备 [命令 [参数]…]…]

转化 gpt或者msdos的分区格式

parted /dev/sdb mklabel  gpt|msdos

显示分区状态
parted /dev/sdb print

分区从第一块开始 分1200M
parted /dev/sdb mkpart primary 1 1200 (从1开始到1200M默认M)

删除第一个分区
parted /dev/sdb rm 1
parted -l

其他:
查看mbr
hexdump  -C -n 512 /dev/sda

备份mbr
dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512
hexdump  -C -v /testdir/mbrbak

恢复mbr
dd if=/testdir/mbrbak  of=/dev/sdd
fdisk /dev/sdd -l
lsblk
hexdump  -C -n 512 /dev/sdd

破坏boot loader
dd if=/dev/zero of=/dev/sdd bs=1 count=446
hexdump  -C -v -n 512 /dev/sdd

清除分区标识
dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510
hexdump  -C -v -n 512 /dev/sdd
fdisk -l /dev/sdd
恢复分区标识
dd if=/testdir/mbrbak  of=/dev/sdd bs=1 count=2 skip=510 seek=510


文件系统:

概念

  文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

  从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

文件系统类型  VFS: Virtual File System

  • Linux文件系统: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap

  • 光盘:iso9660

  • Windows:fat32, ntfs

  • Unix: FFS(fast), UFS(unix), JFS2

  • 网络文件系统:NFS, CIFS

    • windows网络共享就是用的CIFS

    • linux需要借助samba

  • 集群文件系统:GFS2, OCFS2(oracle)

  • 分布式文件系统:ceph, moosefs, mogilefs, glusterfs, Lustre

  • RAW:未经处理或者未经格式化产生的文件系统

              伪文件系统: tmpfs, hugepagefs, proc, sysfs
              交换文件系统:swap

    文件系统分类

    根据其是否支持"journal(日志)"功能:

    文件系统的组成部分:

    Linux的虚拟文件系统:VFS

    查前支持的文件系统:cat /proc/filesystems

    • 在真实的文件系统之上搭建的虚拟文件系统,便于用户访问,提供一个统一的接口

    • 内核中的模块:ext4, xfs, vfat

    • 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

    • 日志型文件系统: ext3, ext4, xfs, …

    • 非日志型文件系统: ext2, vfat

元数据:每个索引项称一个inode, (index node)
        inode table

/var/logs/messages 
    根的inode --> 根目录对应的磁盘块 --> var对应的inode编号 --> 查inode table, 找到编号对应的inode --> var目录的磁盘块 --> logs 的inode编号 --> 查inode table, 找到logs目录的inode --> logs目录的磁盘块 --> 找到messages文件名对应的inode编号 -->查inode表,找到messages的inode编号对应的inode --> messages的磁盘块

                dentry

            链接文件:访问同一个文件数据不同路径
                硬链接:两个文件路径指向了同一个inode;
                    创建方法:
                        # cp -l SRC DEST
                        # ln SRC DEST

                        特性:
                            (1) 目录不支持硬链接;
                            (2) 硬链接不能跨文件系统;
                            (3) 硬链接文件与原文件是指向同一个inode,创建硬链接文件会增加inode的引用计数;
                符号链接:链接文件是一个完全独立的新文件,但其指向了原文件的文件路径;
                    特性:
                        (1) 符号链接文件与原文件是两个各自独立文件;
                        (2) 目录可以创建符号链接;
                        (3) 可以跨文件系统;
                        (4) 删除链接不影响原文件;但删除原文件,符号链接指向的文件路径将不复存在,因此,此时链接文件将变成失效的链接;

                        其大小并非真正原文件大小,而是指向的原文件的文件路径字符串所包含的字节数;

                    创建方法:
                        ln -s SRC DEST

                bitmap索引

                block group: 
                    bitmap: inode, block

创建文件系统

mkfs命令:

(1) # mkfs.FS_TYPE /dev/DEVICE

    ext4
    xfs
    btrfs
    vfat
yum install xfsprogs


(2) # mkfs -t FS_TYPE /dev/DEVICE

  • -L  'LABEL': 设定卷标

但凡加上 e2fs的命令一般就是给 ext # 系列文件系统用的的工具

ext系列文件系统:mke2fs

mke2fs [OPTION]... /dev/DEVICE
  • -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:关闭指定特性

blkid块设备属性信息查看

语法:blkid [OPTION]… [DEVICE]

  • -U UUID: 根据指定的UUID来查找对应的设备

  • -L LABEL:根据指定的LABEL来查找对应的设备

      [root@localhost ~]# blkid 
      /dev/sda1: UUID="a7adb729-cfa8-4292-aae5-59fbd6ad64f1" TYPE="xfs" 
      /dev/sda2: UUID="ef7a7136-8f3b-403a-93aa-1d3406b0dbca" TYPE="swap" 
      /dev/sda3: UUID="d82b626b-bbfb-412f-a994-fbe75ed89e82" TYPE="xfs" 
      /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7

    e2label:管理ext系列文件系统的LABEL(卷标名)

    语法: e2label device [ new-label ](改卷标名):

          查看:e2label /dev/DEVICE
          设定卷标:e2label /dev/DEVICE LABEL

findfs :查找分区

语法:
以全标明查找分区
findfs [options] LABEL=

以UUID查找分区
findfs [options] UUID=

[root@localhost ~]# findfs LABEL=123
/dev/sdc1


[root@localhost ~]# findfs UUID=d82b626b-bbfb-412f-a994-fbe75ed89e82
/dev/sda3
[root@localhost ~]# blkid -U d82b626b-bbfb-412f-a994-fbe75ed89e82
/dev/sda3

UUID: 全局惟一标识符

tune2fs:调整文件系统的参数

tune2fs:重新设定ext系列文件系统可调整参数的值

  • -l:查看指定文件系统超级块信息;super block

  • -L 'LABEL':修改卷标

  • -m #:修预留给管理员的空间百分比

  • -j: 将ext2升级为ext3

  • -O: 文件系统属性启用或禁用, –O ^has_journal

  • -o: 调整文件系统的默认挂载选项,–o ^acl

  • -U UUID: 修改UUID号

dumpe2fs:

  • -h:查看超级块信息(分组信息),分区用分组管理

文件系统检测和修复:

因进程意外中止或系统崩溃等原因导致写入操作非正常终止时,可能会导致文件损坏;此时,应该修改修复文件系统;

常发生于死机或者非正常关机之后

注意:应该离线进行;

fsck: File System Check

  • fsck.FS_TYPE

  • fsck -t FS_TYPE

    注意: FS_TYPE一定要与分区上已经文件类型相同;

    • -a: 自动修复错误

    • -r: 交互式修复错误

e2fsck:ext系列文件专用的检测修复工具

  • -y:自动回答为yes

  • -f:强制修复;

注意:这只是文件系统被破坏,里面的文件还是存在的,修复需谨慎,要做备份,
重要的话不要修复!!! 一定要在非挂载的情况下修复!!!

Windows无法识别Linux上专用的文件系统,因此,有存储设备需要两种系统之间交叉使用时,应该使用windows支持的文件系统:

    # mkfs -t vfat /dev/DEVICE

swap文件系统:
    Linux上交换空间必须使用独立的磁盘分区;
        fdisk /dev/DEVICE
            t命令调整其ID为82; 

    创建交换分区文件系统:mkswap命令
        mkswap [-L LABEL] /dev/DEVICE

注意:在Linux系统上,所有的文件系统必须通过根文件系统的某个分支来访问;根文件系统:根关联到的分区
        有一定的要求:FHS

挂载mount

  • 挂载:将额外文件系统与根文件系统某现存的目录建立起关联
    关系,进而使得此目录做为其它文件访问入口的行为

  • 卸载:为解除此关联关系的过程

  • 把设备关联挂载点:mount Point

    • mount

  • 卸载时:可使用设备,也可以使用挂载点

    • umount

mount命令:

语法格式:mount DEVICE MOUNT_POINT

挂载点
   1、事先存在;
   2、应该使用别的进程未使用的目录;
   3、挂载点下原有的文件将被隐藏;
   4、进程正在使用的设备无法被卸载

mount:将显示当前系统已经挂载的所有文件系统的相关信息;
通过查看/etc/mtab文件显示当前已挂载的所有设备或者更全面的 /proc/mounts

命令选项:

  • -r: 只读挂载

  • -w: read and write,读写挂载

  • -L LABEL: 以卷标的方式指定要挂载的设备,因此,此时DEVICE可省;

  • -U UUID:以UUID的方式指定要挂载的设备,因此,此时DEVICE可省;

  • -a: 自动挂载所有的支持自动挂载的设备(/etc/fstab文件中定义的支持自动挂载的设备);

  • -B, –bind: 绑定目录到另一个目录上(挂载目录)

  • -n: 默认情况下,设备挂载与否的改变结果会被保存于/etc/mtab中一份;-n选项用于变动时不更新此文件,df就看不到了!

  • -t FSTYPE: 被挂载的设备上的文件系统类型;可省略,此时mount会自动使用blkid命令来判断之;

    示例:

       # mount -U dea669ee-e769-46d9-86a8-88925a10278b /data/mydata
  • -o options:(挂载文件系统的选项),多个选项使用逗号分隔

    • async:异步模式

    • sync:同步模式,内存更改时,同时写磁盘(立刻同步,性能不佳)

    • atime/noatime:包含目录和文件

    • diratime/nodiratime:目录的访问时间戳

    • auto/noauto:是否支持自动挂载,是否支持-a选项

    • exec/noexec:是否支持将文件系统上运行应用程序(可执行的程序都不能运行)

    • dev/nodev:是否支持在此文件系统上使用设备文件

    • suid/nosuid:不否支持suid和sgid权限

    • remount:重新挂载

    • acl: 支持使用facl;

       # mount -o acl
       # tune2fs -o acl /dev/DEVICE: 打开acl为默认挂载选项;ro:只读
    • rw:读写

    • user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载

    • acl:启用此文件系统上的acl功能
      Defaults:相当于rw, nosuid, dev, exec, auto, nouser, async
      如果要同时指明多个挂载选项,彼此之间以逗号分隔;
      defaults,acl,noatime,noexec

      查看所有已经挂载设备的方法:

               # mount
               # cat /etc/mtab
               # cat /proc/mounts

挂载光盘要用 mount -o loop 光盘镜像!

umount命令:

umount DEVICE
umount MOUNT_POINT

注意:正在被某进程访问的设备是不可以被卸载的;查看被什么进程所占用:
# lsof 设备
# fuser -v 挂载点查看挂载点被什么进程占用!

# fuser -km 设备或挂载点: 终止正访问挂载点的进程;
此命令非常危险 如果不小心fuser -km / 会踢出所有的用户!!

[root@localhost ~]# umount /dev/sdb1
umount: /mnt:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)

[root@localhost ~]# lsof /dev/sdb1  -----后面接设备
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
bash    3029 root  cwd    DIR   8,17     2048 131073 /mnt/tmps

[root@localhost ~]# fuser -v /mnt
                     用户     进程号 权限   命令
/mnt:                root     kernel mount /mnt
[root@localhost ~]# fuser -km /dev/sdb1
/dev/sdb1:            3029c

交换分区:

创建交换分区文件系统:mkswap

free命令:查看内存使用状况

  • -m

  • -g

启动交换分区:

swapon [OPTION] [DEVICE]

  • -a: 启用/etc/fstab文件中定义的所有交换分区

禁用交换分区:

swapoff DEVICE


文件挂载配置文件 /etc/fstab

挂载点和/etc/fstab

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

定义开机可自动挂载的文件系统,每行一个:

6个字段:
    (1) 挂载的设备:
        设备文件
        LABEL
        UUID
        伪文件系统:如sysfs, proc, tmpfs等
    (2) 挂载点
        swap的挂载点仍为swap
    (3) 文件系统类            
      (4) 挂载选项
        defaults表示使用默认挂载选项;
        多个挂载选项间使用逗号分隔;如defaults,acl,noatime
        pri=100 越大为主,首先启用最大的!
        ro,表示只读!rw读写
    (5) 转储频率
        0:从不备份
        1: 每天备份
        2: 每隔一天备份
    (6) 自检次序
        0:不自检
        1:首先自检,通常只有根文件系统可首先自检
        2:次级自检,
        ...
1:首先自检;一般只有rootfs才用1

mount -a:可自动挂载自定义在此文件中的所支持制动挂载的设备(注意,已经挂载过的再加入fstab里面此命令是不会生效的,必须卸载再挂载或者-o remount才行!)

挂载时如挂载的是目录,那么第三字段 写none,第四字段写bind

Linux磁盘及文件系统管理
注意最后列如果不写0的话,如果写错会出问题,开机启动不了!

设备名出错,自检非零,开机无法启动,修复方法

启动不了 mount -o remount,rw /

这样重挂一下根就好了!

Linux磁盘及文件系统管理
1、是以卷标名挂载
2、挂载光盘
3、挂载网络文件系统

创建ISO文件

cp /dev/cdrom /root/centos7.iso
mkisofs  -r  -o /root/etc.iso /etc

弹出光盘命令

弹出光驱:eject (弹出光驱) 
         eject -t 弹入光驱
可以在机房调试用

U盘的挂载也一样,不过要注意,往U盘里写入数据后多执行
sync  同步一下再用

实现loop 设备和文件关联(用设备关联文件名!)

losetup /dev/loop# 所要挂载的文件名

然后再用mount /dev/loop# 挂载点
挂载上就行了

swap分区的创建与挂载

交换分区是系统RAM的补充

基本设置包括:

• 创建交换分区或者文件
• 使用mkswap写入特殊签名
• 在/etc/fstab文件中添加适当的条目
• 使用swapon -a 激活交换空间

查看谁提供当前swap功能!

cat /proc/swaps 
blkid -U  UUID 号
swapon -s

mount是看不到的

1、创建swap

mkswap /设备名
或者 -L 指明标签 设备号

2、启用:swapon

swapon [OPTION]… [DEVICE]

-a:激活所有的交换分区(这里指的是fstab中的文件内容);
-p PRIORITY:指定优先级

注意由于创建后的优先级比较低,要想优先级高就在/etc/fstab 的文件里    defaults后面追加,pri=value 值越大优先级越高
Linux磁盘及文件系统管理

3、禁用:swapoff [OPTION]… [DEVIC]

df命令和du:

df  显示磁盘分区上的可使用的磁盘空间及文件系统挂载的相关信息,

  • -l: 仅显示本地文件系统的相关系统;

  • -h: 单位换算;

  • -i: 显示inode的使用情况而非磁盘块的;

du命令:用于评估文件大小

  • -s: 统计整个目录及内部所有文件总体大小(简要信息);

  • -h: human-readable


dd命令:convert and copy a file

用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#:block size, 复制单元大小
count=#:复制多少个bs
  • of=file 写到所命名的文件而不是到标准输出

  • if=file 从所命名文件读取而不是从标准输入

  • skip=blocks 从开头忽略blocks个ibs(来源)大小的块

  • seek=blocks 从开头忽略blocks个obs大小的块

  • bs=size 指定块大小(既是是ibs也是obs)

  • count=n 只拷贝n个记录

  • ibs=size 一次读size个byte

  • obs=size  一次写size个byte

  • cbs=size  一次转化size个byte

      [root@localhost ~ ]# echo "12345678">f1
      [root@localhost ~ ]# echo "abcdefghi">f2
      [root@localhost ~ ]# dd if=f1 of=f2 bs=1 count=4 skip=3 seek=4 
      记录了4+0 的读入
      记录了4+0 的写出
      4字节(4 B)已复制,0.000276785 秒,14.5 kB/秒
      [root@localhost ~ ]# cat f2
      abcd4567    -------注意这里被截断了
    
      abcd4567[root@localhost ~ ]# dd if=f1 of=f2 bs=1 count=4 skip=3 seek=4 conv=notrunc

工具dd

conv=conversion[,conversion…] 用指定的参数转换文件。
转换参数:

ascii 转换 EBCDIC 为 ASCII
ebcdic 转换 ASCII 为 EBCDIC
block 转换为长度为 cbs 的记录,不足部分用空格填充。
unblock  替代cbs长度的每一行尾的空格为新行
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
swab 交换输入的每对字节
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

dd命令常用的几项

磁盘拷贝(磁盘对拷b要大于a的容量):

dd if=/dev/sda of=/dev/sdb

备份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

备份:

方式1、 dd if=/dev/sdx of=/dev/sdy
将本地的/dev/sdx整盘备份到/dev/sdy

方式2、 dd if=/dev/sdx of=/path/to/image
将/dev/sdx全盘数据备份到指定路径的image文件

方式3、 dd if=/dev/sdx | gzip >/path/to/image.gz
备份/dev/sdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

恢复:

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

方式2、 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文件

销毁磁盘数据

dd if=/dev/urandom of=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作
无法执行。

得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000
of=/root/1Gb.file

dd if=/dev/zero bs=2048 count=500000
of=/root/1Gb.file

dd if=/dev/zero bs=4096 count=250000
of=/root/1Gb.file

dd if=/dev/zero bs=8192 count=125000
of=/root/1Gb.file

通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

测试硬盘读写速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024   count=1000000

通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

修复硬盘

dd if=/dev/sda of=/dev/sda

当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/42042

(0)
qzxqzx
上一篇 2016-08-30
下一篇 2016-08-30

相关推荐

  • 三剑客之sed

    sed命令:Stream EDitor 流编辑器 sed命令的工作流程:     sed会复制原文件中的一行或者多行,逐行进行操作。首先会将该行的内容放入到模式空间内,在模式空间内进行定界或者正则表达式匹配操作。     a.如果该行内容不符合正则表达式或定界,该内容则被判断为No,进行标准输出。 &nbsp…

    Linux干货 2016-08-08
  • Linux系统网络属性管理之bond

    Bonding 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式 •Mode 0 (balance-rr) 轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口…

    Linux干货 2016-09-18
  • LAMP三个主机的简单配置和php-admin,wordpress

    LAMP:组合应用httpd2.4:yum install httpd.2.4php-fpm:yum install php-fpm php-mysqlmysql: yum install mysql 注意:在做实验时,一定要将iptables和selinux给关了。 http:只需在httpd上写一个必须的文件/etc/httpd/conf.d/fcgic…

    2017-06-06
  • 启动流程排错和自建linux系统

    一、grub的配置文件/boot/grub/grub.conf default=0        ###设置默认启动项0表示第一个 timeout=5        ##设置超时时间,如果超过5s用户…

    Linux干货 2016-09-18
  • Linux 用户、用户组及权限管理

    一、Linux用户及用户组的基本概念 用户:用户是实现能够将有限的资源在多个使用者之间进行分配;、 用户组:用户组是指多个用户的集合,方便对一类需要同样权限的用户授权 Linux是多用户、多任务的操作系统。     多用户指:多人同时使用系统资源;多任务:同时运行多个进程 二、用户及用户组类别 1、用户:名称解析库 /…

    Linux干货 2016-03-20
  • N22-第十周作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) (1)POST:加电自检,利用COMS里记录的配置信息检测硬件是否都工作正常 (2)Boot Sequence: 按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备 Grub引导程序:提供一个菜单,允许用户选择要启动的系统或不同的内核版本, 把用户选定的内…

    Linux干货 2016-10-25

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-30 10:15

    文章对磁盘和文件系统管理知识总结的很全面,建议总结完后,可以从增加一块硬盘到分区、格式化、挂载使用,连贯的操作一遍,多加熟悉各个命令的用法。