Linux磁盘分区管理笔记

磁盘管理(disk manage) - 01-15-AM
存储管理(storage manage)

新硬盘的管理流程:分区fdisk或parted--〉格式化mkfs--〉挂载mount
思考:将分区、格式概念和一套3室一厅的房子联系起来。或者将分区、格式概念和一个衣柜联系起来。也可以将分区、格式概念和小学生的方格写字本联系起来。
Linux磁盘分区管理笔记

分区的作用:将硬盘上的数据进行分类管理,如c盘存操作系统,d盘存安装软件,e盘存电影和音乐。
格式化:是一个创建文件系统的过程,将分区中的容量按逻辑上分成inode表、数据块等信息。
挂载:将一个分区的文件系统加载(读)到一个目录中。即目录是访问分区文件系统的入口,访问这个挂载点目录就等同于访问这个分区文件系统中的文件。

硬盘分区(disk partition):
GPT分区管理:parted命令
GPT:是GUID(Globally Unique Identifier) Partition Table全局唯一标识分区表的缩写。GPT分区表中只有主分区这个管理概念。允许创建128个主分区。GPT分区表可以用来管理总容量大于2TB以上的硬盘。硬盘的UUID号可用blkid命令来查。

GUID:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。GUID标识符由随机产生的字母、数字混合组成。

练习准备:将linux虚拟机关机,给虚拟机添加5块SCSI接口的2GB的硬盘,创建快照“5块2G硬盘”,然后将虚拟机开机,执行lsblk命令显示磁盘块设备列表。

要求:将2GB的硬盘sdb用GPT分区表进行管理,要求给sdb硬盘创建2个主分区,第1个主分区容量是1.5G,另一个主分区的容量使用所有剩余空间。
查块设备列表(list block):lsblk
定义分区表标签(即格式):parted -s /dev/sdb mklabel gpt
创建第1个1.5G的主分区:parted -s /dev/sdb mkpart primary 1M 1.5G
创建第2个主分区(使用所有剩余空间-1):parted -s /dev/sdb mkpart primary '1.5G -1'
查看sdb硬盘的分区表信息:lsblk 或 fdisk -l /dev/sdb

parted命令的附加功能:
显示(print)sdb硬盘的分区表:parted /dev/sdb p
删除(remove)sdb硬盘的2号分区:parted -s /dev/sdb rm 2

mount挂载:将分区的文件系统内容读取到一个目录中。访问这个挂载点目录就等同于访问这个分区文件系统中的文件。其实windows中的c、d等盘符就是自动挂载的目录。例如,在windows中插入U盘后会被自动分配到一个盘符,这就是微软在后台做的一个mount自动挂载的程序。

要求:将sdb硬盘的第1个分区格式化成ext4文件系统,将第2个分区格式化成xfs文件系统。将第1个分挂载到/mnt/sdb1目录中,将第2个分挂载到/mnt/sdb2目录中。分别往分区的挂载点目录中写入一些数据。
查分区:lsblk
格式化1号分区:mkfs.ext4 /dev/sdb1 或 mkfs -t ext4 /dev/sdb1
格式化2号分区:mkfs.xfs /dev/sdb2 或 mkfs -t xfs /dev/sdb1
创建挂载点目录:mkdir -pv /mnt/sdb{1,2} 或 mkdir -pv /mnt/sdb1 /mnt/sdb2
手动挂载:mount /dev/sdb1 /mnt/sdb1 ; mount /dev/sdb2 /mnt/sdb2
查挂载信息:lsblk 或 df -hT 或 mount
写入数据:touch /mnt/sdb1/{a.txt,b.mp3} ; cp -v /etc/host* /mnt/sdb2
递归(-R)显示/mnt目录中的文件名列表:ls -R /mnt

课堂练习:参考sdb硬盘的操作,将sdc、sdd硬盘也做同样的分区、格式化、手动挂载、写入文件操作。
磁盘分区的参考脚本(入门级):
入门级脚本:即没有if条件、for循环这些控制语句的脚本,通常是一次性的脚本。
cat pt.sh 脚本内容如下
#!/bin/bash
#脚本中以#号开头的内容为注释,仅起到说明作用。上面的#!/bin/bash脚本的解释器程序名,通常是/bin/bash或/bin/sh或/bin/python。
#以下的a、x是变量,$a、$x是调用变量a、x的取值。
a=/dev/sdc
x=/mnt/sdc
lsblk
parted -s $a mklabel gpt
parted -s $a mkpart primary 1M 1.5G
parted -s $a mkpart primary '1.5G -1'
lsblk
mkfs.ext4 ${a}1
mkfs.xfs ${a}2
mkdir -pv ${x}1 ${x}2
mount ${a}1 ${x}1
mount ${a}2 ${x}2
touch ${x}1/{a.txt,b.mp3}
cp -v /etc/host* ${x}2/
ls ${x}1 ${x}2
lsblk

