第05课 磁盘管理

目录

1. 认识磁盘
2. 认识文件系统(filesystem,fs)
3. 查看文件系统
4. 磁盘分区
5. 磁盘格式化
6. 挂载
7. 制作 swap
8. dd命令
9. 延伸阅读

1. 认识磁盘

1.1 磁盘的组成
  • 扇区
    最小的物理存储单位
    每个扇区 512bytes

  • 柱面
    磁盘分区的最小单位
    将扇区围成一个圆,就是柱面

  • 第一个扇区
    磁盘中最重要的部分
    包含主要开机区(Master Boot Record, MBR)及分区表,其中 MBR 占 446 bytes,分区表占 64 bytes

1.2 磁盘的种类

按照不同的接口,磁盘可分为:IDE 盘、SATA 盘、闪存盘等
不同种类的磁盘在 Linux 下的命名不同

  • IDE 盘
    hda、hdb

  • SATA、闪存
    sda、sdb

1.3 分区的类型

由于分区表仅 64 bytes,导致最多仅能在分区表中存储4条记录,四条记录中包含主分区(Primary)和扩展分区(Extended),而扩展分区还可以再分出多个逻辑分区(Logical),这三种分区类型的特点如下:
* Primary + Extended <= 4
* Extended <= 1
* Logical 包含于 Extended
* 仅有 Primary 、Logical 能被格式化


2. 认识文件系统(filesystem, fs)

2.1 文件系统的组成
  • superblock
    记录文件系统的整体信息
    记录 inode/block 的总量、用量、余量
    记录 inode/block 的大小(inode 为128 bytes;block 为1、2、4KB)
    记录挂载情况及其他与文件系统相关的信息

  • inode
    用于记录文件的属性,以及文件所占用的 block
    一个文件占且仅占用 1 个 inode
    每个 inode 大小均默认固定为 128 bytes
    可以指定文件系统中 inode 的数量,同时,文件系统能存储文件的数量(不是大小)由 inode 决定
    ps. 有时明明磁盘容量还未满,但已写不进文件,可使用 df -i 查看 inode 的用量,可能已经用完

  • block
    是文件的实际存储位置
    1个文件占用1到多个 block,且每个 block 仅能属于一个文件
    block 的大小可为 1K、2K、4K
    若 block 太小,每个文件将占用更多的 block,从而读/写文件时增加磁头的移动次数,影响读写性能
    若 block 太大,则部分小文件无法占满整个 block,从而导致空间浪费

  • 碎片整理
    如果 block 太过离散,导致读写性能下降,可将文件系统中的数据都拷出来,然后重新格式化文件系统,完成后再将数据拷回来,此时的 block 将相对连续,读写时减少磁头的来回移动,提升读写性能

2.2 文件系统的类型
  • 传统文件系统
    ext2、minix、MS-DOS、FAT、iso9660(光盘)

  • 日志式文件系统
    ext3、NTFS、reiser、xfs

  • 网络文件系统
    NFS、SMB

  • 查看系统所支持文件系统
    ll /lib/modules/$(uname -r)/kernel/fs
    cat /proc/filesystems

  • 扩展
    EXT 文件系统是在 inode 中记录了该文件所有的 block 号,所以读取时,可以立即获得该文件全部的 block 号
    而 FAT 文件系统则是以链表的方式记录 block 号,即只有读到前一个 block 后,才能知道下一个 block 在哪


3. 查看文件系统

3.1 df

列出文件系统的整体使用量

3.1.1 选项
* -h:以人性化的单位显示(默认 KB)
* -T:同时列出分区的文件系统类型
* -i:不列出硬盘的容量,而是列出 inode 数量

3.1.2 示例

  • 显示整个计算机的文件系统信息
[root@localhost ~]# df
文件系统          1K-块    已用     可用 已用% 挂载点
/dev/sda3      29140072 1010284 28129788    4% /
devtmpfs         496148       0   496148    0% /dev
tmpfs            501716       0   501716    0% /dev/shm
tmpfs            501716    6760   494956    2% /run
tmpfs            501716       0   501716    0% /sys/fs/cgroup
/dev/sda1        201388   75952   125436   38% /boot
  • 人性化单位
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        28G  987M   27G    4% /
devtmpfs        485M     0  485M    0% /dev
tmpfs           490M     0  490M    0% /dev/shm
tmpfs           490M  6.7M  484M    2% /run
tmpfs           490M     0  490M    0% /sys/fs/cgroup
/dev/sda1       197M   75M  123M   38% /boot
  • 显示某个挂载点或分区的文件系统信息
