Linux磁盘管理
1.基本分区方式:
(1)MBR分区:MBR的意思是“主引导记录”,它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘。MBR格式的磁盘分区主要分为基本分区(primary partion)和扩展分区(extension partion),扩展分区下是逻辑分区。分区总数不能大于4个,其中最多只能有一个扩展分区。且基本分区可以马上被挂载使用但不能再分区,扩展分区必须再进行二次分区后才能挂载。扩展分区下的二次分区被称之为逻辑分区,逻辑分区数量限制视磁盘类型而定。
(2)GPT分区:GPT意思是GUID分区表,驱动器上的每个分区都有一个全局唯一的标识符(GUID)。支持的最大磁盘可达18EB(1EB = 1024PB,1PB = 1024TB),它没有主分区和逻辑分区之分,每个硬盘最多可以有128个分区,GPT分区的命名和MBR类似,只不过没有主分区、扩展分区和逻辑分区之分,分区号直接从1开始累加一直到128。
2.磁盘挂载原理:
对Linux来说一切皆文件,Linux归根结底只有一个根目录,一个独立且唯一的文件结构,Linux的每个分区都是用来组成整个文件系统的一部分。所以Linux采用了磁盘挂载的方式,将每个分区和一个文件目录联系起来。即载入一个分区,使它的存储空间在一个目录下获得。
3.Linux硬盘:
Linux硬盘分为IDE硬盘和SCSI硬盘,目前大部分是SCSI硬盘。
驱动标识符为“lgx~”。其中“lg”表明分区所在设备的类型,当“lg”为“hd”时表示IDE硬盘,为“sd”时表示SCSI硬盘。“x”为盘号(a是基本盘,b是从属盘,c是辅助主盘,d是辅助从属盘),“~”代表分区,前4个分区用数字1到4表示,它们是主分区或扩展分区,从5开始是逻辑分区。例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示第二个IDE硬盘上的第二个主分区或扩展分区。
下面是用lsblk -f命令查看系统的分区和挂载情况:
红框表示的是磁盘分区情况,蓝框表示的是分区的类型,橙框是32位不重复的字符串表示UUID即分区唯一标识符,绿框表示分区在文件系统的挂载点。
lsblk命令:用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。
选项:
-a, --all 显示所有设备。 -b, --bytes 以bytes方式显示设备大小。 -d, --nodeps 不显示 slaves 或 holders。 -D, --discard print discard capabilities。 -e, --exclude <list> 排除设备 (default: RAM disks)。 -f, --fs 显示文件系统信息。 -h, --help 显示帮助信息。 -i, --ascii 在输出树状格式时只使用ASCII字符。 -m, --perms 显示权限信息。 -l, --list 使用列表格式显示。 -n, --noheadings 不显示标题。 -o, --output <list> 输出列。 -P, --pairs 使用key="value"格式显示。 -r, --raw 使用原始格式显示。-s, --inverse inverse dependencies。-S, --SCSI 只获取SCSI设备列表。 -t, --topology 显示拓扑结构信息。
注意区分lsblk命令和df命令的区别,df命令是检查文件系统的磁盘空间占用情况。
df命令:df [-ahikHTm] [目录或文件名]
选项:
-a, --all 列出所有的文件系统,包括系统特有的 /proc 等文件系统。-k 以 KBytes 的容量显示各文件系统。-m 以 KBytes 的容量显示各文件系统。-h, --human-readable 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示。-H, --si 以 M=1000K 取代 M=1024K 的进位方式。-T, --print-type 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出。-i, --inodes 不用硬盘容量,而以 inode 的数量来显示。
4.挂载案例:
给Linux系统增加一块新的硬盘,并挂载到/home/newdisk目录下。
(1)虚拟机添加硬盘:
添加成功以后输入lsblk命令有如下显示:
(2)分区:
fdisk /dev/sdb
fdisk命令:Linux fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。
语法:fdisk [必要参数][选择参数]
必要参数:
- -l 列出素所有分区表
- -u 与”-l”搭配使用,显示分区数目
选择参数:
- -s<分区编号> 指定分区
- -v 版本信息
菜单操作说明
- m :显示菜单和帮助信息
- a :活动分区标记/引导分区
- d :删除分区
- l :显示分区类型
- n :新建分区
- p :显示分区信息
- q :退出不保存
- t :设置分区号
- v :进行分区检查
- w :保存修改
- x :扩展应用,高级功能
分区完成使用lsblk命令有如下显示:
(3)格式化:
mkfs -t ext4 /dev/sdb1
mkfs命令:Linux mkfs命令用于在特定的分区上建立 linux 文件系统,
使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
参数 :
- device : 预备检查的硬盘分区,例如:/dev/sda1
- -V : 详细显示模式
- -t : 给定档案系统的型式,Linux 的预设值为 ext2。这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32 ;msdos 等。
- -c : 在制做档案系统前,检查该partition 是否有坏轨
- -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
- block : 给定 block 的大小
关于ext2,ext3……代表什么可以查看:https://www.cnblogs.com/justmine/p/9128730.html
格式化以后,可以看到磁盘已被分配了一个UUID:
(4)挂载:
先创建一个/home/newdisk
mkdir命令:Linux mkdir命令用于建立名称为 dirName 之子目录。
语法:mkdir [-p] dirName
参数说明:
- -p 确保目录名称存在,不存在的就建一个。
再将sdb1挂载到newdisk下,mount /dev/sdb1 /home/newdisk
mount命令:Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
语法:
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数说明:
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
这里可以看到挂载前后的对比。
(5)设置自动挂载:
先输入sudo su再在控制台输入 vi /etc/fstab修改这个文件。
添加如下语句:
/dev/sdb1 /home/newdisk ext4 default 00
再在终端输入mount -a
reboot之后我们使用lsblk命令可以看到磁盘已自动挂载
5.卸载
使用umount 设备名或者umount 文件名
umount /dev/sdb1
umount /newdisk
umount命令:Linux umount命令用于卸除文件系统。umount可卸除目前挂在Linux目录中的文件系统。
语法:umount [-ahnrvV][-t <文件系统类型>][文件系统]
参数:
- -a 卸除/etc/mtab中记录的所有文件系统。
- -h 显示帮助。
- -n 卸除时不要将信息存入/etc/mtab文件中。
- -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
- -t<文件系统类型> 仅卸除选项中所指定的文件系统。
- -v 执行时显示详细的信息。
- -V 显示版本信息。
- [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。