磁盘管理之分区

来源:互联网 发布:java项目开发心得体会 编辑:程序博客网 时间:2024/05/16 09:46

  • 块设备b和字符设备c的区别
    • 主设备号与次设备号
  • 磁盘设备文件名 devDEV_FILE
  • 硬盘存储术语
    • 容量单位K
    • 磁盘三维CHS
    • 增加磁盘触发磁盘扫描
  • 两种分区方式MBR 和GPT
    • MBRMaster Boot Record
    • 分区图
    • GPTGUID Globals Unique Identifiers partition
    • 显示分区信息
    • 分区工具
      • 图形化磁盘管理功能工具点击应用程序- 系统
      • fdisk 创建MBR 分区
      • parted 选项 备 设备 令 命令 参数 创建分区
        • 转换分区表类型
        • 查看分区表信息
        • 新增分区
        • 删除分区
        • 列出分区详细信息parted -l
      • centos6通知内核重新读取硬盘分区表
        • 新增分区用
        • 删除分区用
      • parted 分区实例
      • gdisk 创建GPT 分区
      •  parted 高级分区操作创建复制调整大小等等
      • partprobe和partx -a 重新设置内存中的内核分区表版本
    • 触发磁盘扫描一般安装新硬盘用此方法触发扫描
    • 备份分区表 dd ifdevsda offilename bs1 count512
  • 清空分区
  • 查看分区表内容
  • 恢复
  • parted实现

块设备b和字符设备c的区别

块设备:block ,存取单位“块”,是实实在在的硬件,一般是磁盘

find / -type b/dev/dm-1/dev/dm-0/dev/sda2/dev/sda1/dev/sda/dev/sr0dm-0,dm-1是linux内核留给本地使用的设备号,这类设备在/dev/mapper中ll /dev/mapper/total 0lrwxrwxrwx. 1 root root       7 Apr 19 06:16 cl-root -> ../dm-0lrwxrwxrwx. 1 root root       7 Apr 19 06:16 cl-swap -> ../dm-1crw-------. 1 root root 10, 236 Apr 19 06:16 control

字符设备:char

find / -type c/dev/kmsg/dev/urandom/dev/random/dev/full/dev/zero/dev/port/dev/null/dev/mem

主设备号与次设备号

主设备号:major number, 标识设备类型
次设备号:minor number,标识同一类型下的不同设备

磁盘设备文件名 /dev/DEV_FILE

设备 命名 DE /dev/hd SCSI, SATA, SAS, USB dev/sd 不同设备 a-z;/dev/sda, /dev/sdb, 同一设备上的不同分区 1,2, …;/dev/sda1, /dev/sda5

硬盘存储术语

容量单位:K

kB
M
G
T
P
E
Z
Y
B
N
D
bytes=8bit
kb=1024bytes

磁盘三维(CHS)

head :磁头 8位->2^8=256个
track :磁道 10位->2^10=1024个
cylinder: 柱面(等于磁道数)
secotr: 扇区 6位->2^6=64个
一个扇区:512bytes
老版本硬盘最大容量:
扇区数磁道数磁头数*扇区容量
64*1024*256*512=8589934592bytes=8192M=8G

柱面:cylinder=512*63*256

增加磁盘触发磁盘扫描

echo '- - -' >/sys/class/scsi_host/host2/scan

两种分区方式:MBR 和GPT

MBR(Master Boot Record )

  • 分区不超过2T
  • 0 磁道0 扇区:512bytes
  • 446bytes: boot loader
  • 64bytes :分区表
  • 16bytes: 标识一个分区
  • 2bytes: 55AA
  • 4 个主分区;3 主分区+1 扩展(N 个逻辑分区)

分区图

image

GPT:GUID (Globals Unique Identifiers) ) partition

table
- 支持128个 个 分区,使用64 位,支持8Z( (
512Byte/block )64Z ( ( 4096Byte/block) )
- 使用128 位UUID(Universally Unique Identifier) 表示磁盘
区 和分区 GPT
- 分区表自动备份在头和尾两份,并有CRC 校验位
- UEFI ( 统一扩展固件接口) 硬件支持GPT ,使操作系统启动
- EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域

显示分区信息

  • lsblk
  • ll /dev/sd*
  • cat proc/partition
  • fdisk -l 实时读取磁盘分区表

分区工具

图形化磁盘管理功能工具:点击“应用程序”-> “系统

工具”-> “磁盘”或执行命令gnome-disks

fdisk 创建MBR 分区

options compications • p 分区列表 • t 更改分区类型 • n 创建新分区 • d 删除分区 • w 保存并退出 • q 不保存并退出
[root@CentOS69: shell]# fdisk /dev/sdbCommand (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): nPartition number (1-4): 1First cylinder (1-13054, default 1): Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +10GCommand (m for help): w

parted [ 选项]… [备 设备 [令 命令 [ 参数]…]…] 创建分区

转换分区表类型

parted /dev/sdb mklabel gpt|msdos

查看分区表信息

parted /dev/sdb print[root@CentOS69: shell]# parted /dev/sdb printModel: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 107GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber  Start  End  Size  Type  File system  Flags

新增分区

parted /dev/sdb mkpart primary 1 200  (默认M) )

