忍者ブログ

Azukish

消えゆく世界と流れる未来に最後の灯を since 2006/4/3

2024/04/19

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

2015/06/01

microSDをUSBでPCに接続してRAIDを組む

久しぶりです。
就活やら何やらで色々あってあまりここに書き込めてませんが、ちょっと時間があったので、アキバめぐりのついでに買ってきた32GBなmicroSDを使ってRAIDを組んでみました。




まず、前提としてUSB挿す。
自動マウントされる場合はumountする。

ここではRAID1(ミラーリング)で組むことにする。
あと、USBは/dev/sdcと/dev/sddだった。環境によるのでその辺は各自の環境に合わせる。

買ってきたSDは大抵FATか何かでフォーマットされてるので、一旦切り直す。
# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (1-4, default 1): 
First sector (2048-62945279, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-62945279, default 62945279): 

Created a new partition 1 of type 'Extended' and of size 30 GiB.

Command (m for help): n
Partition type
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): l

Adding logical partition 5
First sector (4096-62945279, default 4096): 
Last sector, +sectors or +size{K,M,G,T,P} (4096-62945279, default 62945279): 

Created a new partition 5 of type 'Linux' and of size 30 GiB.

Command (m for help): t
Partition number (1,5, default 5): 
Hex code (type L to list all codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list all codes): fd

Changed type of partition 'Linux' to 'Linux raid autodetect'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
長ったらしいので何したかというと、
1.元々あったパーティションを削除
2.拡張パーティションの中に論理パーティション(linuxのRAID用)を作る
3.書き込む
こんな感じで作業した。
上の設定は/dev/sdcにだけのものなので、同様に/dev/sddの方もやる。
この設定だと、/dev/sd*1が拡張パーティションで、/dev/sd*5がRAID用のパーティションとなっている。

mdadmが必要なので、入って無ければインストールする。
で、RAIDを組む。
# mdadm -C /dev/md0 -l1 -n2 /dev/sdc5 /dev/sdd5
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
途中で/bootとかには使うなよ?みたいな警告入るけど、気にせずyでも入力しておく。
mdadm(8) ver.1.5 man page [日本語]によると、
-C→RAIDアレイの新規作成(直後にデバイス名)
-l→RAIDレベル(今回はミラーリングなので1)
-n→RAIDに使うデバイスの数(今回は2つ、直後に使われるデバイス名)
みたいな感じか。

2015/7/11 追記:
RAIDを作った後に、構築のための時間がかかる。
USB 2.0接続の2.5インチHDD(1TB)x2でRAID1を組んだら10時間くらいかかってしまったw
なお、その時の状況は/proc/mdstatを見ればわかる。
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb5[0] sdc5[1]
   HDDの容量 blocks super 1.2 [2/2] [U_]
   [====>................] recovery = 進捗のパーセンテージ% (現在/最大) finish=残り時間(分)min speed=速度K/sec
みたいな感じで出る。
追記ここまで

さて、マウントしようか。
と思ったけど、
# mount /dev/md0 /raid
mount: /dev/md0 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/md0,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
一瞬焦ったけど、考えてみたらそりゃそうだ。だってまだフォーマットしてないものw

というわけで、ext4でフォーマット。
# mkfs.ext4 /dev/md0
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 7863552 4k blocks and 1966080 inodes
Filesystem UUID: bf51c5f0-72fa-4245-8c5f-00f2f387924d
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
うむ。うまくいったようだ。

満足したところで再びマウント。
#mkdir /raid
# mount /dev/md0 /raid/
# df
Filesystem     1K-blocks      Used Available Use% Mounted on
devtmpfs         2980844         0   2980844   0% /dev
tmpfs            2990680       876   2989804   1% /dev/shm
tmpfs            2990680       912   2989768   1% /run
tmpfs            2990680         0   2990680   0% /sys/fs/cgroup
/dev/sda3      165369112 114345020  42600772  73% /
tmpfs            2990680        48   2990632   1% /tmp
tmpfs             598136        20    598116   1% /run/user/1000
/dev/md0        30829564     44992  29195480   1% /raid
おっけい。最後のところでちゃんと/raidに入ってる。
なんかtmpfsとかいうのがたくさんあるのが気になるが、今回はあまり気にしない方針でw

マウントできたということで、fstabに追記して起動時すぐに使えるようにしてみる。
まずはUUIDの取得。
# tune2fs -l /dev/md0 | grep UUID
Filesystem UUID:          bf51c5f0-72fa-4245-8c5f-00f2f387924d

からの、編集。
/etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Feb 28 19:19:02 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9da5fbd3-da34-400c-baf9-a517d3b93e56 /                       ext4    defaults        1 1
UUID=bf51c5f0-72fa-4245-8c5f-00f2f387924d /raid                   ext4    nofail          0 0

USBなので、外したりすることってあるよな〜とか思ってググってみる。
前にHDDを引っこ抜いて起動しなくなって面倒なことになったため、この辺は予防線を張りたい。
CentOS7の/etc/fstabのnofailオプション(あるいはsystemd) - Qiitaを見ると、defaultsとかのところにnofailを入れると読み込みにエラーがあったとしてもそのままブートしてくれるようだ。
というわけで上の/etc/fstabの部分にはそれを入れてみた。

まあ、こんな感じでRAIDを組むことができましたとさ。めでたしめでたし。


2015/7/10 追記:
どうも同じ方法で1TBのHDDでRAIDを組んだら、

RAIDの同期OK
放っておくとスリープに
/dev/md0の情報を読む(smartctlもこの状態ではダメ→HDD起動→2回目で効くようになる)
スリープになっているのでダメ
片方のRAIDのHDDにF(Failure)が付く()
もう片方はこの間にスリープから戻っているので読める
RAID解除or片方のHDDだけ生き残る

みたいなフローを辿るらしく、どうやってもRAIDをうまく組むことができない・・・
udevのルール変更でどうにかなりそうだけど、/etc/rules.d/に
ATTRS{serial}=="シリアルNO" ,ATTR{power/level}="on"
ATTRS{serial}=="シリアルNO" ,ATTR{power/control}="on"
ATTRS{serial}=="シリアルNO" ,ATTR{autosuspend}="-1"
書き込んでみる。効果なし。
何やってもダメだったので、BIOSを疑ってみて、xHCIをDisabledに、USBに刺さっている奴らをAutoからHarddiskとして認識させて変更したら、sleep状態にはなるものの、smartctlが効くようになった。
後で時間があったらこの辺をもうちょっといじってみよう。


2015/7/11 追記:
USB HDDが動いて(スピンアップして)さえいれば普通に使えることが判明。
/etc/rules.d/の中に入ってるルールは起動時に読み込まれているようだが、効果は無かった。
なので、使う前に
# sdparm --command=start /dev/sd?
とかをワンクッション入れて、一度スピンアップさせてから操作を行えば良いみたい。
commandをreadyとかにすると、スピンアップするものの、状態取得不可からのIOエラーが発生する可能性があるので、ただ単にスピンアップさせるだけのstartを打ち込んだほうが賢明っぽい。
ただ、一度RAIDを組んでマウントさえしてしまえば、スピンダウンすることは無さそう。ずっとランプが点滅してる。

拍手

コメント













カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

アーカイブ

AD

Azkishはamazon.co.jpを宣伝しリンクすることによって サイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。