磁盤管理
Linux哲學思想:Linux中一切皆文件
所以對于硬件設備來說,在Linux中也是以文件的形式存在,設備文件
[root@kylin-xu ~]# ll /dev/sda* brw-rw---- 1 root disk 8, 0 Nov 20 04:11 /dev/sda brw-rw---- 1 root disk 8, 1 Nov 20 04:11 /dev/sda1 brw-rw---- 1 root disk 8, 2 Nov 20 04:11 /dev/sda2 主設備號 次設備號 [root@kylin-xu ~]# ll /dev/zero crw-rw-rw- 1 root root 1, 5 Nov 20 04:11 /dev/zero
主設備號:標識設備類型 major number
次設備號:標識同一類型下的不同設備 minor number
【1】、磁盤外部結構
磁盤分類:
固態硬盤: 內部是主板和U盤類似
機械硬盤: 盤片 主軸 傳動手臂 做機械運動 類似 DVD
Nvme硬盤
PCI-E接口
大小分類:
3.5英寸 : 臺式機
2.5英寸: 服務器 筆記本
接口類型:
IDE接口 # 淘汰
SCSI接口 # 淘汰
SATA接口 # 臺式機 筆記本
SAS接口 #企業服務器標配
固態磁盤價格高,存儲少。有壽命。
機械磁盤價格低,存儲大。老不死。
固態速度比機械磁盤速度快
磁盤存儲大小和轉速:
企業標配SAS接口: 300G 600G 900G 轉速 每分鐘轉多少圈 5400轉 7200轉 10K 15K
轉速越快性能越好
存儲越大轉速越慢 1T 轉速最高10K 2T 4T 8T 20T
注意:速度不是由單純的接口類型決定,支持Nvme協議硬盤速度是最快的
【2】、磁盤陣列Raid
作用: 獲得更大的容量 # 將多塊磁盤邏輯的組合成一塊磁盤 獲得更高的性能 # 寫入服務器 寫兩塊磁盤比寫一塊磁盤速度快 獲得更好的安全性 # 可以同時將數據寫入兩塊盤 一塊盤做備份
面試+筆試題
RAID級別 | 硬盤數量 | 可用容量 | 安全性 | 性能 | 使用場景 |
---|---|---|---|---|---|
0 | 至少一塊 | 磁盤數量總和 | 不安全 | 讀寫最快 | 要求速度不要安全,例如數據庫從庫 |
1 | 只能2塊 | 磁盤數量的一半 | 可以壞一塊 | 寫慢,讀湊合 | 要求安全,速度一般的場景,例如系統盤 |
5 | 至少3塊 | n-1塊 | 壞1塊 | 0和1的折中 | 業務流量較穩定的場景 |
10 | 至少4塊,2的倍數即可 | 一半 | 壞1半 | 讀寫速度快 | 高并發場景 |
【3】、磁盤分區
windows磁盤默認的是MBR格式
MBR格式最多支持4個主分區 C D E F
MBR格式支持3個主分支+1個擴展分區
Linux磁盤表示方法
sda # 表示第一塊磁盤 sda1 # 表示第一塊磁盤的第一個分區 sda2 # 表示第一塊磁盤的第二個分區 sdb # 表示第二塊磁盤 sdb1 # 表示第2塊磁盤的第1個分區 sdb5 # 表示第2塊磁盤的第1個邏輯分區
1、Linux中磁盤分區方式
1.系統分區 第一種分區: 標準分區 300G磁盤 /boot 200M # 存放系統內核的位置 引導程序所在的位置 /剩余空間 # 存放系統 第二種分區: swap分區 /boot 200M swap 2G # 當內存空間不夠用時,臨時使用磁盤空間充當內存來使用 速度慢 解決OOM問題 內存溢出。 # linux內存如果達到最大限制,則自動殺死占用最高內存的進程來讓系統正常運行 # swap 對用戶的服務器需要增加物理內存 # 比較著急,或者公司內部測試服務器 自己使用的。 / 剩余空間 第三種分區: 比較少 /boot 200M swap 2G / 50G # 系統 /data 1.8T # 數據分區
2、磁盤分區類型
MBR:4 primary parted or 3 primary parted + 1 extended parted + many logical parted
GPT: 128 primary parted
3、磁盤分區步驟
1.MBR格式 小于2T磁盤使用fdisk分區 2.GPT分區 大于2T磁盤使用parted分區 第一步:插入一塊20G SCSI類型硬盤
第二部:重啟 或者 通過命令行重新掃描SCSI總線來添加硬盤 echo '- - -' > /sys/class/scsi_host/host0/scan echo '- - -' > /sys/class/scsi_host/host1/scan echo '- - -' > /sys/class/scsi_host/host2/scan # 由于我們并不知道哪一個總線是,就都掃一遍就行 # 再Ubuntu系統中/sys/class/scsi_hosts/有許多總線,我們有兩種方式 root@xu-ubuntu:~# for i in `ls /sys/class/scsi_host/` ; do echo '- - -' > /sys/class/scsi_host/${i}/scan; done # 找出SPI總線對應的 host,只掃描該 host root@xu-ubuntu:~# grep mptspi /sys/class/scsi_host/host*/proc_name /sys/class/scsi_host/host31/proc_name:mptspi root@xu-ubuntu:~# echo '- - -' > /sys/class/scsi_host/host31/scan
第三部:磁盤分區 # fdisk創建分區 [root@kylin-xu ~]# fdisk /dev/sdb Command (m for help): m # 查看菜單 Help: d delete a partition # 刪除一個分區 l list known partition types # 顯示分區類型 n add a new partition # 創建新的分區 p print the partition table # 輸出分好的分區表 m print this menu # 打印菜單 w write table to disk and exit #保存并且推出 q quit without saving changes# 退出不保存 Command (m for help): n # 創建分區 Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p # 指定類型,默認是primary Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +5G Created a new partition 1 of type 'Linux' and of size 5 GiB. Command (m for help): n # 第二個分區 Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (10487808-41943039, default 10487808): Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-41943039, default 41943039): +10G Created a new partition 2 of type 'Linux' and of size 10 GiB. Command (m for help): d # 刪除分區 Partition number (1-4, default 4): Command (m for help): n # 創建一個擴展分區 Partition type p primary (3 primary, 0 extended, 1 free) e extended (container for logical partitions) Select (default e): Using default response e. Selected partition 4 First sector (33556480-41943039, default 33556480): Last sector, +/-sectors or +/-size{K,M,G,T,P} (33556480-41943039, default 41943039): Created a new partition 4 of type 'Extended' and of size 4 GiB. Command (m for help): p # 查看創建的分區類型 Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk model: VMware Virtual S Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x5fbfe031 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 10487807 10485760 5G 83 Linux /dev/sdb2 10487808 31459327 20971520 10G 83 Linux /dev/sdb3 31459328 33556479 2097152 1G 83 Linux /dev/sdb4 33556480 41943039 8386560 4G 5 Extended Command (m for help): n # 創建邏輯分區 All primary partitions are in use. Adding logical partition 6 First sector (35657728-41943039, default 35657728): Last sector, +/-sectors or +/-size{K,M,G,T,P} (35657728-41943039, default 41943039): Created a new partition 6 of type 'Linux' and of size 3 GiB. Command (m for help): w # 保存分區 The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. [root@kylin-xu ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 59G 0 part ├─klas-root 253:0 0 38.3G 0 lvm / ├─klas-swap 253:1 0 2G 0 lvm [SWAP] └─klas-backup 253:2 0 18.7G 0 lvm /backup sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 5G 0 part ├─sdb2 8:18 0 10G 0 part ├─sdb3 8:19 0 1G 0 part ├─sdb4 8:20 0 1K 0 part ├─sdb5 8:21 0 1G 0 part └─sdb6 8:22 0 3G 0 part sr0 11:0 1 4.3G 0 rom # 如果我們使用分區完成后,使用lsblk查看不到我們分區的內容,這是由于lsblk是查看內存中的信息,又可能我們分區完成后,內存沒有更新,這是我們需要手動刷新下 [root@kylin-xu ~]# partprobe
非交互式創建分區
[root@kylin-xu ~]# echo -e 'p n +1G p ' | fdisk /dev/sdb # 表示回車
# parted創建分區 (parted) mklabel gpt # 將磁盤類型修改為gpt格式 (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 4295GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: (parted) mkpart # 創建分區 Partition name? []? primary # 分區的名稱 自定義叫啥都行 File system type? [ext2]? xfs Start? 0 End? 500G Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s Ignore/Cancel? I (parted) print Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB xfs primary (parted) mkpart Partition name? []? parimary File system type? [ext2]? xfs Start? 500G End? 1000G (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 4295GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB primary 2 500GB 1000GB 500GB xfs parimary (parted) mkpart primary xfs 1000G 4000G # 非交互式分區 (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 4295GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: (parted) quit # 退出parted分區
parted重要的子命令
help [COMMAND] # 打印菜單幫助
mklabel,mktable LABEL-TYPE # 創建分區表類型
mkpart PART-TYPE [FS-TYPE] START END # 創建分區
print [devices|free|list,all|NUMBER] # 查看分區表
quit # 退出
rm NUMBER # 刪除分區
第四步:格式化分區,在格式化分區之后就會出現UUID [root@kylin-xu ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1310720, 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=0
第五步:創建掛載點,掛載分區 [root@kylin-xu ~]# mkdir /mnt/xfs [root@kylin-xu ~]# mount /dev/sdb1 /mnt/xfs [root@kylin-xu ~]# df -Th | grep /mnt/xfs /dev/sdb1 xfs 5.0G 68M 5.0G 2% /mnt/xfs
第六步:寫入/etc/fstab,開機自動掛載 vim /etc/fstab /dev/sdb1 /mnt/xfs xfs defaults 0 0 卸載分區 [root@kylin-xu xfs]# touch 123 [root@kylin-xu xfs]# cd [root@kylin-xu ~]# umount /mnt/xfs [root@kylin-xu ~]# df -Th | grep /mnt/xfs [root@kylin-xu ~]# ll /mnt/xfs total 0 # 我們將分區卸載之后,我們創建的內容也會消失, # 我們重新掛載上之后就又會出現 [root@kylin-xu ~]# mount /dev/sdb1 /mnt/xfs [root@kylin-xu ~]# ll /mnt/xfs total 0 -rw-r--r-- 1 root root 0 Nov 20 04:08 123
我們在表示logical parted時盡量不要使用路徑去表示,要使用UUID
4、Ubuntu中進行磁盤分區
# 添加磁盤 root@xu-ubuntu:~# for i in `ls /sys/class/scsi_host/` ; do echo '- - -' > /sys/class/scsi_host/${i}/scan; done root@xu-ubuntu:~# fdisk /dev/sdb -l Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk model: VMware Virtual S Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
在Ubuntu中磁盤分區使用的是gpt分區
root@xu-ubuntu:~# gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.8 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries in memory. Command (? for help): p Disk /dev/sdb: 41943040 sectors, 20.0 GiB Model: VMware Virtual S Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): C4537E56-7D8E-4F18-916F-4C63377E3032 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 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}: +4G Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sdb: 41943040 sectors, 20.0 GiB Model: VMware Virtual S Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): C4537E56-7D8E-4F18-916F-4C63377E3032 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 33554365 sectors (16.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 8390655 4.0 GiB 8300 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. The operation has completed successfully.
# 格式化 mkfs
【4】、文件系統
1、什么是文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。
操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
查看當前內核支持的文件系統:
[root@kylin-xu ~]# ls /lib/modules/`uname -r`/kernel/fs root@xu-ubuntu:~# ls /lib/modules/`uname -r`/kernel/fs
系統支持的文件系統并不全是可用的,查看當前系統可用的文件系統:
cat /proc/filesystems
當前系統支持的文件系統和當前系統可用的文件系統是兩回事,modules 中的文件系統在編譯時選擇了才是可用的,而可用的文件系統包含了默認支持的文件系統,如果需要使用某個文件系統,而該文件系統又不在proc 中,則需要重新編譯內核;
2、文件系統類型
Linux常用文件系統
文件系統 | 備注 |
---|---|
ext2 | Extended file system 適用于那些分區容量不是太大,更新也不頻繁的情況,例如/boot 分 區 |
ext3 | ext2 的改進版本,其支持日志功能,能夠幫助系統從非正常關機導致的異常中恢復 |
ext4 | ext 文件系統的最新版。有很多新的特性,包括納秒級時間戳、巨型文件 (16TB)、最大1EB的文件系統,以及速度的提升 |
xfs | SGI,支持最大8EB的文件系統 |
swap | 交換分區專用的文件系統 |
iso9660 | 光盤文件系統 |
Windows常用文件系統
文件系統 | 備注 |
---|---|
FAT32 | 最多只能支持16TB的文件系統和4GB的文件 |
NTFS | 最多只能支持16EB的文件系統和16EB的文件 |
extFAT |
Unix*常用文件系統
文件系統 | 備注 |
---|---|
FFS(fast) | |
UFS(unix) | UFS是UNIX文件系統的簡稱,幾乎是大部分UNIX類操作系統默認的基于磁盤的文件系統 |
JF32 |
3、創建文件系統
root@xu-ubuntu:~# mkfs.ext4 /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 1048576 4k blocks and 262144 inodes # 創建block和inode Filesystem UUID: 83d410e3-5dcb-415a-8ef0-54c3d73e4b34 # 設置UUID Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@xu-ubuntu:~# mkfs.xfs /dev/sdb2 meta-data=/dev/sdb2 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=1310720, 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=0 root@xu-ubuntu:~# lsblk -f /dev/sdb NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sdb ├─sdb1 ext4 1.0 83d410e3-5dcb-415a-8ef0-54c3d73e4b34 ├─sdb2 xfs af832cf3-01c7-48eb-b4bc-a76605c7d5f6 └─sdb3
【5】、磁盤掛載
mount [-lhV] mount -a [options] mount [options] [--source]
device:指明要掛載的設備
設備文件:例如:/dev/sda5
卷標:-L 'LABEL', 例如 -L 'MYDATA'
UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
偽文件系統名稱:proc, sysfs, devtmpfs, configfs
mountpoint:掛載點目錄必須事先存在,建議使用空目錄
掛載規則
一個掛載點同一時間只能掛載一個設備
一個掛載點同一時間掛載了多個設備,只能看到最后一個設備的數據,其它設備上的數據將被隱藏
一個設備可以同時掛載到多個掛載點
通常掛載點一般是已存在空的目錄
root@xu-ubuntu:~# mount --source /dev/sdb1 -o ro /dir1 # --source 指定掛載源,-o 指定掛載選項 ro 表示只讀 root@xu-ubuntu:~# df -lh | grep dir1 /dev/sdb1 3.9G 24K 3.7G 1% /dir1 root@xu-ubuntu:~# touch /dir1/lll touch: cannot touch '/dir1/lll': Read-only file system root@xu-ubuntu:~# mount | grep sdb1 /dev/sdb1 on /dir1 type ext4 (ro,relatime)
【6】、持久化掛載
/etc/fstab
每行定義一個要掛載的文件系統,,其中包括共 6 項
要掛載的設備或偽文件系統設備文件(LABEL=label | UUID=uuid | /dev/sda1)
掛載點:必須是事先存在的目錄
文件系統類型:ext4,xfs,iso9660,nfs,none
掛載選項:defaults ,acl,bind,ro,rw 等
轉儲頻率:0 不做備份; 1 每天轉儲; 2 每隔一天轉儲
fsck檢查的文件系統的順序:0 不自檢 ; 1 首先自檢,一般只有rootfs才用;2 非rootfs使用 0
/dev/sdb1 /mnt/xfs xfs defaults 0 0
【7】、磁盤常用工具
1、df
文件系統查看工具
-a:顯示所有 -h:以方便的形式顯示數據 -T:顯示文件系統類型 -t:按照文件系統類型過濾 root@xu-ubuntu:~# df -t ext4 -l:只顯示本機的文件系統 --total:最后一行匯總輸出 root@xu-ubuntu:~# df -lTh --total Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M 1.6M 386M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24G 8.9G 14G 40% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 242M 1.6G 14% /boot tmpfs tmpfs 388M 4.0K 388M 1% /run/user/1000 /dev/sdb1 ext4 3.9G 24K 3.7G 1% /dir1 total - 32G 9.2G 22G 31% -
2、du
目錄統計工具
-s:只顯示外層目錄 -h:以方便閱讀的格式顯示 --total:匯總統計到的所有數據 root@xu-ubuntu:~# du /etc/ -sh 6.7M /etc/ root@xu-ubuntu:~# du /etc/ /var/log/ -sh --total 6.7M /etc/ 36M /var/log/ 42M total
3、dd
if=file#從所命名文件讀取而不是從標準輸入 of=file #寫到所命名的文件而不是到標準輸出 bs=size#指定塊大小(既是是ibs也是obs) count=n#復制幾個bs
# 備份MBR root@xu-ubuntu:~# dd if=/dev/sdb of=./sdb.img bs=512 count=1 # 備份整個磁盤 dd if=/dev/sdx of=/path/to/image
【8】、磁盤相關案例
企業案例1:java環境內存不夠用,大量占用swap
swap磁盤分區: 大小是內存的1-1.5倍 如果內存大于8G,則最多swap給8G即可。 什么情況下使用swap: 測試服務器 內部服務器 自己用的虛擬機 流量波動的業務。 線上服務器,業務服務器禁止使用swap,增加內存的方式解決OOM(內存溢出)問題。
如何創建swap
方法1: 安裝操作系統的時候
方法2: 安裝完成操作系統
# 生成一個1G的文件 [root@kylin-xu ~]# dd if=/dev/zero of=/1g bs=1G count=1 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.15619 s, 174 MB/s # 格式化為swap [root@kylin-xu ~]# mkswap /1g mkswap: /1g: insecure permissions 0644, 0600 suggested. Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=3cbda684-b958-476e-b08c-1b94834d0657 [root@kylin-xu ~]# blkid /1g /1g: UUID="3cbda684-b958-476e-b08c-1b94834d0657" TYPE="swap" # 掛載使用swap 直接增加到原有的swap空間上 [root@kylin-xu ~]# swapon /1g swapon: /1g: insecure permissions 0644, 0600 suggested. [root@kylin-xu ~]# swapon -s # 查看分區的組成 Filename Type Size Used Priority /dev/dm-1 partition 2138108 13324 -2 /1g file 1048572 0 -3 [root@kylin-xu ~]# free -h total used free shared buff/cache available Mem: 1.9Gi 178Mi 1.1Gi 10Mi 697Mi 1.6Gi Swap: 3.0Gi 13Mi 3.0Gi # 寫入/etc/fstab
企業案例2.無法寫入文件到磁盤
第一種情況:磁盤空間滿了 # 需要查找系統中的大文件,找出磁盤中大于1G的文件。 # 注意mount 會隱藏原來目錄下的文件 find / -size +1G -type f dd if=/dev/zero of=/opt/2g bs=1M count=2000 [root@kylin-xu ~]# find / -type f -size +1G /proc/kcore /opt/2g 第二種情況:inode號滿了,找出文件中大量的小文件 [root@kylin-xu ~]# find / -type d -size +1M
企業案例3.解決磁盤不夠用的問題
需求: 目前磁盤不夠用
1.業務會持續輸出日志內容到 /var/log/nginx.log文件中 10G [root@kylin-xu ~]# dd if=/dev/zero of=/var/log/10g bs=1M count=10000 2.日志的路徑不能變,解決磁盤不夠用的問題。
解決方案: 1.增加大的磁盤 增加4T的磁盤 2.掛載磁盤到/data目錄 [root@kylin-xu ~]# mount /dev/sdc3 /data 3.將10g文件移動到/data目錄 [root@kylin-xu ~]# mv /var/log/10g /data/ [root@kylin-xu ~]# ll /data/ total 9.8G -rw-r--r-- 1 root root 9.8G Nov 20 17:11 10g [root@kylin-xu ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 963M 0 963M 0% /dev tmpfs tmpfs 979M 0 979M 0% /dev/shm tmpfs tmpfs 979M 22M 957M 3% /run tmpfs tmpfs 979M 0 979M 0% /sys/fs/cgroup /dev/mapper/klas-root xfs 39G 6.7G 32G 18% / tmpfs tmpfs 979M 0 979M 0% /tmp /dev/sdb1 xfs 5.0G 68M 5.0G 2% /mnt/xfs /dev/mapper/klas-backup xfs 19G 171M 19G 1% /backup /dev/sda1 xfs 1014M 169M 846M 17% /boot tmpfs tmpfs 196M 0 196M 0% /run/user/0 /dev/sdc3 xfs 2.8T 30G 2.7T 2% /data 4.軟鏈接到/var/log/10g [root@kylin-xu ~]# ln -s /data/10g /var/log/10g [root@kylin-xu ~]# ll /var/log/10g lrwxrwxrwx 1 root root 9 Nov 20 17:15 /var/log/10g -> /data/10g
企業案例4.刪除文件
磁盤上有個一39G的文件,刪除后發現磁盤沒有釋放。 文件如果被進程所占用,會出現刪除文件磁盤沒有釋放的問題。 查看當前的文件被哪個進程所占用: [root@oldboyedu ~]# lsof |grep 10g tail 2873 root 3r REG 8,32 41838247936 132 /data/10 (deleted) 殺死進程或者重啟或者重新加載 [root@oldboyedu ~]# kill -9 2873
【9】、邏輯卷
1、什么是邏輯卷
LVM: Logical Volume Manager 可以允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小,允許在多個物理設備間重新組織文件系統
LVM可以彈性的更改LVM的容量
實現過程
將設備指定為物理卷
用一個或者多個物理卷來創建一個卷組,物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的
在物理卷上創建的邏輯卷, 是由物理區域(PE)組成
可以在邏輯卷上創建文件系統并掛載
2、創建邏輯卷
# 創建pvs root@xu-ubuntu:~# pvcreate /dev/sdb{1..3} Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. Physical volume "/dev/sdb3" successfully created. root@xu-ubuntu:~# pvs PV VG Fmt Attr PSize PFree /dev/sda3 ubuntu-vg lvm2 a-- <48.00g 24.00g /dev/sdb1 lvm2 --- 4.00g 4.00g /dev/sdb2 lvm2 --- 5.00g 5.00g /dev/sdb3 lvm2 --- <11.00g <11.00g # 創建vg root@xu-ubuntu:~# vgcreate vg1 /dev/sdb{1..2} Volume group "vg1" successfully created root@xu-ubuntu:~# vgs VG #PV #LV #SN Attr VSize VFree ubuntu-vg 1 1 0 wz--n- <48.00g 24.00g vg1 2 0 0 wz--n- 8.99g 8.99g # 創建lvm -L:指定邏輯卷大小 -n:指定邏輯卷名字 -l:按照PE數量進行劃分 root@xu-ubuntu:~# lvcreate -L 5G -n lv1 vg1 Logical volume "lv1" created. root@xu-ubuntu:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- <24.00g lv1 vg1 -wi-a----- 5.00g root@xu-ubuntu:~# lvcreate -l 500 -n lv2 vg1 Logical volume "lv2" created. root@xu-ubuntu:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- <24.00g lv1 vg1 -wi-a----- 5.00g lv2 vg1 -wi-a----- 1.95g
我們后續如果想使用lvm,也需要進行格式化和掛載才可以
# 格式化和掛載 root@xu-ubuntu:~# mkfs.ext4 /dev/vg1/lv1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 1310720 4k blocks and 327680 inodes Filesystem UUID: ff6b294f-b30c-4ac2-94e9-cc57b086d207 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@xu-ubuntu:~# mount /dev/vg1/lv1 /lv1
2、對lvm進行擴容
# ext系列文件系統 # 在擴容lvm之前我們得看下vg是否還有空間允許擴容,如果vg還有空間,我們直接擴容lvm即可。如果vg沒有空間,我們得先擴容vg,擴容vg需要添加pv,如果有空閑的pv直接擴容即可,沒有空閑的pv,先使用pvcreate創建出pv root@xu-ubuntu:~# vgextend vg1 /dev/sdb3 Volume group "vg1" successfully extended root@xu-ubuntu:~# lvextend -L 7G /dev/vg1/lv1 Size of logical volume vg1/lv1 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents). Logical volume vg1/lv1 successfully resized. root@xu-ubuntu:~# df -Th # 擴容完成后我們還需要告知文件系統,才能生效 Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M 1.7M 386M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24G 8.9G 14G 40% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 242M 1.6G 14% /boot tmpfs tmpfs 388M 4.0K 388M 1% /run/user/1000 /dev/mapper/vg1-lv1 ext4 4.9G 24K 4.6G 1% /lv1 root@xu-ubuntu:~# resize2fs /dev/vg1/lv1 # 使用resize2fs告知ext系列文件系統 resize2fs 1.46.5 (30-Dec-2021) Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vg1/lv1 is now 1835008 (4k) blocks long. root@xu-ubuntu:~# resize2fs /dev/vg1/lv1 | grep lv1 resize2fs 1.46.5 (30-Dec-2021) The filesystem is already 1835008 (4k) blocks long. Nothing to do! root@xu-ubuntu:~# df -Th | grep lv1 /dev/mapper/vg1-lv1 ext4 6.9G 24K 6.5G 1% /lv1000000000000000000
# xfs類型文件系統 # 其他過程都一樣,只是在告知文件系統時的命令不同 xfs文件系統使用的是 xfs_growfs root@xu-ubuntu:~# lvextend -L 5G /dev/vg1/lv2 Size of logical volume vg1/lv2 changed from 1.95 GiB (500 extents) to 5.00 GiB (1280 extents). Logical volume vg1/lv2 successfully resized. root@xu-ubuntu:~# df -Th Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M 1.7M 386M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24G 8.9G 14G 40% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 242M 1.6G 14% /boot tmpfs tmpfs 388M 4.0K 388M 1% /run/user/1000 /dev/mapper/vg1-lv1 ext4 6.9G 24K 6.5G 1% /lv1 /dev/mapper/vg1-lv2 xfs 2.0G 47M 1.9G 3% /lv2 root@xu-ubuntu:~# xfs_growfs /dev/vg1/lv2 meta-data=/dev/mapper/vg1-lv2 isize=512 agcount=4, agsize=128000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=512000, 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=0 data blocks changed from 512000 to 1310720 root@xu-ubuntu:~# df -Th | grep lv2 /dev/mapper/vg1-lv2 xfs 5.0G 69M 5.0G 2% /lv2
-
Linux
+關注
關注
87文章
11227瀏覽量
208922 -
磁盤
+關注
關注
1文章
367瀏覽量
25176
原文標題:磁盤管理
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論