[root@localhost ~]# df /dev/sda3
文件系统          1K-块    已用     可用 已用% 挂载点
/dev/sda3      29140072 1010284 28129788    4% /
[root@localhost ~]# df /
文件系统          1K-块    已用     可用 已用% 挂载点
/dev/sda3      29140072 1010284 28129788    4% /
  • 显示文件系统类型
[root@localhost ~]# df -T
文件系统       类型        1K-块    已用     可用 已用% 挂载点
/dev/sda3      xfs      29140072 1010284 28129788    4% /
devtmpfs       devtmpfs   496148       0   496148    0% /dev
tmpfs          tmpfs      501716       0   501716    0% /dev/shm
tmpfs          tmpfs      501716    6760   494956    2% /run
tmpfs          tmpfs      501716       0   501716    0% /sys/fs/cgroup
/dev/sda1      xfs        201388   75952   125436   38% /boot
  • 显示 inode 使用情况
[root@localhost ~]# df -i
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda3      29154304   28211 29126093       1% /
devtmpfs         124037     364   123673       1% /dev
tmpfs            125429       1   125428       1% /dev/shm
tmpfs            125429     405   125024       1% /run
tmpfs            125429      13   125416       1% /sys/fs/cgroup
/dev/sda1        204800     330   204470       1% /boot
3.2 du

查看目录所占容量

3.2.1 选项

  • -h:人性化单位
  • -s:仅列出所查目录的总量(默认将所有子目录都列出)

3.2.2 示例

  • 列出某个目录的用量
[root@localhost ~]# du /root/
4   /root/.ssh
0   /root/test/c
0   /root/test
52  /root/
  • 仅列出该目录
[root@localhost ~]# du -s /root/
52  /root/
  • 人性化单位
[root@localhost ~]# du -sh /root/
52K /root/
3.3 blkid

查看块设备的文件系统类型、Label、设备名等

[root@choco-01 ~]# blkid /dev/sda1
/dev/sda1: UUID="d92c17e0-8401-474e-a97a-44ca72ea7b53" TYPE="xfs" 
3.4 dumpe2fs

查看supberblock信息

[root@choco-01 ~]# dumpe2fs /dev/sdb1
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          a7758e6f-3a8d-415c-90c1-e2430a916783
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              131072
Block count:              524288
Reserved block count:     26214
Free blocks:              519380
Free inodes:              131061
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      127
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   256
Filesystem created:       Wed May 23 09:03:53 2018
Last mount time:          n/a
Last write time:          Wed May 23 09:03:53 2018
Mount count:              0
Maximum mount count:      -1
Last checked:             Wed May 23 09:03:53 2018
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           128
Default directory hash:   half_md4
Directory Hash Seed:      a2fc2482-1218-4ce0-99e0-f79344088dea


Group 0: (Blocks 0-32767)
   主 superblock at 0, Group descriptors at 1-1
   保留的GDT块位于 2-128
   Block bitmap at 129 (+129), Inode bitmap at 130 (+130)
   Inode表位于 131-386 (+131)
   32375 free blocks, 8181 free inodes, 2 directories
   可用块数: 393-32767
   可用inode数: 12-8192

4. 磁盘分区

4.1 fdisk

以 MBR 的方式进行分区,最大支持硬盘容量为2T

4.1.1 查看磁盘分区情况
fdisk -lfdisk -l /dev/sda

4.1.2 功能键

p:print
n:new
d:delete
q:quit
w:write
m:manual

4.1.3 示例

  • 查看操作手册
    [root@localhost ~]# fdisk /dev/sda
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):m
    命令操作
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       g   create a new empty GPT partition table
       G   create an IRIX (SGI) partition table
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)
  • 查看分区情况
    [root@localhost ~]# fdisk /dev/sda
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):p

    磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00099783

       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      411647      204800   83  Linux
    /dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
    /dev/sda3         4605952    62914559    29154304   83  Linux
  • 删除分区
    [root@localhost ~]# fdisk /dev/sda
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):p

    磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00099783

       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      411647      204800   83  Linux
    /dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
    /dev/sda3         4605952    62914559    29154304   83  Linux

    命令(输入 m 获取帮助):q

    [root@localhost ~]# fdisk /dev/sda
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):d
    分区号 (1-3,默认 3):1
    分区 1 已删除

    命令(输入 m 获取帮助):d
    分区号 (2,3,默认 3):2
    分区 2 已删除

    命令(输入 m 获取帮助):d
    已选择分区 3
    分区 3 已删除
  • 新建分区

    [root@localhost ~]# fdisk /dev/sda
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):1
    起始 扇区 (2048-62914559,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+10G
    分区 1 已设置为 Linux 类型,大小设为 10 GiB

    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): e
    分区号 (2-4,默认 2):4
    起始 扇区 (20973568-62914559,默认为 20973568):
    将使用默认值 20973568
    Last 扇区, +扇区 or +size{K,M,G} (20973568-62914559,默认为 62914559):+2G
    分区 4 已设置为 Extended 类型,大小设为 2 GiB
