Linux
附加磁碟後,Linux 對不同磁碟上的相同掛載感到困惑
在將 EBS 卷附加到正在執行的 Linux(在本例中為 NixOS)實例時,我們遇到了一個奇怪的問題(為了在該附加卷上增加文件系統;它是我們關閉的另一台機器的 NixOS 根文件系統向下)。
在 attach 之前,一切正常:
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 100G 0 disk └─xvda1 202:1 0 100G 0 part
附加後,
lsblk
奇怪地聲稱附加卷的分區包含/
目前機器的已安裝分區:# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 100G 0 disk └─xvda1 202:1 0 100G 0 part /nix/store xvdf 202:80 0 400G 0 disk └─xvdf1 202:81 0 200G 0 part /
這根本沒有意義:
只需“插入”該磁碟,Linux 就會認為根文件系統掛載只是“翻轉”到了新磁碟。(這
/nix/store
是一個 NixOS 只讀綁定掛載)以某種方式保留在正確的磁碟上。Linux中
dmesg
/之外沒有任何消息指出磁碟已附加:journalctl
Apr 28 11:57:21 mymachine kernel: blkfront: xvdf: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled; Apr 28 11:57:21 mymachine kernel: xvdf: xvdf1
在
fdisk -l
中,兩個磁碟看起來很正常,並且有不同Disk identifier
的 s。這是不可能的
umount /dev/xvdf1
;它說坐騎很忙。為了增加分區的目標,
growpart /dev/xvdf 1
無論如何都可以工作,但resize2fs /dev/xvdf1
失敗了:Filesystem at /dev/xvdg1 is mounted on /; on-line resizing required old_desc_blocks = 25, new_desc_blocks = 50 resize2fs: No space left on device While checking for on-line resizing support
這是怎麼回事,為什麼Linux會混淆這些磁碟?
原因是
by-label
坐騎。出於聲明性自動化的原因(我們有很多機器),我們機器的每個根文件系統都有相同的 ext4 文件系統標籤
nixos
:# cat /etc/fstab /dev/disk/by-label/nixos / ext4 x-nixos.autoresize 0 1
# cat /etc/mtab /dev/disk/by-label/nixos /nix/store ext4 rw,relatime 0 0
將其中兩個附加到同一台機器上會使 Linux 感到困惑。
所以解決方案是:
- 通過將 EBS 卷附加到其根文件系統未
by-label
使用相同標籤安裝的 AWS 機器來執行文件系統增長。- 首先更改文件系統標籤,然後進行更改,然後將其更改回所需的標籤。