2018-05-21 课堂笔记

目录

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:   
Last mounted on:          
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 ()
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 :指定文件系统类型
  • -b :指定每个 block 的大小
  • -I :指定 inode 的大小
  • -N :指定 inode 的数量
  • -m :指定保留给 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. 延伸阅读

  • 存储与服务器的连接方式对比(DAS,NAS,SAN)
  • 使用dd命令测试磁盘读写性能
  • Linux下使用dd命令备份硬盘

你可能感兴趣的:(2018-05-21 课堂笔记)