4.2 parted

支持 GTP 方式分区,可以支持高于2T 的硬盘,用法与 fdisk 大同小异

**4.2.1 查看磁盘分区情况
parted /dev/sdb print
4.2.1 功能键
help
rm
mkpart
q

4.2.3 示例

  • 查看帮助
    [root@localhost ~]# parted /dev/sdb
    GNU Parted 3.1
    使用 /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) help
      align-check TYPE N                        check partition N for TYPE(min|opt) alignment
      help [COMMAND]                           print general help, or help on COMMAND
      mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
      mkpart PART-TYPE [FS-TYPE] START END     make a partition
      name NUMBER NAME                         name partition NUMBER as NAME
      print [devices|free|list,all|NUMBER]     display the partition table, available devices, free
            space, all found partitions, or a particular partition
      quit                                     exit program
      rescue START END                         rescue a lost partition near START and END
      rm NUMBER                                delete partition NUMBER
      select DEVICE                            choose the device to edit
      disk_set FLAG STATE                      change the FLAG on selected device
      disk_toggle [FLAG]                       toggle the state of FLAG on selected device
      set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
      toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
      unit UNIT                                set the default unit to UNIT
      version                                  display the version number and copyright information
            of GNU Parted
  • 查看分区情况
    [root@localhost ~]# parted /dev/sdb
    GNU Parted 3.1
    使用 /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:

    Number  Start   End     Size    Type     File system     标志
     1      1049kB  1075MB  1074MB  primary  linux-swap(v1)
  • 删除分区
    [root@localhost ~]# parted /dev/sdb
    GNU Parted 3.1
    使用 /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands
    (parted) rm
    分区编号? 1
  • 新建 gpt 分区
    [root@localhost ~]# parted /dev/sdb
    GNU Parted 3.1
    使用 /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) mklabel
    新的磁盘标签类型? gpt
    警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost.
    Do you want to continue?
    是/Yes/否/No? yes
    (parted) mkpart
    分区名称?  []? chocolee-1
    文件系统类型?  [ext2]?
    起始点? 0
    结束点? 2G
    警告: The resulting partition is not properly aligned for best performance.
    忽略/Ignore/放弃/Cancel? ignore
    (parted) print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:

    Number  Start   End     Size    File system  Name        标志
     1      17.4kB  2000MB  2000MB               chocolee-1

5. 磁盘格式化

5.1 mke2fs(不支持xfs)

5.1.1 选项
* -t <fs>:指定文件系统类型
* -b <block_size>:指定每个 block 的大小
* -I <inode_size>:指定 inode 的大小
* -N <amount of inode>:指定 inode 的数量
* -m <percent>:指定保留给 root 的容量百分比

