ユーザ用ツール

サイト用ツール


mae3xx_ope:extend_by_sd:start

SDカードを利用したストレージ領域の拡張

パッケージシステムによる追加ソフトウェアの導入 での例の通り、本体のみでもある程度のパッケージの導入が可能です。
セルフ環境での開発もできますが、更新部分を本体RAMの tmpfs 領域に確保する必要がありますので、
パッケージの追加には、

  • tmpfs の容量
  • 更新分保存領域の容量

上記それぞれの制限を受けることになります。

  • tmpfsに入りきらないような、大量のパッケージを導入したい
  • tmpfsによるメモリ消費が問題になるような、メモリ消費が大きなソフトウェアを動作させたい
  • 突然の電源断があっても、データが消えないような運用を行いたい (データベースなど)

といった要望に応えるため、SDカード1)をファイルシステムの拡張領域として用いることができるようになっています。

※ 特徴/注意点

  • aufsでファイルシステム全体にかぶせる形でマウントするため、どの場所でもRead/Write可能です。
  • SDカードを使用しない方法(本体ファームウェアでの起動)とは、設定内容は共通化されません。


利用方法

準備

拡張領域に使用するためのSDカードを準備します。 32GB SDHC規格までのSDカードが利用可能です。

市販されているSDカード(MLC2)のものがほとんどです)でも、試験的な運用には使用することができますが、
開発や実運用に利用する場合は書替寿命の問題がありますので、SLC3)のSDカードで、ウェアレベリング機構に
問題のないデバイスの利用をお勧めします。

※ SLC の SD カードは、弊社でも販売しております。お問い合わせは こちら からお願い致します。


設定ファイルの作成

MA-E3xx に、準備したSDカードを “拡張領域” として利用させるため、SDカードに設定ファイルを作成する必要があります。

Windows PCなどにSDカードを挿入し、“devel” というファイルを作成します。

"devel" ファイルを新規作成

設定はこれだけでOKです。

  • SDカード 空き容量の80%
  • 2GiB

のいずれかの小さい方の容量のイメージファイルを自動的に作成し、拡張領域として利用します。

  • マニュアルで拡張領域の容量を設定したい
  • 2GiB以上の拡張領域を作成したい

といった場合には、後述するマニュアル設定を行う必要があります。

MA-E3xxの起動

準備したSDカードを、MA-E3xxのSDカードスロットに挿入し、NAND Flashをrootfsとするモードで起動します。
自動的に拡張領域を確保して利用します。

Begin: Running /scripts/init-bottom ...
       root-overlay:  Setting up aufs on /root as root file system

MMC Filesystem: vfat detected.
'devel' file found.
create loopback image file (1531 [MiB]) ...[   36.275969] random: nonblocking pool is initialized
1531+0 records in
1531+0 records out
done.
creating ext4 filesystem on image file...done.
[  123.746246] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)

下記の通り、1.5GiB程度 /rw, / に mount されていることがわかります。

root@plum:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
rootfs           1510304    2484   1491436   1% /
udev              503824       4    503820   1% /dev
tmpfs             102644     236    102408   1% /run
/dev/mtdblock8     55296   55296         0 100% /ro
overlay-tmpfs     513212   22608    490604   5% /rw.tmpfs
/dev/mmcblk0p1   1960960 1567756    393204  80% /rw.tmpfs/mnt/mmc <-- SDカード全体の80%利用中
/dev/loop0       1510304    2484   1491436   1% /rw               <-- 拡張領域
/dev/loop1          1024    1024         0 100% /ro/lib/modules
/dev/loop2         21504   21504         0 100% /ro/usr/lib/jvm
overlay          1510304    2484   1491436   1% /                 <---- aufsにより / の上にかぶせてmount中
overlay.log       513212   22608    490604   5% /var/log
overlay.kmod     1510304    2484   1491436   1% /lib/modules
overlay.jvm      1510304    2484   1491436   1% /usr/lib/jvm
ubi0:overlay       40292     116     38116   1% /rw.tmpfs/.overlay
none                   4       0         4   0% /sys/fs/cgroup
none                5120       0      5120   0% /run/lock
none              513212       0    513212   0% /run/shm
none              102400       0    102400   0% /run/user
root@plum:~# 

