GPT 是什么?
GUID 磁盘分区表 (GUID Partition Table, 缩写: GPT) 其含义为 "全局唯一标识磁盘分区表", 是一个实体硬盘的分区表的结构布局的标准. 它是可扩展固件接口 (EFI) 标准 (被 Intel 用于替代个人计算机的 BIOS) 的一部分, 被用于替代 BIOS 系统中的一 64bits 来存储逻辑块地址和大小信息的主开机纪录 (MBR) 分区表
GPT 有哪些功能?
在 MBR 硬盘中, 分区信息直接存储于主引导记录 (MBR) 中(主引导记录中还存储着系统的引导程序). 但在 GPT 硬盘中, 分区表的位置信息储存在 GPT 头中. 但出于兼容性考虑, 硬盘的第一个扇区仍然用作 MBR, 之后才是 GPT 头.
跟现代的 MBR 一样, GPT 也使用逻辑区块位址 (LBA) 取代了早期的 CHS 寻址方式. 传统 MBR 信息存储于 LBA 0,GPT 头存储于 LBA 1, 接下来才是分区表本身. 64 位 Windows 操作系统使用 16,384 字节 (或 32 扇区) 作为 GPT 分区表, 接下来的 LBA 34 是硬盘上第一个分区的开始.
苹果公司曾经警告说:"不要假定所有设备的块大小都是 512 字节." 一些现代的存储设备如固态硬盘可能使用 1024 字节的块, 一些磁光盘 (MO) 可能使用 2048 字节的扇区(但是磁光盘通常是不进行分区的). 一些硬盘生产商在计划生产 4096 字节一个扇区的硬盘, 但截至 2010 年初, 这种新硬盘使用固件对操作系统伪装成 512 字节一个扇区.
使用英特尔架构的苹果机也使用 GPT.
为了减少分区表损坏的风险, GPT 在硬盘最后保存了一份分区表的副本
Parted 用法个常用选项:
用法: parted [选项]... [设备 [ 命令 [参数]... ]... ]
将带有参数的命令用于设备. 如果没有出现命令, 则以交互模式运行.
帮助选项:
-h,--help 显示此帮助信息
-l , --list 列出所有设备的分区信息
-I , --interactive 在必要是, 提示用户
-s, --script 从不提示用户
-v , --version 显示版本
创建一个 10G 分区, 并格式为 ext4 文件系统
要求其 block 大小为 2048, 预留空间百分比为 2, 卷标为 MYDATA, 默认挂载属性包含 acl;
挂载至 / data/mydata 目录, 要求挂载时禁止程序自动运行, 且不更新文件的访问时间戳;
可开机自动挂载
创建分区
- fdisk /dev/sdc
- Command (m for help): n
- Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
- Select (default p): p
- Partition number (1-4, default 1):
- First sector (2048-41943039, default 2048):
- Using default value 2048
- Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
- Partition 1 of type Linux and of size 10 GiB is set
- Command (m for help): w
- The partition table has been altered!
重读磁盘分区表
kpartx -af /dev/sdc
显示分区
- fdisk -l /dev/sdc
- Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk label type: dos
- Disk identifier: 0xb5878e08
- Device Boot Start End Blocks Id System
- /dev/sdc1 2048 20973567 10485760 83 Linux
创建文件系统
方法一
mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sdb1
方法二
mkfs.ext4 -b 2048 -L MYDATA -m 2 /dev/sdb1
创建挂载目录
mkdir -pv /data/mydaa
配置自动挂载
- VIM /etc/fstab
- /dev/sdb1 /data/mydata ext4 defaults,noexec,noatime 0 0
创建一个大小为 1G 的 swap 分区, 并启用.
创建分区
- fdisk /dev/sdc
- Command (m for help): n
- Partition type:
- p primary (1 primary, 0 extended, 3 free)
- e extended
- Select (default p): p
- Partition number (2-4, default 2):
- First sector (20973568-41943039, default 20973568):
- Using default value 20973568
- Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +1G
- Partition 2 of type Linux and of size 1 GiB is set
- Command (m for help): t
- Partition number (1,2, default 2):
- Hex code (type L to list all codes): 82
- Changed type of partition 'Linux' to 'Linux swap / Solaris'
- Command (m for help): p
- Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk label type: dos
- Disk identifier: 0xb5878e08
- Device Boot Start End Blocks Id System
- /dev/sdc1 2048 20973567 10485760 83 Linux
- /dev/sdc2 20973568 23070719 1048576 82 Linux swap / Solaris
- Command (m for help): w
- The partition table has been altered!
重读磁盘分区表
kpartx -af /dev/sdc
创建交换分区
mkswap /dev/sdb2
创建自动挂载
- VIM /etc/fstab
- /dev/sdb2 swap swap defaults 0 0
显示交换分区
swapon --show
方法二
- dd if=/dev/zero of=/swapfile bs=1G count=1
- chmod 600 /swapfile
- mkswap /swapfile
- VIM /etc/fstab
- /swapfile swap swap defaults 0 0
编写脚本计算 / etc/passwd 文件中的第 10 个用户和第 20 个用户的 id 号之和
- #!/bin/bash
- #
- id1=$(head -10 /etc/passwd | tail -1 | awk -F : '{print $3}')
- id2=$(head -20 /etc/passwd | tail -1 | awk -F : '{print $3}')
- echo sum=$[$id1+$id2]
当前主机名称保存至 hostName 变量中; 主机名如果为空, 或者为 localhost.localdomain, 则将其设置为 www.magedu.com
- hostName=$(hostname)
- [ -z "$hostName" -o "$hostName" == "localhost.localdomain" -o "$hostName" == "localhost" ] && hostname www.magedu.com
编写脚本, 通过命令行参数给定一个用户名, 判断其 ID 号是偶数还是奇数
- #!/bin/bash
- #
- if [ $[ $(id -u $1)%2 ] -eq 0 ]
- then
- echo $1 ID is Even numbers
- else
- echo $1 ID is Odd numbers
- fi
方法二
- #!/bin/bash
- #
- [ $[ $(id -u $1)%2 ] -eq 0 ] && echo $1 ID is Even numbers || echo $1 ID is Odd numbers
Linux 基础知识(四)
来源: http://www.bubuko.com/infodetail-2901175.html