3.6 第六章:Linux的磁盘管理

第六章:Linux的磁盘管理

一、查看磁盘或者目录的容量

1.命令df
用户查看已挂载磁盘的总容量、使用容量、剩余容量等;

[root@zl_cloud ~]# df
文件系统                   1K-块   已用     可用 已用% 挂载点
/dev/mapper/centos-root 18307072 996588 17310484    6% /
devtmpfs                  923888      0   923888    0% /dev
tmpfs                     934328      0   934328    0% /dev/shm
tmpfs                     934328   8864   925464    1% /run
tmpfs                     934328      0   934328    0% /sys/fs/cgroup
/dev/sda1                 508588 127320   381268   26% /boot
tmpfs                     186868      0   186868    0% /run/user/0
tmpfs                     186868      0   186868    0% /run/user/1004
[root@zl_cloud ~]# 
  • -i:表示查看inodes的使用情况;如已使用100%,即使磁盘空间有富余,也会提示磁 盘空间已满。
  • -h:表示使用合适的单位显示;
  • -k、-m:分别表示以KB、MB为单位显示;

2.命令du
查看某个目录或文件所占的大小;格式为:du 【-选项】 【文件名或目录名】。不加参数的话只会列出目录(包含子目录的大小)。不指定单位的话默认显示单位为“KB”。

  • -a:表示全部文件和目录的大小都列出来;
  • -b:表示列出的值以B为单位输出;
  • -k:表示以KB的单位输出;
  • -m:表示以MB的单位输出;
  • -h:表示系统自动调节单位;
  • -c:表示最后一行会加总用量;
  • -s:表示只列出总和。

二、磁盘的分区和格式化

1.增加虚拟磁盘
点击所需要增加虚拟硬盘的虚拟机,右击设置:
在这里插入图片描述

点击添加,在选择硬盘,点击下一步:
在这里插入图片描述
默认不需更改,点击下一步:
在这里插入图片描述
默认不需更改,点击下一步:
在这里插入图片描述
改成你想添加多大的硬盘容量(我填了5g),下面选择将虚拟磁盘存储为单个文件,点击下一步:
在这里插入图片描述
自己改一个名字,不改用默认的也可以,然后点击完成:
在这里插入图片描述
然后就可以看到新增的硬盘了,最后重启启动一下系统就可以了。
在这里插入图片描述

2.命令fdisk
它是Linux下磁盘的分区工具,但是只能划分小于2TB的分区。格式为:fdisk 【-l】 【设备名称】

[root@zl_cloud ~]# fdisk -l /dev/sda1

磁盘 /dev/sda1:524 MB, 524288000 字节,1024000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@zl_cloud ~]# 

若fdisk 不加-l接设备名称时,则会进入对磁盘分区操作的模式:

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

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

Device does not contain a recognized partition table
使用磁盘标识符 0x9399d9fc 创建新的 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 [root@zl_cloud ~]# 
to disk and exit
   x   extra functionality (experts only)
  • p:表示打印当前磁盘的分区情况;
  • n:表示建立一个新的分区;
  • w:表示保存;
  • q:表示退出;
  • d:表示删除一个分区。
[root@zl_cloud ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

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

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69a1a39a

   设备 Boot      Start         End      Blocks   Id  System

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

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

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69a1a39a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856    5  Extended

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)

这里extended表示拓展分区,primary表示主分区,logical表示逻辑分区。这里表示如果把第1个分区定位拓展分区,并且把全部空间都划分给拓展分区,那么在继续分区时,会提示你选择分区类型为主分区还是逻辑分区。Primary:1,2,3 ;extended:4 ;logical:5开始,因为前四个为主分区或者拓展分区。


