Linux磁盘和文件系统管理

Stella981
• 阅读 518

Linux磁盘和文件系统管理

Linux磁盘和文件系统管理

1

检测并确认新硬盘

挂接好新的硬盘设备并启动主机后,Linux系统会自动检测并加载该硬盘,无须额外安装驱动。执行“fdisk -l”命令即可查看,确认新增硬盘的设备名称和位置。作用:列出当前系统中所有硬盘设备及其分区的信息。

[root@localhost ~]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000b2b5d   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          13      102400   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              13         279     2134016   82  Linux swap / SolarisPartition 2 does not end on cylinder boundary./dev/sda3             279        2611    18734080   83  Linux[root@localhost ~]#

上述输出信息中包含了各硬盘的整体情况和分区情况,其中“/dev/sda”为原有的硬盘设备,对于已有的分区,将通过列表的方式输出以下信息;

  • Device:分区的设备文件名称。

  • Boot:是否是引导分区。是,则有“*”标识。

  • Start:该分区在硬盘中的起始位置。

  • End:该分区在硬盘中的结束位置。

  • Blocks:分区的大小,以Blocks(块)为单位,默认的块大小为1024字节。

  • Id:分区对应的系统ID号。83表示Linux中的EXT4分区,8e表示LVM 逻辑卷。

  • System:分区类型。

2

添加新的硬盘

Linux磁盘和文件系统管理 右键单击上图右下角某块磁盘,“设置”按钮。弹出下图对话框,“添加”按钮。Linux磁盘和文件系统管理 选择相应的硬件类型。点击“下一步”按钮。Linux磁盘和文件系统管理

选择磁盘类型,默认为SCSI。Linux磁盘和文件系统管理 Linux磁盘和文件系统管理

选择最大磁盘大小的空间,并选择将虚拟磁盘存储为单个文件,点击“下一步”按钮。添加完成后,重启设备。Linux磁盘和文件系统管理

重启后执行“fdisk -l”命令,即可查看是否识别新的硬盘。

[root@localhost ~]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000b2b5d   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          13      102400   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              13         279     2134016   82  Linux swap / SolarisPartition 2 does not end on cylinder boundary./dev/sda3             279        2611    18734080   83  LinuxDisk /dev/sdb: 5368 MB, 5368709120 bytes255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000[root@localhost ~]#

3

规划硬盘中的分区

在硬盘设备中创建、删除、更改分区等操作同样通过fdisk命令进行,只要使用硬盘的设备文件作为参数。例如,执行“fdisk /dev/sdb”命令,即可进入到交互式的分区管理界面中。

在该操作界面中的“Command (m for help):”提示符后,输入特定的分区操作指令,可以完成各项分区管理任务。输入“m”指令后,可以查看各种操作指令的帮助信息。

fdisk 分区工具的交互式操作界面

[root@localhost ~]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x97fe0724.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended to         switch off the mode (command 'c') and change display units to         sectors (command 'u').Command (m for help):

关于fdisk交互式操作指令的帮助信息

Command (m for help): mCommand action   a   toggle a bootable flag   b   edit bsd disklabel   c   toggle the dos compatibility flag   d   delete a partition   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)Command (m for help):

p指令——列出硬盘中的分区情况

使用“p”指令可以列出详细的分区情况,信息显示的格式与执行“fdisk -l”命令相同,硬盘中尚未建立分区时,输出的列表信息为空。

Command (m for help): p  Disk /dev/sdb: 5368 MB, 5368709120 bytes255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x97fe0724   Device Boot      Start         End      Blocks   Id  SystemCommand (m for help):

n指令——新建分区

使用“n”指令可以进行创建分区的操作,包括主分区和扩展分区。根据提示继续输入“p”选择创建主分区,输入“e”选择创建扩展分区。之后依次选择分区序号,起始位置,结束位置或分区大小即可完成新分区的创建。

选择分区好时,主分区和扩展分区的序号只能为1-4.分区起始位置一般由fdisk默认识别,结束位置或大小可以使用"+sizeM"或"+sizeG"的形式。

Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-652, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +5GValue out of range.

完成后可以输入“p”指令查看分区情况;

Command (m for help): pDisk /dev/sdb: 5368 MB, 5368709120 bytes255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x97fe0724   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1         652     5237158+  83  Linux

d指令——删除分区

使用“d”指令可以删除指定的分区,根据提示继续输入需要删除的分区序号,在执行前删除分区时一定要慎重,应首先使用p指令查看分区的序号,确认无误后再进行删除。

需要注意的是,若扩展分区被删除,则扩展分区之下的逻辑分区也将被删除。因此建议从最后一个分区开始进行删除,以免fdisk识别的分区序号发生混乱。

t指令——变更分区的类型

在fdisk分区工具中,新建的分区默认使用的文件系统类型为EXT4,一般不需要更改,但是若新建的分区需要用作swap交换分区或其他类型的文件系统时,则需要对分区类型进行变更以保持一致性,从而避免在管理分区时产生混乱。

使用“t”指令可以变更分区的ID号,操作时需要依次指定目标分区序号,新的系统ID号。不同类型的文件系统对应不同的ID号,以16进制数表示,在fdisk交互环境中输入“l”指令进行列表查看,最常用的EXT4、swap文件系统的ID号分别为83、82,而用于windows中的NTFS文件系统的ID号一般为86。

w和q指令——退出fdisk分区工具

完成对硬盘的分区操作以后,可以执行w或q指令退出fdisk分区工具。其中“w”将保存分区操作,而“q”指令将不会保存对硬盘所做的分区操作。

