Linux磁盘分区、格式化、挂载

df命令:
df命令用于查看磁盘信息(显示总量,已用量,可用量等,单位KB)

[root@localhost ~]# df
文件系统          1K-块    已用     可用    已用% 挂载点
/dev/sda3      18658304 1228708 17429596    7% /
devtmpfs         491988       0   491988    0% /dev
tmpfs            502812       0   502812    0% /dev/shm
tmpfs            502812    7612   495200    2% /run
tmpfs            502812       0   502812    0% /sys/fs/cgroup
/dev/sda1        201380  106712    94668   53% /boot
tmpfs            100564       0   100564    0% /run/user/0

-h 参数 :显示单位

[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  1.2G   17G    7% /
devtmpfs        481M     0  481M    0% /dev
tmpfs           492M     0  492M    0% /dev/shm
tmpfs           492M  7.5M  484M    2% /run
tmpfs           492M     0  492M    0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M   53% /boot
tmpfs            99M     0   99M    0% /run/user/0

*文件系统带有tmpfs表示临时空间,向挂载目录中增加的内容重启后删除

-i 参数:显示inode号信息

[root@localhost ~]# df -i
文件系统         Inode  已用(I)  可用(I)  已用(I)% 挂载点
/dev/sda3      9334272   31966 9302306       1% /
devtmpfs        122997     374  122623       1% /dev
tmpfs           125703       1  125702       1% /dev/shm
tmpfs           125703     645  125058       1% /run
tmpfs           125703      16  125687       1% /sys/fs/cgroup
/dev/sda1       102400     326  102074       1% /boot
tmpfs           125703       1  125702       1% /run/user/0

*indoe号数量根据磁盘容量大小决定,当磁盘还有空间却无法写入数据时,有可能是indoe号使用完了

du命令:
查看文件或目录的大小:

[root@localhost ~]# du -sh /root/
64K	/root/
[root@localhost ~]# du -sh /root/test.log 
4.0K	/root/test.log
[root@localhost ~]# ls -lh /root/test.log 
-rw-r--r-- 1 root root 2.0K 9月   3 23:36 /root/test.log

*我们可以看到通过ls -lh查看出的文件大小是2K,这是文件的实际大小,磁盘在格式化的时候会分为很多个"块",每个块的大小为4K,当一个文件不足4K时,只占用一个块,大于4K时,占用多个块,所以du -sh查看文件时显示的大小实际是文件占用的块的大小

磁盘分区:
*在新增完硬盘后,可以根据需要给硬盘分区(在虚拟机上操作时,需要重启才能加载新增的磁盘,在服务器上一般支持热拔插硬盘,新增完后无需重启就能加载)

fdisk -l 命令:查看分区表

[root@localhost ~]# fdisk  -l

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

   设备 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    41943039    18668544   83  Linux

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区  #新增加的硬盘已加载,容量10G
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

给新增的磁盘/dev/sdb分区:

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

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

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

命令(输入 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)
   命令(输入 m 获取帮助):n     #选择新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)   #主分区
   e   extended             #拓展分区(拓展分区加主分区数量最多4个)
Select (default p): p          #选择主分区
分区号 (1-4,默认 1):           #回车使用默认值
起始 扇区 (2048-20971519,默认为 2048):    #回车使用默认值
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+5G     
分区 1 已设置为 Linux 类型,大小设为 5 GiB    #设置分区大小

命令(输入 m 获取帮助):p   #打印新增分区信息

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux   #新增分区sdb1已显示
命令(输入 m 获取帮助):n      #继续新建分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e     #选择拓展分区
分区号 (2-4,默认 2):   #回车使用默认值
起始 扇区 (10487808-20971519,默认为 10487808):  #回车使用默认值
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-20971519,默认为 20971519):+5G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (10487808-20971519,默认为 20971519):+4500M  
分区 2 已设置为 Extended 类型,大小设为 4.4 GiB    ##设置分区大小

命令(输入 m 获取帮助):p       #打印新增分区信息

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    19703807     4608000    5  Extended     #新增分区sdb2已显示
命令(输入 m 获取帮助):w            #保存分区设置
The partition table has been altered!

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

删除分区:

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

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


