跳转至

磁盘管理

  • 裸磁盘到可使用需要经过3个步骤:分区 --> 格式化 --> 挂载
  • 参考

1 回环设备

2 df

  • 语法:df [OPTION]... [FILE]...
  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示
  • 功能:(全称disk full)列出文件系统的整体磁盘空间使用量
  • 示例1:查看系统所有文件系统(不包括特殊的文件系统)
$ df -h
文件系统        容量  已用  可用 已用% 挂载点
udev            1.9G     0  1.9G    0% /dev
tmpfs           391M  2.8M  388M    1% /run
/dev/sda5        15G  6.7G  7.4G   48% /
tmpfs           2.0G  7.2M  1.9G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda3        11G  6.8G  3.5G   66% /recovery
/dev/sda1       1.5G  287M  1.1G   21% /boot
/dev/sda7        16G  2.2G   13G   15% /data
tmpfs           391M   32K  391M    1% /run/user/1000
  • 示例2:查看指定目录或文件
df -h /home/shw
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda7        16G  2.2G   13G   15% /home

3 du

  • 语法:du [OPTION]... [FILE]...
  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -c :打印出总用量信息
  • -d[depth] :显示深度为depth的子目录信息
  • -s :列出总量而已,而不列出每个各别的目录占用容量;
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • 功能:(全称disk used)检查磁盘空间使用量
  • 示例1: 默认递归打印当前目录下所有目录磁盘使用量
$ ls
a.out  class.cpp  network  sed.script  test_lambda.cc  test_lambda.i
$ du
4       ./network
672     .
  • 示例2:文件也单独打印出
du -a
4       ./test_lambda.cc
4       ./sed.script
4       ./class.cpp
4       ./network
20      ./a.out
632     ./test_lambda.i
672     .
  • 示例3:-s、-S、-c比较
$ du
4       ./network
672     .
$ du -s
672     .
$ du -S
4       ./network
668     .
$ du -c
4       ./network
672     .
672     总用量

4 lsblk

  • 功能:列出磁盘设备
  • 语法:lsblk [option]
  • -a:会列出所有设备,包括空设备(默认不列出空设备)
  • -p:显示设备的全路径
  • 示例1:显示所有块设备
$ lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0  256G  0 disk
sdb    8:16   0  256G  0 disk /
$ lsblk -a
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
ram0    1:0    0   64M  0 disk
ram1    1:1    0   64M  0 disk
ram2    1:2    0   64M  0 disk
ram3    1:3    0   64M  0 disk
ram4    1:4    0   64M  0 disk
ram5    1:5    0   64M  0 disk
ram6    1:6    0   64M  0 disk
ram7    1:7    0   64M  0 disk
ram8    1:8    0   64M  0 disk
ram9    1:9    0   64M  0 disk
ram10   1:10   0   64M  0 disk
ram11   1:11   0   64M  0 disk
ram12   1:12   0   64M  0 disk
ram13   1:13   0   64M  0 disk
ram14   1:14   0   64M  0 disk
ram15   1:15   0   64M  0 disk
loop0   7:0    0        0 loop
loop1   7:1    0        0 loop
loop2   7:2    0        0 loop
loop3   7:3    0        0 loop
loop4   7:4    0        0 loop
loop5   7:5    0        0 loop
loop6   7:6    0        0 loop
loop7   7:7    0        0 loop
sda     8:0    0  256G  0 disk
sdb     8:16   0  256G  0 disk /
  • 示例2:显示块设备全路径
$ lsblk -p
NAME     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/sda   8:0    0  256G  0 disk
/dev/sdb   8:16   0  256G  0 disk /

5 fdisk

1. 主分区+扩展分区=4
2. 主分区可以创建文件系统
3. 扩展分区不能直接创建文件系统,还需要再分为逻辑分区,然后在逻辑分区创建文件系统
  • 功能:对磁盘进行分区

5.1 fdisk -l查看磁盘分区信息

fdisk -l 显示的Boot那一栏有个`*`表示是引导分区
  • 示例:有2块磁盘sda、sdb;sdb还没有进行分区,sda分了7个区
$ fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xad40246b

Device     Boot     Start       End  Sectors  Size Id Type
/dev/sda1  *         2048   3147775  3145728  1.5G 83 Linux
/dev/sda2         3147776  98566143 95418368 45.5G  5 Extended
/dev/sda3        98566144 121634815 23068672   11G 83 Linux
/dev/sda4       121634816 134215679 12580864    6G 82 Linux swap / Solaris
/dev/sda5         3149824  34605055 31455232   15G 83 Linux
/dev/sda6        34607104  66062335 31455232   15G 83 Linux
/dev/sda7        66064384  98566143 32501760 15.5G 83 Linux

Partition table entries are not in disk order.


Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x92c2fc7a

5.2 fdisk内部操作

fdisk的所有操作都会先保存在内存中,当输入`w`后才会真正的区执行,输入`q`则放弃之前的操作

通过在命令行输入fdisk 磁盘名(比如 fdisk /dev/sda)进入某一个磁盘分区操作界面 - 命令: - m:打印可选参数帮助信息 - n:创建分区 - d:删除分区 - t:改变分区类型 - p:打印分区信息 - F:打印未分区空间信息 - w:将之前操作写入磁盘退出(执行分区) - q:放弃之前所有操作并退出(放弃分区)

6 mkfs

在已经格式化文件系统的分区上,使用`mkfs -f `强制覆盖
  • 语法:mkfs [-t 文件系统格式] 设备文件名
  • 功能:创建文件系统(在分区后的设备只后执行)
  • 技巧:查看支持的文件系统名,mkfs [TAB][TAB]在输入mkfs时双击tab键会显示所有支持文件系统
$ mkfs
mkfs           mkfs.cramfs    mkfs.ext3      mkfs.jfs       mkfs.nilfs2    mkfs.vfat      
mkfs.bfs       mkfs.exfat     mkfs.ext4      mkfs.minix     mkfs.ntfs      mkfs.xfs       
mkfs.btrfs     mkfs.ext2      mkfs.fat       mkfs.msdos     mkfs.reiserfs
  • 示例:
$ mkfs -t ext4 /dev/sdb1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 624744 4k blocks and 156480 inodes
Filesystem UUID: 9a8d4992-6c3e-4a94-8f30-11615bfac5dd
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

7 mount、umount

  • 语法:
  • mount -t [文件系统名] 分区设备名[/dev/sda1] 挂载目录[/dev/mount_dir]
  • umount 分区设备名[/dev/sda1]
  • 功能:挂载、卸载文件系统
  • 示例:挂载
$ mount -t ext4 /dev/sdb1 /home/shw/mount1
$ df -h|grep /dev/sdb1
/dev/sdb1       2.3G  7.2M  2.2G    1% /home/shw/mount1
$ df -hT /home/shw/mount1
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sdb1      ext4  2.3G  7.2M  2.2G    1% /home/shw/mount1
  • 示例:卸载
$ umount /dev/sdb1
$ df -hT /home/shw/mount1
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sda7      ext4   16G  2.2G   13G   16% /home
$ df -h|grep /dev/sdb1

7.1 永久挂载磁盘

  • 编辑/etc/fstab 文件,插入挂载信息。
#  设备         挂载点  文件系统类型   挂载参数   是否备份  是否检测
/dev/sda       /data1      xfs       defaults      0       0

linux 永久挂载磁盘重启后生效。