给脚本添加可执行权限:chmod +x pt.sh
运行脚本:./pt.sh 或 bash pt.sh 或 sh pt.sh 或 python pt.py

到此,GPT分区的管理介绍完毕,其中内容包括分区的查询lsblk、创建parted、格式化mkfs、挂载mount。

MBR分区表管理:
MBR:是主引导记录(main boot record)的缩写。
MBR:是保存在硬盘的0磁道0柱面1扇区的位置,占用512字节(因为1个扇区默认的大小是512字节)。其中bootloader引导程序占用446字节,DPT(disk partition table)分区表占用64字节,magic占用2字节。

MBR的分区表特点:
0.只能管理总容量在2TB以内的硬盘。
1.最多只允许分4个主分区,因为DPT分区表总容量是64字节,每个分区占用16字节,即64/16=4。
2.如果想分的个以上的分区,可采用分一个主分区(primary)和一个扩展分区(extend),然后在扩展分区中创建逻辑(logical)分区来实现。
3.主分区的编号为1~4,第1个逻辑分区的编号默认为5。
4.只能在主分区和逻辑分区上格式化创建文件系统。并且只能在主分区和逻辑分区上写入文件。
Linux磁盘分区管理笔记

Linux磁盘分区管理笔记

硬盘分5个分区的方案(用MBR分区表):
方案一、1个主分区,1个扩展分区,4个逻辑分区。
方案二、3个主分区,1个扩展分区,2个逻辑分区。

练习准备:将sdb硬盘的两个分区的文件系统依次卸载掉,并删除sdb硬盘的所有分区。
查分区表信息:lsblk
卸载分区的文件系统:umount /mnt/sdb1 /mnt/sdb2
删除分区表(修改分区表格式标签即可):parted -s /dev/sdb mklabel msdos
查分区表信息:lsblk

MBR分区练习:将2GB的硬盘sdb用MBR分区表进行管理,要求给sdb硬盘创建1个容量为1.2G的主分区,再创建一个扩展分区容量为所有剩余空间。在扩展分区中创建2个逻辑分区,第1个逻辑分区容量为600M,第2个逻辑分区的容量为所有剩余空间。
查分区表信息:lsblk
cfdisk管理分区:cfdisk /dev/sdb
cfdisk快捷键:n是new新建 p是primary主分区 l是logical逻辑分区
W(大写)是wite保存(写入) q是quit退出
创建主分区:n新建==>p主分区==>1.2G回车==>beginning回车==>W(大写)保存==>yes回车
创建逻辑分区1:选free空闲空间==> n新建==>l逻辑分区==>600M回车==>beginning回车
创建逻辑分区2:选free空闲空间==> n新建==>l逻辑分区==>600M回车==>beginning回车==>W保存==>yes回车==>q键退出
查分区表信息:lsblk

练习要求:将sdb硬盘的第1个分区格式化成ext4文件系统,将第1、2个逻辑分区格式化成xfs文件系统。将第1个分挂载到/mnt/data目录中,将第1、2个逻辑分区分别挂载到/mnt/mysql、/mnt/web目录中。分别往分区的挂载点目录中写入一些数据。
查分区表信息:lsblk
格式化分区:mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb5
mkfs.xfs /dev/sdb6
创建挂载点目录:mkdir -pv /mnt/{data,mysql,web}
手动挂载:mount /dev/sdb1 /mnt/data
mount /dev/sdb5 /mnt/mysql
mount /dev/sdb6 /mnt/web
写入数据:touch /mnt/data/{a1.txt,b1.mp3}
mkdir -pv /mnt/mysql/{haha,hehe}
cp -v /etc/host* /mnt/web/
递归显示文件名列表:ls -R /mnt/{data,mysql,web}

课堂练习:参考sdb硬盘的操作,将sdc、sdd硬盘分区的文件系统卸载掉,删除sdc、sdd硬盘的分区表,再做同样的分区、格式化、手动挂载、写入文件操作。

fstab自动挂载:
mount手动挂载的缺点:当系统重启后,用户必须重新手动将分区的文件系统挂载到指定的目录。但是用户可以将mount手动挂载的命令写到/etc/rc.d/rc.local开机运行脚本文件中,系统在启动时会自动执行rc.local脚本中的命令。

fstab自动挂载配置文件:fstab是file system table文件系统表的缩写。是用来记录磁盘分区设备自动挂载信息的配置文件。系统启动时会读取/etc/fstab文件中的挂载配置信息,并自动挂载里面的设备。