命令(输入 m 获取帮助):d       #删除分区
分区号 (1,2,默认 2):2          #输入需要删除的分区号
分区 2 已删除

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

命令(输入 m 获取帮助):w     #保存分区设置
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk -l         #查看分区表

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

   设备 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    41943039    18668544   83  Linux

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    20971519     5241856   83  Linux

*补充说明:
1.一个磁盘可以创建4个主分区或者拓展分区,当4个分区都是主分区时,不可继续创建
2.当需要创建超过4个分区时,可以创建3个主分区和一个拓展分区,在拓展分区中创建逻辑分区
3.拓展分区不能格式化,相当于一个壳子,需要在拓展分区中创建逻辑分区
4.逻辑分区分区号从5开始,按顺序递增,当删除中间某一个分区时,后面的分区号会自动减一(假设有逻辑分区sda5、sda6、sda7、sda8,删除sda6分区后,sda7会变成sda6,sda8会变成sda7,剩下的3个分区显示为sda5、sda6、sda7)
5.fdisk -l查看分区表中分区ID 83代表主分区或者逻辑分区,5代表拓展分区

磁盘格式化:
*新增磁盘分区完成后需要进行格式化
查看当前linux版本支持的文件系统:

[root@localhost ~]# cat /etc/filesystems 
xfs            
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*

在centos7中不指定文件系统的情况下,默认为xfs类型的文件系统:

[root@localhost ~]# mount | grep /dev/sd
/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)

格式化:
mke2fs 格式化命令:

[root@localhost ~]# mke2fs -t ext4 /dev/sdb1  #-t:指定文件系统类型
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks                     #inode数量与块数量
65536 blocks (5.00%) reserved for the super user  #预留空间
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

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

1.mke2fs命令 -t 参数不支持指定xfs格式
2.-b 参数:指定块大小,单位:字节,当块的大小设置的比较小时,磁盘空间使用率高,但文件过大就会导致读取速度变慢,如果磁盘存视频,音乐,大文件较多的情况块大小可以设置成8k(mke2fs -t ext4 -b 8192 /dev/sdb1),如果磁盘小于4K的小文件较多,可以设置块大小为2k,常规4k
3.-m 参数:指定预留空间大小,格式化分区时会产生一个分区大小5%的预留空间(留给root用户),当分区大小较大时,5%的预留空间比较浪费磁盘空间,所以需要使用 -m参数指定预留空间大小(当格式化1T的磁盘时,默认5%会产生50G的预留空间), mke2fs -t ext4 -m 1 表示分配1%的预留空间, -m 0.1 表示分配0.1%的预留空间
4.-i 参数:指定多少个字节对应一个inode,上文中块数量除以 inode数量等于4,每个块4k,也就是每个 inode对应16K的字节(16384),所以每个inode对应4个块,指定 inode对应字节为8k(mke2fs -t ext4 -i 8192 /dev/sdb1),在块大小还是保持4K的情况下,每个inode只能对应2个块,所以inode数量会乘以2

mkfs 格式化命令:(可以指定磁盘文件系统为xfs类型)

[root@localhost ~]# mkfs.xfs -f /dev/sdb2 
meta-data=/dev/sdb2              isize=512    agcount=4, agsize=327616 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310464, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

blkid命令:可以查看系统中已挂载和格式化完成但未挂载的分区,uuid和分区文件系统类型

[root@localhost ~]# blkid
/dev/sda1: UUID="bf4467e0-5efe-432f-846d-0ea6bb9c14cd" TYPE="xfs" 
/dev/sda2: UUID="10a0dff9-f5fc-45e8-bc7d-399e07e83f5f" TYPE="swap" 
/dev/sda3: UUID="32a38e91-38d6-4bf2-9281-dc16754304aa" TYPE="xfs" 
/dev/sdb1: UUID="f21a6fb7-b18c-40da-96d9-9c6ed13219f9" TYPE="ext4" 
/dev/sdb2: UUID="e9ef449d-a8ff-4a00-9cce-7c2e7b92c56f" TYPE="xfs"

磁盘挂载:
挂载命令:mount(linux系统磁盘格式化完后需要挂载到具体目录才能使用)