5.1.2 示例

  • 指定文件系统类型
    [root@choco-01 ~]# mke2fs -t ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 524288 blocks
    26214 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=536870912
    16 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (16384 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 

    [root@choco-01 ~]# blkid !$
    blkid /dev/sdb1
    /dev/sdb1: UUID="fbc8e490-b568-4e0d-be39-6d1530e6c41b" TYPE="ext4" 
  • 指定 block 的大小(只能为1/2/4K中的一个)
    [root@choco-01 ~]# mke2fs -b 2k /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=2048 (log=1)                                   #看这里!看这里!看这里!
    分块大小=2048 (log=1)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 1048576 blocks
    52428 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=537919488
    64 block groups
    16384 blocks per group, 16384 fragments per group
    2048 inodes per group
    Superblock backups stored on blocks: 
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Writing superblocks and filesystem accounting information: 完成 
  • 指定 inode 的数量
    [root@choco-01 ~]# mke2fs -N 1024 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1024 inodes, 524288 blocks                                         #看这里!看这里!看这里!
    26214 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=536870912
    16 block groups 
    32768 blocks per group, 32768 fragments per group
    64 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Writing superblocks and filesystem accounting information: 完成 

  • 指定 inode 的大小

    [root@choco-01 ~]# mke2fs -I 1234 /dev/sdb1            # 随便指定个 inode-size 报错!
    mke2fs 1.42.9 (28-Dec-2013)
    mke2fs: invalid inode size 1234 (min 128/max 4096)   # 提示 128~4096 ,估计还得是2的整数次幂
    [root@choco-01 ~]# mke2fs -I 4096 !$                # 那就试试 4096
    mke2fs -I 4096 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 524288 blocks
    26214 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=536870912
    16 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Writing superblocks and filesystem accounting information: 完成 


    [root@choco-01 ~]# dumpe2fs /dev/sdb1                # 用 dumpe2fs 查看
    Inode size:           4096
  • 指定留给 root 的容量

    [root@choco-01 ~]# mke2fs -m 0.5 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 524288 blocks
    2621 blocks (0.50%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=536870912
    16 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Writing superblocks and filesystem accounting information: 完成 
5.2 mkfs.

已格式化过的分区,需要加 -f 选项强制进行格式化
该方式支持的 fs 类型比 mke2fs
但除了 mkfs.xfs 其实仍然调用的是 mke2fs

  • 看看 mkfs支持哪些 fs
    [root@choco-01 ~]# mkfs.
    mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs
  • 格式化成 ext2 文件系统类型
    [root@choco-01 ~]# mkfs.ext2 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)                    # 咦?命名我输的是 mkfs.ext2 啊
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 524288 blocks
    26214 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=536870912
    16 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Writing superblocks and filesystem accounting information: 完成 

6. 挂载

把挂载理解为嫁接的概念:目录结构是一棵树,文件系统是枝丫,只有将不同的枝丫嫁接到目录结构这棵树上,才能正常生长
——挂载点一定是目录,该目录为进入该文件系统的入口。

6.1 注意事项
  • 单一文件系统不应被挂载到不同的目录上
  • 单一目录不应重复挂载多个文件系统
  • 要作为挂载点的目录,理论上应该使用空目录

ps.若不采用空目录,则在挂载后,目录中原有的子目录及子文件将暂时隐藏,目录中将仅显示所挂载文件系统中的内容,待卸载后才会恢复

6.2 /etc/fstab 文件
    [root@choco-01 ~]# cat /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Thu May 10 00:16:05 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=fefbd965-eb8c-4d30-bec5-aeba84c0843c /                       xfs     defaults        0 0
    UUID=d92c17e0-8401-474e-a97a-44ca72ea7b53 /boot                   xfs     defaults        0 0
    UUID=6d03af8a-d90c-459e-9fab-7dbf093078d1 swap                    swap    defaults        0 0
  • 第1列:设备名
  • 第2列:挂载点
  • 第3列:文件系统类型
  • 第4列:挂载选项
  • 第5列:dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份
  • 第6列:fsck选项,告诉fsck程序以什么顺序检查文件系统,0为忽略
6.3 mount 命令

6.2.1 选项
* -a:根据 /etc/fstab 进行自动挂载
* -t:指定挂载分区的文件系统类型,一般情况不需要指定,哪些不需要指定见 /etc/filesystems
* -o:特殊选项
* rorw:挂载为只读或可读写
* execnoexec:是否允许分区上存在可执行二进制文件
* autonoauto:是否允许使用 mount -a 自动挂载
* usernouser:是否允许普通用户挂载该分区
* remount:重新挂在,出错时常用
* defaultsrw,suid,dev,exec,auto,nouser,async

6.2.2 示例

  • 简单挂载
    [root@choco-01 ~]# mount /!$ /mnt
    mount //dev/sdb1 /mnt
  • 挂载光盘

mount -t iso9660 /dev/cdrom /mnt # 其实也可以不指定类型的

  • 重新挂载
    进入单用户模式时,根目录常被挂为 ro,此时就可以用如下命令重新挂载为 rw
    mount -o remount,rw,auto /
6.3 umount(卸载)

后面可以接挂载点、分区设备,Label

    [root@choco-01 ~]# df
    文件系统          1K-块    已用     可用 已用% 挂载点
    tmpfs             99972       0    99972    0% /run/user/0
    /dev/sdb1       2064208    3072  1956280    1% /mnt
    [root@choco-01 ~]# umount /dev/sdb1 && df
    文件系统          1K-块    已用     可用 已用% 挂载点

    [root@choco-01 ~]# mount /dev/sdb1 /mnt
    [root@choco-01 ~]# df
    文件系统          1K-块    已用     可用 已用% 挂载点
    tmpfs             99972       0    99972    0% /run/user/0
    /dev/sdb1       2064208    3072  1956280    1% /mnt
    [root@choco-01 ~]# umount /mnt && df
    文件系统          1K-块    已用     可用 已用% 挂载点

7. 制作 swap

7.1 用分区制作 swap
  1. 查看 swap 使用情况:free
    [root@localhost ~]# free -h
                 total       used       free     shared    buffers     cached
    Mem:          979M       235M       744M       6.6M       692K        76M
    -/+ buffers/cache:       158M       821M
    Swap:         2.0G         0B       2.0G
  1. 查看硬盘使用情况:fdisk -l
    [root@localhost ~]# fdisk -l

    磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00099783

       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      411647      204800   83  Linux
    /dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
    /dev/sda3         4605952    62914559    29154304   83  Linux

    磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
    Units = 扇区 of 1 * 512 = 512 byte    
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
  1. 建立大小合适的分区:fdisk /dev/sdb,使用t修改文区类型为82
    [root@localhost ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。

    Device does not contain a recognized partition table
    使用磁盘标识符 0x3e7b9048 创建新的 DOS 磁盘标签。

    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):1
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1024M
    分区 1 已设置为 Linux 类型,大小设为 1 GiB

    命令(输入 m 获取帮助):w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    正在同步磁盘。

    [root@localhost ~]# fdisk -l

    磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00099783

       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      411647      204800   83  Linux
    /dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
    /dev/sda3         4605952    62914559    29154304   83  Linux

    磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x3e7b9048

       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
  1. 格式化:mkswap /dev/sdb1
    [root@localhost ~]# mkswap /dev/sdb1
    正在设置交换空间版本 1,大小 = 1048572 KiB
    无标签,UUID=80ae28f5-2b29-4188-bc94-15890ebd7228
  1. 加载 swap,并查看变化:swapon /dev/sdb1free
    [root@localhost ~]# swapon /dev/sdb1 && free -h
                 total       used       free     shared    buffers     cached
    Mem:          979M       236M       743M       6.6M       696K        76M
    -/+ buffers/cache:       159M       820M
    Swap:         3.0G         0B       3.0G
7.2 用文件制作 swap
  1. 查看 swap 使用情况:free
    [root@localhost ~]# free -h
                 total       used       free     shared    buffers     cached
    Mem:          979M       235M       744M       6.6M       692K        76M
    -/+ buffers/cache:       158M       821M
    Swap:         2.0G         0B       2.0G
  1. 制作大文件
    [root@localhost ~]# dd if=/dev/zero of=/tmp/aaa bs=1M count=1024
    记录了1024+0 的读入
    记录了1024+0 的写出
    1073741824字节(1.1 GB)已复制,5.69709 秒,188 MB/秒
  1. 格式化
[root@localhost ~]# mkswap /tmp/aaa
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=b7d41bf7-123d-4554-a739-4b223bb8f27c
  1. 加载 swap,并查看变化
[root@localhost ~]# swapon /tmp/aaa && free -h
swapon: /tmp/aaa:不安全的权限 0644,建议使用 0600。
             total       used       free     shared    buffers     cached
Mem:          979M       904M        75M       6.6M       352K       724M
-/+ buffers/cache:       179M       800M
Swap:         3.0G         0B       3.0G

8. dd 命令

8.1 磁盘测速
  • 测 write 速度
    [root@choco-01 ~]# dd if=/dev/zero of=/disk-test/test1.dbf bs=8k count=400000
    记录了400000+0 的读入
    记录了400000+0 的写出
    3276800000字节(3.3 GB)已复制,33.9907 秒,96.4 MB/秒



    [root@choco-01 ~]# dd if=/dev/zero of=/disk-test/test2.dbf bs=8k count=400000 conv=fsync
    记录了400000+0 的读入
    记录了400000+0 的写出
    3276800000字节(3.3 GB)已复制,26.8789 秒,122 MB/秒


    [root@choco-01 ~]# dd if=/dev/zero of=/disk-test/test3.dbf bs=8k count=400000 conv=fdatasync
    记录了400000+0 的读入
    记录了400000+0 的写出
    3276800000字节(3.3 GB)已复制,29.6497 秒,111 MB/秒
  • 测 read 速度
[root@choco-01 ~]# dd if=/disk-test/test1.dbf of=/dev/null
记录了4358096+0 的读入
记录了4358096+0 的写出
2231345152字节(2.2 GB)已复制,14.0271 秒,159 MB/秒
8.2 备份与还原
  • 备份
    dd if=/dev/sda of=/dev/sdb
    dd if=/dev/sda of=~/disk1.img
    dd if=/dev/sda | gzip > disk.img.gz

  • 还原
    dd if=/dev/sdb of=/dev/sda
    dd if=~/disk1.img of=/dev/sda
    gzip -dc /disk1.img.gz | dd of=/dev/sda


9. 延伸阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值