删除分区

parted /dev/sdb rm 1

列出分区详细信息parted -l

查看内核是否已经识别新的分区:

# cat /proc/partations

centos6通知内核重新读取硬盘分区表

新增分区用

  • partx -a /dev/DEVICE
  • kpartx -a /dev/DEVICE -f: force

删除分区用

partx -d –nr M-N /dev/DEVICE

parted 分区实例

1、首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdd:[root@10.10.90.97 ~]# parted /dev/hddGNU Parted 1.8.1Using /dev/hddWelcome to GNU Parted! Type 'help' to view a list of commands.2、选择了/dev/hdd作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):(parted) mklabelWarning: The existing disk label on /dev/hdd will be destroyed and all data on this disk will be lost. Do you want to continue?Yes/No?(警告用户磁盘上的数据将会被销毁,询问是否继续,我们这里是新的磁盘,输入yes后回车) yesNew disk label type? [msdos]? (默认为msdos形式的分区,我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车)gpt3、创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区 的起止位置(parted) mkpartPartition name? []? dp1File system type? [ext2]? ext3Start? 0End? 500GB4、分好区后可以使用print命令打印分区信息,下面是一个print的样例(parted) printModel: VBOX HARDDISK (ide)Disk /dev/hdd: 2199GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name Flags1 17.4kB 500GB 500GB dp15、如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果(parted)rm 1 #rm后面使用分区的号码(parted) printModel: VBOX HARDDISK (ide)Disk /dev/hdd: 2199GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name Flags6、按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例(parted) mkpartPartition name? []? dp1File system type? [ext2]? ext3Start? 0End? 500GB(parted) mkpartPartition name? []? dp2File system type? [ext2]? ext3Start? 500GBEnd? 2199GB(parted) printModel: VBOX HARDDISK (ide)Disk /dev/hdd: 2199GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name Flags1 17.4kB 500GB 500GB dp12 500GB 2199GB 1699GB dp27、由于parted内建的mkfs还不够完善,所以完成以后我们可以使用quit命令退出parted并使用 系统的mkfs命令对分区进行格式化了,此时如果使用fdisk -l命令打印分区表会出现警告信息,这是正常的[root@10.10.90.97 ~]# fdisk -lWARNING: GPT (GUID Partition Table) detected on '/dev/hdd'! The util fdisk doesn't support GPT. Use GNU Parted.Disk /dev/hdd: 2199.0 GB, 2199022206976 bytes255 heads, 63 sectors/track, 267349 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/hdd1 1 267350 2147482623+ ee EFI GPT[root@10.10.90.97 ~]# mkfs.ext3 /dev/hdd1[root@10.10.90.97 ~]# mkfs.ext3 /dev/hdd2[root@10.10.90.97 ~]# mkdir /dp1 /dp2[root@10.10.90.97 ~]# mount /dev/hdd1 /dp1[root@10.10.90.97 ~]# mount /dev/hdd2 /dp2

gdisk 创建GPT 分区

 parted 高级分区操作(创建、复制、调整大小等等)

partprobe和partx -a 重新设置内存中的内核分区表版本

  • CentOS 5 ,7:使用partprobe [/dev/DEVICE]
  • centOs6使用partx -a
  • 删除分区用partx -d –nr M-N /dev/DEVICE

    触发磁盘扫描(一般安装新硬盘用此方法触发扫描)

    echo '- - -' >/sys/class/sci_host/host2/scan

    备份分区表 dd if=/dev/sda of=filename bs=1 count=512

    “`
    fdisk -l查看分区表类型
    Device Boot Start End Blocks Id System
    /dev/sdb1 1 13055 104857599+ ee GPT

    [root@CentOS69: shell]dd if=/dev/sdb of=gpt-table-bak bs=1 count=512
    512+0 records in
    512+0 records out
    512 bytes (512 B) copied, 0.000749647 s, 683 kB/s
    [594][root@CentOS69: shell]# ll
    total 24
    -rw-r–r–. 1 root root 512 Apr 20 08:12 gpt-table-bak
    -rw-r–r–. 1 root root 2009 Apr 20 06:42 installApache.sh
    -rw-r–r–. 1 root root 20 Apr 17 19:57 test.shell
    -rw-r–r–. 1 root root 1 Apr 17 23:52 useradd-error.log
    -rw-r–r–. 1 root root 370 Apr 18 01:13 useradd.log
    -rw-r–r–. 1 root root 1238 Apr 18 01:16 useradd.sh

清空分区

dd if=/dev/zero of=/dev/sdb bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.00049561 s, 1.0 MB/s

查看分区表内容

hexdump -v -n 512 /dev/sdb

恢复

dd if=./gpt-table-bak of=/dev/sdb bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.000417042 s, 1.2 MB/s

## 静默分区

#fdisk实现
方法一:
echo -e “n\np\n1\n\n+1G\nw\n” |fdisk /dev/sdb
方法二:
cat >part.txt <

parted实现

parted /dev/sdb mklabel sdb1
parted /dev/sdb mkpart primary 20G 50G
parted /dev/sdb mkpart extend 50G 80G

cat > part.txt <

0 0
原创粉丝点击