[root@localhost ~]# mount /dev/sdb1  /mnt/    #将/dev/sdb1磁盘挂载到/mnt目录下
[root@localhost ~]# df -h
文件系统        容量     已用  可用  已用% 挂载点
/dev/sda3        18G  1.2G   17G    7% /
devtmpfs        481M     0  481M    0% /dev
tmpfs           492M     0  492M    0% /dev/shm
tmpfs           492M  7.5M  484M    2% /run
tmpfs           492M     0  492M    0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M   53% /boot
tmpfs            99M     0   99M    0% /run/user/0
/dev/sdb1       4.8G   20M  4.5G    1% /mnt     #已显示挂载的磁盘

卸载命令:umount(命令后可以跟磁盘名称或挂载目录:umount /dev/sdb1 或者 umount /mnt)

[root@localhost ~]# cd /mnt/
[root@localhost mnt]# umount /dev/sdb1
umount: /mnt:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
[root@localhost mnt]# umount -l /dev/sdb1
[root@localhost mnt]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  1.2G   17G    7% /
devtmpfs        481M     0  481M    0% /dev
tmpfs           492M     0  492M    0% /dev/shm
tmpfs           492M  7.5M  484M    2% /run
tmpfs           492M     0  492M    0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M   53% /boot
tmpfs            99M     0   99M    0% /run/user/0

*1.卸载时如果当前位置位于被卸载磁盘的挂载目录内会报错,加 -l 参数完成卸载

-o 参数:
磁盘挂载默认权限为rw,可写和可读:

[root@localhost mnt]# mount |grep /dev/sdb
/dev/sdb1 on /mnt type ext4 (rw,relatime,data=ordered)

通过-o参数在挂载时可以指定磁盘为只读:

[root@localhost ~]# mount -o ro /dev/sdb1 /mnt/
[root@localhost ~]# mount |grep /dev/sdb
/dev/sdb1 on /mnt type ext4 (ro,relatime,data=ordered)

重新挂载磁盘:

[root@localhost ~]# mount -o remount /dev/sdb1 /mnt/

开机自动挂载:
*挂载完成后需要修改配置文件/etc/fstab
添加:/dev/sdb1 /mnt ext4 defaults 0 0
第一列:磁盘路径或UUID
第二列:挂载目录
第三列:文件系统类型

#
# /etc/fstab
# Created by anaconda on Tue Aug 27 07:40:03 2019
#
# 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=32a38e91-38d6-4bf2-9281-dc16754304aa /                       xfs     defaults        0 0
UUID=bf4467e0-5efe-432f-846d-0ea6bb9c14cd /boot                   xfs     defaults        0 0
UUID=10a0dff9-f5fc-45e8-bc7d-399e07e83f5f swap                    swap    defaults        0 0
/dev/sdb1                                 /mnt                    ext4    defaults        0 0

手动增加swap空间:
1.先创建一个空间newswap,大小为200M

[root@localhost ~]# dd if=/dev/zero of=/newswap bs=1M count=200
记录了200+0 的读入
记录了200+0 的写出
209715200字节(210 MB)已复制,2.26413 秒,92.6 MB/秒
[root@localhost ~]# du -sh /newswap 
200M	/newswap

*bs:块大小,在每个块为1M的情况下,创建200M的newswap空间,count等于200次(1乘200=200)

2.格式化newswap:

[root@localhost ~]# mkswap -f /newswap 
正在设置交换空间版本 1,大小 = 204796 KiB
无标签,UUID=9ec8ed2d-0746-40d2-a93c-22f62f58dbb6

3.swapon命令:将newswap加载到swap空间上

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           982M        122M        513M        7.4M        346M        695M
Swap:          2.0G          0B        2.0G
[root@localhost ~]# swapon /newswap 
swapon: /newswap:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# free -h  #查看加载完成的swap大小
              total        used        free      shared  buff/cache   available
Mem:           982M        122M        512M        7.4M        346M        694M
Swap:          2.2G          0B        2.2G
[root@localhost ~]# chmod 600 /newswap  #为了安全更改为系统提示的权限

4.swapoff命令:删除手动添加的swap空间

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           982M        122M        512M        7.4M        346M        694M
Swap:          2.0G          0B        2.0G

你可能感兴趣的:(Linux基础)