1-13-硬盘介绍和磁盘管理.docx
1-13-硬盘介绍和磁盘管理存储基础知识:LINUX主要的一些知识>基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、磁盘限额、RAID本节所讲内容:Ø 硬盘的分类及使用fdisk分区工具1、认识硬盘的分类及特性2、使用fdisk对磁盘进行操作,分区,格式化(重点)3、开机自动挂载分区Ø 实战使用parted分区工具及扩展swap分区1、使用parted操作大于等于3T硬盘2、扩展服务器swap内存空间硬盘分几种?从工作原理来说:固态,机械从硬盘大小来说:2.5 3.5 1.8从可插拔方式来说:热插拔、非热插拔从硬盘的主要接口来说:STAT 、SAS、PCIE存储链接方式来说:本地存储,外部存储从分区方式来说:存储大小分区软件分区表类型2TB以下的硬盘fdisk/patred/cfdiskMSDOS/gpt2TB以上的硬盘parted/gdiskGPT如果说你用的msdos(MBR)分区方式:它有一些限制主分区:只支持4个 ABC = 分了三块,如果想分10块盘扩展分:3个主分区+1个扩展分区 D,这个扩展分区是不可用逻辑分区:是从扩展分区来的 在D盘的基础上。继续划分分区:EFGHIJK如果你用的是GPT的分区方式,那以它没有限制注意:从MBR转到GPT分区或者说从GPT转到MBR会导致数据全部丢失第1章 硬盘的分类1.1 认识硬盘的分类常见硬盘品牌:希捷 西数 日立 hp dell IBM1.2 硬盘的类型IDE SCSI SAS STAT(1 -2 -3)SSD1.2.1-SCSI硬盘1.2.2-IDE硬盘1.2.3-SAS硬盘 日立存储硬盘如下图IBM硬盘如下图1.2.4-SATA硬盘1.2.5-SSD硬盘在内核当中:不同的接口对应不同的命名方式操作系统IDESTATSASRHEL5/dev/hda/dev/sda/dev/sdaRHEL6/dev/sda/dev/sda/dev/sdaKVM/dev/vda第2章 硬盘分区介绍硬盘分区就是把一个硬盘驱动器划分为多个逻辑存储单元,我们把这些单元称为分区,通过这些分区,做为这个操作系统的管理员就可以通过使用不同的分区来执行不同的功能操作,例如:限制应用或用户的可用空间允许从同一个磁盘进行不同的操作系统多重启动将系统文件与用户文件进行分隔限制磁盘空间使用分区方案:MBR和GPT两种2.1 硬盘分区符认识注意:使用分区工具fdisk对磁盘进行操作,分区,格式化(重点)正常使用一块磁盘:购买设备à设备联机à磁盘分区à磁盘格式化(创建文件系统)à磁盘挂载à正常使用2.2 使用fdisk管理分区在虚拟机新添加硬盘后,两种方法可以发现硬盘:1、 重启服务器2、 通过命令a: rootpanda # echo "- - -" > /sys/class/scsi_host/host0/scanb:rootpanda # for i in 0.32;do echo "- - -" > /sys/class/scsi_host/host$i/scan;donefdisk:磁盘分区,是Linux发行版本中最常用的分区工具用法:fdisk 选项 device 常用的选项 : -l 查看硬盘分区表 案例:在sdb盘上创建一个大小为1G名称为xuegod的文件系统1、 添加硬盘2、 对sdb这块盘划分一个1G的分区出来rootpanda mnt# fdisk /dev/sdbWelcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Device does not contain a recognized partition tableBuilding a new DOS disklabel with disk identifier 0x5a171572.Command (m for help): mCommand action 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)Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): Using default response pPartition number (1-4, default 1): First sector (2048-41943039, default 2048): 默认忽略不填Using default value 2048Last sector, +sectors or +sizeK,M,G (2048-41943039, default 41943039): +1G Partition 1 of type Linux and of size 1 GiB is setCommand (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x5a171572 Device Boot Start End Blocks Id System/dev/sdb1 2048 2099199 1048576 83 LinuxCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.rootpanda mnt# ls /dev/sdb*/dev/sdb /dev/sdb13、 对新分区划行格式化文件系统操作rootpanda mnt# mkfs.xfs /dev/sdb1meta-data=/dev/sdb1 isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=04、 创建一个挂载点(一个设备想让他能够使用,必须要进行挂载,要进行挂载必须要有一个挂载点或叫挂载目录(这个挂载点可以用现有已存在的目录,或者自己创建一个目录,mount命令不会自动创建这个目录)rootpanda mnt# mkdir /xuegod5、 进行挂载(用mount命令)说明:mount是用来对设置进行挂载的,umont用来对挂载的设备进行卸载,语法如下:1) mount 设备的绝对路径 挂载点rootpanda mnt# mount /dev/sdb1 /xuegod2)umount 挂载点 /卸载方式13)umount 设备路径 /卸载方式2注意: 在卸载前,要保证你当前所处的位置不在当前的目录内,或者说你的这个挂载点目录没有被占用,如果无法umount成功,可以通过以下方式查看来判断哪个进程占用你的这个目录挂载的限制:Ø 根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为mount是所有目录的根目录,其他目录都是由根目录 / 衍生出来的。Ø 挂载点必须是已经存在的目录,系统不会自己创建Ø 挂载点的目录可以任意指定,但必须遵守必要的系统目录架构原则Ø 所有挂载点在同一时间只能被挂载一次Ø 所有分区在同一时间只能挂在一次Ø 若进行卸载,必须将工作目录退出挂载点(及其子目录),也就先umount之后才可以被卸载,一个挂载点可以被多个分区设备挂载6、确认查看rootpanda mnt# df -Th /xuegodFilesystem Type Size Used Avail Use% Mounted on/dev/sdb1 xfs 1014M 33M 982M 4% /xuegod7、写入配置文件,让它开机自动挂载通过设备名进行挂载rootpanda mnt# echo "/dev/sdb1 /xuegod xfs defaults 0 0" >> /etc/fstab 通过设备的UUID值进行挂载(建议以这种方式进行挂载)rootpanda mnt# blkid/dev/sda1: UUID="b680e7be-d07b-46ef-9245-59a9a61c8b42" TYPE="xfs" /dev/sda2: UUID="7Hd6N2-VO9n-fGSL-sIvE-HQLM-rCyH-ePEl6m" TYPE="LVM2_member" /dev/sr0: UUID="2015-10-30-11-11-49-00" LABEL="RHEL-7.2 Server.x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/rootvg-rootlv: UUID="1261d4e9-ef28-44ba-8474-4c52953802f9" TYPE="xfs" /dev/mapper/rootvg-swaplv: UUID="d6387a0a-fa13-4c3c-bd00-dcd5e9a1c08b" TYPE="swap" /dev/dm-0: UUID="1261d4e9-ef28-44ba-8474-4c52953802f9" TYPE="xfs" /dev/sdb1: UUID="91909e9e-4eed-4d35-81a5-34b6caf36552" TYPE="xfs"rootpanda mnt#echo " UUID=91909e9e-4eed-4d35-81a5-34b6caf36552” /xuegod xfs defaults 0 0" >> /etc/fstab/dev/sdb1/sdb1ext4defaults00要挂载的分区设备挂载点文件系统类型挂载选项是否备份是否检测其中第四列:parameters-文件系统的参数Async/sync设置是否为同步方式运行,默认为asyncauto/noauto当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为autorw/ro是否以以只读或者读写模式挂载exec/noexe限制此文件系统内是否能够进行"执行"的操作user/nouser是否允许用户使用mount命令挂载suid/nosuid是否允许SUID的存在Usrquota启动文件系统支持磁盘配额模式Grpquota启动文件系统对群组磁盘配额模式的支持Defaults同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置 samba nfs第五列:是否进行备份。通常这个参数的值为0或者10代表不要做备份1代表要每天进行操作2代表不定日期的进行操作第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整0不要检验1最早检验(一般根目录会选择)21级别检验完成之后进行检验第3章 实战使用parted分区工具fdisk无法支持 2TB 以上的分区,此时就用到 parted 这个工具。GPT分区:GPT,全局唯一标识分区表(GUID Partition Table),它使用128位GUID来唯一标识每个磁盘和分区,与MBR存在单一故障点不同,GPT提供分区表信息的冗余,一个在磁盘头部一个在磁盘尾部;它通过CRC校验和来检测GPT头和分区表中的错误与损坏;默认一个硬盘支持128个分区3.1 Parted 磁盘分区工具parted是Linux中磁盘分区管理的高级工具,对GPT分区方案,也可以使用gdisk工具进行1.检查安装rootxuegod72 # rpm -qf which partedparted-3.1-23.el7.x86_643.2 查看所有的磁盘状态rootxuegod72 # parted -l通过parted 工具创建新的分区-在添加新的大于3t的硬盘rootxuegod72 # parted -lModel: VMware, VMware Virtual S (scsi)Disk /dev/sda: 215GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags: Number Start End Size Type File system 标志 1 1049kB 316MB 315MB primary xfs 启动 2 316MB 3461MB 3146MB primary linux-swap(v1) 3 3461MB 215GB 211GB primary xfsModel: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 8590MBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags: Number Start End Size Type File system 标志 1 1049kB 2149MB 2147MB primary xfs 2 2149MB 5370MB 3221MB primary ext4警告: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。Model: NECVMWar VMware IDE CDR10 (scsi) Disk /dev/sr0: 4043MBSector size (logical/physical): 2048B/2048BPartition Table: msdosDisk Flags: Number Start End Size Type File system 标志 2 1130MB 1156MB 25.7MB primaryrootxuegod72 # parted /dev/sdc #对/dev/sdb分区格式化GNU Parted 3.1Using /dev/sdbWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) mklabel gpt #将MBR磁盘格式化为GPT(parted) mkpart primary 0 100 # 划分一个起始位置为0大小为100M的主分区 Warning: The resulting partition is not properly aligned for best performance. #由此产生的分区不合理对齐的最佳性能。Ignore/Cancel? Ignore #同意/取消 分区大点就不会出现这个问题 (parted) print #输出分区信息Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start End Size File system Name Flags 1 17.4kB 100MB 100MB primary(parted)(parted) q Information: You may need to update /etc/fstab.rootxuegod72 # mkfs -t xfs /dev/sdc1 #格式化meta-data=/dev/sdb1 isize=256 agcount=4, agsize=6103 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0data = bsize=4096 blocks=24409, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0rootxuegod72 # mkdir /sdc1 #创建挂载点rootxuegod72 # mount /dev/sdb1 /sdc1/ #挂载rootxuegod72 # df | tail -1 #验证/dev/sdc1 94224 5040 89184 6% /sdc1参数解释:Number:这个就是分区的号举例来说,1号代表的是 /dev/sdb1 的意思;Start:起始的磁柱位置;End:结束的磁柱位置;Size: 分区有多少容量;Type:就是分区的类型,有primary, extended, logical等类型;File system:就如同 fdisk 的 System ID 之意。另外一个分区工具:rootpanda # gdisk /dev/sdcGPT fdisk (gdisk) version 0.8.6Partition table scan: MBR: protective BSD: not present APM: not present GPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): ?bback up GPT data to a filecchange a partition's nameddelete a partitionishow detailed information on a partitionllist known partition typesnadd a new partitionocreate a new empty GUID partition table (GPT)pprint the partition tableqquit without saving changesrrecovery and transformation options (experts only)ssort partitionstchange a partition's type codevverify diskwwrite table to disk and exitxextra functionality (experts only)?print this menuCommand (? for help): pDisk /dev/sdc: 6291456000 sectors, 2.9 TiBLogical sector size: 512 bytesDisk identifier (GUID): E722D442-E281-4B67-8DBE-BD20C7D6B455Partition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 6291455966Partitions will be aligned on 8-sector boundariesTotal free space is 6291065341 sectors (2.9 TiB)Number Start (sector) End (sector) Size Code Name 1 34 195312 95.4 MiB 0700 primary 2 195313 390625 95.4 MiB 0700 xfsCommand (? for help): nPartition number (3-128, default 3): First sector (390626-6291455966, default = 390632) or +-sizeKMGTP: Last sector (390632-6291455966, default = 6291455966) or +-sizeKMGTP: +100MCurrent type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): l0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE 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 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 Zbf02 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 ed00 Sony system partitio ef00 EFI System ef01 MBR partition schemeef02 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): Changed type of partition to 'Linux filesystem'Command (? for help): pDisk /dev/sdc: 6291456000 sectors, 2.9 TiBLogical sector size: 512 bytesDisk identifier (GUID): E722D442-E281-4B67-8DBE-BD20C7D6B455Partition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 6291455966Partitions will be aligned on 8-sector boundariesTotal free space is 6290860541 sectors (2.9 TiB)Number Start (sector) End (sector) Size Code Name 1 34 195312 95.4 MiB 0700 primary 2 195313 390625 95.4 MiB 0700 xfs 3 390632 595431 100.0 MiB 8300 Linux filesystemCommand (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTINGPARTITIONS!Do you want to proceed? (Y/N): yOK; writing new GUID partition table (GPT) to /dev/sdc.The operation has completed successfully.rootpanda # ls /dev/sdc*/dev/sdc /dev/sdc1 /dev/sdc2 /dev/sdc3第4章 实战扩展swap分区Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中SWAP 分区在一些情况下可以提升 Linux 操作系统性能,但在某些情况下又会成为系统运行的瓶颈,下面我们就来详细介绍下 Linux 中的 SWAP 交换分区SWAP 交换分区是用来存放内存溢出来的数据。我们可以将内存想像成一个盆子,运行程序时的数据都被作为水放在内存这个盆子当中。如果你运行太多的应用程序,导致水过多而(内存这个)盆子已经装不下时,就会将多于部分的水装到 SWAP 交换分区当中。优点:内存用完时,提供更多运行空间mkswap /devices (格式化成swap格式)swapon /swap (激活/swap,加入到swap分区中)vim /etc/fstab (开机自启动新添加的swap分区)>添加/devices swap swap defaults 0 0如果不想使用需要删除,只需要执行#swapoff /swap4.1 先分个区rootxue