第十二章 硬盘结构

  本节所讲内容

磁盘尺寸 

3.5  英寸设计

2.5   英寸设计








12.2 

12。2  磁盘分区工具和挂载

12.2.1   硬盘分区符号认识


分区编号: 主分区1-4  ,  逻辑分区 5 。。。。。

LINUX规定,逻辑分区必须建立在扩展分区上,而不是建立在主分区上

分区作用:

主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,

/boot  分区最好放在主分区上

扩展分区补鞥呢使用的,他只是做为了逻辑分区的容易存在的,我们真正存放数据的是主分区和逻辑分区,大量数据都存放在逻辑分区中

如果你使用的是GPT 的分区方式,那么它没有限制住分区个数

注意 :使用分区工具fdisk  对磁盘进行操作,分区,格式化重点

命名方式 :/ dev/sd[a-z] n

其中: a-z  表示设备的序号,如sda  表示第一块scsi  硬盘,sdb  就是第二块

n  表示每块磁盘上划分的磁盘编号


案例:  在sdb 盘上键一个分区,大小为1G






 首先看到

[root@xueshen65 ~]# ls /dev/sd*


/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb

[root@xueshen65 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0x81afc09d 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m   获得帮助

命令操作

  a  toggle a bootable flag

  b  edit bsd disklabel

  c  toggle the dos compatibility flag

  d  delete a partition

  g  create a new empty GPT partition table

  G  create an IRIX (SGI) partition table

  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)

命令(输入 m 获取帮助):p  打印分区表

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x81afc09d

  设备 Boot      Start        End      Blocks  Id  System

命令(输入 m 获取帮助):n    新建一个分区

Partition type:

  p  primary (0 primary, 0 extended, 4 free)

  e  extended

Select (default p): p   主分区

分区号 (1-4,默认 1):  默认分区

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G分区的大小

分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w   保存

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@xueshen65 ~]#

例子2  :对已经在使用的磁盘进行分区,分区让新生层的分区生效,如果sda  在做一个sda4 主分区

[root@xueshen65 ~]# fdisk /dev/sda

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):p

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x00009e7b

  设备 Boot      Start        End      Blocks  Id  System

/dev/sda1  *        2048      411647      204800  83  Linux

/dev/sda2          411648    21383167    10485760  83  Linux

/dev/sda3        21383168    25577471    2097152  82  Linux swap / Solaris

命令(输入 m 获取帮助):n

Partition type:

  p  primary (3 primary, 0 extended, 1 free)

  e  extended

Select (default e): p

已选择分区 4

起始 扇区 (25577472-41943039,默认为 25577472):

将使用默认值 25577472

Last 扇区, +扇区 or +size{K,M,G} (25577472-41943039,默认为 41943039):+1G

分区 4 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

正在同步磁盘。

[root@xueshen65 ~]#

如果发出警告,reboot是最好的解决方法

partx  -a   /dev/sda     获得新分区表


使用sdb1  分区

首先格式化  mkfs -t ext4 /dev/sdb1  

[root@xueshen65 ~]#      格式化,-f  对已经存在的文件,强制覆盖

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks

        =                      sectsz=512  attr=2, projid32bit=1

        =                      crc=1        finobt=0, sparse=0

data    =                      bsize=4096  blocks=262144, imaxpct=25

        =                      sunit=0      swidth=0 blks

naming  =version 2              bsize=4096  ascii-ci=0 ftype=1

log      =internal log          bsize=4096  blocks=2560, version=2

        =                      sectsz=512  sunit=0 blks, lazy-count=1

realtime =none                  extsz=4096  blocks=0, rtextents=

2  创建挂载点

  mkdir  /sdb1 

mount    /dev/sdb1   /sdb1/ 

[root@xueshen65 ~]# mkdir /sdb1    创建挂载点

[root@xueshen65 ~]# mount /dev/sdb1 /sdb1/   挂载