练习:查看/etc/fstab配置文件内容,熟悉fstab文件格式。(可用man 5 fstab了解文件的格式)
Linux磁盘分区管理笔记

fstab文件格式说明:
第1列:分区设备,可以是磁盘的分区设备名、分区的UUID值、分区的label标签。UUID值、label标签可用blkid命令查。
第2列:挂载点目录,必须是已存在的空目录。
第3列:文件系统类型,也就是用mkfs、mkfs.ext4、mkfs.xfs格式化创建的文件系统格式。文件系统格式可以是ext4、、xfs、vfat、ntfs、iso9660、nfs、smb等。
第4列:挂载选项,通常是defaults默认,default代表的选项是rw可读可写,suid超级权限,dev设备,exec可执行,auto自动,nouser无用户,and async异步。选项还可以是ro只读、usrquota用户配额、grpquota组配额。
第5列:dump备份,即是否使用dump工具进行数据备份。0表示禁用,1表示启动。
第6列:fsck检查,即是否使用fsck工具进行磁盘扫描检查。0表示禁用,1表示启动。

练习准备:要求将sdb硬盘的三个分区的文件系统卸载。并用lsblk或df -hT查看挂载信息。
查挂载信息:lsblk 或 df -hT
卸载分区的文件系统:umount -v /dev/sdb{1,5,6}
查挂载信息:lsblk 或 df -hT

fstab挂载练习:采用fstab文件实现sdb硬盘三个分区的文件系统自动挂载。
第1步,在fstab配置文件中添加自动挂载设置。
vim /etc/fstab 在文件最后添加如下内容
#分区设备 挂载点 文件系统类型 挂载选项 dump备份 fsck检查
/dev/sdb1 /mnt/data ext4 defaults 0 0
/dev/sdb5 /mnt/mysql xfs defaults 0 0
/dev/sdb6 /mnt/web xfs defaults 0 0

第2步,用mount -av做自动挂载测试。用lsblk或df -hT显示已挂载的分区文件系统信息。
mount -av
lsblk 或 df -hT

第3步,此步骤可以不做,仅用于验证效果。reboot重启linux系统,系统启动后,用lsblk或df -hT看sdb硬盘分区的文件系统是否自动挂载上了。
reboot 重启,并等待系统启动,再执行如下命令
lsblk 或 df -hT

mount命令详解:
用法:mount [选项] 分区设备 挂载点
选项:
-a, --all 挂载 fstab 中的所有文件系统
-h, --help 显示此帮助并退出
-o, --options <列表> 挂载选项列表,以英文逗号分隔,选项用man mount查帮助手册
-r, --read-only 以只读方式挂载文件系统(同 -o ro)
-t, --types <列表> 限制文件系统类型集合,文件系统格式类型通常有ext4、xfs、vfat、ntfs、smb、nfs、swap、iso9660等
--source <源> 指明源(路径、标签、uuid)
--target <目标> 指明挂载点
-v, --verbose 打印当前进行的操作
-w, --rw, --read-write 以读写方式挂载文件系统(默认)

源(设备):
-L, --label <标签> 同 LABEL=<label>
-U, --uuid <uuid> 同 UUID=<uuid>
LABEL=<标签> 按文件系统标签指定设备
UUID=<uuid> 按文件系统 UUID 指定设备
PARTLABEL=<标签> 按分区标签指定设备
PARTUUID=<uuid> 按分区 UUID 指定设备
<设备> 按路径指定设备
<目录> 绑定挂载的挂载点(参阅 --bind/rbind)
<文件> 用于设置回环设备的常规文件

操作:
-B, --bind 挂载其他位置的子树(同 -o bind)
-M, --move 将子树移动到其他位置
-R, --rbind 挂载其他位置的子树及其包含的所有挂载

mount实例:执行如下功能的命令。
创建挂载点目录:mkdir -pv /tmp/{c..g}
显示磁盘块设备清单:lsblk
将/dev/sda1分区挂载到/tmp/c目录中:mount -t xfs /dev/sda1 /tmp/c
将/dev/sda1分区以只读方式挂载到/tmp/d目录中:mount -o ro /dev/sda1 /tmp/d

以uuid方式将/dev/sda1分区挂载到/tmp/e目录中:
blkid /dev/sda1;
mount UUID="8b947ec7-6d78-4121-8a4c-7aaabf3a221e" /tmp/e

给/dev/sda1分区设置label标签,以label标签的方式挂载sda1分区到/tmp/f目录中:

将/usr目录挂载到/tmp/g目录中(通常用于文件共享时):mount -B /usr /tmp/g

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章