Select (default p): l
添加逻辑分区 5
起始 扇区 (4096-10485759,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-10485759,默认为 10485759):+1000M
分区 5 已设置为 Linux 类型,大小设为 1000 MiB

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

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69a1a39a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856    5  Extended
/dev/sdb5            4096     2052095     1024000   83  Linux

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (2054144-10485759,默认为 2054144):
将使用默认值 2054144
Last 扇区, +扇区 or +size{K,M,G} (2054144-10485759,默认为 10485759):+1000M
分区 6 已设置为 Linux 类型,大小设为 1000 MiB

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

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69a1a39a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856    5  Extended
/dev/sdb5            4096     2052095     1024000   83  Linux
/dev/sdb6         2054144     4102143     1024000   83  Linux

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

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@zl_cloud ~]# 

查看更改后的磁盘:

[root@zl_cloud ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69a1a39a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856    5  Extended
/dev/sdb5            4096     2052095     1024000   83  Linux
/dev/sdb6         2054144     4102143     1024000   83  Linux
[root@zl_cloud ~]# 

三、格式化磁盘分区

==磁盘分区虽然已经分好了,但是暂时还不能用,需要对每一个分区进行格式化。==所谓格式化就是安装文件系统。
1.命令mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4和 mkfs.xfs
mke2fs命令常用的选项如下所示:

  • -b:表示分区时设定每个数据区块所占用的空间大小;
  • -i:表示设定inode的大小;
  • -N:表示设定inode的数量;
  • -c:表示在格式化前检测一下磁盘是否有问题;
  • -L:表示预设该分区的标签;
  • -j:表示建立ext3格式的分区;如果用mkfs.ext3就不用加这个了。
  • -t:用来指文件系统的类型;可以是ext2、ext3,也可以是ext4。
[root@zl_cloud ~]# mke2fs -t ext4 /dev/sdb5  //相当于mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=262144000
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

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

[root@zl_cloud ~]# 

然而mke2fs并不支持把分区格式化成CFS,而只能使用mkfs.xfs:

[root@zl_cloud ~]# mkfs.xfs /dev/sdb6
meta-data=/dev/sdb6              isize=256    agcount=4, agsize=64000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=256000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@zl_cloud ~]# 

-L选项指定标签,标签会在挂载磁盘时使用,也可以写入配置文件:

扫描二维码关注公众号,回复: 11938948 查看本文章
[root@zl_cloud ~]# mke2fs -L TEST -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=TEST
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=262144000
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

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

[root@zl_cloud ~]# 

2.命令e2label
该命令用于查看或修改分区的标签,只支持ext格式的文件系统,不支持XFS文件系统。

[root@zl_cloud ~]# e2label /dev/sdb5
TEST
[root@zl_cloud ~]# e2label /dev/sdb5 TEST1
[root@zl_cloud ~]# e2label /dev/sdb5
TEST1
[root@zl_cloud ~]# 

四、挂载/卸载磁盘

格式化后的磁盘其实是一个b(块设备文件)。
1.命令mount
挂载前许建立一个挂载点,它是以目录的形式出现的。一旦把某个分区挂载到这个挂载目录下,要往这个目录写数据时,就都会写到该分区中。所以在挂载该分区前,挂载目录必须是个空目录,若不是空目录的话,一旦挂载,该目录以前的东西就看不到了(数据并没有丢失),除非卸载该分区。
建立目录和空白文档(建立空白文档时想展示挂载后该目录以前的东西会怎么变化):

[root@zl_cloud ~]# mkdir /newdir
[root@zl_cloud ~]# touch /newdir/newfile.txt
[root@zl_cloud ~]# ls /newdir/
newfile.txt
[root@zl_cloud ~]# 

将/dev/sdb5挂载到/newdir后,原来的txt文件就看不到了。

[root@zl_cloud ~]# mount /dev/sdb5 /newdir/  //也可以用mount LABEL=TEST1 /newdir挂载
[root@zl_cloud ~]# ls /newdir/
lost+found
[root@zl_cloud ~]# df -h | grep -v tmpfs
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  966M   17G    6% /
/dev/sda1                497M  125M  373M   26% /boot
/dev/sdb5                969M  2.5M  900M    1% /newdir

解挂:

[root@zl_cloud ~]# umount /newdir/  //umount可跟挂载点、也可跟分区名。
[root@zl_cloud ~]# df -h | grep tmpfs
devtmpfs                 903M     0  903M    0% /dev
tmpfs                    913M     0  913M    0% /dev/shm
tmpfs                    913M  8.7M  904M    1% /run
tmpfs                    913M     0  913M    0% /sys/fs/cgroup
tmpfs                    183M     0  183M    0% /run/user/0
[root@zl_cloud ~]# df -h | grep -v tmpfs
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  966M   17G    6% /
/dev/sda1                497M  125M  373M   26% /boot

2./etc/fstab配置文件

[root@zl_cloud ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Mar  4 20:11:10 2020
#
# 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
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=387a5d19-6866-459d-9619-a9dd8fe40aa6 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@zl_cloud ~]# 
  • 第1列:分区的标识;可以写分区的LABEL、分区的UUID,也可以写分区名(/dev/sda1)
  • 第2列:挂载点;
  • 第3列:分区的格式;
  • 第4列:mount的一些挂载参数;一般情况下直接写defaults即可;
    下列是一些常用选项:
    async/sync: async表示与磁盘和内存不同步;系统每隔一段时间就会把内存数 据写入磁盘中,而sync则会时时同步内存和磁盘中的数据。
    auto/noauto:表示开机自动挂载/不自动挂载;
    default:表示按照大多数永久文件系统的默认值设置挂载定义.它包含了rw、 suid、dev、exec、auto、nouser和async;
    ro:表示按只读权限挂载;
    rw:表示按可读可写权限挂载;
    exec/noexec:表示允许/不允许可执行文件执行,但千万不要把根分区挂载为 noexec,否则将无法使用系统,甚至连mount命令都无法使用。
    user/nouser:表示允许/不允许root外的其他用户挂载分区。为了安全.清用 nouser;
    suid/nosuid:表示允许/不允许分区suid属性,一般设置nosuid;
    usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁 盘制度;
    grquota:表示启动群组的磁盘配额模式。
  • 第5列:表示是否被dump备份。1表示备份,0表示不备份。
  • 第6列:开机时是否自检磁盘;1、2表示检测,0表示不检测。如果有多个分区需要开机自 动自检,就都设置成2,1检测完后会同时检测2。

在/etc/fstab文件中增加一行来新增分区:

[root@zl_cloud ~]# vi /etc/fstab
LABEL=TEST1                     /newdir         ext4    defaults        0 0  //加上这个

然后确保之前挂载的/DEV/SDB5已经卸载。

[root@zl_cloud ~]# mount -a
[root@zl_cloud ~]# df -h | grep -v tmpfs
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  966M   17G    6% /
/dev/sda1                497M  125M  373M   26% /boot
/dev/sdb5                969M  2.5M  900M    1% /newdir
[root@zl_cloud ~]# 
  • -a:会把/etc/fstab中出现的所有磁盘分区挂载上;
  • -t:用来指定挂载的分区类型,默认不指定,会自动识别。
  • -o:用来指定挂载的分区有哪些特性,及/etc/fstab配置文件中的第4列那些。
[root@zl_cloud ~]# mkdir /newdir/dir1
[root@zl_cloud ~]# mount -o remount,ro,sync /dev/sdb5 /newdir
[root@zl_cloud ~]# mkdir /newdir/dir2
mkdir: 无法创建目录"/newdir/dir2": 只读文件系统
[root@zl_cloud ~]# mount |grep sdb5
/dev/sdb5 on /newdir type ext4 (ro,relatime,sync,seclabel,data=ordered)

-o选项指定了ro参数,所以只读了。
重新挂载恢复读写:

[root@zl_cloud ~]# mount -o remount /newdir/
[root@zl_cloud ~]# mkdir /newdir/dir2
[root@zl_cloud ~]# ls /newdir
dir1  dir2  lost+found
[root@zl_cloud ~]# 

猜你喜欢

转载自blog.csdn.net/zhang_ZERO/article/details/104701495
3.6