[root@xueshen65 ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda2        10G  5.4G  4.7G  54% /

devtmpfs        975M    0  975M    0% /dev

tmpfs          991M    0  991M    0% /dev/shm

tmpfs          991M  11M  981M    2% /run

tmpfs          991M    0  991M    0% /sys/fs/cgroup

/dev/sr0        4.3G  4.3G    0  100% /mnt

/dev/sda1      197M  142M  56M  72% /boot

tmpfs          199M  12K  199M    1% /run/user/42

tmpfs          199M    0  199M    0% /run/user/0

/dev/sdb1      1014M  33M  982M    4% /sdb1

然后就可以使用了

[root@xueshen65 ~]# cd /sdb1/    使用新分区

[root@xueshen65 sdb1]# ls

[root@xueshen65 sdb1]# cp /etc/passwd ./

[root@xueshen65 sdb1]# ls

passwd

[root@xueshen65 sdb1]#

例子3:解决卸载的问题

①  [root@xueshen65 sdb1]# lsof /sdb1

COMMAND  PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME

bash    8236 root  cwd    DIR  8,17      20  64 /sdb1

lsof    10202 root  cwd    DIR  8,17      20  64 /sdb1

lsof    10203 root  cwd    DIR  8,17      20  64 /sdb1

② [root@xueshen65 sdb1]# kill -9  8236

此时窗口就关闭了

就可以卸载了

③ [root@xueshen65 ~]# umount /sdb1/

[root@xueshen65 ~]#

第二种方法



例子4  :  写入配置文件,让他开机自动挂载

vim   /etc/fstab    

添加红线内容

了解



/et

[root@xueshen65 ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda2        10G  5.4G  4.7G  54% /

devtmpfs        975M    0  975M    0% /dev

tmpfs          991M    0  991M    0% /dev/shm

tmpfs          991M  11M  981M    2% /run

tmpfs          991M    0  991M    0% /sys/fs/cgroup

/dev/sr0        4.3G  4.3G    0  100% /mnt

/dev/sda1      197M  142M  56M  72% /boot

tmpfs          199M  12K  199M    1% /run/user/42

tmpfs          199M    0  199M    0% /run/user/1000


[root@xueshen65 ~]# mount -a    # 自动挂载、/etc/fstab  中没有挂载上的文件

[root@xueshen65 ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda2        10G  5.4G  4.7G  54% /

devtmpfs        975M    0  975M    0% /dev

tmpfs          991M    0  991M    0% /dev/shm

tmpfs          991M  11M  981M    2% /run

tmpfs          991M    0  991M    0% /sys/fs/cgroup

/dev/sr0        4.3G  4.3G    0  100% /mnt

/dev/sda1      197M  142M  56M  72% /boot

tmpfs          199M  12K  199M    1% /run/user/42

tmpfs          199M    0  199M    0% /run/user/1000

/dev/sdb1      1014M  33M  982M    4% /sdb1  #  发现已经被挂载上了,说明配置没有问题

然后再重启,看看挂载

第二种方法

可以使用UUID的方法

[root@xueshen65 ~]# blkid

/dev/sda1: UUID="803f9544-e54c-4e88-ab10-d2b483ec407b" TYPE="xfs"

/dev/sda2: UUID="fce7cb5e-9ef6-4d94-8dfa-b74790cb59a5" TYPE="xfs"

/dev/sda3: UUID="c2743a95-90e2-4052-bcad-a65e392abcca" TYPE="swap"

/dev/sdb1: UUID="767a7da4-ab65-4ddf-b3cc-44708e7330a9" TYPE="xfs"

/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

echo   "UUID=767a7da4-ab65-4ddf-b3cc-44708e7330a9  /sdb1 xfs default 0 0">>/etc/fstab  

12.3.2  gdisk  磁盘分区工具

gdisk  主要是用来划分容量大于4T的硬盘,大于4T fdisk 搞不定

两种类型的分区表,:GPT 和MBR  :MBR不支持4T  以上

GPT  分区

例子:对sdb  做gpt   分区,创建一个sdb1


[root@xueshen65 ~]# gdisk /dev/sdb

GPT fdisk (gdisk) version 0.8.10

Partition table scan:

  MBR: MBR only

  BSD: not present

  APM: not present

  GPT: not present

***************************************************************

Found invalid GPT and valid MBR; converting MBR to GPT format

in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by

typing 'q' if you don't want to convert your MBR partitions

to GPT format!

***************************************************************

Command (? for help): ?

b back up GPT data to a file

c change a partition's name

d delete a partition       删除分区表

i show detailed information on a partition

l list known partition types

n add a new partition      添加一个分区

o create a new empty GUID partition table (GPT)

p print the partition table   打印分区表

q quit without saving changes   退出不保存

r recovery and transformation options (experts only)

s sort partitions

t change a partition's type code

v verify disk

w write table to disk and exit    写入分区表并保存

x extra functionality (experts only)

? print this menu

Command (? for help): n  新建分区表

步骤如下 

1   [root@xueshen65 ~]# gdisk /dev/sdb

GPT fdisk (gdisk) version 0.8.10

Partition table scan:

  MBR: MBR only

  BSD: not present

  APM: not present

  GPT: not present

***************************************************************

Found invalid GPT and valid MBR; converting MBR to GPT format

in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by

typing 'q' if you don't want to convert your MBR partitions

to GPT format!

***************************************************************

Command (? for help): ?

b back up GPT data to a file

c change a partition's name

d delete a partition

i show detailed information on a partition

l list known partition types

n add a new partition

o create a new empty GUID partition table (GPT)

p print the partition table

q quit without saving changes

r recovery and transformation options (experts only)

s sort partitions

t change a partition's type code

v verify disk

w write table to disk and exit

x extra functionality (experts only)

? print this menu

Command (? for help): p    答应分区表

Disk /dev/sdb: 41943040 sectors, 20.0 GiB

Logical sector size: 512 bytes 默认下一步

Disk identifier (GUID): FE0D013A-EA43-4DEA-B77E-963B0B60551B

Partition table holds up to 128 entries

First usable sector is 34, last usable sector is 41943006

Partitions will be aligned on 2048-sector boundaries

Total free space is 39845821 sectors (19.0 GiB)

Number  Start (sector)    End (sector)  Size      Code  Name

  1            2048        2099199  1024.0 MiB  8300  Linux filesystem

Command (? for help): d   删除分区表

Using 1

Command (? for help): p  打印分区表

Disk /dev/sdb: 41943040 sectors, 20.0 GiB

Logical sector size: 512 bytes

Disk identifier (GUID): FE0D013A-EA43-4DEA-B77E-963B0B60551B

Partition table holds up to 128 entries

First usable sector is 34, last usable sector is 41943006

Partitions will be aligned on 2048-sector boundaries

Total free space is 41942973 sectors (20.0 GiB)

Number  Start (sector)    End (sector)  Size      Code  Name

Command (? for help): n    新建分区表

Partition number (1-128, default 1):默认

First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:默认

Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G   大小

Current type is 'Linux filesystem'

Hex code or GUID (L to show codes, Enter = 8300): l默认

0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE         

3000 ONIE boot            3001 ONIE config          4100 PowerPC PReP boot 

4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS           

7f00 ChromeOS kernel      7f01 ChromeOS root        7f02 ChromeOS reserved 

8200 Linux swap            8300 Linux filesystem      8301 Linux reserved     

8302 Linux /home          8400 Intel Rapid Start    8e00 Linux LVM         

a500 FreeBSD disklabel    a501 FreeBSD boot          a502 FreeBSD swap       

a503 FreeBSD UFS          a504 FreeBSD ZFS          a505 FreeBSD Vinum/RAID 

a580 Midnight BSD data    a581 Midnight BSD boot    a582 Midnight BSD swap 

a583 Midnight BSD UFS      a584 Midnight BSD ZFS      a585 Midnight BSD Vinum 

a800 Apple UFS            a901 NetBSD swap          a902 NetBSD FFS         

a903 NetBSD LFS            a904 NetBSD concatenated  a905 NetBSD encrypted   

a906 NetBSD RAID          ab00 Apple boot            af00 Apple HFS/HFS+     

af01 Apple RAID            af02 Apple RAID offline    af03 Apple label       

af04 AppleTV recovery      af05 Apple Core Storage    be00 Solaris boot       

bf00 Solaris root          bf01 Solaris /usr & Mac Z  bf02 Solaris swap       

bf03 Solaris backup        bf04 Solaris /var          bf05 Solaris /home     

bf06 Solaris alternate se  bf07 Solaris Reserved 1    bf08 Solaris Reserved 2 

bf09 Solaris Reserved 3    bf0a Solaris Reserved 4    bf0b Solaris Reserved 5 

c001 HP-UX data            c002 HP-UX service        ea00 Freedesktop $BOOT 

eb00 Haiku BFS            ed00 Sony system partitio  ed01 Lenovo system partit

Press the key to see more codes:

ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition

fb00 VMWare VMFS          fb01 VMWare reserved      fc00 VMWare kcore crash p

fd00 Linux RAID           

Hex code or GUID (L to show codes, Enter = 8300):  默认8300

Changed type of partition to 'Linux filesystem'

Command (? for help): w  保存退出

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING

PARTITIONS!!

Do you want to proceed? (Y/N): y  是保存

OK; writing new GUID partition table (GPT) to /dev/sdb.

Warning: The kernel is still using the old partition table.

The new table will be used at the next reboot.

The operation has completed successfully.

[root@xueshen65 ~]#

查看是否成功

[root@xueshen65 ~]# ls /dev/sdb*

/dev/sdb  /dev/sdb1

[root@xueshen65 ~]# umount /dev/sdb1    卸载

[root@xueshen65 ~]# mkfs.ext4 /dev/sdb1   格式化

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=

OS type: Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

65536 inodes, 262144 blocks

13107 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=268435456

8 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376

Allocating group tables: 完成                           

正在写入inode表: 完成                           

Creating journal (8192 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

[root@xueshen65 ~]#

12.3   实战扩展swap 分区

Swap   分区在系统的物理内存不够用的时候,把硬盘空间的一部分空间释放出来,以供当前运行的程序使用,

mkswap /devices  (格式化成swap格式)

swapon  /swap  激活/  swap  ,加入到swap 分区中

vim  /etc/fstab  (开机自启动添加的swap 分区)   在最后添加

/devices  swap swap  defaults   0 0

如果不想使用需要删除,只需要执行 swapoff  /swap 

对已经有的sdb2   进行swap  分区

  1    [root@xueshen65 ~]# mkswap /dev/sdb2

正在设置交换空间版本 1,大小 = 1048572 KiB

无标签,UUID=b85aab48-3f5a-440c-8db4-af13db73eb6f

2      [root@xueshen65 ~]# free -m

              total        used        free      shared  buff/cache  available

Mem:          1980        797        450          13        733        958

Swap:          2047          0        2047

3   [root@xueshen65 ~]# swapon /dev/sdb2

[root@xueshen65 ~]# free -m 

              total        used        free      shared  buff/cache  available

Mem:          1980        804        442          13        733        950

Swap:          3071          0        3071

4   也可以关着 

root@xueshen65 ~]# swapoff /dev/sdb2

[root@xueshen65 ~]# free -m

              total        used        free      shared  buff/cache  available

Mem:          1980        809        438          13        733        945

Swap:          2047          0        2047

看看当前有哪些文件

[root@xueshen65 ~]# swapon /dev/sdb2

[root@xueshen65 ~]# swapon -s   #  查看列表 

文件名 类型 大小 已用 权限

/dev/sda3                              partition 2097148 0 -2

/dev/sdb2                              partition 1048572 0 -3

当然也可以使用文件加入swap  分区

dd   if =/dev/zero of  =swap_file bs =1 M count =500


你可能感兴趣的:(第十二章 硬盘结构)