為私有雲建立raid磁碟

要作為正式用途,例如家裡老舊電腦用來作家中儲存雲,我們需要利用先前介紹的資料映射方法,將上傳的資料存於外部目錄,與容器本身分離,避免勿刪容器導致所有資料不見

讓nextcloud的docker容器成為執行環境,所有資料則儲存於外部raid模式的硬碟,這樣,就可以建構簡易的家庭或學校的儲存雲

製作raid1的磁碟

當我們將ubuntu系統與docker安裝於一個系統跌後,我們可以使用兩顆空硬碟,並把他們做成raid1格式,然後作為nexttcloud資料存放之處,可有效保護資料安全

我們可以先關閉VM,然後在上面建立兩顆空磁碟做為模擬使用

重新啟動ubuntu

sudo fdisk -l

Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors

兩顆空磁碟,分別為sdb sdc

製作raid1

sudo fdisk /dev/sdb disk table複製

sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sdc

# metadata 鏡像,資料也鏡像 sudo mkfs.btrfs -m raid1 -d raid1 /dev/sdb1 /dev/sdc1 -L bt0

sudo btrfs fi show Label: 'bt0' uuid: 994bc666-5d3a-45f9-99e4-ef9e64931966 Total devices 2 FS bytes used 186.21MiB devid 1 size 10.00GiB used 2.01GiB path /dev/sdb1 devid 2 size 10.00GiB used 2.01GiB path /dev/sdc1

測試btrfs raid1鏡像功能

掛載其中一個 device 就可以了:

sudo mkdir /mnt/raid sudo mount /dev/sdb1 /mnt/raid

cd /mnt/raid

產生多個檔案 test1 test2 ......

sudo touch test{1..100}

測試作為raid1的另一顆磁碟sdc1是否有相同的檔案

sudo mkdir /mnt/temp

sudo mount /dev/sdc1 /mnt/temp

cd /mnt/temp

ls後你可以看到相同的檔案產生

設定開機自動掛載

sudo vi /etc/fstab

加入這行設定

UUID=994bc666-5d3a-45f9-99e4-ef9e64931966 /mnt/raid btrfs defaults 0 2

擴充:後來多一顆硬碟

sudo fdisk -l

sudo sfdisk -d /dev/sdb | sud0 sfdisk /dev/sdd
sudo btrfs device add /dev/sdd1 /mnt/raid1

sudo btrfs fi show
Label: 'bt0'  uuid: 2cf15b5b-63b2-420a-afa8-e5ec4af595e4
    Total devices 3 FS bytes used 640.00KiB
    devid    1 size 10.00GiB used 2.01GiB path /dev/sdb1
    devid    2 size 10.00GiB used 2.01GiB path /dev/sdc1
    devid    3 size 10.00GiB used 0.00B path /dev/sdd1

sudo btrfs balance start --full-balance /mnt/raid1
Done, had to relocate 3 out of 3 chunks

失效回充:忽然硬碟壞掉

假設今天sdb壞了硬碟都讀不到,假設原sdc1硬碟損毀 btrfs fi show 中顯示 *** Some devices missing mount -t btrfs -o degraded /dev/sdb1 /root/temp #把sdb1掛在/mnt下 btrfs device add /dev/sdc1 /root/temp #將新的sdc1加入 btrfs device delete missing /root/temp #移除消失的device 或 btrfs device delete 1 /root/temp #1是missing的deviceid sudo btrfs balance start /root/temp #平衡硬碟間的資料

修復完成,重新開機

Last updated