对已包含数据的硬盘进行分区时,一定要做好数据备份,保存之前要确保操作无误,以免发生数据损坏,若无法确定本次分区操作是否正确,建议使用“q”指令不保存退出。

变更磁盘的分区设置以后,建议最好将系统重启一次,或者执行“partprobe”命令使操作系统检测新的分区表情况。在某些Linux操作系统中,若不进行这些操作,可能会导致格式化分区时对硬盘中已有数据的损坏,严重者甚至引起系统崩溃。执行 partprobe命令检测/dev/sdb磁盘中的分区变化。

Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@localhost ~]# partprobe /dev/sdb[root@localhost ~]#

4

管理文件系统

mkfs命令的使用

mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,位于/sbin目录中。

[root@localhost ~]# ls /sbin/mkfs*/sbin/mkfs  /sbin/mkfs.cramfs  /sbin/mkfs.ext2  /sbin/mkfs.ext3  /sbin/mkfs.ext4  /sbin/mkfs.ext4dev  /sbin/mkfs.msdos  /sbin/mkfs.vfat[root@localhost ~]#

基本的命令格式

mkfs -t 文件系统类型  分区设备

mkswap命令的使用

使用mkswap命令可以在指定的分区上创建交换文件系统,目标分区先通过fdisk工具将ID号设为82。

对于新增加的交换分区,需要使用swapon命令进行启用,反之使用swapoff命令可以停用指定的交换分区。

[root@localhost ~]# fdisk -l /dev/sdaDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000b2b5d   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          13      102400   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              13         279     2134016   82  Linux swap / SolarisPartition 2 does not end on cylinder boundary./dev/sda3             279        2611    18734080   83  Linux

5

挂载、卸载文件系统

挂载文件系统

mount命令的基本使用格式

mount     [-t 文件系统类型]    存储设备    挂载点

光盘对应的设备文件通常使用"/dev/cdrom",其实这是一个链接文件,链接到实际的光盘设备"/dev/sr0"。使用这两个名称都可以表示光盘设备。由于光盘是只读的存储介质,因此在挂载时系统会出现"mounting read-only"的提示信息。

使用不带任何参数或选项的mount命令时,将显示出当前系统中已挂载的各个分区的相关信息,最近挂载的文件系统将显示在最后边。

[root@localhost ~]# mount/dev/sda3 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev)/dev/sr0 on /media/CentOS_6.5_Final type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)[root@localhost ~]#

卸载文件系统

需要卸载文件系统时,使用的命令为umount,使用挂载点目录或对应设备的文件名作为卸载参数,Linux系统中,由于同一个设备可以被挂载到多个目录下,所以一般建议通过挂载点的目录位置来进行卸载。

[root@localhost ~]# umount /dev/cdrom[root@localhost ~]#

设置文件系统的自动挂载

系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据。Linux系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。默认的fatab文件中包括了根分区、/boot分区、交换分区及proc、tmpfs等伪文件系统的挂载配置。

[root@localhost ~]# cat /etc/fstab## /etc/fstab# Created by anaconda on Sat Jun  4 06:06:05 2016## 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=793c943d-a96e-453d-8249-a8eb9ad1ec59 /                       ext4    defaults        1 1UUID=758a54e1-de64-4e02-a4a9-f09f4c28fdfa /boot                   ext4    defaults        1 2UUID=0535a0f7-88f2-490c-b26f-94a27e45804d swap                    swap    defaults        0 0tmpfs                   /dev/shm                tmpfs   defaults        0 0devpts                  /dev/pts                devpts  gid=5,mode=620  0 0sysfs                   /sys                    sysfs   defaults        0 0proc                    /proc                   proc    defaults        0 0[root@localhost ~]#

在"/etc/fstab"文件中,每一行记录对应一个分区或设备的挂载配置信息,各部分的含义如下。

第1字段:设备名或设备卷标名。

第2字段:文件系统的挂载点目录的位置。

第3字段:文件系统类型,如ext4、swap等。

第4字段:挂载参数,mount命令"-o"选项后可使用的参数。

(defaults、rw、ro、noexec分别表示默认参数、可写、只读、禁用执行程序)

第5字段:表示文件系统是否需要dump备份,为1时表示需要,为0时将被dump所忽略。

第6字段:该数字用于决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查,对于根分区应设为1,其他分区设为2。

查看磁盘使用情况

不带选项及参数的mount命令可以显示分区的挂载情况,了解系统中已挂载各文件系统的磁盘使用情况可以使用df命令。

df命令使用文件或者设备作为命令参数,常用的选项为"-h","-T"。"-h"选项可以显示更易读的容量单位,而"-T"选项用于显示对应文件系统的类型。

[root@localhost ~]# df -hTFilesystem     Type   Size  Used Avail Use% Mounted on/dev/sda3      ext4    18G  5.0G   12G  30% /tmpfs          tmpfs  495M  224K  495M   1% /dev/shm/dev/sda1      ext4    97M   30M   63M  32% /boot[root@localhost ~]#

Linux磁盘和文件系统管理

推荐阅读

H3C交换机如何配置SNMP协议?

Linux 系统结构详解

Linux环境下账号和权限管理

Linux环境下vi/vim编辑器常用命令

Oracle数据库环境搭建

Oracle客户端PLSQL的使用说明

Linux磁盘扩容 | LVM逻辑卷使用手册

Linux环境下Oracle数据库常用命令

高可用Redis服务架构分析与搭建

99%的Linux运维工程师必须要掌握的命令及运用

运维之道:16 张图片带你 1 小时学会 Ansible

资料大放送①期 | 这份资料很特别!

Linux磁盘和文件系统管理

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这