このモードで起動しているときは、『SDカードを利用中』を表すために、“POWER” LEDが 緑+赤 の点灯となります。

POWER LED 緑+赤(SDカード利用中)


イメージファイルサイズのマニュアル設定

“devel” ファイルに作成したいイメージファイルのサイズを KiB 単位で書いておくことで、
イメージファイルのサイズをマニュアルで設定することができます。

1GiBのイメージファイルを作成

サイズを指定する際は、数値だけでなく上の例の通りシェルスクリプトで計算可能な数式での指定も可能です。

この設定ファイルを保存したSDカードを使用した場合、下のとおり 1GiB の拡張領域を作成して利用します。

1GiBの拡張領域を作成

この方法では、FATファイルシステムのファイルサイズ上限 4GiB までの拡張領域を利用することができます。

4GiBを超えるサイズの拡張領域を利用する

SDカードにイメージファイルを作成し、ループバックマウントして利用する方式をとっている関係上、
前述の通りイメージファイルのサイズはベースとなるSDカードのファイルシステムの制限を受けることになります。

4GiB以上の拡張領域を利用する場合、SDカードを ext4 ファイルシステムでフォーマットする必要があります。

作業は MA-E3xx で可能です。手順は下記のとおりとなります。

  • SDカードをMA-E3xxに挿入する。
  • fdiskコマンドで、パーティションのタイプを 83(Linux) に変更する。
root@plum:~# fdisk /dev/mmcblk0  

Command (m for help): p

Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
221 heads, 20 sectors/track, 3521 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192    15564799     7778304    b  W95 FAT32

Command (m for help): t
Selected partition 1
Hex code (type L to list 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 codes): 83
Changed system type of partition 1 to 83 (Linux)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
root@plum:~# 
  • SDカードを ext4 ファイルシステムでフォーマットする。4)
root@plum:~# mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/mmcblk0p1
mke2fs 1.42.8 (20-Jun-2013)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
486720 inodes, 1944576 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1992294400
60 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

root@plum:~# 
  • SDカードをマウントする。
root@plum:~# mount /dev/mmcblk0p1 /mnt/sd 
root@plum:~# df
Filesystem      1K-blocks  Used Available Use% Mounted on
rootfs             513212   120    513092   1% /
udev               503824     8    503816   1% /dev
tmpfs              102644   244    102400   1% /run
/dev/mtdblock8      55296 55296         0 100% /ro
overlay-tmpfs      513212 22760    490452   5% /rw.tmpfs
overlay-persist    513212   120    513092   1% /rw
/dev/loop0           1024  1024         0 100% /ro/lib/modules
/dev/loop1          21504 21504         0 100% /ro/usr/lib/jvm
overlay            513212   120    513092   1% /
overlay.log        513212 22760    490452   5% /var/log
overlay.kmod       513212   120    513092   1% /lib/modules
overlay.jvm        513212   120    513092   1% /usr/lib/jvm
ubi0:overlay        40292   120     38112   1% /rw.tmpfs/.overlay
none                    4     0         4   0% /sys/fs/cgroup
none                 5120     0      5120   0% /run/lock
none               513212     0    513212   0% /run/shm
none               102400     0    102400   0% /run/user
/dev/mmcblk0p1    7525000 17088   7491528   1% /mnt/sd   <----
  • “devel” ファイルを作成し、作成したい拡張領域のサイズを設定する。
4GiB の拡張領域を作成する例です。
root@plum:~# echo "4*1024*1024" > /mnt/sd/devel
root@plum:~# cat /mnt/sd/devel 
4*1024*1024
  • 再起動を行う。
root@plum:~# reboot
root@plum:~# 
Broadcast message from root@plum
	(/dev/pts/0) at 16:11 ...

The system is going down for reboot NOW!

再起動後の状態は下記のようになります。

4GiB 拡張領域作成中

4GiBの拡張領域が作成されていることがわかります。

1)
USB Storage での拡張も検討中です
4)
ext4 lazy init オプションを無効にする必要があります。bootloaderで認識されないケースがあります。
mae3xx_ope/extend_by_sd/start.txt · 最終更新: 2019/12/17 20:34 by admin